我们为什么要在进行代码签名时设置时间戳?

时间:2010-12-11 15:30:35

标签: cryptography code-signing portable-executable trusted-timestamp

如果我通过签名设置时间戳,会发生什么? 如果我没有设置怎么办?

这是必要的吗?为什么推荐它?

2 个答案:

答案 0 :(得分:34)

时间戳用于指定进行数字签名的时间。这是正确验证签名所必需的。

如果存在签名时间戳,则验证(验证)签名的应用程序将检查签名验证中涉及的证书是否有效。如果签名没有时间戳,则在签名验证时检查证书有效性,这并不总是可以接受。

Example:
Certificate is valid from: 1st of January, 2008
Certificate is valid to: 31st of December, 2010
Signature is made on: 4th of July, 2009
Signature is verified on: 30th of April, 2012

使用时间戳:签名正常(在证书有效期内签名)没有时间戳:签名无效(证书在签名验证时已过期)。

如果应该使用签名(以证明文档作者或数据发起者的真实性),则应使用时间戳,而不是长期,即长于一天或几天。

例如,当您向同事发送一份简短签名的备注时,不需要时间戳,并且该备注应在阅读的同一天阅读和处理。当然,如果签名技术不支持时间戳,或者时间戳权限不可用,则无法使用时间戳。

另一方面,当您为广泛分发或长期存储和存档目的创建签名文档时,必须加上时间戳。在签署软件应用程序的可执行模块时也使用时间戳。

更新:时间戳也使用证书签名。此签名也使用常规规则进行验证,这意味着用于签署时间戳的证书必须在签名验证时有效。在上面的示例中,如果时间戳证书在2012年4月1日到期,则时间戳将被报告为无效,并且在签名验证期间不会计算。

答案 1 :(得分:8)

如果签名证书过期且没有时间戳,则无法验证签名是否在证书有效时进行,因此以前签名的代码可能只是“停止工作”。

时间戳涉及第三方(通常是您的CA),证明您在特定时间签名。无论您的证书何时到期,接收签名代码的人都可以在您签署时验证您的证书是否有效