Go 编程语言的安全基础设施正在更新,旨在包含一个硬编码的不受信任主题公钥信息 (SPKI) 指纹列表。此项更改确保 Go 标准库将明确拒绝任何包含这些特定指纹的证书链。通过针对 SPKI——即证书中包含公钥及其相关算法的部分——此更新提供了一种机制,即使颁发机构 (CA) 仍留在信任库中,也能拦截已知密钥材料已被泄露或不可信的证书。

不受信任的指纹具体列表包括与 eMudhra Technologies Limited 和 Comodo CA Limited 等实体相关的证书。例如,提供的数据包括各种“EM”(eMudhra)TLS 和 CS(代码签名)证书的指纹,以及来自 Comodo 的“AAA Certificate Services”。这些条目映射到特定的序列号和证书 SHA-256 哈希值,允许 Go 运行时在 TLS 握手或证书验证过程中识别并使这些特定的证书实例失效。

这种向明确指纹拒绝的转变突显了软件处理受损基础设施方式的转变。虽然证书透明度 (CT) 日志常用于监控证书颁发,但一些实现已开始阻止这些特定 CA 的证书记录,以防止伪造证书造成的日志垃圾。然而,这产生了一种权衡:虽然它防止了日志被淹没,但也意味着由这些受损密钥颁发的伪造证书可能不会记录在 CT 日志中,从而使其在野外更难被检测到。通过将这些拒绝操作硬编码到 Go 运行时中,开发人员旨在针对这些特定受损密钥派生的证书提供决定性的防御,无论更广泛的 CA 层级状态如何。