在现代化代理协议(如 Trojan、VLESS-REALITY、Shadowsocks-2022)中,TLS 协议 是流量伪装的核心基石。墙和深度包检测(DPI)设备之所以能识别未加密的连接,主要利用了 TLS 握手初期明文传输的 SNI(服务器名称指示) 字段。
一、TLS 1.3 握手完整流程
TLS 1.3 将握手轮次由 TLS 1.2 的 2-RTT 缩减为 1-RTT,不仅速度更快,而且加密覆盖面更广:
- ClientHello:
- 客户端向服务器发送支持的 TLS 版本、加密套件列表、Random 随机数,以及 SNI 字段(如
target-website.com)。
- 客户端向服务器发送支持的 TLS 版本、加密套件列表、Random 随机数,以及 SNI 字段(如
- ServerHello + Key Exchange:
- 服务器选择加密套件,返回服务器证书与 Diffie-Hellman 公钥。
- 完成握手:
- 双方生成对称密钥,随后的所有应用层数据(HTTP/2、HTTP/3)全部经过高强度加密。
二、SNI 漏洞与 DPI 的审查原理
虽然 TLS 握手完成后数据是加密的,但在 ClientHello 数据包中,SNI 字段是纯明文传输的:
- DPI 审查设备只需拦截
ClientHello报文,读取 SNI 中的域名。如果是受限域名,直接注入TCP RST报文阻断连接。 - REALITY 伪装技术的应对:VLESS-REALITY 协议通过借用真实高权重合规网站(如
apple.com或microsoft.com)的 TLS 握手特征与证书,使 DPI 认为你只是在正常访问微软或苹果服务器。
三、ECH(Encrypted Client Hello)前沿技术
为了彻底消除 SNI 明文泄漏,IETF 推出了 ECH(加密客户端宣告) 规范:
- 客户端在发起 TLS 握手前,先通过 DNS HTTPS 记录获取目标的 ECH 公钥。
- 客户端将包含真实 SNI 的 ClientHello 进行二次加密,外层仅包裹一个虚假的公共域名(Outer SNI)。
- 防火墙与中间节点完全无法得知客户端真正想要访问的真实域名,从根本上攻克了 SNI 审查问题。
* 点击复制包含绝对主地址的分享链接