【问题标题】:X509Certificate2 signature verification and decryptions with expired or renewed certificationX509Certificate2 签名验证和解密与过期或更新的证书
【发布时间】:2021-11-04 15:11:43
【问题描述】:

关于在过期和续订证书上使用 System.Security.Cryptography.X509Certificates.X509Certificate2 的问题。想象一下 2 个用户“A”和“B”,其中“A”拥有自己的证书以及用户“B”的公钥证书(反之亦然)。

用户“A”使用“B”的公钥加密一个非常小的字节数组,然后使用“A”的私钥对加密的字节数组进行签名。结果现在存储在一个文件中并发送到“B”。 5年后,“B”需要获取文件中的数据。然而,“B”的证书已经更新,“A”的(公钥)证书已经过期。

“B”能否验证签名?他能解密数据吗?如果没有,有解决办法吗?

【问题讨论】:

  • 许多用于签名/验证的低级软件仅使用私钥和公钥,不咨询证书。如果您有一些特定的软件,请将该信息添加到问题中。
  • @PresidentJamesK.Polk 没有具体的硬件,但要求是使用 X509 证书中的密钥。

标签: c# encryption digital-signature x509certificate2


【解决方案1】:

“B”能验证签名吗?

这取决于。有一个称为“签名时间戳”的功能可以解决过期的证书。这意味着如果签名带有时间戳,即使在链中的所有证书都过期之后也可以对其进行验证。我有一篇关于这个主题的博文:Digital signatures and timestamps

“B”能够解密数据而不管签名的有效性,因为它是一个单独的过程。解密没有时间限制。

【讨论】:

  • 谢谢,我实际上已经为您的博客文章添加了书签!我了解时间戳的概念,但我不确定 RSACryptoServiceProvider 签名和验证是否在幕后添加了时间戳。我使用自签名证书对此进行了测试,并且在将我的计算机时钟 ro 2030 旋转时验证数据没有问题。关于解密,感谢您的验证。你不知道续约吗?如果“B”的证书被更新,他是否能够验证/解密?我不确定续订是否会更改密钥....
  • RSACryptoServiceProvider 不检查时间戳,因为它在低级别(原始)运行并且对证书一无所知。时间戳验证在存在证书的高级别进行检查。 CSP/KSP 级别的证书尚不存在。
  • 续订是不同的问题,但简而言之,答案是“是”和“否”。这取决于。
猜你喜欢
  • 1970-01-01
  • 2015-04-12
  • 1970-01-01
  • 2012-07-28
  • 1970-01-01
  • 1970-01-01
  • 2015-11-23
  • 2014-11-12
  • 2012-08-27
相关资源
最近更新 更多