当前的浏览器如何处理证书撤销?

信息安全 网页浏览器 火狐 证书吊销 ocsp crl
2021-08-29 12:59:44

我是 Firefox 用户,最近偶然发现了Liu、Yabing 等人。“网络 PKI 中证书撤销的端到端测量。” 2015 年互联网测量会议论文集。ACM,2015 年研究,在担心片刻之后,我发现自己想知道吊销列表检查或 OCSP 是否在最新版本的 Firefox 和其他浏览器中仍未实现或部分实现。尽管我在网上搜索了一段时间以寻找关于撤销列表检查和 OCSP 的最新更新(我不得不承认,我的搜索主要限于 Firefox 更新),但我找不到任何有意义的东西。

你们中的任何人都有这方面的最新更新吗?如果重新进行整个评估,下面的很多表格(取自先前引用的研究)是否仍会以红色划线?我的印象是应该进行这样的重新评估。

在此处输入图像描述

例如,Chrome 和 Firefox 采用的另一种方法是嵌入式 CRL 集。它们的更新频率是多少?设置的更新延迟是否足够小,可以避免大多数攻击?

1个回答

不是很好。

理论上,该系统应该可以工作。在实践中,它没有。旨在管理撤销的实现——即CRLOCSP——都存在问题。此答案大部分基于Alexey Samoshkin的这篇文章以及Scott Helme的这篇文章。

CRL 呢?

证书吊销列表是确定证书是否有效的一种非常简单的方法。它本质上是所有已撤销证书的列表。如果您想检查证书是否已被吊销,您需要检查相关的吊销列表。

此列表可能非常大,下载速度很慢,并且需要您在线才能验证证书的有效性。虽然在线要求对浏览器来说似乎不是问题,但证书的用途比验证网络服务器的用途更多,网络服务器可能确实离线。

在实践中,CRL 被认为是一种过时的机制,它提供了太多的开销并且在实践中是不可行的。

OCSP 呢?

OCSP 旨在成为解决 CRL 的所有问题的金鹅。在实践中,它引入了一系列新问题。

  • 由于需要向 OCSP 端点发出内联请求,延迟增加。
  • OCSP 端点可用性的依赖性。
  • 对 CA 的隐私妥协,因为您需要传输您希望获得 OCSP 信息的证书(以及哪些域)。

失败怎么办?

如果 CRL 或 OCSP 端点不可用会怎样?结果,什么都没有。如果证书的状态无法验证,浏览器默认认为它们是合法的。这意味着一个攻击者可以成功地让我的浏览器“放弃”尝试获取 OCSP 数据(例如,通过丢弃所有打算去 OCSP 端点的数据包),即使被撤销的证书也被认为是有效的。

我们会解决撤销问题还是应该放弃?

有一些尝试来缓解这些问题。Chrome 使用 CRLSet,Mozilla 使用 OneCRL。这个想法基本上是我的浏览器包含所有 CRL 的列表并定期(例如每天一次)更新它们。

另一个尝试是 OCSP Stapling,它将举证责任再次转移到服务器。这个想法是服务器定期询问 CA 证书是否仍然有效,然后获得一个定时响应,服务器将其包含在证书中。

这解决了上面提到的几个问题:

  • 证书及其吊销状态在一次传输中发送,从而减少延迟。
  • CA 不会获得有关用户请求哪些域的信息。
  • CA 的 OCSP 端点可能会降低可用性,因为消息在一段时间内有效。
  • OCSP 端点的负载较低,因为它更多地分布在 Web 服务器之间。

那么问题在哪里呢?

我提到证书吊销的当前状态很糟糕,所以显然必须有一个问题。事实证明,Web 服务器并不擅长实现 OCSP 装订。我不会详细介绍所有细节,因为Alexey 的文章很好地解释了它。基本要点是即使启用,某些服务器也可能不会立即发送装订响应。如果证书已被吊销,某些服务器(如 nginx)不会发送响应。这意味着即使网络服务器知道证书被吊销,它也不会告诉用户因为……原因?

怎么样must-staple

很高兴你问!这个想法很简单,证书包含一个标志,指示服务器必须装订 OCSP 响应,否则验证将失败。理论上听起来不错,那么问题在哪里?

问题是浏览器对这个标志的反应很奇怪。Firefox throws MOZILLA_PKIX_ERROR_REQUIRED_TLS_FEATURE_MISSING,只有在你已经知道它的意思时才有意义——只比向我们抛出T_PAAMAYIM_NEKUDOTAYIM. 另一方面,Chrome 根本不在乎。Chrome 根本不支持 OCSP,因此需要它的扩展被忽略是合乎逻辑的。


总之,证书吊销被破坏了,我们每个人都无法修复它。