Firefox 现已成为首个也是唯一一个部署快速全面证书吊销检查的浏览器,该技术不会向任何人(甚至 Mozilla)透露您的浏览活动。
每天有数千万个 TLS 服务器证书被签发,用于保护浏览器与网站之间的通信安全。这些证书是无处不在的加密技术的基石,也是我们对万维网愿景的关键部分。虽然证书的有效期最长可达 398 天,但在其生命周期内的任何时间点都可能被吊销。已吊销的证书构成严重安全风险,不应再用于验证服务器身份。
识别已吊销证书很困难,因为信息需要从证书颁发机构流向每个浏览器。基本上有两种处理方法:浏览器要么需要实时向权威机构查询遇到的每个证书,要么需要维护一个频繁更新的吊销证书列表。Firefox 的新机制 CRLite,首次使得后一种策略变得可行。
借助 CRLite,Firefox 会定期下载出现在证书透明度日志中的所有吊销证书集合的紧凑编码。Firefox 在本地存储此编码,每 12 小时更新一次,并在每次创建新的 TLS 连接时私下查询它。
您可能听说过吊销机制已失效或不起作用。长期以来,网络在此领域一直陷于安全性、隐私性和可靠性之间的糟糕权衡。但现在情况已不再如此。我们从 Firefox 137 开始为所有 Firefox 桌面用户启用了 CRLite,并且我们已经看到它使吊销检查变得功能完善、可靠且性能良好。我们希望在其它更受限的环境中也能复制我们的成功。
更好的隐私性和性能
在版本 137 之前,Firefox 使用在线证书状态协议实时向权威机构查询吊销状态。证书颁发机构不再被要求支持 OCSP,并且一些主要证书颁发机构已经宣布他们打算逐步停止其 OCSP 服务。这有几个原因,但最主要的是 OCSP 存在隐私泄露问题。当用户向 OCSP 服务器查询证书时,他们会向该服务器透露他们打算访问某个域名。由于 OCSP 请求通常通过未加密的 HTTP 进行,此信息也会泄露给所有路径上的观察者。
在对我们的 CRLite 实现的稳健性、准确性和性能获得信心后,我们将在 Firefox 142 中为域验证证书禁用 OCSP。封堵 OCSP 隐私泄露漏洞,与我们通过推出 HTTPS-First、DNS over HTTPS 和 Encrypted Client Hello 来加密互联网上一切内容的持续努力相辅相成。
禁用 OCSP 还能带来性能优势:我们发现 OCSP 请求在中位数情况下会阻塞 TLS 握手 100 毫秒。在我们推出 CRLite 的过程中,我们观察到 TLS 握手时间有了显著改善。
CRLite 的带宽要求
使用 CRLite 的用户平均每天下载 300 kB 的吊销数据:每 45 天下载一个 4 MB 的快照,以及在此期间的一系列“增量更新”。
为了了解 CRLite 产物有多么紧凑,让我们将其与证书吊销列表进行比较。CRL 是一个序列号列表,每个序列号标识来自单个颁发者的一个吊销证书。Mozilla 根存储库中的证书颁发机构已向通用 CA 数据库披露了大约三千个活跃的 CRL。这三千个 CRL 总共大小为 300 MB,而保持其副本最新的唯一方法是定期重新下载它们。CRLite 将相同的动态吊销证书集合编码为每天 300 kB。换句话说,CRLite 的带宽效率比每日下载 CRL 高一千倍。
当然,没有浏览器会每日下载所有 CRL。为了进行更有意义的比较,我们可以考虑 Chrome 的 CRLSets。这些是手动挑选的吊销集合,每日分发给 Chrome 用户。近期的 CRLSets 大小为 600 kB,包含约所有吊销的 1%。Firefox 的 CRLite 实现使用一半的带宽,更新频率提高一倍,并且包含所有吊销。
包含所有吊销对于安全性至关重要,因为目前没有可靠的方法来区分关键安全吊销与管理性吊销。大约一半的吊销是在未指定原因代码的情况下进行的,其中一些吊销很可能是由于证书所有者不希望强调的安全问题。当使用原因代码时,它们的使用方式常常含糊不清,无法清晰地映射到安全风险。在这种环境下,唯一安全的方法是检查所有吊销,而这现在通过 CRLite 成为可能。
最先进的阻止列表技术
您可能还记得我们在 2020 年发布的一系列关于 CRLite 实验的博客文章。在这些实验之后,我们成功地将其部署到 Nightly、Beta 版本以及 1% 的发布版本用户。但这个早期 CRLite 设计的带宽要求最终被证明是过高而难以承受的。
我们通过开发一种新颖的数据结构——“Clubcard”集合成员测试——解决了带宽问题。在原始 CRLite 设计使用“多层级联布隆过滤器”的地方,基于 Clubcard 的 CRLite 使用了“分区两级级联 Ribbon 过滤器”。“两级级联”的想法由 Mike Hamburg 在 RWC 2022 上提出,而“分区”是我们自己的创新,我们在 IEEE S&P 2025 的一篇论文和 RWC 2025 的一次演讲中进行了介绍。
未来改进
我们正在努力使 CRLite 的带宽效率更高。我们正在开发新的 Clubcard 分区策略,以更有效地压缩大规模吊销事件。我们还在集成对 HTTP 压缩字典传输的支持,这将进一步压缩增量更新。并且我们已经成功倡导缩短证书有效期,这将减少需要编码任何特定吊销的 CRLite 产物数量。通过这些增强,我们预计 CRLite 的带宽需求在未来几年内将呈下降趋势,即使 TLS 生态系统本身持续增长。
我们的 Clubcard 阻止列表库、我们为 CRLite 实例化的 Clubcards 以及我们的 CRLite 后端均可供任何人免费使用。我们希望我们在为 Firefox 构建快速、私密和全面的吊销检查方面取得的成功,将鼓励其他软件供应商采用这项技术。