摘要

  • 更新或轮换代码签名证书,只会改变今后版本使用的密钥;此前正确签名并加盖有效时间戳的二进制文件,不会因此自动失效。
  • 应以制品为单位完成权威切换:把文件哈希、签名证书、RFC 3161 令牌、有效吊销时点、分发位置和验证器实测结果连接起来。

中午,软件发布方把流水线切到新证书。第一个新构建顺利完成签名,控制台显示绿色。可是,前一晚生成的安装包仍留在区域镜像中;它带有有效时间戳,在客户设备上依然通过验证。

这未必表示系统出错。真正的控制错误,是把证书轮换完成误报为信任切换完成。

代码签名把一组字节与签名身份联系起来。时间戳提供另一项证明:可信时间戳机构确认某个哈希在特定时刻已经存在。两者结合后,验证器可能在签名证书正常到期之后仍接受原有签名;如果密钥后来被怀疑泄露,也可以按照有效吊销时点,把制品分成此前与此后两组。

因此,代码签名证书在运营上有两个终点。第一个是到期日:从此不应再用它产生新的有效签名。第二个是验证器不再承认其签名权威的时点。二者可以相同,但协议与验证政策并不保证它们天然重合。

时间戳究竟证明什么

RFC 3161 以 MessageImprint 为核心。它由哈希算法标识和数据哈希组成。时间戳机构检查算法与长度,却不阅读底层程序。返回的令牌包含策略、唯一序列号和 genTime,并由专用于时间戳的密钥签名。

所以,令牌并不证明软件安全。它证明某个特定哈希在某项策略下被提交。它也不能证明发布方控制了全部签名路径,更不能证明旧版本已从所有镜像撤下。

验证仍是一项主动工作。RFC 3161 要求请求方核验响应状态、时间戳机构证书、数据哈希、算法、签名与响应的及时性。Microsoft 的 SignTool 也把 signtimestampverify 分为三项操作;RFC 3161 模式用 /tr 指定时间戳服务器,用 /td 指定时间戳摘要算法。验证可以检查签名证书是否链接到可信机构以及是否已被吊销,而不只是确认文件里存在签名结构。

Microsoft 的 ClickOnce 文档给出了直接后果:只要时间戳有效,即使签名证书已经到期,应用仍可继续被接受。这项设计很有价值,发布方无需在每次证书到期时重新签署全部历史正常版本。也正因为历史签名可以延续,只检查下一个构建是否使用新证书远远不够。

吊销划出时间边界

CA/Browser Forum 的代码签名基线要求适用于公开信任的代码签名证书及相关时间戳机构。签发此类证书的 CA 必须运营符合 RFC 3161 的时间戳服务,建议订户使用时间戳,并拒绝使用 SHA-1 MessageImprint 的请求。

这些要求也说明,吊销不是简单删除。一张证书可能签过一个文件,也可能签过数千个文件;吊销它,既可能阻止可疑代码,也可能使正常代码失效。CA 必须在收到可信问题报告后二十四小时内开始调查。若涉及密钥泄露,有效吊销日期应尽量指向有证据支持的最早可疑时刻。

这个时点可以限定受影响软件。相关要求指出,带有早于吊销日期时间戳的对象应继续被视为有效。这是一项基线规则,并不能证明每个平台、每种配置都会产生完全相同的验证结果。

时间戳机构还有独立的故障边界。RFC 3161 区分正常停用与密钥泄露:若机构在密钥未泄露的情况下停用,并正确表达吊销原因,较早令牌可以继续有效;若时间戳私钥已经泄露,就不能再无条件相信它签发的令牌,审计日志或第二个独立时间戳可能成为关键证据。

正确的分母是全部在外制品

证书清单不够。发布方必须知道每个制品由谁签名、携带哪个时间戳、仍能从哪里取得,以及目标验证器如何处理它。

范围包括官方下载、软件仓库、内容分发缓存、企业软件商店、更新通道、离线安装包和恢复介质。从最新下载页面撤下文件,并不等于从其他位置撤回;反过来,若在定位正常历史版本之前就一刀切吊销,也可能把安全响应变成可避免的连续性事故。

最低控制是一份“制品权威切换台账”。对每个制品哈希,记录构建和版本、签名证书指纹与序列号、签名算法、时间戳令牌与机构、genTime、证书到期日、吊销状态与有效时点;再把这些字段连接到每个分发位置、撤下或替换状态、验证策略和实测的接受或拒绝结果。

完成标准因此可以被检验:未来构建只使用预期签名者;每个保留的旧制品都有明确的信任决定;要求撤下的制品已从受控分发面消失;代表性验证器给出预期结果。

证据边界

RFC 3161 规定令牌与验证方法,并不替任何具体机构背书。CA/Browser Forum 的要求不会让所有操作系统和包管理器自动一致。Microsoft 文档证明的是 SignTool、Authenticode 与 ClickOnce 的既定行为,而非所有软件生态。

本文不指控任何机构或发布方发生泄露。重点在于:到期、轮换、吊销和时间戳机构故障是四种不同事件。可靠的切换必须在证据与决策中保留这种区别。

来源