RFC 9162《证书透明度 2.0(Certificate Transparency v2.0)》中文导读

诚实披露:本页为 IETF RFC 9162 的中文译介版本。原文由 IETF 发布,依 IETF Trust 条款可自由再制与翻译;本译本由 AI 基于人类权威一手文献(RFC 英文原文)辅助整理生成,非人类原创,亦非逐字全文翻译,仅供学习参考。任何规范性判断以英文原文为准,英文原文见 rfc-editor.org/rfc/rfc9162.txt

摘要

"Certificate Transparency aims to mitigate the problem of misissued certificates by providing append-only logs of issued certificates."(§1)

译:证书透明度旨在通过提供已签发证书的仅追加日志,来缓解证书误签发的问题。

RFC 9162 是证书透明度(CT)的 2.0 版本,废止了作为 CT 1.0 的 RFC 6962。它的核心思路不是阻止 CA 误签发,而是让任何误签发都无法被隐藏:所有证书都被写入公开、可审计、只能追加的日志,域名持有者与第三方监视者因此能够及时发现自己名下出现的可疑证书。

与邮件生态的关联:MTA-STS(RFC 8461)依赖公共 CA 体系校验 MX 主机证书,SMTP over TLS 的证书信任也建立在同一套 PKI 之上。CT 是这套 PKI 的问责基础设施——它决定了「有人为你的邮件域签发了一张流氓证书」这件事能否被发现。因此,理解 CT 对评估邮件传输加密的真实强度有直接意义。

2. 密码学组件

2.1 Merkle 树

日志以二叉 Merkle 树实现「仅追加(append-only)」性质。每个叶子节点是一条提交条目的哈希,内部节点由其子节点哈希拼接后再哈希得到。为防止叶子节点与内部节点被混淆构造(第二原像攻击),两类哈希各自带有域分离前缀:叶子用 0x00,内部节点用 0x01

这一结构使两类证明可以高效生成与校验:

2.2 签名

日志使用配置好的签名算法对树头等结构签名;算法与哈希函数均可由日志参数指定,配合第 9 节的算法敏捷性机制演进。

3. 提交者(Submitters)

任何实体都可以向日志提交证书链;CA 还可以提交预证书(precertificate),用于在正式签发前先行公示签发意图。提交时须附带直到受信任锚点的完整证书链。CA 对预证书的签名,被视为等同于对相应证书的签发承诺——误签发的责任同样成立。日志接受提交后返回 SCT。

4. 日志格式与运作

"Periodically, each log SHOULD sign its current tree head information (see Section 4.9) to produce an STH."(§4.10)

译:每个日志应当(SHOULD)周期性地对其当前树头信息签名,以生成一个 STH。

5. 日志客户端消息(API)

第 5 节定义了一组 HTTP API,涵盖提交条目、获取最新 STH、获取一致性证明、按哈希或按索引获取包含证明、拉取条目区间、获取受信任锚点等。CT 2.0 把 1.0 中分散的提交接口统一为 submit-entry,并允许在获取包含证明的同时一并取得一致性证明,减少往返。

6-8. 各方角色

9. 算法敏捷性

CT 1.0 把哈希与签名算法写死,CT 2.0 改为通过 IANA 注册表管理可用算法,使日志能够在密码学演进时平滑迁移。

1.3 相对 CT 1.0(RFC 6962)的主要差异

10-11. IANA 与安全考量

IANA 侧建立了哈希/签名算法、日志扩展等相关注册表。安全考量强调:CT 提供的是事后可发现性,而非事前阻止能力;日志运营方的诚实性、监视者的实际运行覆盖度,以及客户端是否真正强制要求 SCT,共同决定了这套机制在现实中的有效性。需要留意的是,本文档的状态为实验性(Experimental),当前公共 CT 生态的大规模部署仍主要基于 RFC 6962 所定义的 1.0 版本。

参考链接