代码签名为可执行文件提供完整性证明,确保它们未被修改或损坏。许多现代操作系统需要代码签名机制,以保护其用户免受未知来源或没有真实性保证的软件代码的侵害。与HTTPS类似,证书颁发机构创建的受信任证书颁发给软件开发者,由软件开发者使用证书签署软件代码。添加时间戳的代码签名,在代码签名证书过期后,数字签名仍然可以被有效识别。
为什么在代码签名中添加时间戳?
代码签名最重要的部分之一是时间戳,这是签名过程的一部分。添加时间戳的代码签名,在代码签名证书过期后,数字签名仍然可以被有效识别。
如果软件由于代码签名证书过期而停止运行,请考虑对用户的影响以及如何修正它。您是否能够推送更新,或者该机制也会因签名过期而中断?在紧急情况下开发和部署补丁需要多少费用?如果您的软件停止工作,您的用户是否会遭受自己的业务影响?
由于过期签名的影响很大,因此充分理解和记录代码签名过程非常重要,并且始终为软件添加时间戳以保持数字签名长期有效。
时间戳不仅是软件持续可用性的最佳实践,而且还提供了安全优势。如果由于密钥泄露而需要吊销证书,则在吊销日期之前签名的任何内容都将继续有效,任何新签名都将无效。
时间戳如何发挥作用?
时间戳会保留软件上的签名,允许操作系统和其他软件在代码签名证书过期后接受签名。评估签名时,时间戳允许根据签名时间(而不是执行软件的当前时间)检查签名的有效性。
如果没有时间戳,将根据当前日期评估签名。您可能在几年前分发了软件,在这种情况下,您的证书将过期,签名将不再有效。这将阻止用户运行您的软件,并且根据平台的不同,可能无法规避这一点。
例如,代码签名证书在整个 2017 年(2017 年 1 月 1 日至 2017 年 12 月 31 日)有效,并且您在 2017 年 11 月对可执行文件进行了签名并加盖了时间戳。用户下载可执行文件并在今天运行它,而不是检查代码签名证书当前是否有效,而是检查时间戳并评估它在 11 月是否有效。它看到证书当时有效,并且签名被接受。
请注意,每次用户运行可执行文件时都会检查可执行文件上的签名。这意味着,如果您的证书过期并且没有时间戳,该软件将突然停止为您的所有用户工作。
对于大多数软件,您将其分发给用户并希望它尽可能长时间地工作 - 这使得时间戳成为签名过程的重要组成部分,以便您的软件可以继续使用多年。
时间戳本身由您的 CA 签名并受到保护,使其能够抵御篡改或欺骗,并且具有加密安全性。将时间戳视为副签名。
代码签名过程中如何添加时间戳?
(1)使用时间戳工具!在许多工具中,例如沃通的WoSignCode代码签名工具,为Windows平台代码签名提供了一个便捷操作的可视化界面,支持代码签名过程中添加时间戳。
(2)获取在线时间戳服务地址。购买沃通代码签名证书,可提供支持微软的Authenticode技术的时间戳服务网址,以及支持国际标准RFC3161的时间戳服务网址,方便用户快速签署代码文件、添加时间戳。