Geneva (軟體)

Geneva是一款人工智慧工具及自由軟體,能利用審查器中的漏洞規避網際網路審查[1]。2019年11月,Geneva由馬里蘭大學的 Kevin Bock 等人和伯克利大學蕭強在2019 ACM SIGSAC計算機和通信安全大會 (CCS 』19[2])上發布這款軟體。Geneva與其他突破網絡審查的方案不同,無需依賴比如 TorVPN等等位於審查國境外的支援,而僅僅運作於連接的一端(服務端或客戶端)[3][1]。其名稱來自 Genetic Evasion (遺傳學規避)的縮寫[4][5]

Geneva
首次發布2019年11月,​5年前​(2019-11
原始碼庫 編輯維基數據鏈接
程式語言Python在維基數據編輯
作業系統Linux在維基數據編輯
類型突破網絡審查
自由軟體在維基數據編輯
許可協議 編輯維基數據鏈接
網站censorship.ai 編輯維基數據

算法

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) (英語). 

來源