Cloudflare ECH(Encrypted Client Hello) 是一种旨在增强网络隐私的加密技术。简单来说,它通过加密TLS握手过程中暴露的服务器名称指示(SNI)字段,使得中间人无法轻易得知用户正在访问的具体网站。
ECH的工作原理
SNI加密: 当用户访问一个网站时,浏览器会向服务器发送一个TLS握手请求。在这个请求中,SNI字段会明文显示用户想要访问的域名。ECH技术则将这个SNI字段用公钥加密,只有Cloudflare能够解密。
Cloudflare解密: Cloudflare的服务器接收到加密后的SNI字段后,会使用私钥进行解密,从而获取用户想要访问的真实域名。
内部SNI: 解密后的真实域名被作为内部SNI,用于后续的TLS握手过程。
共享SNI: 为了进一步掩盖用户访问的网站,Cloudflare为所有启用了ECH的网站设置了一个统一的共享SNI。这样一来,即使中间人截获了网络流量,也只会看到这个共享SNI,无法得知用户访问的具体网站。
通过以上步骤,ECH实现了以下效果,从而帮助域名绕过GFW阻断:
隐藏真实域名: 加密的SNI字段使得GFW无法直接获取用户访问的域名,从而难以针对特定域名进行封锁。
共享SNI混淆: 所有使用ECH的网站都共享同一个SNI,增加了GFW识别和封锁特定网站的难度。
阻碍IP封锁: 由于GFW无法准确识别用户访问的具体网站,也就难以针对特定的IP地址进行封锁。
ECH的缺憾
目前,大多数浏览器已经兼容了ECH。但仍有许多浏览器(如国内绝大多数厂商的浏览器)未对ECH进行适配,这可能会导致访问失败。
您可以在 这里 检查你的浏览器是否支持ECH。
如下图,右侧的 安全SNI 为未启用状态,这意味着该浏览器不支持ECH(或未开启)
Cloudflare ECH兼容性测试界面