-3

假设一个受信任的根 CA 被破坏/强制生成欺诈性 SSL 证书。这样的证书能够实现什么,特别是关于 MITM 类型的攻击?

以 Facebook 为例,如果我去那里,我会得到 (1) 挂锁,(2) 由 DigiCert 签名的证书,以及 (3) 我可以检查 SHA 指纹是否匹配某个值 81:AB:etc。

我的假设是,如果 DigiCert 是受损的 CA,那么可以生成匹配 1、2 和 3 的假证书,对吗?SSL 安全模型中是否还有其他任何东西可以使假证书与实际颁发给 Facebook 的真实 SSL 证书区分开来?或者其他任何可以允许基于此证书检测 MITM 类型攻击的东西?

我的第二个假设是,如果 DigiCert 以外的 CA 是受感染的 CA,那么可以生成假证书,但它不会在上面说“DigiCert”,而且它不会在 SHA 密钥方面匹配?这是正确的,还是有可能(纯粹从技术角度来看)根 CA 创建一个模拟另一个根 CA 的证书?如果是这样,是否有任何其他方法可以检测到连接是用这个假证书加密的?另一个 CA 可以创建一个显然具有相同 SHA 密钥的证书吗?

这个问题的灵感来自英国即将颁布的“窥探者宪章”,该宪章赋予当局许多权力来监视数字通信。关键是这种权力在面对加密时可能会有多大用处,因为有人谈论使用“黑匣子”执行深度数据包检查来收集提供商(例如 Facebook)可能不会选择与英国政府分享的信息。我的猜测是这样的技术是不可能的(我希望 DPI 肯定不会!)但我并不十分清楚假证书和 MITM 攻击的可能性。我猜如果只是出于政治原因假设精通技术的客户可以检测到假证书,就不会尝试这样做。

4

1 回答 1

0

如果攻击者可以强制合法的根 CA 生成欺诈性 TLS/SSL 证书,他们就可以使用这些证书来冒充该用户。这就是Superfish问题如此重要的原因。根 CA 没有受到损害,而是他们将自己的根 CA 添加到一堆机器中,然后再将它们出售给客户。这使他们能够在用户不知情的情况下对所有流量进行中间人攻击。

还有一些特殊的保护措施可以防止这种情况发生。

一种这样的保护是 HTTP 公钥固定 (HPKP)。您可以插入一个标头,指定您的网站公钥和其中一个根 CA 的公钥。浏览器将存储此列表,并将终止任何与此不匹配的连接。所以,如果你试图阻止我与 Facebook 的连接(如果他们使用 HPKP),我的浏览器会抛出错误并且不允许请求通过。

通过在 HPKP 中指定根 CA,它表示只有该根 CA 才能签署您的证书。如果您在 HPKP 中指定了 DigiCert,您的浏览器将不会接受由 Comodo 签名的证书。

在胖客户端或移动应用程序中,您可以执行类似的操作,称为证书固定。基本上在开发应用程序时,您可以指定服务器需要返回什么证书。如果未指定该证书,则请求将失败。您还可以指定证书必须由特定的根 CA 签名。

还有一种称为在线证书状态协议 (OSCP) 的东西。浏览器将向根 CA 发出额外请求以验证证书的状态。这将检查它是否被撤销。在这里,这取决于您对 rootCA 的破坏程度。如果您的假证书未能通过 OSCP 验证,浏览器有望通知用户。

对于拥有正确 SHA 密钥的确切含义,我并不肯定。SHA1 和 SHA2 是散列算法,它们没有密钥。证书通常有两个使用 SHA 算法的东西。首先,它们将包含证书签名。这通常是证书内容的 SHA2,然后由根 CA 签名。该证书还包含一个指纹,它是整个证书的 SHA。更改证书的任何内容都会更改其指纹。但是,您需要另一条通信渠道才能知道预期的指纹是什么。

于 2015-06-21T02:03:42.650 回答