Alstra Solutions Ltd.

Alstra技术博客

加密客户端问候 (Encrypted Client Hello, ECH) 简介与使用方式

让我们了解一下 加密客户端问候 (ECH),这是一个革命性的 TLS 1.3 协议扩展,促进了整个客户端问候消息的加密。在 TLS 1.3 协商的初步阶段发送,ECH 使用浏览器(称为依赖方)事先必须知道的公钥来保护有效载荷。这种加密方法对于浏览器供应商已经熟悉的大型 内容分发网络 (CDNs) 非常有用。

ECH 起源于加密服务器名称指示 (ESNI),这是一项于 2018 年引入的实验性扩展,旨在降低域名窃听的风险。随着 ESNI 演变为 ECH,实现了更全面的加密,涵盖了整个客户端问候而不是仅包括服务器名称指示 (SNI)。

从实际意义上讲,ECH 代表了隐私保护的重大飞跃。当用户访问启用了 ECH 的 Cloudflare 网站上的网站时,只有用户、Cloudflare 和网站所有者才能识别所访问的网站。

传输层安全 (TLS) 的限制

虽然 SSL 和 TLS 协议在防止窃听和确保网页内容的机密性和完整性方面发挥了作用,但它们也存在一定的限制。例如,尽管网页的实际内容是加密和受保护的,但中间人仍然有可能通过分析 DNS 请求或服务器名称指示 (SNI) 等方式推断用户的行为。

让我们考虑这样一个场景,一个 IP 地址托管多个网站,这是像 Cloudflare 这样的服务或其他拒绝服务攻击保护的常见情况。服务器名称指示 (SNI) 成为一个隐私漏洞,如下所示:

  1. 使用 tshark 从特定 IP 地址捕获数据包:tshark -w /tmp/pg.pcap port 443 and host <IP_ADDR>
  2. 访问一个网站。
  3. 在访问网站后停止数据包捕获,按 CTRL + C。
  4. 分析结果:wireshark -r /tmp/pg.pcap。您将看到 Privacy Guides 网站的 TLS 握手。在第5帧左右,查找 "Client Hello"。
  5. SNI 值可以提取出来,该值泄露了访问的域名,可以使用 tshark 命令:tshark -r /tmp/pg.pcap -Tfields -Y tls.handshake.extensions_server_name -e tls.handshake.extensions_server_name

尽管使用了加密的 DNS 服务器,SNI 很可能揭示出访问的域名。这个问题将被 ECH 的引入所消除,ECH 加密整个客户端问候,防止信息泄漏。

Cloudflare 发布了 Wireshark 跟踪,演示了普通 TLS 握手和包含 ECH 扩展的 TLS 握手之间的区别。从跟踪中可以看出,在普通的 TLS 握手中会显示服务器名称,但在使用 ECH 扩展时会隐藏该名称。这个演示突出了 ECH 带来的显著隐私改进。

普通 TLS 握手

带有 ECH 的 TLS 握手

图片来源:Cloudflare

探索 ECH 的机制

ECH 旨在增强 TLS 握手的隐私性,该握手从 客户端问候 部分开始。该消息包含有关要使用的密码、TLS 版本以及最重要的用户试图访问的服务器(SNI)的信息。

以下是 ECH 的工作原理:客户端问候消息被分成两个部分 — 一个内部部分和一个外部部分。外部部分携带非敏感细节,而加密的内部部分携带 "内部 SNI"。

"外部 SNI" 是一个常见的标识符,表示用户试图访问 Cloudflare 上的一个加密网站。"内部 SNI" 包含用户打算访问的实际服务器名称。此数据使用公钥加密,只能由 Cloudflare 读取。握手完成后,网页将像任何其他 TLS 保护的网站一样正常加载。

在下面的示例中,用户正在访问 example.com。如果没有 ECH,任何中间网络都将能够检测到用户正在访问的网站。有了 ECH,可见的信息将仅限于 cloudflare-ech.com。

来源:Cloudflare

ECH:加密客户端问候的终极目标

ECH 的主要目标是确保与同一 ECH 服务提供商背后的不同源服务器的 TLS 连接无差别。这意味着,当连接到 Cloudflare 背后的源服务器时,您和 Cloudflare 之间网络上的任何人都无法确定您所连接的源服务器或您协商的握手参数。

除了提供直接的隐私保护外,ECH 如果能完全实现,还能为 TLS 新功能的部署铺平道路,而不会损害隐私。这一点至关重要,因为通过流量分析(一种在不解码底层加密方案的情况下了解通信信道属性的方法)存在信息泄露的风险。当前的 ECH 规范提供了一些缓解措施,但其覆盖范围并不完整,因此 ECH 对流量分析的抵制是一个值得未来探索的领域。

网站管理员如何在Cloudflare启用ECH

要在Cloudflare后面的网站上启用ECH:

  1. 登录到Cloudflare仪表板
  2. 选择您的帐户和域名
  3. 转到SSL > Edge Certificates
  4. 启用加密客户端问候 (ECH)

在浏览器上启用ECH

Firefox

ECH现在已在Cloudflare DNS服务和Firefox中受支持。按照以下步骤操作:

  1. 在Firefox中,转到:设置>通用>网络设置>启用HTTPS上的DNS并选择Cloudflare作为提供商
  2. 在about:config页面中搜索echconfig并启用它

Chrome或Brave浏览器

要在Chrome或Brave浏览器上启用ECH,请按照以下步骤操作:

  1. 导航到:chrome://flags/#encrypted-client-hello
  2. 启用加密客户端问候标志
  3. 重启Google Chrome

要验证浏览器的ECH状态,请访问 https://defo.ie/ech-check.php

2023年的ECH采用情况

ECH 最近获得了相当大的发展。2023 年 7 月,IETF117 会议透露,Chrome 浏览器和 Firefox 浏览器正在进行 1% 的 ECH 样本试验。ECH 的最终草案预计将于 2024 年 1 月提交给 IESG 进行评估。

Cloudflare 于 2023 年 9 月开始支持托管域的 ECH。随后,Mozilla 于 2023 年 10 月在 Firefox v118 中默认启用了 ECH。

各国政府已经开始采取措施应对 ECH。中国的 "长城防火墙" 于 2020 年 8 月开始阻止 ESNI 流量,但仍允许 ECH 流量。大约在同一时间,俄罗斯互联网服务提供商 Rostelecom 及其移动运营商 Tele2 也开始阻止 ESNI 流量。

结论

ECH 在确保用户隐私的同时又不影响网络服务的效率和功能方面迈出了一大步。随着隐私在我们的数字时代变得越来越重要,像 ECH 这样的协议的不断发展和完善是必不可少的。

Alstra如何帮助您

Alstra Solutions 始终将客户的隐私和安全放在首位。我们专业的专家团队随时准备帮助您的组织适应和实施加密客户端你好(ECH)。从在 Cloudflare 上为您的网站启用 ECH,到优化您组织内使用的所有浏览器的 ECH 设置,我们将指导您完成每个步骤,确保您的企业从 ECH 等最新进展中获益。