跳到主要内容
ecdsa.com

ECH(加密 ClientHello)

RFC 9849 定义的 TLS 1.3 扩展,用发布在 DNS 中的密钥加密真实的 ClientHello(包括服务器名称),网络上只能看到一个共享的公共名称。
其他写法ECHEncrypted ClientHelloESNIRFC 9849

服务器运营者把 ECH 配置(HPKE 公钥、公共名称和参数)发布在 DNS HTTPS 记录的 ech 参数中(RFC 9848,建立在 RFC 9460 之上)。客户端发送一个面向公共名称(例如 CDN 的通用主机名)的外层 ClientHello,并在扩展 0xfe0d 中携带加密后的内层 ClientHello;服务器解密后,按内层的参数继续握手。如果密钥已过时,服务器会返回新的密钥,客户端随后重试。

只有当许多网站共用同一个提供商、并且 DNS 查询本身受到保护(DoH 或 DoT)时,它才能真正隐藏信息;否则,查询 HTTPS 记录这一步就会暴露名称。Cloudflare 于2023年大范围启用了 ECH;Firefox 自 119 版起默认使用它(需配合 DoH),Chrome 从 117 版开始逐步推出,nginx 等服务器随后也加入了支持。依靠 SNI 做过滤的网络会因此失去这部分可见性,这也是一些企业屏蔽它的原因。

标准与参考资料

全部术语