当根CA到期时,代码签名证书会怎样?


9

到目前为止,对我来说很清楚:如果代码签名证书本身已过期,则签名/带有时间戳的代码将被验证/接受。如果不是,则签名代码也过期。

但是,如果我的CA本身到期(根CA和由此发行的CA),会发生什么?

  • 带有时间戳的代码仍会被接受吗?
  • 是否必须仍然存在过期的根证书和颁发CA证书(例如,在受信任的根ca证书存储中)?这是我的假设,即使CA可能会降级,执行签名的客户端仍必须信任CA?否则,信任链将被破坏,对吗?
  • 缺少CRL或AIA是否会带来任何问题?

Answers:


12

但是,如果我的CA本身到期(根CA和由此发行的CA),会发生什么?

从字面上看,什么都没有。让我们更详细地解释一下。

如果签名未加时间戳,则签名在以下情况下有效:

  • 数据未被篡改
  • 签名证书有效
  • 链中的证书均未吊销
  • 根证书受信任

一旦签名证书过期,被吊销或以一种或另一种方式变为无效,则签名被视为无效。干净利落。

数字签名中时间戳的目的是为签名内容提供扩展的信任。签名证书在短时间内有效,并且基本信任设置不适合长期(可能是存档)签名。通常(没有时间戳记),每次更新签名证书时都必须重新创建签名。这是无处可去的方法。

通过为数字签名添加时间戳,信任条件将更改为以下列表:

  • 数据未被篡改
  • 签署证书*在*签署时间有效*:签署时间在签署证书的有效期内
  • 签名生成之前,两个证书都没有被吊销
  • 签名和时间戳证书都链接到受信任的根CA(无论它们的时间有效性如何,都必须位于信任库中)。

此处更改的内容:所涉及的证书到期后,签名仍然有效。也就是说,用于签名和时间戳证书的整个链可能会过期(以及根证书),并且不会破坏信任。链中的证书可以被吊销。唯一的要求:如果吊销了任何证书,则吊销时间(从CRL获得)必须设置为签名创建后的时间(签名时间由时间戳标识)。前一句意味着必须有一个已签署的CRL,以证明在签署时都没有吊销证书。

这就是现代Windows系统早已发布过期的根证书的原因。它们仍然用于验证旧签名并且带有时间戳。

不久前,我写了一篇博客文章,详细解释了该主题:数字签名和时间戳


您的博客文章是关于该主题的非常好的文章!
ThoriumBR

我发现这个话题在IT Pro(和开发人员)中非常混乱,并尝试在博客文章中进行整理。
Crypt32

但是,我对CRL的观点并不完全清楚。因此,我确实还需要提供过期CA的(最后)CRL吗?
dr_pepper285

是的,需要CRL。最后没有必要,必须ThisUpdate在签署时间​​之后发布(字段)。此CRL可以证明在签署时两个链(签名和时间戳)中的证书均未被吊销。
Crypt32
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.