如果攻击者在握手之前进行了 MIM 攻击,并且发生了什么,则获取两个公共(public)证书并仅充当监听器。
不要尝试充当一方,只需阅读所有通信即可获取有用信息,例如 JWT token 和有关用户在该网站上所做的其他信息。
鉴于攻击者能够在连接安全之前拦截证书,它可以在握手完成后打开所有数据包,我错了吗?
这可能吗?
最佳答案
是和否,这取决于游戏中的一些其他元素......
在没有 SSL 证书的情况下,答案是肯定的!
怎么做?
让我们考虑一下经典案例,其中 2 个对等点是 Alice 和 Bob,他们试图通过 HTTP 进行通信。
MITM 只能从 Alice 和 Bob 那里得到公钥。不是私钥。即使在原始情况下,Alice 也只能使用 Bob 的公钥加密信息给 Bob,Bob 也只能使用 Alice 的公钥加密信息给 Alice。
“智能”MITM 会做的是替换 channel 中为每一对传递的公钥。换句话说:Alice 发送 Bob 应该收到的 key 。 MITM 将拦截此 key 而不将其传递给 Bob,而是他/她将替换为自己的 key (我们称之为黑客 key ),然后将此黑客 key 传递给 Bob。
对于 Bob 应该发送给 Alice 的 key ,上述相同的事情会在另一个方向上发生。
嗯...现在 Alice 和 Bob 都收到了一个黑客 key ,他们认为 key 是来自另一个对等方的原始 key (因为没有证书),但原始 key 由黑客保留。 你有看到?黑客可以只从一方接收信息并解密(因为它是用黑客的公钥加密的),然后用另一方的原始公钥重新加密。就这么简单!
...但如果有 SSL 证书,答案是否定的。
为什么?
因为证书的存在正是为了解决上述这个问题。这意味着,如果来自 Alice/Bob 的公钥实际上属于 Alice 和 Bob,则可以通过数字签名对其进行验证,因此,如果他们使用 SSL 证书,Alice 和 Bob 能够检测到某些 MITM 交换了原始 key .这是如何工作的超出了这个问题的范围,但“作为一个简短的回答”,这两个站点都将“预安装”第三方证书,可用于验证所交换的公钥的真实性。
关于ssl - "man in the middle"攻击 https 可以读取所有通信吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50033054/