【问题标题】:Why should we set a timestamp when we do a codesigning?为什么我们在进行代码签名时要设置时间戳?
【发布时间】:2011-05-23 23:26:39
【问题描述】:

如果我为签名设置时间戳,会发生什么?
如果我不设置怎么办?

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

【问题讨论】:

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


    【解决方案1】:

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

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

    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 日过期,那么时间戳将被报告为无效并且在签名验证期间不会被计算在内。

    【讨论】:

    • 这句话“用于签名时间戳的证书必须在签名验证时有效”,最后一次更新中给出的示例在我看来是错误的。它破坏了整个想法签署时间戳。时间戳证书需要仅在时间戳签名期间有效,而不是在验证期间有效。
    • @ByjuVeedu 抱歉,您的操作不正确。任何正在验证的证书(不是签名)必须在验证时有效。这也适用于时间戳中使用的证书。
    • @Eugene Mayevski 'Allied Bits,我只是试图将我的系统时钟移到未来。尽管时间戳证书有效,但签名仍然有效。没有证书的签名失败。
    • @denis RFC 3161,第 4.3 段明确提到时间戳证书将过期,时间戳将失效。如果您有相反的规范性参考,我将很乐意阅读并更新答案。到目前为止,我认为不需要信任过期的证书。
    • @robbiefan 这种行为与证书验证工作原理的一般规则相矛盾。 2004-01-07 之后,签名无效。如果 Windows 10 接受它,则此类行为违反了验证规则和准则。他们为什么这样做,是微软要回答的问题。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 2015-08-17
      相关资源
      最近更新 更多