什么是 ECH 标准:
ECH 即 Encrypted Client Hello,这是 ESNI 的继任者,主要目的是屏蔽用于协商 TLS 握手的服务器名称指示 (即 SNI),也用来替代之前的加密服务器名称指示 (ESNI)。
按Cloudflare的说法,ECH完成了隐私的最后一块拼图。
网络运营商如何嗅探用户访问:
在 HTTP 时代,网络运营商有多种方式进行嗅探以搜寻用户访问的网站,这是因为 HTTP 没有进行加密,网络运营商可以轻松劫持 HTTP 流量并在流量里插入垃圾信息,包括但不限于将用户下载的应用替换为推广应用、在用户访问的任意网站里插入流量套餐或者广告信息。
最近十年 HTTP 快速向 HTTPS 过渡,HTTPS 对网站内容进行了加密,运营商无法再随意劫持流量,但这并不意味着运营商无法再嗅探用户访问哪些网站。
当我们使用浏览器访问某个地址时,DNS 请求也会泄露地址、SNI 信息也会暴露域名,于是业界又推出 DNS over HTTPS/TLS,用来加密 DNS 查询请求。
然而 SNI 问题仍然没有解决,因为 SNI 信息仍然会暴露给网络运营商。
ECH 是如何解决 SNI 信息暴露的:
ECH 的 ClientHello 消息被分成两个部分,内部部分和外部部分,外部包含的是非敏感信息,例如使用的加密类型和 TLS 版本,内部部分则包含已经加密后的内部 SNI。
在 CloudFlare 托管的网站若启用 ECH 后,则外部部分使用的是 cloudflare-ech.com,这是个共享的 SNI,运营商最多只能知道用户访问的网站使用的是 CloudFlare 和 ECH 标准,并不知道具体的网站域名。
而内部包含隐私的 SNI 信息,则由 CloudFlare 进行加密和解密,所以运营商无法获知信息。
目前 ECH 已经得到量大主流浏览器支持:Google Chrome 和 Mozilla Firefox,而 Chromium 的支持也意味着其他基于 Chromium 的浏览器多数也支持 ECH,这有助于快速提高互联网的隐私安全。
以Chrome为例
前提是先要开启DoH
打开 Chrome 浏览器的设置,然后依次点击“隐私和安全”→“安全”
转到“高级”处,启用“使用安全 DNS”。然后选择一个 DNS 提供商(不懂直接选择 CloudFlare 即可)
在 Chrome 浏览器打开这个地址:chrome://flags/#encrypted-client-hello ,将 Encrypted ClientHello 选项改为 Enabled ,并重启浏览器即可。
测试 ECH 是否正确启用
https://tls-ech.dev/
开启之后,理论上就可以上任何使用Cloudflare托管的网站(已经默认开启ECH),还不会被ISP知道你上了哪个网站。
试试看能不能上中国数字时代?
还有哪些被封锁网站是用用Cloudflare托管的?一时没想出来。
2047是不是用cloudflare托管的?说不定可以直连了?
参考资料:
https://www.landiannews.com/archives/100495.html
https://blog.misaka.rest/2023/10/30/enable-doh-ech/
https://blog.nkxingxh.top/archives/293/