代码之家  ›  专栏  ›  技术社区  ›  Eyvind

X509证书,数字签名与不可否认性(C)

  •  0
  • Eyvind  · 技术社区  · 15 年前

    我们得到了一套智能卡测试支持,用于开发一种解决方案,该解决方案要求使用pki对XML消息进行签名。每个(物理)智能卡上似乎都存储了两个证书。我使用智能卡提供商提供的软件将它们导入到Windows证书存储中,然后使用类似下面的代码迭代已安装的证书:

    foreach (X509Certificate2 x509 in CertStore.Certificates) {
      foreach (X509Extension extension in x509.Extensions) {
         if (extension.Oid.Value == "one we are interested in") {
            X509KeyUsageExtension ext = (X509KeyUsageExtension)extension;
            if ((ext.KeyUsages & X509KeyUsageFlags.DigitalSignature) != X509KeyUsageFlags.None) {
                // process certs here
    

    我们被告知要使用设置了不可否认密钥使用标志的证书来签署XML。但是,具有不可拒绝标志的证书具有此标志 只有 而不是我在上面检查的数字签名标志。除了我,其他人都觉得这有点奇怪吗?换句话说,我被要求用一个没有设置数字签名使用标志的证书签名。这是正常程序吗?有什么意见吗?

    谢谢。

    3 回复  |  直到 15 年前
        1
  •  1
  •   blowdart    15 年前

    它有什么关键用途?你是对的,这有点奇怪,但是,例如,如果密钥用于提供广告登录,那么它可能没有设置数字签名使用的标志。这并不是说您不能使用它,它只是表明当您超出密钥指定的使用范围时,证书颁发者不提供任何保证。

        2
  •  1
  •   Von    15 年前

    当我阅读时 RFC 5280 (4.2.1.3),不可否认性是数字签名的超集。换言之,它授予数字签名的所有能力,然后是一些。所以从技术上讲,他们要求的是有效的,尽管可能是不寻常的。

        3
  •  1
  •   G.P.    15 年前

    如果您希望提供不可拒绝服务,即您希望签名具有法律价值,那么您应该只使用不可拒绝服务。事实上,这是标准建议的(请参阅etsi ts 102 280),因为使用其他keyusage位和非重复可能会有安全问题。