Geneva (软件)

✍ dations ◷ 2025-02-24 00:56:36 #Geneva (软件)

Geneva是一款人工智能工具及自由软件,能利用审查器中的漏洞规避互联网审查。2019年11月,Geneva由马里兰大学的 Kevin Bock 等人和伯克利大学的萧强在2019 ACM SIGSAC计算机和通信安全大会 (CCS ’19)上发布。Geneva与其他突破网络审查的方案不同,不需要依赖比如 Tor、VPN等等位于审查国境外的支援,而仅仅运作于连接的一端(服务端或客户端)。其名称来自 Genetic Evasion (遗传学规避)的缩写。

Geneva 运行在客户端或服务端,并接管操作系统的流量,在报文发出或接收前按照“策略”修改报文。由于深度包检测系统作为中间盒,对特定封包的处理和目标主机有所不同,通过发送特制报文,其维持的TCP状态可以和真正的TCP状态“脱同步”(desync),从而使审查中间盒检测不到真的TCP状态,从而规避审查。

其以“策略DNA”命名修改方法。Geneva 的策略由一组 (tigger, 行为树) 构成。匹配到相应 trigger 的封包(比如所有设置有ACK flag的TCP包)会用相应的行为树修改。Geneva 可以进化 trigger、行为树的结构和特定 action 本身。

下面是 trigger、action 和行为树的结构。

Trigger 包含封包头部的特定信息,当匹配时封包修改就会执行。

Trigger 由以下语法构成:

比如会匹配所有带有 RST flag 设置的 TCP 包。Geneva 需要精确的匹配,比如不会匹配到仅设置了 RST flag 的 TCP 包。

封包级的行为分为 4 类:

duplicate(A1, A2)

生成副本,然后向原来的包执行 A1 行为组,然后向副本执行 A2 行为组。

fragment{protocol:offset:inOrder}(A1, A2)

在特定 offset 分片(IP 协议)或者分段(TCP 协议),然后向第一个碎片执行A1行为组,向第二个碎片执行A2行为组。可选地,按顺序(inOrder)发送它们。

tamper{protocol:field:mode}(A1)

修改封包的特定 field 的特定值,然后向其执行A1行为树。tamper 修改后会重新计算 checksum 或者 length,除非指令本来就要修改它们。

注意如果设定的 field 在原包中本来就不存在,Geneva 会加入它们。tamper 有两种模式:replace 和 corrupt 。

replace:newValue将特定 field 的值设定为 newValue 。 corrupt 将特定 field 的值设定为相同 bitsize 的随机值(每次行为都生成新的随机值)。

drop

丢弃封包。

Geneva 的 actions 以二叉树形式呈现:duplicatefragment 都有 2 个子树;tamper 有一个:drop 没有子树。每个匹配的封包从根部开始按照顺序执行修改。

一组 (trigger, action tree) 称为森林,策略中可以混合许多森林。

Geneva 可以修改入站和出站的封包。因此某策略由两个部分组成:分别包括 trigger 和 action tree 的两个森林。总体来说表示是这样: outbound-forest / inbound-forest

-   duplicate(      tamper{TCP:flags:replace:SA}(         send),      send)-| /-drop-|

此策略有一个出站树和一个入站树。第一个(出站)先生成 SYN 包的两个副本,然后将第一个副本的 TCP flag 替换为 SYN/ACK,第二个拷贝不变,然后发送。在入站树,RST包会引发 action tree,将其丢弃。

Geneva 通过进化(evolution)发现新策略,在许多世代(generation)中完成。每一世代都包含许多个体(individual)(即策略,包含入站和出站行为树的森林),进化通常包括三步:

和变异不同,它只随机扰乱单个的策略或者行为树。交叉是在两个个体之间的生育(breeding)过程,从种群池中随机选取2个体,然后发生以下之一。

交配指,每个树随机选取一个行为,两个行为所在的子树互相交换。如果每个某个方向的行为森林仅有一个树,则使用第二个机制。

研究人员在介绍的 Geneva 的论文中声称其可以在中华人民共和国、印度和哈萨克斯坦的互联网审查环境下工作。

相关