有没有办法绕过 SNI 窃听?

信息安全 tls
2021-09-03 06:14:11

我最近听说由于开销问题,已经放弃了加密 SNI 字段的讨论。几个月后,政府将制定一项嗅探 SNI 领域的计划,以便他们可以阻止与他们认为不合适的网站的连接生效。

SNI 字段仅适用于具有多个域的 Web 服务器,因此对于只有一个域的 Web 服务器不需要。(我对吗?)

作为绕过审查,我正在想象一种在浏览器初始化握手时任意删除 SNI 字段的方法。是否可以?如果没有,还有其他方法可以成功绕过吗?

1个回答

一些政府已经嗅到了 SNI。例如,我相信俄罗斯 ISP 这样做是为了遵守 Roskomnadzor 提出的法规。在它们未被嗅探或什至不存在的情况下,加密连接可能会被完全阻止。此外,当使用 HTTPS 时,个别页面被阻止的网站可能会被完全阻止。SNI 嗅探只是其中的一部分。

您是对的,在某些情况下可以使用禁用 SNI 来绕过审查。我经营一个在俄罗斯被封锁的网站,我发现如果去掉 SNI 字段,它并没有被封锁。但是,我的网站是唯一托管在其 IP 地址上的网站,因此一开始就不需要 SNI。可以创建一个浏览器扩展来选择性地禁用某些网站的 SNI 以逃避审查,但这并不总是可靠的。我不知道 Firefox 的新扩展 API 是否强大到足以修改这种低级行为。

您可以将浏览器修改为不包含 SNI,但这会阻止您连接到具有多个域的多个证书的 IP。当您连接到托管多个域的不明确 IP 地址时,服务器将不知道向您提供什么证书。SNI 存在,因此服务器可以使用正确的证书进行响应。通过在发送 SNI 之前与服务器进行机会加密来加密 SNI 是可能的,并且可以防止被动对手,但从根本上不能防止主动 MITM。