Geneva (软件)

维基百科,自由的百科全书
Geneva
首次发布2019年11月,​4年前​(2019-11
源代码库 编辑维基数据链接
编程语言Python在维基数据编辑
操作系统Linux在维基数据编辑
类型突破网络审查
自由软件在维基数据编辑
许可协议 编辑维基数据链接
网站censorship.ai 编辑维基数据

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

算法[编辑]

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

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

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

策略DNA[编辑]

trigger[编辑]

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

Trigger 由以下语法构成:

[PROTOCOL:FIELD:VALUE]

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

action[编辑]

封包级的行为分为 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 以二叉树形式呈现:duplicatefragment 都有 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]

  • 变异(mutation)和交叉(crossover)
  • 适应度(fitness)分析
  • 对个体的选择(selection)

变异[编辑]

  • duplicate 变异改换子树的顺序 (i.e., duplicate(A1, A2) → duplicate(A2, A1)).
  • fragment 变异改变协议(IP分片或TCP分段)、碎片的顺序或者 fragmentation index。
  • tamper 变异取决于其模式:replace 模式变异可以改变“修改为”的值,corrupt 模式的变异可以改变它填充的 field。每个模式可以互相变异为另一种。
  • drop 不支持变异。

交叉[编辑]

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

  • 行为森林(action forest)中的所有树随机交换(swap)
  • 每个森林中的一个随机的树互相交配(mate)

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

实用[编辑]

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

  • Geneva 的另一次使用是为规避中华人民共和国的互联网审查器—防火长城加密服务器名称指示(ESNI)的封锁[6],后者也是一种突破网络审查的方案,其可以规避防火长城的深度包检测[6]。2020年8月,研究人员在48小时的时间里,从客户端和服务器端对Geneva进行了训练。总共发现了6种策略来打败对ESNI的封锁机制。其中有4个可以在服务器端使用,所有6个都可以在客户端使用。[7]
  • 在2020年8月末,研究人员也对伊朗的协议过滤器使用了 Geneva ,该国在2020年初部署了协议过滤器,只允许 DNSHTTPHTTPS 协议,审查任何使用其它协议的连接。 Geneva 在两小时内就发现了三种能挫败协议过滤器的方法[8][9]
  • 2021年8月,研究人员调查防火长城的TCP重置攻击行为时发现其认为存在第二个备用的审查中间件,她们使用 Geneva 规避所有“主”注入器,从而成功测量和研究了“备”注入器。[10][11]用于互联网审查的中间件通常会注入TCP重置包(如防火长城)或屏蔽通知页面(参见韩国网络审查),同年年8月末,在 Geneva 的帮助下,研究人员发现了利用此类中间件的注入行为发起反射放大攻击的方法[12][13]

参见[编辑]

参考文献[编辑]

引用[编辑]

  1. ^ 1.0 1.1 Kkevsterrr/geneva: automated censorship evasion for the client-side and server-side. GitHub. [2021-12-13]. (原始内容存档于2021-12-12). 
  2. ^ 2.0 2.1 2.2 2.3 2.4 2.5 2.6 Kevin Bock; George Hughey; Xiao Qiang; Dave Levin. Geneva: Evolving Censorship Evasion Strategies (PDF). 2019 ACM SIGSAC Conference on Computer and Communications Security (CCS ’19). London, United Kingdom. 2019-11 [2021-12-13]. doi:10.1145/3319535.3363189. (原始内容存档 (PDF)于2021-12-13) (美国英语). 
  3. ^ Ben Dickson. New tool offers server-side censorship circumvention. The Daily Swig. 2020-09-16 [2022-01-18]. (原始内容存档于2022-01-18). 
  4. ^ Ians. New AI tool 'Geneva' helping evade internet censorship in India and China. 商业标准报. 2019-11-14 [2021-12-13]. (原始内容存档于2019-11-15) (英语). 
  5. ^ Cory Doctorow. Genetic Evasion: using genetic algorithms to beat state-level internet censorship. 波音波音. 2019-11-14 [2021-12-13]. (原始内容存档于2021-04-17) (英语). 
  6. ^ 6.0 6.1 Kevin Bock, iyouport, Anonymous, Louis-Henri Merino, David Fifield, Amir Houmansadr, Dave Levin. 揭示和规避中国对加密SNI(ESNI)的封锁. gfw.report. 2020-08-07 [2021-12-13]. (原始内容存档于2021-12-04). 
  7. ^ Zimo Chai; Amirhossein Ghafari; Amir Houmansadr. On the Importance of Encrypted-SNI (ESNI) to Censorship Circumvention (PDF). 9th USENIX Workshop on Free and Open Communications on the Internet (FOCI 19). Santa Clara, CA: USENIX Association. 2019-08-05 [2021-12-13]. (原始内容存档 (PDF)于2021-12-02) (英语). currently only 66 websites can be unblocked with the help of ESNI. 
  8. ^ 调查伊朗最近部署的协议过滤器. Solidot. 2020-08-26 [2021-12-13]. (原始内容存档于2021-12-13). 
  9. ^ Kevin Bock; Yair Fax; Kyle Reese; Jasraj Singh; Dave Levin. Detecting and Evading Censorship-in-Depth: A Case Study of Iran’s Protocol Filter. 10th USENIX Workshop on Free and Open Communications on the Internet (FOCI 20). 2020-08 [2021-12-13]. (原始内容存档于2021-08-22) (英语). 
  10. ^ 探索审查 HTTPS 流量的备用“黑盒”. Solidot. 2021-10-01 [2021-12-13]. (原始内容存档于2021-10-07). 
  11. ^ Kevin Bock; Gabriel Naval; Kyle Reese; Dave Levin. Even Censors Have a Backup: Examining China’s Double HTTPS Censorship Middleboxes (PDF). ACM SIGCOMM 2021 Workshop on Free and Open Communications on the Internet (FOCI’21). 2021-08-21 [2021-12-13]. doi:10.1145/3473604.3474559. (原始内容存档 (PDF)于2021-10-02) (英语). 
  12. ^ 用于反射放大攻击的武器化网络中间件. Solidot. 2021-08-28 [2021-12-14]. (原始内容存档于2022-08-28). 
  13. ^ Kevin Bock; Abdulrahman Alaraj; Yair Fax; Kyle Hurley; Eric Wustrow; Dave Levin. Weaponizing Middleboxes for TCP Reflected Amplification. 30th USENIX Security Symposium (USENIX Security 21). USENIX Association. 2021-08 [2021-12-14]. (原始内容存档于2023-01-12) (英语). 

来源[编辑]