ssl - "man in the middle"攻击 https 可以读取所有通信吗?

标签 ssl https handshake man-in-the-middle

如果攻击者在握手之前进行了 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/

相关文章:

c# - 两个 docker 容器之间的 Dotnet SSL 错误

magento - Nginx 在 https 域上提供非安全资源

node.js - 保护 Socket.IO Websocket 并将其限制在域中

java - 是否可以删除 Java 中 SSL 握手的扩展部分?

go - 未能在 grpc 上完成安全握手?

magento - Nginx Magento SSL ERR_TOO_MANY_REDIRECTS

linux - 如何在 slapd.conf 中为 OpenLDAP 指定监听端口

ruby-on-rails - 在瘦服务器上的 Rails 应用程序中启用 https

javascript - ...此内容也应通过 HTTPS 加载

java - 如果 SSLSocket.startHandshake() 是同步的,为什么它会提供回调?