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

Ben*_*min 18 cryptography code-signing portable-executable trusted-timestamp

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

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

Eug*_*its 35

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

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

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
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

  • @ByjuVeedu对不起,但你的依据不正确.验证的任何证书(非签名)必须在验证时有效.这适用于时间戳中使用的证书. (4认同)
  • @denis RFC 3161第4.3段明确提到时间戳证书将过期,时间戳将失效.如果您有相反的规范性参考,我将很乐意阅读并更新答案.到目前为止,我认为没有要求信任过期的证书. (2认同)
  • @robbiefan 这种行为与证书验证工作的一般规则相矛盾。2004-01-07 之后,签名无效。如果 Windows 10 接受它,则此类行为违反了验证规则和准则。他们为什么这样做,是微软要回答的问题。 (2认同)

Sim*_*onJ 8

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

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