最近有很多关于证书被错误颁发的消息(由于颁发机构的系统安全性差!)。显然,目标用户主要是伊朗人,但不难想象这会发生在任何人身上。
我的浏览器预装了数百个证书。有什么办法可以防范流氓证书?
注意:我意识到这更像是一个“安全”问题而不是“密码学”问题,所以如果您觉得这超出了本论坛的范围,请随时在评论中反对这些问题。
最近有很多关于证书被错误颁发的消息(由于颁发机构的系统安全性差!)。显然,目标用户主要是伊朗人,但不难想象这会发生在任何人身上。
我的浏览器预装了数百个证书。有什么办法可以防范流氓证书?
注意:我意识到这更像是一个“安全”问题而不是“密码学”问题,所以如果您觉得这超出了本论坛的范围,请随时在评论中反对这些问题。
好吧,SSL 依赖于您“信任”颁发证书的一方这一事实——当前的设置是任何 CA 都可以为任何域颁发证书。已经有一些项目尝试为 SSL 证书实施Web of Trust基础设施,其中社区确认证书的真实性。但是仍然-您必须信任社区。
例如,有Perspectives项目。这是一个 Firefox 扩展,允许您选择一个“公证服务器”来检查提供给您的证书是否与其他用户看到的证书相同(以便检测中间人攻击)。
还有一个由Moxie Marlinspike制作的名为Convergence.io 的全新项目,它基于 Perpectives 的想法,但允许进行细粒度配置。目前它是最好的,它似乎很快就引起了人们的注意。我建议安装 Convergence.io。
我见过几种方法可用于帮助防止恶意证书。
Cert Patrol是一个 firefox 插件,它在先前接受的证书更改时通知用户。
Convergence更像是传统 CA 系统的替代方案。
此外,谷歌将其服务的合法证书硬编码到 chrome 中,这可能有助于解决特定情况,但不是更广泛情况的解决方案。
我看到的另一个建议但尚未实现的想法是在证书上有多个签名,例如让 3 个 CA 签署给定的证书(尽管您认为这需要一些浏览器集成,所以它将接受该一个而不是同一域的单个签名证书)。这并不能真正解决根本原因,但有助于降低单个 CA 妥协的可能性,从而完全违反 SSL 信任设置。
@JeffFerland 以“修复证书颁发机构问题”为主题撰写了这篇博文,除了 @RoryMcCune 在这里给出的答案之外,他和 @nealmcb 还为回答这个问题的主题提供了出色的输入。