标题:中国的防火长城是如何封锁加密流量的?
作者:Mingshi Wu
日期:2023-05-22 01:48:43
内容:

Mingshi Wu

GFW Report

Jackson Sippe

University of Colorado Boulder

Danesh Sivakumar

University of Maryland

Jack Burg

University of Maryland

Peter Anderson

Independent researcher

Xiaokang Wang

V2Ray Project

Kevin Bock

University of Maryland

Amir Houmansadr

University of Massachusetts Amherst

Dave Levin

University of Maryland

Eric Wustrow

University of Colorado Boulder

 

摘要

全加密协议是翻墙生态系统中的一块基石。这类协议对数据包有效载荷的每一个字节都进行了加密,以期让流量"看起来什么都不像"。2021年11月初,中国的防火长城(GFW)部署了一种新的审查技术,这种技术可以实时地被动检测并阻断全加密流量。GFW这一新添的审查能力影响到一大批流行的翻墙协议,包括但不限于Shadowsocks、VMess和Obfs4。虽然中国长期以来一直采用主动探测来识别此类协议,但这次是第一次有关于采用纯被动检测来识别全加密流量的报告。面对这一新的现象,反审查社区不禁要问检测是如何做到的。

在这篇论文中,我们测量并描述了GFW用于审查完全加密流量的新系统。我们发现,审查者并没有直接定义什么是完全加密流量,而是应用粗糙但高效的启发式规则来豁免那些不太可能是完全加密的流量;然后它阻止其余未被豁免的流量。这些启发式规则基于常见协议的指纹、1比特的占比以及可打印的ASCII字符的数量、比例和位置。我们对互联网进行扫描,并揭示了GFW都检查哪些流量和哪些IP地址。我们在一个大学网络的实时流量上模拟我们推断出的GFW的检测算法,以评估其全面性和误报率。结果表明,我们推断出的检测规则很好地覆盖了GFW实际使用的检测规则。 我们估计,如果这一检测算法被广泛地应用,它将有可能误伤大约0.6%的非翻墙互联网流量。

我们对GFW的新审查机制的理解帮助我们得出了几个实用的规避封锁的策略。我们负责任地将我们的发现和建议透露给不同的反审查工具的开发者,从而帮助数以百万计的用户成功绕开了这种新的封锁。

1 引言

完全加密的翻墙协议是翻墙生态系统中的一块基石。不同于像TLS这样的协议以明文握手开始,完全加密(随机化)的协议--如VMess [23]、Shadowsocks [22]和Obfs4 [7]--被设计成连接中的每个字节都与随机数据没有区别。这些 "看起来什么都不像 "的协议的设计理念是,它们应该很难被审查者抓住特征,因此阻断的成本很高。

2021年11月6日,中国的互联网用户报告说他们的Shadowsocks和VMess服务器被封锁了 [10]。 11月8日,一个Outline [42]开发者报告说来自中国的使用量突然下降 [69]。这次封锁的开始时间恰逢2021年11月8日至11日召开的中国共产党第十九届中央委员会第六次全体会议 [41]。能够封锁这些翻墙工具代表中国的防火长城(GFW)具备了一种全新的新能力。据我们所知,虽然中国自2019年5月以来一直在采用被动流量分析和主动探测相结合的方式来识别Shadowsocks服务器 [5],但这是审查者第一次能够仅基于被动流量分析,就实时地大规模封锁完全加密的代理。全加密协议对整个反审查生态系统的重要性以及GFW的未知行为,促使我们去探索和了解检测和封锁的机制原理。

在这项工作中,我们对GFW被动检测和封锁全加密流量的新系统进行了测量和描述。我们发现,审查者没有直接定义什么是完全加密的流量,而是应用了至少五条粗糙但高效的启发式规则来豁免那些不太可能是完全加密的流量;然后,它阻止其余未豁免的流量。这些豁免规则基于常见的协议指纹、基于1比特比例的粗略熵测试、以及第一个TCP数据包的有效载荷中可打印的ASCII字符的比例、位置和最大连续数。

由于GFW的黑箱性质,我们推断出的规则可能并不详尽;但是我们使用科罗拉多大学博尔德分校的实时网络流量,对我们推断出的检测规则进行了评估。有证据表明我们推断出的规则与GFW实际使用的规则间有非常大的重叠。我们还发现,推断出的检测算法会阻断大学网络中所有连接的大约0.6%。 可能是为了减轻假阳性引起的封锁误伤,我们的互联网扫描显示,GFW策略性地只监控26%的连接,而且只监控发往流行数据中心的特定IP范围的连接。

我们还分析了这种新形式的被动封锁与GFW广为人知的主动探测系统 [5]之间的关系。二者是独立运行的。我们发现,主动探测系统也依赖于这种流量分析算法,并额外应用了一条基于数据包长度的豁免规则。因此,能够逃避这种新的封锁的规避策略,也可以帮助防止GFW识别并随后主动探测代理服务器。

我们从对这种新审查技术的理解中得出了各种规避策略。我们负责任且及时地与各种流行的反审查工具的开发者分享了我们的发现和规避建议,包括Shadowsocks [22], V2Ray [59], Outline [42], Lantern [20], Psiphon [21], 和Conjure [33]的开发者。自2022年1月以来,这些规避策略被广泛采用和部署,已帮助数百万用户绕过这一新的封锁技术。据反馈,截至2023年2月,这些工具采用的所有规避策略在中国仍然有效

2 背景

 

2.1 流量混淆策略

Tschantz等人将混淆翻墙流量的方法分为两类:隐写(steganography)多态(polymorphism) [57, § V]。隐写代理的目标是使翻墙流量看起来像应该被允许的流量;多态性的目标是使翻墙流量看起来不像应该被禁止的流量。

实现隐写术的两种最常见的方法是模仿(mimicking)隧道传输(tunneling)。Houmansadr等人 [39]得出结论,模仿类协议有着根本性的缺陷,并指出将原始流量通过被允许的协议进行隧道传输是一种更抗封锁的方法。Frolov和Wustrow二人 [35]证明,即使使用隧道传输,翻墙软件的设计者仍然需要额外的努力让翻墙协议的指纹与流行的实现方式的指纹保持完全一致,以避免受到基于协议指纹的封锁。例如,在2012年,中国和埃塞俄比亚部署了深度包检测系统,通过Tor使用的不常见的密码套件来检测Tor流量 [44,67,55]。审查设备供应商之前已经根据meek [29]发出的TLS指纹和SNI值来识别并封锁它了 [28]

为了避免这种复杂性,许多流行的翻墙软件选择了多态的设计。实现多态性的一个常见方法是,从连接中的第一个数据包开始,就对其有效载荷进行完全加密。由于没有任何明文或固定的包头结构指纹,审查者没办法简单地使用正则表达式或通过寻找流量中的特定模式来识别代理流量。这种设计在2009年首次被引入Obfuscated OpenSSH [16]。此后,Obfsproxy [24]、Shadowsocks [22]、Outline [42]、VMess [23]、ScrambleSuit [68]、Obfs4 [7]都采用了这种设计。Geph4 [58]、Lantern [20]、Psiphon3 [21]和Conjure [33]也部分采用这种设计。

完全加密的流量经常被称为“看起来什么都不像”的流量,又或者被误解为“没有特征”;然而,更准确的描述应该是"看起来像随机数据"。事实上,这种流量确实有一个使其与其他流量不同的重要特点:完全加密的流量与随机流量是无法区分的。由于没有可识别的头,整个连接中的流量都是均匀且高熵的,甚至在第一个数据包中就已经如此。相比之下,即使像TLS这样的加密协议也还有相对低熵的握手包,用以传达支持的版本和扩展。

2015年,Wang等人 [61,§5.1]利用连接中第一个数据包有效载荷的长度和高香农熵的特点来识别随机流量,比如Obfs4。同样,在2017年,Zhixin Wang发布了一个概念验证工具,其使用连接中前三个数据包有效载荷的高香农熵来识别Shadowsocks流量 [40]。Madeye扩展了该工具,额外使用有效载荷长度分布来检测ShadowsocksR流量 [47]。He等人 [70,§IV.A]和Liang等人 [46,§II.A]使用单比特频率检测算法,而不是香农熵,来衡量Obfs4流量的随机性。2019年,Alice等人发现,GFW使用每个连接中第一个数据包的长度和熵来怀疑Shadowsocks流量 [5]

 

2.2 主动探测攻击及其防御措施

主动探测攻击中,审查者向被怀疑的服务器发送精心制作的有效载荷,并测量它的反应。如果服务器以与众不同的方式回应这些探测(例如让审查者将其作为代理使用),审查者就可以识别并封锁它。 早在2011年8月,人们观察到GFW向接受过来自中国的SSH登录的外国SSH服务器发送看似随机的有效载荷 [49]。2012年,GFW首先寻找一个独特的TLS密码来怀疑Tor流量;然后向可疑的服务器发送主动探测,以确认其猜测 [67,66,64]。2015年,Ensafi等人对GFW针对各种协议的主动探测攻击进行了详细分析 [27]。自2019年5月起,中国部署了一个审查系统,分两步检测和封锁Shadowsocks服务器:它首先使用每个连接中第一个数据包有效载荷的长度和熵来被动地识别可能的Shadowsocks流量,然后在分阶段地向可疑的服务器发送各种探针,以确认其猜测 [5]。作为回应,研究人员提出了各种针对主动探测攻击的防御措施,包括让服务器对各种连接的反应保持一致 [349]应用前置 [4536]。 Shadowsocks、Outline和V2Ray都采用了防主动探测的设计 [34,5,19,43,32,71],使得它们自2020年9月以来在中国就没再被封锁过 [5],直到最近在2021年11月被再次封锁 [10]

 

3 方法

我们在中国境内外的主机之间制作并发送各种测试探针,让它们被GFW观察到。我们在两个端点主机上抓包并比较流量,来观察GFW的反应。这种记录使我们能够识别任何被丢弃或被操纵的数据包,包括主动探测。

 

 

实验名称
时间跨度
中国节点
美国节点
章节





特征化测量 2021年11月6日 – 2022年5月18日 (6个月) 3 (TC, BJ),1 (Ali, BJ) 3 (DO, SFO) §4
复现实验 2023年2月16日 (1天) 1 (TC, BJ) 1 (DO, SFO) §4.14.24.3
主动探测 2022年5月19日 – 6月8日 (3周) 1 (TC, BJ) 2 (DO, SFO) §5
网络扫描 2022年5月12日–13日 (2天) 9 (TC, BJ) 1 (Scan, Univ) §6
实际流量 2022年7月–9月 (3个月) 1 (TC, BJ) 1 (DO, SFO), 1 (Tap, Univ) §7
表 1: 实验时间线以及实验节点 — 我们总共用了1台阿里云北京服务器 (Ali) (自治系统号:AS37963), 10台腾讯云北京服务器 (TC) (自治系统号:AS45090), 4台Digital Ocean旧金山服务器(DO) (自治系统号:AS14061), 以及两台位于科罗拉多大学博尔德分校的服务器 (Univ) (自治系统号:AS104)。

实验时间线和实验节点。 我们在表1中总结了所有主要实验的时间线和所使用的实验节点。我们总共使用了腾讯云北京(AS45090)的10台VPS和阿里云北京(AS37963)的1台VPS。 我们没有观察到中国境内的实验节点或任何受影响的国外节点之间的审查行为有任何差异。我们使用了Digital Ocean旧金山(AS14061)的四台VPS:其中三台受到了新审查机制的影响,剩下一台则没有受到影响。我们把这四台VPS变成了水槽服务器(sink server);也就是说,服务器监听1到65535的所有端口,接受TCP连接,但不向客户端发送任何有效载荷。我们还采用了科罗拉多大学博尔德分校(AS104)中的两台机器进行互联网扫描和实时流量分析。我们根据IP2Location数据库 [3]检查了我们的VPS的IP地址,并确认它们的地理位置与供应商所报告的位置相符。

触发审查制度。因为外界观察者是无法区分完全加密的流量与随机数据的,所以除了使用实际的翻墙工具外,我们还开发了测量工用来在我们的研究中发送随机数据以触发封锁。这些工具完成一个TCP握手后,会发送一个给定长度的随机有效载荷,然后关闭连接。

使用残留审查(residual censorship)来确认封锁。 与GFW封锁许多其他协议的方式类似 [13,17,63,14],在一个连接触发审查后,GFW会阻止所有具有相同三元组(客户端IP、服务器IP、服务器端口)的后续连接180秒。这种残留审查允许我们通过从同一客户端发送后续连接到服务器的同一端口来确认封锁。我们逐一进行共计五次的TCP连接,中间有一秒钟的时间间隔。如果五次连接都失败了,我们就得出结论,这个三元组被封锁了。如果一个三元组被封锁,我们在接下来的180秒内不会再使用它进行进一步的测试。

对重复测试的概率阻断进行计算。 我们经常要用相同的有效载荷进行多次连接,才能观察到封锁。在第6.3节中,我们解释了这是因为GFW采用了一种概率阻断策略,大约只有四分之一的概率触发审查。为了减少这种概率行为造成的测量误差,我们在对任何一次阻断(或不阻断)的观察下判断之前,都要发送最多25次有着相同有效载荷的连接。如果我们能够连续成功地用相同的有效载荷进行25次连接,那么我们就得出结论,该有效载荷(或服务器)不受这种新审查的影响。如果在至少发送一次有效载荷后,随后的5次连接尝试都(由于残留审查而)超时了,那么我们就将有效载荷(和服务器)标记为受到了新的审查的影响。在整个研究过程中,我们对所有有效载荷的测试,都采用了这种重复连接的方法。

 

4 测量并认识新审查技术的特点

我们进行实验以了解GFW如何检测和阻止完全加密的连接。详见表1,在2021年11月6日至2022年5月18日期间,我们使用了三台中国的VPS和三台美国的水槽服务器来进行实验。在同一时期,我们还使用了一台阿里云北京VPS(自治系统号:AS37963)来重复我们所有的实验。我们没有观察到中国境内的实验节点与任何受影响此次审查影响的境外节点之间的审查行为有任何差异。2023年2月16日,我们重新进行了实验,确认所有检测规则仍然有效。这一次,我们使用了一台腾讯云北京的VPS和一台位于Digital Ocean旧金山的水槽服务器。

算法1展示并概述了我们通过测量实验推断出的GFW检测规则。图1则举出了每个推断规则被应用时的例子。虽然我们无法推断这些检测规则被应用的顺序,也无法推断这些规则是否详尽,但我们的实验证实了GFW审查策略的具体组成部分。我们发现,审查者没有直接定义什么是完全加密的流量,而是应用了至少五条粗糙但高效的启发式规则来豁免那些不太可能是完全加密的流量;然后它阻止其余任何未被豁免的流量。这些豁免规则是基于常见的协议指纹、使用1比特比例的粗略熵测试、以及可打印的ASCII字符的占比、位置和最大连续数。

 

算法1: GFW使用至少五条启发式规则来检测和封锁完全加密的流量。审查者将此算法应用于从中国发往某些IP子网的TCP连接,并采用概率封锁(详见第6节)。

如果客户端发送的第一个TCP有效载荷(
)满足以下任何一条豁免规则,则允许连接继续: 或者
from: https://gfw.report/publications/usenixsecurity23/zh/  


返回列表 网站首页