我应该信任哪些受信任的根证书颁发机构?

信息安全 tls 证书颁发机构 铬合金
2021-09-07 05:42:16

在最近两篇关于在机器上安装有问题的根证书的 Slashdot 文章 ( #1 #2 ) 之后,我决定仔细看看我在我的机器上安装了什么。
(我在 Win7 上使用当前版本的 Chrome,据我所知使用的是 Windows 的 CA 列表)

我的发现真的让我很惊讶。

  • 两台相对干净的机器有截然不同的 CA 列表。
  • 每个都有许多在 1999 年和 2004 年过期的 CA!
  • 许多 CA 的身份并不容易理解。

我还看到许多证书在 2037 年到期,在 UNIX 翻转前不久,大概是为了避免任何当前未知的 Y2K38 类型的错误。但是其他证书的使用时间要长得多。

我四处搜索,但有点令人惊讶的是,找不到公认​​的 CA 的规范列表。

  • 如果我的机器上有 MITM 流氓证书,我怎么知道?
  • 是否存在“已接受”证书的列表?
  • 删除过期的 CA 是否安全?
  • 我可以知道我是否/何时使用过 HTTPS 的 CA 吗?
4个回答

全部或无。

我们从 90 年代继承的单根 CA 信任范式几乎完全被打破

如果支持站点 SSL 证书的证书颁发机构已更改,如果旧 CA 和新 CA 都被浏览器1识别,则 Vanilla 浏览器不会跟踪或警告由于普通计算机信任来自几十个组织2的一百多个根证书- 所有这些都被平等对待 - 任何一个被破坏、懒惰或不道德的证书颁发机构都可以破坏任何地方的任何浏览器。

几乎所有的证书颁发机构都没有对您(即私营公司或外国政府)民主地负责,并且对他们的日常行为几乎没有或没有法律强制规定,这一事实使问题更加复杂。CA 列表的维护者(微软、苹果、谷歌、Mozilla、甲骨文等)没有资源、法律权限或倾向于审计证书颁发机构的内部行为。

由 1990 年代 Netscape trust kludge 3引入的关于我们真正信任谁和什么的认识论之谜需要进行昂贵的检修才能解决。我看不到在威胁或实际网络战的这一方面发生。


所以。

  • 如果您的计算机(例如,服务器)不与未知或临时源通信 - 然后通过具有受信任叶节点证书的明确列表且没有根证书的代理运行您的 HTTPS 流量。
  • 对于浏览互联网并在后台更新数十个应用程序的普通计算机,只需信任所有这些并遵循其他安全原则来保护您的计算机。

1. 后端服务和框架无论如何都无法有效地提示更改;因为它们通常缺乏与用户的交互并且需要提供无缝操作。
2. 例如,查看FirefoxiOS CA 列表。
3. 尽我所能,我无法重新找到一篇引人入胜的网络文章,该文章介绍了 Netscape 开发人员如何将当前的 Root CA 范例作为理论化的中间人攻击的快速补丁,以针对尚未假设的电子商务进行攻击。数字安全很难;90 年代初的冷战后遗症和立法技术文盲也无济于事。

从风险和概率的角度来看,您可以单独信任其中的每一个,但不能集体信任所有这些。如果您有 100 个 CA,并且每个 CA 有 98% 的概率可以信任它们,那么您最终将有 13% 的概率可以信任它们中的很多 (1 -(1-p)^N) .

浏览器供应商可以通过向插件提供证书信息 API 来轻松解决该问题。顺便说一句,中间人攻击 SSL 有一个明显的迹象:使用不相关的 CA 过早地更改证书。如果浏览器供应商允许插件检测这些,基于 CA 的安全性的信任级别将显着提高。

其他答案充满智慧。

我只是想指出名为Cert Patrol的 Firefox 扩展。它不能解决信任问题,但它确实有助于检测证书之间的差异。

底线是,您的浏览器可能信任很多 CA,但您不必这样做:如果您看到一个看起来可疑的证书“更新”,请在输入任何密码之前转身。

此外,必须有人链接到Honest Achmed 的根证书请求。对于现在的 CA 生态系统,这是一个有趣但悲伤的评论。

您当然可以删除过期的证书,并且实际上可以从您不认识或个人不信任的任何 CA 中删除。主要影响是,如果您浏览的网站已通过您删除的证书之一进行了身份验证,您的浏览器将不信任该网站。

如果您删除签署软件更新的证书,尤其是您在 chrome 中安装的任何扩展的证书,这些更新将失败。

AFAIK 没有 100% 普遍认可的 CA 列表。浏览器供应商和操作系统供应商自行决定信任哪些根证书;其中一些可能更多地基于营销而不是实际信任。