如何检测 SSL 上的 NSA MITM 攻击?

信息安全 tls 证书颁发机构 中间人
2021-08-12 22:04:36

正如布鲁斯施耐德在这里报道的那样......

https://www.schneier.com/blog/archives/2013/09/new_nsa_leak_sh.html

...据报道,美国国家安全局对巴西的一家公司进行了 MITM 攻击,并通过破坏他们的路由器来解密他们的 SSL 流量。评论者还提到不久前针对 DigiNotar CA 的类似攻击。

我的问题是,在任何一种情况下,SSL 证书的 SHA1 指纹是否会被 MITM 攻击更改?从理论上讲,如果有人注意并看到指纹不同,他们可能知道他们被监视了,对吧?

2个回答

并通过破坏主干路由器来解密他们的 SSL 流量

不,这是错误的(但它不会影响问题的其余部分)。根据该声明,NSA 入侵了属于目标的路由器(这并不重要)。更重要的是,入侵路由器并没有帮助 NSA 解密 SSL 流量:它所做的只是让 NSA 对加密和签名的流执行中间人攻击。如果 SSL 的所有方面都成立,那么该攻击就会被检测到,并且 NSA 将无法解密合法流量。


攻击的决定性部分是 NSA 可以为 Google 制作假证书。SSL证书大致包含以下部分:

  • 证书属于谁的描述 (Google)
  • 该实体的公钥
  • 对证书担保人(CA)的描述
  • 一些数学魔法,确保只有 CA 私钥的持有者才能创建该证书

NSA 似乎知道 CA 的私钥,因此他们可以创建一个包含不同公钥的证书,该公钥对应于 NSA 创建的私钥,而不是 Google 持有的私钥。

由于假证书与真证书不同,因此具有不同的指纹。(请注意,对于 MD5 指纹,情况可能并非如此:MD5 的抗碰撞性已被充分破坏,以允许创建两个具有相同指纹的证书——但不能制作与现有证书具有相同指纹的证书。但没有这样的漏洞以 SHA-1 闻名。)因此,如果您检测到证书的 SHA-1 指纹是错误的,那么您就知道您正在积极参与中间人。

这具有有限的实际重要性,因为您必须能够以某种方式可靠地检索该 SHA-1 值。您将在哪里找到可信赖的连接来检索这些指纹?

在多方之间传播验证 是抵抗少数 CA 的危害同时允许浏览迄今为止未知的站点的一种方法。

要检测 MITM 攻击,您需要某种不易被第三方篡改的方式与另一端进行通信。如果存在 MITM 攻击,则您使用的密钥与另一端使用的密钥不同,并且加密位也不同。

一种经典的方法出现在一些早期的公钥电话加密单元中。通话建立后,两端将显示基于正在使用的公钥的 2 位号码。然后双方将通过语音验证他们看到了相同的号码。入侵者需要能够无缝替换用户的部分对话才能逃脱 MITM 攻击。

这表明了一条通向更通用解决方案的途径。现有的 MITM 攻击者通常只是通过明文(尽管他们可能会引入攻击)。在两端使用适当的软件,MITM 攻击者必须对两端生成一致的谎言。有可能让攻击者任意努力地制造谎言。