什么是代码签名中的时间戳?有什么用?
发布日期:2022-11-04即使在代码签名证书过期,时间戳可以保持您的数字签名有效。
代码签名证书向用户保证,他们正在下载或安装的软件来自受信任的来源,并且自签名以来没有被修改过。此外,像 Microsoft Windows 这样的操作系统需要代码签名来保护用户免受那些不保证其真实性的用户的侵害。
与 SSL/TLS 证书一样,证书颁发机构提供的可信代码签名证书提供给希望对其软件进行数字签名的软件开发公司或个人。因此,它可以被视为受信任的来源,并避免未知的发布者警告消息引起对软件真实性的怀疑。
不幸的是,经常发生即使签名的软件也会突然停止运行,甚至可能突然开始显示警告消息。主要原因之一是时间戳。所以是的,如果您的签名软件或应用程序没有时间戳,那么一旦您的代码签名证书过期,它将开始向您的用户显示警告消息。
什么是代码签名中的时间戳?
时间戳是冻结您的数字签名的所有类型的软件签名证书和验证的基本功能。由于时间戳,即使在代码签名证书的过期日期之后,操作系统也会接受您签名的软件。
因此,每当评估带时间戳的数字签名时,时间戳功能将允许根据签名的时间和日期而不是执行时的当前时间来验证签名的有效性。相反,没有时间戳的签名会根据当前日期和时间进行验证。
因此,如果您在几年前分发了您的软件并且您的证书已过期,那么签名也将过期并且将不再有效。最终,它将阻止您的软件用户执行您已经签名和安装的软件。
简而言之,只要用户运行它,就会检查嵌入在您签名软件中的数字签名。这意味着如果您的代码签名证书过期并且没有时间戳,那么该软件将突然停止为所有用户工作。
同样,软件是为延长使用时间而构建的,因此,时间戳被认为是签名过程的重要组成部分,因此软件可以继续使用多年。
最后,时间戳由您的证书颁发机构 (CA)签名和保护,使其能够抵抗欺骗或篡改。同样,即使您购买代码签名证书的 CA 不受信任,您的时间戳软件仍然有效。
时间戳如何工作?
时间戳使用 PKI(公钥基础设施)来应用时间戳。让我们逐步看一下,以便更好地理解时间戳的工作原理:
软件或应用程序创建其哈希值,然后为软件或应用程序的唯一标识符加上时间戳,并将其进一步发送到 TSA(时间戳管理局)。
从那时起,即使软件代码发生最轻微的变化,也需要与 TSA 服务器就该变化进行沟通。
TSA 合并哈希和其他相关信息,包括权威时间。然后,使用 TSA 私钥的数字签名软件创建一个时间戳令牌并将其返回给客户端。类似地,时间戳令牌包含有关客户端应用程序的信息,这些信息需要稍后通过时间戳进行验证。
同样,一旦客户端软件获得时间戳令牌,它就会记录在数字签名中。
每当数字签名和时间戳的软件或应用程序在未来执行时,它将使用 TSA 的公钥来验证时间戳并验证它是否来自受信任的 TSA。同样,它也会重新计算原始数据的哈希值,并与上面的第一步进行比较。
并且,如果在将时间戳应用于软件后发现任何更改,则哈希验证将失败并生成警告消息,说明软件代码已更改且不应被信任。
什么时候时间戳?
时间戳通常在步骤一到二中完成。准确地说,一旦您的软件或应用程序经过哈希处理,并且在添加数字签名之前,服务器就会使签名调用时间戳服务器。
通常,像沃通CA这样的CA(证书颁发机构)有自己的时间戳服务器和公共服务器。而且,您配置的任何服务器都会以时间戳响应,包括签名和哈希值。
概括
在使用代码签名进行数字签名的同时为您的软件添加时间戳是至关重要的部分之一。如果没有时间戳功能,它可能会给您的软件用户带来问题。
例如,一旦代码签名证书过期,没有时间戳的数字签名软件就会开始向用户显示警告消息,这会产生信任问题。相反,时间戳确保即使在您的代码签名证书过期甚至被撤销后,签名仍将保持有效和可信。