ECH 还是太试验状态了, 除了 Cloudflare 之外 Akamai 和 AWS 都没想法, 更别说其他供应商了, Cloudflare 自己也给高级计划默认禁用了 ECH, 现在就像 Cloudflare 在用免费客户测试这个功能, 免费计划默认开启, 无法禁用.

反制的办法也很多, 除了对 ECH 的那个还是要用的那个通用 SNI 下手. DNS 层面也能直接对 HTTPS 记录动手, Cloudflare 也针对有流量控制需求的企业给出了具体的办法:

> https://developers.cloudflare.com/ssl/edge-certificates/ech/#enterprise-network-applicability

ECH 只是个对 TLS 1.3 的隐私改进, 不是给抗审查设计的. 如果不使用大型供应商提供的服务去把那个通用 Client Hello 隐藏进他们的 SNI 里面, 那独立部署实现 ECH 其实只是给 SNI 找了个替身, 就像客户端本地的 SNI Proxy 一样, 现在变成了服务端配置, 而且还需要 DNS, HTTP 客户端和 Web 服务器共同努力, 感觉会比 QUIC 还难推进. 真的实施, 供应商完全可以为不同客户实行 KYC 后根据客户的特征分配不同的通用 SNI 标志, 免费用户一个 SNI, 付费用户一个 SNI, 欧盟用户又一个 SNI.

Reply to this note

Please Login to reply.

Discussion

DoH, DoT 和 DoQ 都得经过 TLS 和 DNS Bootstrap 才能进行 DNS 解析, 这是个先有鸡还是先有蛋的问题. 我觉得 ECH 主要还是补上了这些加密 DNS 的最后一块拼图, 把加密 DNS 的的 SNI 也隐藏在了通用 SNI 下面. 不过就我个人来说, 加密 DNS 完全可以用 IP 证书, 这就直接没了 SNI 也不需要 DNS Bootstrap, 很适合小规模部署 DNS 代理的组织和个人(也不知道市场里的 IP 证书是否经济实惠). 现阶段几乎所有(包括积极跟进 ECH 的 AdGuard)的 DNS 客户端在查询这些加密 DNS 上游的时候都没有支持 ECH, 当然最主要的还是这些加密上游都没有支持并且用到并且核心开源库也都没支持.

#AdGuard 在 23 年给自己作为 HTTPS 中间人过滤这个角色加入了 ECH 客户端, 所以现在理论上 AdGuard 能给所有的加密连接过滤之后发出之前全部启用 ECH. 所以这也是个问题: 反病毒安全软件的 HTTPS 中间人过滤会直接破坏 HTTP 客户端(特别是浏览器)的原生 ECH, 如果安全软件不能在请求过滤之后发出本机之前重新恢复 ECH 那浏览器们一众实现的客户端侧 ECH 就失效了. 我也不知道 AdGuard 是在安全软件之前还是之后过滤加密流量, 越来越觉得 AdGuard 有点像个不能反病毒的安全软件了.

> https://forum.eset.com/topic/38340-web-access-protection-and-encrypted-client-hello-ech/

对于 ECH 的问题现阶段的问题还是一众浏览器们都只会在设置里面显式启用加密 DNS 之后才能启用 ECH, 这就意味着本地 DNS 代理和路由器下发的 DNS 服务器配置都实际对有这种强制要求 HTTPS 记录查询也加密的客户端无用. 所以如果不使用 AdGuard 这样的中间人, 就得给自己的本地网络回环下部署的 DNS 代理也上 SSL 证书, 然而这又撞上了自签证书的信任问题, 不过好在有 mkcert 这种工具包简化了自签本地证书并信任的流程.

简而言之, 现阶段的 Edge, Firefox 和 Chrome 主流浏览器都对 ECH 启用条件十分苛刻, 它们不允许用户在使用本地回环网络的 DNS 服务器的情况下启用, 即使它们本来的上游就是加密 DNS 也能完成 HTTPS 记录的中继. 而非浏览器应用的 HTTP 客户端更没有动力去支持 ECH.

> https://github.com/DNSCrypt/dnscrypt-proxy/wiki/Local-DoH#creating-your-own-certification

PS: AdGuard for Windows 现阶段依旧还在解决和带有 HTTPS 过滤的反病毒安全软件之间的兼容性问题.

HTTP 还是太万能了, 什么玩意都能用 HTTP 承载. 现在好了, 查 DNS 是 over HTTP, 发邮件也在 over HTTP. 而 QUIC 更是三体人, 用 HTTP/3 来描述它真不合适吧.

就应该把DNS干掉,垃圾协议。证书系统更是垃圾,全是中心化的产物。越中心化,越依赖现实世界组成上下级的组织,而这些组织的管理,信任,费用等等问题就会作用于协议上。

这更体现了,默认就加密的网络的可贵。比如暗网,甚至独立网(完全和互联网不互通的网络)

哪有 "干掉" 中心化就能成就去中心化这种简单的事情, 海底光缆你能干得掉? DNS 和 BGP 也干不掉.

这种底层协议顶多只能保持向前兼容性去替代.

你说的对,我说的那些是不可能实现的。因为人们不愿付出代价,不愿放弃利益。

还是比较期待ech或者quic,对增加长城防火墙的负担真的很有用😂

说起被 DoH 和 DoT 乃至 DoQ 这些现代的加密 DNS 协议真正取代的对象或者说 "干掉" 的, 并不是传统的明文 DNS, 而是 DNSCrypt. 虽然已经是过去式了, 但 DNSCrypt 留下的一些遗产还是很具有实用价值.

它发明的 DNS Stamps, 也就是编码出 sdns:// 这个标识符的工具, 可以直接指示加密 DNS 的证书指纹, IP 地址, 主机名(SNI). 现在还在支持这个 sdns 标识符的 DNS 客户端我只知道有 AdGuard 和 AdGuard Home, 并且也不会用上全部指示和标志.

AdGuard 目前只会用 sdns 解码之后的主机名(和 DoH 路径)以及 IP 地址, 主要用途是无需 Bootstrap 直接得到加密 DNS 的目标 IP, 适合像 Google 和 Cloudflare 等等的 DoH 直接解析到一个 Anycast 或者固定 IP 的加密 DNS.

DNS Stamps 支持的编码目标 DNS 协议很全面, DoH, DoT, DoQ, 甚至明文 DNS 也都可以, 但现在基本上没有客户端还在积极支持了.

DNSCrypt 的概念很先进, 但推进的速度还是太慢了.