Desync

维基教科书,自由的教学读本

TCB脱同步(英語:TCB desync)是一种规避深度包检测的方法。该方法首次在Zhongjie Wang等人的论文Your state is not mine: a closer look at evading stateful internet censorship中提出。其中“TCB”指的是TCP控制块(TCP Control Block),即网络设备记录连接状态的数据结构。

技术原理[编辑]

要了解desync的工作原理,首先要简单了解GFW是如何检测并封禁网站的。

当我们访问使用HTTPS协议的网站时,通信传输的信息(包括但不限于域名等)全部经过非对称加密,以防止通信过程被监听和篡改。但为了帮助单IP多站点的服务器实现HTTPS通信(通常通过反向代理服务器检测域名实现),TLS握手时会发送SNI信息(可以理解为域名),而加密型SNI(如ESNI和ECH)尚未普及,且GFW会直接对此采取TCP RST阻断措施,所以目前SNI都是明文形式。于是,GFW就可以方便地检测TLS握手识别你所访问的网站,进而通过黑名单机制采取措施(通常为TCP重置攻击)。

desync软件之一Phantomsocks利用WinDivert(Windows)、Pcap、RawSocket(Linux)等修改TCP帧,伪造部分帧参数。修改后的TCP帧不合常理,会使大部分防火墙的审查功能紊乱,无法正常跟踪TCP连接状态,从而不能进行SNI等检测,进而也就不会发出RST阻断连接。

当然,这一手段也存在局限性:

  • 由于是对TCP连接进行的干预,无法对UDP协议等提供保护;
  • TCP帧被伪造后,部分开启严格管控模式的网站服务器也会拒绝用户的请求;
  • 你的访问日志仍可能被记录,并通过人工审核等方式监控。

实现[编辑]

目前,实现desync的反审查工具有phantomsocksGhosTCPINTANGGeneva百科GoodbyeDPI百科等。