【问题标题】:X509 Certificates, DigitalSignature vs NonRepudiation (C#)X509 证书、数字签名与不可否认 (C#)
【发布时间】:2010-12-28 16:28:00
【问题描述】:

我们已收到一组智能卡测试证书,用于开发需要使用 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

我们被告知要使用设置了 NonRepudiation 密钥使用标志的证书来签署 XML。但是,具有 NonRepudiation 标志的证书具有此标志,而不是例如我在上面检查的 DigitalSignature 标志。除了我之外,这会让任何人感到有点奇怪吗?换句话说,我被告知使用没有(似乎)设置了 DigitalSignature 使用标志的证书进行签名。这是正常程序吗?有cmets吗?

谢谢。

【问题讨论】:

    标签: c# x509certificate pki


    【解决方案1】:

    它有什么关键用途?没错,这有点奇怪,但是,例如,如果密钥用于提供 AD 登录,那么它可能没有设置用于 DigitalSignature 的标志。这并不是说您不能为此使用它,它只是表明当您超出密钥的指定用途时,证书颁发者不提供任何保证。

    【讨论】:

    • 设置了 NonRepudiation 标志的那个有 only 那个标志,这对我来说很奇怪(因为我被明确告知要使用那个标志来签名),但是,我远非该领域的专家,所以我认为最好四处询问:)
    • 顺便说一句;这些证书是专门为此目的生成的,不适用于 AD 登录等。
    • 这有点奇怪,它应该两者都有,但这取决于发行人的政策。标志确实是使用指标,但由您决定是否应该根据它们批准或拒绝证书
    【解决方案2】:

    当我阅读RFC 5280 (4.2.1.3) 时,nonRepudiation 是 digitalSignature 的超集。换句话说,它授予了 digitalSignature 的所有功能,然后是一些。所以从技术上讲,他们的要求是有效的,尽管可能不寻常。

    【讨论】:

      【解决方案3】:

      如果您想提供不可否认服务,即您希望签名具有 LEGAL 值,那么您应该只使用不可否认。事实上,这是标准推荐的(参见 ETSI TS 102 280),因为使用其他 keyUsage 位和 nonRepudation 可能存在安全问题。

      【讨论】:

      • 感谢您解决这个问题,并在这么长时间后回到这个问题:) +1
      猜你喜欢
      • 2015-06-29
      • 2011-03-28
      • 1970-01-01
      • 2020-01-28
      • 2013-06-28
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多