ESNI和ECH

25 年 4 月 28 日 星期一 (已编辑)
313 字
2 分钟

引入

在HTTPS通信中,有两个步骤会泄露双方实际的通讯目的

  1. DNS查询时,需要发送实际域名
  2. TLS握手阶段,Client Hello数据包会包含域名

TLS通讯只有在握手阶段会泄露域名,握手完成之后,除了传输层必要数据(IP、端口号、MAC地址)为明文外,其余数据都已加密,中间人截获之后也无法解密

Pasted image 20250428101151.png

ESNI

ESNI的作用在加密Client Hello中的SNI字段,防止域名被中间人看见,同时也能解决SNI阻断问题 原理:

  1. DNS服务器需要配置一条_esni类型的TXT记录,记录值为服务器公钥
  2. 客户端获取到服务器公钥之后,将SNI字段使用公钥加密后再发送
  3. 服务器收到数据包之后,使用公钥解密获取实际SNI

目前ESNI已被更完善的ECH(Encrypted Client Hello) 代替

ECH

ECH支持加密整个Client Hello数据包。 ECH需要在DNS配置更多信息,公钥、支持的加密算法等 和加密SNI相同,客户端加密Client Hello数据包中需要加密的部分,生成ClientHelloInner数据包 服务端通过私钥进行解密

文章标题:ESNI和ECH

文章作者:violet

文章链接:https://www.vio.vin/posts/esni-he-ech[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。