DoH、DoT 与 ECH 详解:现代互联网隐私指南

在追求更安全、更私密的互联网的道路上,涌现了几种新技术,用于加密传统上以明文形式发送的流量。其中最重要的是 DNS over HTTPS (DoH)、DNS over TLS (DoT) 和 Encrypted Client Hello (ECH)。本指南将解释它们是什么、它们如何工作,以及你如何开始使用它们。


第一部分:加密互联网的“电话簿” - DoH 与 DoT

问题所在:明文 DNS

你可以将域名系统 (DNS) 想象成互联网的“电话簿”。当你在浏览器中输入 google.com 时,你的设备会向 DNS 服务器发送一个查询,请求其对应的 IP 地址(例如 172.217.160.142)。

传统上,这个查询是以明文形式发送的。这意味着在你和 DNS 服务器之间的任何人——你的 ISP、网络管理员,或公共 Wi-Fi 上的恶意行为者——都能看到你访问的每一个网站。这些数据可以被收集、出售,或用于审查和监视。

解决方案:DoH 和 DoT

DoH 和 DoT 通过加密你的 DNS 查询来解决这个问题,使其对第三方不可读。

DNS over TLS (DoT)

  • 工作原理: DoT 将你的 DNS 查询封装在一个安全的 TLS (传输层安全) 隧道中,这与用于保护 HTTPS 网站的技术相同。它运行在一个专用端口上:853
  • 优点: 它是一个标准化的、高效的协议,专为加密 DNS 而设计。
  • 缺点: 由于使用专用端口,它很容易被识别,并可能被希望限制 DNS 流量的网络防火墙阻止。

DNS over HTTPS (DoH)

  • 工作原理: DoH 将 DNS 查询打包成常规的 HTTPS 流量,并通过 Web 流量的标准端口 443 将其发送到支持 DoH 的 DNS 服务器。
  • 优点: 它几乎无法与普通的加密 Web 流量区分开来。这使得它极难被阻止,除非同时阻止大部分互联网,从而提供了强大的抗审查能力。
  • 缺点: 一些网络管理员认为它可能会绕过本地网络策略,因为 DNS 流量被隐藏在普通的 Web 流量中。

DoH vs. DoT: 你应该使用哪一个?

对于普通用户来说,DoH 通常是首选,因为它具有更强的抗审查能力。它能无缝工作并融入背景流量中。DoT 也很出色,但更容易被阻止。

如何启用 DoH/DoT

你可以在操作系统级别或浏览器中启用加密 DNS。

1. 在你的浏览器中 (因其简单性而推荐)

  • Google Chrome: 前往 设置 -> 隐私和安全 -> 安全。启用 使用安全 DNS 并选择一个提供商 (如 Cloudflare, Google, 或 Quad9)。
  • Mozilla Firefox: 前往 设置 -> 隐私与安全,向下滚动到 启用基于 HTTPS 的 DNS。选择一个提供商。

2. 在操作系统级别

  • Android (9+): 前往 设置 -> 网络和互联网 -> 私密 DNS。选择 私密 DNS 提供商主机名 并输入提供商的主机名 (例如, Cloudflare DoT 的 1dot1dot1dot1.cloudflare-dns.com)。
  • Windows 11: 前往 设置 -> 网络和 Internet -> 以太网WLAN -> DNS 服务器分配。点击 编辑,选择 手动,并打开 IPv4。输入支持 DoH 的解析器 IP,然后在下拉菜单中选择 仅加密 (基于 HTTPS 的 DNS)
  • iOS 14+ / macOS 11+: 需要从 Cloudflare 或 NextDNS 等提供商处安装配置文件。

第二部分:下一个前沿 - Encrypted Client Hello (ECH)

遗留问题:SNI 泄露

即使使用了 DoH/DoT,仍然有一小部分关键信息未被加密:服务器名称指示 (Server Name Indication, SNI)

当你的浏览器连接到一个安全网站 (https://example.com) 时,它会使用 TLS。在 TLS 握手的第一个消息(“Client Hello”)中,浏览器必须说明它想连接到哪个网站。这就是 SNI。这就像寄一封加密的信,却把收件人的名字写在信封外面。

你的 ISP 或网络观察者无法看到你通信的内容,但由于 SNI 泄露,他们仍然知道你正在连接到哪个网站

解决方案:Encrypted Client Hello (ECH)

ECH 是一项突破性技术,旨在通过加密 SNI 本身来填补这最后一个隐私漏洞。

  • 工作原理: 这是一个巧妙的两步过程。
    1. 你的浏览器首先通过一个特殊的 DNS 记录(HTTPS 记录)获取服务器的公钥。这个过程通过 DoH/DoT 安全地完成。
    2. 然后它构造两个 “Client Hello” 消息:
      • 一个 Inner Hello: 包含真实的、敏感的 SNI (例如, google.com)。这整个消息都使用服务器的公钥加密。
      • 一个 Outer Hello: 包含一个通用的、不敏感的服务器名称 (例如, cloudflare.com)。加密后的 Inner Hello 就藏在这个消息里面。

对于外部观察者来说,这看起来就像你只是在连接到那个通用的外部服务器 (cloudflare.com)。而实际的服务器收到这个消息后,用它的私钥解密 Inner Hello,然后无缝地将你引导到正确的网站 (google.com)。

如何启用和测试 ECH

ECH 仍处于实验阶段,但已得到主流浏览器和 Cloudflare 等平台的支持。

1. 首先启用 DoH: ECH 要求在你的浏览器中启用 DoH。

2. 启用 ECH 标志

  • Google Chrome: 导航到 chrome://flags/#encrypted-client-hello 并将其设置为 Enabled
  • Mozilla Firefox: 导航到 about:config。搜索 network.dns.echconfig.enabled 并将其设置为 true。同时确保 network.dns.use_https_for_https_rrtrue

3. 测试你的连接

启用 DoH 和 ECH 后,重启浏览器并访问 Cloudflare 的测试页面:https://www.cloudflare.com/ssl/encrypted-sni/

点击 “Check My Browser”。如果一切正常,你应该会看到安全 DNS、TLS 1.3 和 Encrypted Client Hello (ECH) 的绿色对勾。


结论

通过将 DoH/DoTECH 相结合,我们可以实现前所未有的隐私和安全级别。你的浏览活动,从最初的域名查找到你连接的服务器,都将被屏蔽,免受窥探。虽然仍处于早期阶段,但这种组合代表了一个真正私密和开放的互联网的未来。