Netflix优惠码论坛
Domain Shadowing: 利用 CDN 实现强大的抗阻塞通信 - 可打印的版本

+- Netflix优惠码论坛 (https://www.sinovoter.com)
+-- 版块: 合租专栏 (https://www.sinovoter.com/forum-18.html)
+--- 版块: Surge与各类代理加速器合租 (https://www.sinovoter.com/forum-57.html)
+--- 主题: Domain Shadowing: 利用 CDN 实现强大的抗阻塞通信 (/thread-7450.html)



Domain Shadowing: 利用 CDN 实现强大的抗阻塞通信 - netflix - 08-04-2023

   
我们邀请了客座博客作者魏明奎本周向博客提交了他们的研究摘要。这篇博文基于即将发布的 Usenix 安全论文(完整版本请点击此处)。请注意,本文提出的Domain Shadowing思想旨在成为最终用户尚不存在的未来系统的构建块。我们希望这篇文章能够帮助系统设计者以新的方式思考,并利用这些想法来构建新的审查规避工具。

什么是Domain Shadowing?

域名屏蔽是一种新的审查规避技术,它使用内容分发网络 (CDN) 作为实现其目标的杠杆,这与域名前置类似。然而,Domain Shadowing的工作原理与域前置完全不同,并且在抗阻塞性方面更强。与域前置相比,其中的一大区别是Domain Shadowing中的用户负责整个过程。换句话说,整个系统可以由用户单独配置,而不需要被审查网站或反审查组织的必要帮助。

域名隐藏的工作原理

我们在本节开始时将解释 CDN 如何解析和解析域名。

CDN 的作用类似于反向代理,隐藏后端域并仅向公众呈现前端域。CDN 通常采用两种方法来完成域名解析,如下两图所示。为了便于说明,我们做出以下假设:假设发布者(即想要使用 CDN 分发其网站内容的人)的源服务器托管在 Amazon Web Service (AWS) 上,并分配了规范域名 abc.aws。 com,发布商希望使用域名 example.com 来宣传该网站,该域名托管在 GoDaddy 的域名服务器上。

图1展示了大多数CDN使用的域名解析流程,我们以Fastly为例。要使用 Fastly 的服务,发布者将首先登录其 Fastly 帐户并将 example.com 设置为前端,将 abc.aws.com 设置为后端。然后,发布商将在其 GoDaddy 域名服务器中创建新的 CNAME 记录,该记录将域 example.com 解析为固定域 global.ssl.fastly.net。图 1 中的其余步骤很直观。

还有一些 CDN 托管自己的 TLD 域名服务器,例如 Cloudflare。如果是这种情况,则可以跳过图1中的步骤2和步骤3(如图2所示)。

请注意,两张图的最后四个步骤显示了 CDN 执行域名解析的方式的差异。具体来说,常规 DNS 服务器只会响应带有源服务器位置的 DNS 查询,并且文档必须由客户端本身获取,而 CDN 实际上会为客户端获取 Web 文档。

   

图 1. Fastly 的域名解析

   

图 2:Cloudflare 的域名解析

基于上面的介绍,我们现在可以介绍Domain Shadowing的工作原理。Domain Shadowing利用了以下事实:当创建域绑定(即前端域和后端域之间的连接)时,CDN 允许在后端设置任意域。因此,用户可以自由地将前端域绑定到任何后端域。要访问被审查区域内的被阻止域(例如 censored.com),被审查用户只需执行以下步骤:

  1. 用户注册一个随机域作为“影子”域,例如:shadow.com。我们假设审查员不会阻止这个新注册的域名。
  2. 用户订阅了在审查区域内可访问的 CDN 服务,但 CDN 本身并未受到审查。一个实际的例子是 CDN 将其所有边缘服务器部署在审查区域之外。
  3. 用户通过将影子域设置为前端,将审查域设置为后端,将影子域与审查域在CDN服务中进行绑定。
  4. 用户在其 CDN 帐户中创建一条规则,以将传入请求的 Host 标头重写为 HostConfusedhadow.com 到 Host:censored.com。这是必不可少的步骤,否则 censored.com 的源服务器将收到无法识别的主机标头,并且无法处理请求。
  5. 最后,要访问审查域,用户向审查区域内的https://shadow.com发送请求。该请求将被发送到 CDN,CDN 将重写 Host 标头并将请求转发到 censored.com。从 censored.com 收到响应后,CDN 会将响应返回给“以https://shadow.com名义”的用户。

在此过程中,审查者只会看到用户使用HTTPS连接到CDN并向shadow.com请求资源,因此不会阻止流量。

在仍然支持域前置的 CDN 上,我们可以应用域前置技术来使Domain Shadowing更加隐蔽。为此,我们仍然将shadow.com设置为前端,将censored.com设置为后端,但是当从审查区域内发出HTTPS请求时,用户将请求前端域front.com并将Host标头设置为是shadow.com。这样,审查者只会看到用户正在与前域通信,甚至不会怀疑用户的行为。

Domain Shadowing有什么好处?

与域前置相比,域隐藏的明显好处是它可以使用任何 CDN(只要 CDN 支持域隐藏,并且根据我们的实验大多数 CDN 都支持)来访问任何域。审查域名不需要位于同一个 CDN 上,这是域名前置的一大限制。实际上,被审查的域根本不需要是使用 CDN 的域。与前置域相比,这是一个很大的飞跃,前置域只能访问与前置域相同的 CDN 上的域。

域前置的另一个缺点是,它可以(并且正在)被 CDN 通过强制 HTTPS 请求的主机标头必须与 TLS 握手的 SNI 匹配来轻松禁用。另一方面,Domain Shadowing更难禁用,因为允许用户配置后端域是 CDN 的合法功能。

与其他基于 VPS 的方案相比,Domain Shadowing(可能)更快,并且不需要专门的第三方支持。速度更快,因为与使用自行部署的代理来中继流量的 proxy-on-VPS 方案相比,Domain Shadowing的中继实际上是在 CDN 高速骨干网络上运行的所有 CDN 边缘服务器以及整个基础设施经过专门优化,可以快速可靠地分发内容。下图比较了直接从源服务器获取 Web 文档、使用 Psiphon、使用 EC2 代理(基于不同硬件配置的 2 个实例)以及使用基于 5 个不同 CDN 提供商的Domain Shadowing(Fastly、 Azure CDN、Google CDN、AWS Cloudfront 和 StakePath)。从图中,

   

Domain Shadowing的挑战

目前,Domain Shadowing面临以下主要挑战:
  • 复杂性:用户必须在其 CDN 帐户中为他们想要访问的每个审查域配置前端和后端域。虽然这种配置可以使用CDN的API来自动化,但用户仍然需要对相对复杂的操作有足够的了解,例如如何注册到CDN、启用API配置和获取API凭证以及如何注册域。
  • 成本:根据我们的调查,对于每月 500 GB 的数据使用量,使用信誉良好的 CDN 进行Domain Shadowing的成本约为 40 美元,通常会随着数据使用量线性增加或减少。如果用户选择使用廉价的 CDN,每月的成本可能会降低到 10 美元以下。然而,这仍然无法击败 Psiphon 和 Tor 等免费工具。
  • 安全性:通过使用域影子,浏览器“认为”它只与影子域通信,而网络文档实际上来自所有不同的审查域(参见下图,我们使用 Forbes.com 作为影子域访问 Facebook )。这种域转换使得同源策略不再可执行。虽然我们可以使用浏览器扩展在一定程度上帮助解决此问题,但用户必须了解并谨慎访问哪些网站。

   

隐私: CDN 拦截所有 HTTP 和 HTTPS 流量。也就是说,当涉及到CDN时,HTTPS不再是在客户端和源服务器之间,而是在客户端和CDN边缘服务器之间。因此,CDN 能够查看和修改用户和目标服务器之间的任何和所有流量。虽然这种情况不太可能发生,特别是对于大型且信誉良好的 CDN,但用户应该意识到这种可能性。

结论

我们解释了域名屏蔽,这是一种利用 CDN 作为杠杆来实现审查规避的新技术。它与域前置不同,但可以与域前置协同工作以实现更好的抗阻塞性。虽然仍需要开展大量工作来解决所有挑战并使其可部署,但我们认为Domain Shadowing是一种有前途的技术,可以实现更好的审查规避。