Remove ads
来自维基百科,自由的百科全书
Geneva是一款人工智能工具及自由软件,能利用审查器中的漏洞规避互联网审查[1]。2019年11月,Geneva由马里兰大学的 Kevin Bock 等人和伯克利大学的蕭強在2019 ACM SIGSAC计算机和通信安全大会 (CCS ’19[2])上发布這款軟件。Geneva与其他突破网络审查的方案不同,無需依赖比如 Tor、VPN等等位于审查国境外的支援,而仅仅运作于连接的一端(服务端或客户端)[3][1]。其名称来自 Genetic Evasion (遗传学规避)的缩写[4][5]。
Geneva 运行在客户端或服务端,并接管操作系统的流量,在报文发出或接收前按照“策略”修改报文。由于深度包检测系统作为中间盒,对特定封包的处理和目标主机有所不同,通过发送特制报文,其维持的TCP状态可以和真正的TCP状态“脱同步”(desync),从而使审查中间盒检测不到真的TCP状态,规避审查。
其以“策略DNA”命名修改方法。Geneva 的策略由一组 (tigger, 行为树)
构成。匹配到相应 trigger 的封包(比如所有设置有ACK flag的TCP包)会用相应的行为树修改。Geneva 可以进化 trigger、行为树的结构和特定 action 本身[2]。
下面是 trigger、action 和行为树的结构。
Trigger 包含封包头部的特定信息,当匹配时封包修改就会执行。
Trigger 由以下语法构成:
[PROTOCOL:FIELD:VALUE]
比如[TCP:flags:R]
会匹配所有带有 RST flag 设置的 TCP 包。Geneva 需要精确的匹配,比如[TCP:flags:RA]
不会匹配到仅设置了 RST flag 的 TCP 包。
封包级的行为分为 4 类[2]:
duplicate(A1, A2)
生成副本,然后向原来的包执行 A1 行为组,然后向副本执行 A2 行为组。
fragment{protocol:offset:inOrder}(A1, A2)
在特定 offset 分片(IP 协议)或者分段(TCP 协议),然后向第一个碎片执行A1行为组,向第二个碎片执行A2行为组。可选地,按顺序(inOrder)发送它们。
tamper{protocol:field:mode[:newValue]}(A1)
修改封包的特定 field 的特定值,然后向其执行A1行为树。tamper 修改后会重新计算 checksum 或者 length,除非指令本来就要修改它们。
注意,如果设定的 field 在原包中本来就不存在,Geneva 会加入它们。tamper 有两种模式:replace 和 corrupt 。
replace:newValue
将特定 field 的值设定为 newValue 。 corrupt
将特定 field 的值设定为相同 bitsize 的随机值(每次行为都生成新的随机值)。
drop
丢弃封包。
Geneva 的 actions 以二叉树形式呈现:duplicate
和 fragment
都有 2 个子树;tamper
有一个:drop
没有子树。每个匹配的封包从根部开始按照顺序执行修改。[2]
一组 (trigger, action tree) 称为森林,策略中可以混合许多森林。
Geneva 可以修改入站和出站的封包。因此某策略由两个部分组成:分别包括 trigger 和 action tree 的两个森林。总体来说表示是这样: outbound-forest \/ inbound-forest
[TCP:flags:S]-
duplicate(
tamper{TCP:flags:replace:SA}(
send),
send)-| \/
[TCP:flags:R]-drop-|
此策略有一个出站树和一个入站树。第一个(出站)先生成 SYN 包的两个副本,然后将第一个副本的 TCP flag 替换为 SYN/ACK,第二个拷贝不变,然后发送。在入站树,RST包会引发 action tree,将其丢弃。
Geneva 通过进化(evolution)发现新策略,在许多世代(generation)中完成。每一世代都包含许多个体(individual)(即策略,包含入站和出站行为树的森林),进化通常包括三步:[2]
duplicate
变异改换子树的顺序 (i.e., duplicate(A1, A2) → duplicate(A2, A1)).fragment
变异改变协议(IP分片或TCP分段)、碎片的顺序或者 fragmentation index。tamper
变异取决于其模式:replace
模式变异可以改变“修改为”的值,corrupt
模式的变异可以改变它填充的 field。每个模式可以互相变异为另一种。drop
不支持变异。和变异不同,它只随机扰乱单个的策略或者行为树。交叉是在两个个体之间的生育(breeding)过程,从种群池中随机选取2个体,然后发生以下之一。[2]
交配指,每个树随机选取一个行为,两个行为所在的子树互相交换。如果每个某个方向的行为森林仅有一个树,则使用第二个机制。
研究人员在介绍的 Geneva 的论文中声称其可以在中华人民共和国、印度和哈萨克斯坦的互联网审查环境下工作[2]。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.