匿名 CDN 流量中继
内容提要
文章探讨利用CDN中继流量绕过网络审查的技术。CDN节点按HTTP请求的Host而非TLS的SNI回源,由此产生域前置技术,但主流CDN已禁止。ESNI可加密SNI,与DNS-over-HTTPS结合形成加密闭环。然而CDN边缘节点仍能解密用户数据,审查者可控制CDN。作者认为出路在于去中心化网络与密码学,以保护数据本身。
延伸解读
CDN中继的匿名性原理
文章指出,CDN中继通过将TCP和UDP流量封装在Websocket通道中,经CDN转发至中继服务器,使第三方无法确定中继服务器的真实地址。这种匿名性加大了审查者封锁的难度,因此被Trojan等项目推荐,主流代理软件也纷纷支持。但匿名性依赖于CDN不泄露源站信息,一旦CDN配合审查,匿名性即失效。
域前置的兴衰与审查应对
域前置利用CDN按HTTP Host而非TLS SNI回源的特性,在不同层使用不同域名:明文层用无害域名,加密后再发敏感域名。Telegram曾用此绕过俄罗斯封锁。但审查者施压CDN厂商,Google、Cloudflare等已修改逻辑,验证SNI与Host一致才回源,导致域前置基本失效。这显示审查者可通过控制CDN间接封禁技术。
ESNI与DoH的加密闭环
ESNI通过加密TLS握手时的SNI,填补明文SNI的缝隙。其公钥通过DNS记录分发,客户端用公钥加密SNI。若DNS被篡改,ESNI仍可能失效,因此需结合DNS-over-HTTPS保障DNS私密性。两者形成闭环:ESNI保护HTTPS,DoH保护ESNI。但文章指出,这仍无法解决CDN边缘节点解密用户数据的问题。
中心化CDN的结构性风险
文章强调,CDN边缘节点必须解密HTTPS请求以获取Host等信息,因此CDN服务商能看到明文数据。若审查者控制CDN,用户数据将直接暴露,即使额外加密HTTP载荷,也只是回到起点,CDN无法提供额外保护。中心化网络结构注定难以逃避审查,这是CDN中继方案的根本局限。
Q&A
什么是域前置技术?它是如何绕过网络审查的?
域前置是一种基于CDN隐藏连接真实地址来规避审查的技术。其原理是在不同通信层使用不同的域名:在明文的DNS请求和TLS服务器名称指示(SNI)中使用无害的域名来初始化连接,而实际要连接的敏感域名仅在建立加密的HTTPS连接后发出,使其不以明文暴露给审查者。这样用户能通过HTTPS连接到被屏蔽的服务,而表面上像在与另一个完全不同的站点通信。
为什么CDN服务商不根据TLS的SNI来选择源服务器,而是根据HTTP请求的Host头?
因为进行TLS加密通信不必须要求证书合法。例如用户在收到“您的连接非私密”提醒后,点击“仍要访问”,此时浏览器和服务器之间仍然可以利用过期或错误的证书进行加密通信。部分旧版本浏览器甚至不会发送SNI。基于这样的观察,CDN服务商一般只以HTTP请求头部的Host值作为转发的依据。
ESNI是什么?它如何与DNS-over-HTTPS结合形成加密闭环?
ESNI(加密服务器名称指示)通过加密TLS握手的SNI部分来提升私密性。由于ClientHello消息在协商TLS加密密钥之前发送,ESNI加密密钥需通过其他方式传输。Cloudflare的解决方案是在域名的DNS记录中添加公钥,客户端通过DNS解析获得公钥后加密SNI。如果攻击者篡改DNS返回值,ESNI仍不安全,因此Cloudflare希望用户使用DNS-over-HTTPS保障DNS私密性。这样,ESNI保护HTTPS的私密性,HTTPS发出的DNS请求又保护ESNI的正确性,形成完整闭环。
为什么说CDN边缘节点解密用户数据是加密互联网的漏洞?
对于CDN服务商而言,用户的请求数据在边缘节点处仍然是明文的。用户发送的HTTPS请求在边缘节点处被解密,CDN服务商可以(且必须)了解请求的具体细节,例如使用HTTP头部的Host信息确定源服务器地址,或针对不同的URL实行不同的缓存策略。如果审查者控制了CDN服务商,那么我们将直接倒退回HTTP时代,即使通过其他方式给HTTP载荷加密,也只是回到起点,CDN并不能提供任何额外的保护。
审查者如何应对域前置和ESNI等反审查技术?
审查者可以强制CDN服务商禁止域前置功能。例如,Google、Cloudflare等厂商已经修改了转发逻辑,现在大多数CDN服务商会验证SNI与Host是否相同,如果不一致则拒绝回源。此外,俄罗斯要求CDN服务商禁止域前置功能,韩国广播通信审议委员会使用SNI嗅探封禁网站,中国大陆和俄罗斯电信运营商全面封锁ESNI。
文章认为应对中心化CDN审查的最终出路是什么?
文章认为出路在于去中心化网络与密码学。中心化网络结构注定不可能逃避审查,因为审查者可以强硬地控制CDN的边缘网络。如果我们将边缘网络替换成一个由数亿设备构成的去中心化网络,网络中的每个节点都参与到数据传输中,审查者无法控制整个网络。同时,密码学已经能够保障传输的隐秘性,其下一个目标是保护数据本身。