墙中之墙:中国地区性审查的兴起

墙中之墙:中国地区性审查的兴起

https://gfw.report/publications/sp25/zh/

长期以来,中国的互联网审查有着相对集中的政策和统一的实现,这套系统被称为中国防火长城(GFW)。然而,自2023年8月以来,有传闻称河南省部署了自己的地区性审查系统。在这项工作中,我们对河南省的省级审查进行描述和分析,并将其与国家级的GFW进行了比较。我们发现,河南建立了基于TLS SNI和HTTP Host的审查机制,用于检测和封锁离开该省的流量。虽然河南防火墙在复杂性和应对网络流量多样性方面有所欠缺,但其不稳定且激进的二级域名封锁策略,一度使其封锁的网站数量达到GFW的十倍之多。我们基于对河南防火墙的流量解析缺陷和注入行为的观察,提出了一些简单的仅需客户端实现的办法来绕过河南省的审查。我们的工作记录了一种值得警惕的现象,即中国的地区性审查正在抬头。

中华人民共和国开发并维护着世界上最复杂的互联网审查系统之一,通常被称作中国防火长城(GFW)。通过DNS投毒 [12345]、HTTP Host头部过滤 [6789]、TLS SNI/ESNI过滤 [29, 10, 11 §3]、IP地址封锁 [2 §4]、主动探测 [121314, 15 §5] 以及代理流量检测 [15 §4] 等手段,中国阻止其公民访问大量的互联网内容和服务。


长期以来,中国的审查系统一直被认为在政策和实现两方面都相对集中化。实证测量揭示了中国对审查策略 [3, 49, 15]、软件更新 [16 §4.5] [5 §VII] 和基础设施 [14 §3.4] [4 §5] 进行统一的协调与管理。审查设备部署在国家网络边界 [4, 1718],检测并过滤进出国家的流量。因此,在中国国内交换的流量不会受到GFW的检测或封锁。


然而,近期的传闻表明,这种集中统一的审查模式可能已不再是中国互联网审查的全貌。2023年8月,在中国人口第三大省、重要的劳务中心——河南省的用户开始报告,一些在中国其他地区可以访问的网站,在当地却无法访问 [19]。


在本研究中,我们首先探讨了在发现河南地区性审查后自然提出的一个问题(第3节):中国的其他省份是否也部署了相同或类似的地区性审查?我们在中国的七个省市进行了测量研究,包括北京、上海、广东、浙江、江苏、四川和河南,以识别潜在的地区性审查。
可能由于我们在中国所能使用的测量点有限,我们没有在除河南以外的六个省份发现地区性审查的证据。

随后,我们分析了河南省新兴的地区性审查,将其封锁策略和实现与国家级GFW进行了比较。如图1所示,我们的调查显示,河南的省级中间设备通过基于HTTP Host和基于TLS服务器名称指示(SNI)的过滤来封锁对特定HTTP和HTTPS网站的访问(第4.1节)。与监控并封锁进出境流量的GFW不同,这个地区性防火墙仅审查离开该省的流量(第4.2节)。它在连接追踪和解析逻辑(第4.3节)、注入行为和指纹(第4.4节)以及网络位置(第4.5节)方面也不同于GFW。

图1:河南省部署了基于TLS SNI和HTTP Host的审查中间设备,用于检测和封锁离开该省的流量。

我们进行了一项长期研究,以了解河南防火墙所封锁的内容及其与 GFW 所封锁内容的差异(第5节)。在 2023 年 11 月至 2025 年 3 月期间(2024 年 3 月至 10 月之间没有测量),我们每天测试 Tranco 排名前一百万的域名,并每周测试 CZDS 的 2.27 亿个域名。我们发现河南防火墙采用了比 GFW 更激进且不稳定的封锁策略。河南防火墙累计封锁了 420 万个域名,是 GFW 累计封锁列表规模的五倍多。造成这种情况的一个关键原因是其封锁了许多通用二级域名(如 *.com.au)。我们的测试还揭示,在一些时期,其封锁的域名数量是 GFW 的十倍之多。

基于观察到的解析缺陷和注入行为,我们介绍规避技术来绕过这种地区性审查(第6节),这些技术已被许多流行的反审查工具使用。河南的地区性审查标志着中国首个被正式记录的省级自主运作防火墙案例。我们希望这项研究能向更广泛的审查研究社区发出警报,以识别、调查和应对中国及其他地区出现的地区性审查。

中国防火长城 (GFW) 是部署在中国的一系列不同的审查设备和机制。GFW利用部署在中国边界自治系统 (AS) 的网络中间设备来检测和封锁互联网流量 [17]。GFW 不仅封锁特定网站和网络服务,而且试图识别和封锁翻墙行为。

网站审查。 为了封锁对特定网站和服务的访问,GFW 通常同时使用多种技术手段,包括 DNS 污染 [13]、基于 HTTP Host 的过滤 [8]、基于 TLS SNI/ESNI 的过滤 [29, 10, 20] 以及 IP 地址封锁 [2 §4]。

为了审查 DNS 流量,GFW设备并联(旁路分光部署)于网络,注入带有错误 IP 地址的伪造 DNS 响应,以阻止对特定域名的访问 [3, 4, 5, 2122]。2002 年的早期报告记录了 GFW 在其伪造响应中使用单一错误 IP 地址 [2324]。随着时间的推移,其演变成了一个更复杂的系统,使用了越来越多的虚假地址,并扩大了其域名封锁列表 [3, 4, 22, 25]。研究人员还发现过 GFW DNS注入系统中的内存数据泄露漏洞 [5, 16, 26]。

为了审查 HTTP 和 TLS 流量,GFW 有状态地检查连接中未加密的文本。一旦在 HTTP 请求的 Host 字段或 TLS ClientHello 的服务器名称指示 (SNI) 扩展中检测到被审查的域名,GFW 会向连接两端的主机注入 TCP RST 数据包以终止连接 [6, 7, 9, 2728]。图2 展示了 GFW 对包含禁止域名的 TLS Client Hello 的 SNI 的连接的审查。

图2:河南防火墙和三种不同类型 GFW 的概述。我们在数据包的 SNI 或 HTTP Host 字段中使用仅被某一种墙审查的域名,以单独触发和研究每种墙的审查机制。例如,在 2024 年 4 月,011.com 仅被河南防火墙封锁,而 youtube.com 仅被 GFW 封锁。

GFW 通常是双向审查的,这意味着进入和离开中国的流量都可能触发其审查 [4, 9, 29]。审查中间设备的双向审查使得研究人员能够从国家外部测量审查 [3, 3031]。

诸如 OONI [32]、Censored Planet [33] 和 ICLab [34] 等项目多年来一直在全球范围内测量审查。也已经有几个大型项目专为监控中国的网站审查,包括 GreatFire Analyzer [35]、Blocky [36]、GFWatch [3] 和 GFWeb [9]。虽然长期的、大规模研究在跟踪和理解 GFW 封锁列表变化方面表现出色,但有时重新审视现有的审查机制仍然可以揭示审查者的新更新。例如,Bock 等人 [11] 发现了中国次级的 TLS 审查中间设备,这些设备在被深入分析之前一直未被注意到。

代理审查。 仅仅对网站进行封锁并不足以阻止用户访问被禁止的内容,因为用户可以使用翻墙工具来绕过封锁。因此,GFW 与中国的互联网用户之间展开了一场看似永无止境的猫鼠游戏 [37]。例如,GFW 采用主动探测技术来识别和封锁翻墙工具,如 Tor [12, 13, 383940] 和 Shadowsocks [14, 15 §5],现在这些工具已可以成功抵御主动探测 [41424344]。GFW 还使用流量分析以识别和封锁完全加密的代理 [15]。

其他审查机制。 中国还存在一些独特的审查组件,似乎区别于 GFW 针对网站和代理的审查。其中值得注意的是,在 2015 年,研究人员发现了中国的“大炮”(Great Cannon),它向 HTTP 流量中注入 Javascript,以利用受害者的浏览器发动对特定主机的拒绝服务攻击 [30]。

在审查政策严格的国家,本地化或分散化的审查机制很常见。在俄罗斯,数千家私营互联网服务提供商 (ISP) 各自实施自己的过滤机制,导致审查环境多样化 [454647]。类似地,在印度,研究人员表明 ISP 在执行政府审查令方面存在显著差异,导致全国范围内的审查碎片化 [48]。

然而,先前的研究表明,中国的审查系统和政策在全国范围内基本是统一和集中化的。2011 年,Xu 等人 [17] 测量了中国审查设备的位置。他们发现,中国的关键词审查中间设备主要位于网络边缘,并采用符合当时全国性封锁策略的规则。2012 年,Wright [18] 对中国的 DNS 审查进行了一项小规模研究,发现DNS 响应在全国各地有所不同。然而,这项工作没有考虑 DNS 响应变化的其​​他可能原因(例如基于地理位置的负载均衡,或 DNS 配置的变化)。2018 年,Bao 等人 [49] 从住宅和移动 IP 地址测量了中国的 DNS 投毒差异。全网地持续性测量揭示了中国在审查策略 [43159]、审查软件更新 [16 §4.5] [5 §VII] 和审查基础设施 [14 §3.4] [4 §5] 方面,进行了统一的协调和管理。

中国境外的反审查研究人员通常依赖境内用户的报告来了解中国审查策略的新变化和升级。部分原因是研究人员难以在中国境内获得多样化的测量服务器,并持续监测各种互联网服务和协议的可访问情况。令人鼓舞的是,在线论坛——例如 Net4People BBS [50]、NTC Party 论坛 [51],以及 Xray [52]、V2Ray [53]、sing-box [54] 和 Hysteria [55] 等流行反审查工具的 GitHub 问题汇报页面——为用户在遇到新的审查事件时立即报告遭遇提供了平台。这也使得研究人员能够迅速调查这些报告 [37]。

这种众包协作的方式在识别和对抗河南省的省级审查方面也很有效。具体来说,我们的研究始于一群河南用户报告他们无法访问某些网站 [1956575859]。然后,我们在河南省获得了一台服务器,并确认了地区性防火墙的存在。特别是,如图2所示,我们发现河南地区性防火墙会针对某些服务器名称指示(SNI)和 HTTP Host 值封锁 TLS 和 HTTP 连接,但其运作方式与 GFW 不同。最显著的区别是,河南的地区性防火墙通过向客户端注入一个包含固定 10 字节载荷的 TCP RST+ACK 数据包来封锁 TCP 连接。这种独特的 TCP RST 数据包载荷将河南防火墙与 GFW 注入的所有三种类型的数据包区分开来。

在河南省发现地区性审查自然地引出了一个的问题:中国的其他省份是否也部署了相同或类似的地区性审查?下面,我们将通过全国范围的测量来探讨这个问题。

我们的目标是通过比较中国境内外每对主机之间被封锁的域名数量,来量化中国各地 TLS 审查的地区性差异。如表1第二行所总结的,我们在中国的七个城市各获得了两个测量点,包括上海、北京、重庆、广州(广东省)、南京(江苏省)、成都(四川省)和郑州(河南省)。我们还在中国境外的三个地点各设置了两个 VPS:西雅图(美国)、旧金山(美国)和新加坡。我们选择测量点的依据详见第7节中的一系列伦理考量。

表1:实验时间线和测量点。我们总共使用了位于河南省郑州市的China VPS(CVC, AS4837)的14台虚拟主机,位于旧金山(SF)、新加坡(SG)和西雅图(SE)的Akamai Linode(LD, AS63949)的6台虚拟主机,位于北京(BJ)、上海(SH)、重庆(CQ)、广东省广州市(GZ)、四川省成都市(CD)、江苏省南京市(NJ)的腾讯云(TC, AS45090)的12台虚拟主机,以及一台位于美国某大学的裸金属网络流量捕获服务器(TAP)。

实验名称 实验时间 实验时长 中国测量点 境外测量点 章节 识别 24年7月10日 1  天 12 (TC), 2 (CVC: HN) 4 (LD: SG,SE) §3 特征分析 23年10月2日 – 24年11月12日 13  个月 2 (CVC: HN) 1 (LD: SF), 3 (TC: GZ,BJ,SH) §4 流量分析 24年10月31日 1  小时 – 1 (TAP: US) §4.3 定位 23年10月2日 – 23年12月8日 2  个月 1 (CVC: HN), 1 (TC: GZ) 1 (LD: SF) §4.5 封锁列表 23年11月5日 – 24年3月5日 &
24年10月7日 – 25年3月31日 9  个月 14 (CVC: HN), 2 (TC: GZ) 2 (LD: SF) §5

对于中国境内或境外的每个地点的两个 虚拟主机(VPS),我们把其中一个作为客户端,把另一个作为水槽服务器。水槽服务器被配置为接受端口 1 到 65535 上的 TCP 握手。它们会发送ACK来确认发送给它们的 TCP 数据,但绝不会向客户端发回任何 TCP 载荷。我们在客户端和水槽服务器上都配置了 iptables 规则来丢弃任何传出的 RST 数据包。这样,任何一端收到的 RST 数据包都一定是由网络路径上的某些中间设备注入的伪造包。因此,我们可以通过检查 TCP 连接是否被重置来确认审查的存在。

我们在 2024 年 7 月 10 日,在每对客户端和水槽服务器之间发送了包含各种不同 SNI 值的 TLS 流量。具体来说,我们使用了 Tranco 列表 [60] 5YZ7N 中排名前 10,000 的域名进行测试。 为了减少因丢包导致的假阴性概率,我们在同一天重复测试了三次,并在每次测试中,让操作系统控制数据包的重传。

局限性。 理想情况下,我们希望使用多样化的测量点来识别中国潜在的地区性审查。然而,由于在中国获取 VPS 很困难,我们只能在有限数量的地点和 自治系统(AS) 中获取测量点。虽然使用住宅测量点可以让我们从中国更多的网络位置观察到潜在的审查中间设备,但这可能会给不知情的用户和住宅代理提供商带来潜在风险[61]。出于这个原因,我们专注于使用中国的两家大型 VPS 提供商——China VPS和腾讯云,以避免给个人带来风险或迫害。我们利用了这两家 VPS 提供商提供的所有可用地点,以最大化我们的覆盖范围。我们承认我们的结果仅限于测量 TLS 审查,这可能会遗漏针对其他协议的地区性审查。此外,由于配置错误,我们没能使用新加坡的客户端进行测试,因此错过了从该视角进行的审查测量。

图3 显示了不同地区之间被封锁域名的数量。我们首先观察到,从中国发往我们位于新加坡和美国的水槽服务器的连接,受到国家级中国防火长城(GFW)的影响几乎相同,在大约 10,000 个域名中约有 479 个被封锁。最显著的封锁发生在河南省,省级(河南防火墙)和国家级(GFW)审查机制共同拦截,导致了较高的封锁数量。

图3:该矩阵显示了在不同区域的每对主机之间被封锁的域名数量。对于每对主机,我们发送了包含 Tranco 列表 [60] 5YZ7N(生成于 2023 年 8 月 15 日)中排名前 10,000 个域名的 SNI 值的 TLS ClientHello 消息。结果表明:1)河南省存在地区性审查,证据是从河南郑州向中国其他地区的水槽服务器发起连接时,被封锁域名的数量不为零;2)河南的审查不是双向的,因为从外部向河南发起 TLS 连接并未触发任何封锁;3)GFW 维护着一个仅在中国境内访问时才会被审查的封锁列表,证据是由内向外和由外向内测试时被封锁域名数量有差异。

离开河南的流量受到地区性防火墙的审查,无论水槽服务器的位置如何,即使是发往中国境内其他地区的连接也会受到审查。平均而言,有 122 个域名被河南防火墙封锁。我们没有观察到在河南省内交换的 TLS 连接被封锁;然而,由于我们的客户端和水槽服务器都位于同一个数据中心,我们只能谨慎地得出结论,即河南防火墙不影响该数据中心内部的流量。

当从河南省郑州连接到中国境外地点(新加坡和西雅图)时,总共有 594 个域名被封锁。这表明两个具有独立封锁列表的防火墙在同时运作,河南防火墙在流量到达 GFW 之前对其进行审查,从而增加了被封锁域名的总数。然而,我们没有观察到从中国其他区域连接到河南或中国境内其他水槽服务器区域时存在任何封锁。这一发现表明,河南防火墙是中国已知的第一个部署地区性防火墙的案例。

此外,如图3最后一行所示,从美国到中国不同地点的测试一致地识别出相同的 411 个被 GFW 封锁的域名,只有一个例外:从美国到江苏省的测试检测到 440 个被封锁的域名。进一步分析表明,在江苏省由外向内方向额外被封锁的 29 个域名是 GFW 在由内向外方向封锁的 479 个域名的一个子集。这一发现表明,这 29 个域名的额外审查很可能并不反映江苏省特有的地区性审查。相反,它表明江苏省内的 GFW 被配置为对这29个域名进行双向封锁。



Read Next page

Report Page