Geneva_(软件)

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

## 算法

Geneva 運行在客戶端或服務端，並接管作業系統的流量，在報文發出或接收前按照「策略」修改報文。由於深度包檢測系統作為中間盒，對特定封包的處理和目標主機有所不同，通過發送特製報文，其維持的 TCP 狀態可以和真正的 TCP 狀態「脫同步」（desync），從而使審查中間盒檢測不到真的 TCP 狀態，從而規避審查。

其以「策略 DNA」命名修改方法。Geneva 的策略由一組 `(tigger, 行为树)` 構成。匹配到相應 trigger 的封包（比如所有設置有 ACK flag 的 TCP 包）會用相應的行為樹修改。Geneva 可以進化 trigger、行為樹的結構和特定 action 本身。

下面是 trigger、action 和行為樹的結構。

### 策略 DNA

#### trigger

Trigger 包含封包頭部的特定信息，當匹配時封包修改就會執行。

Trigger 由以下語法構成：

比如 `[TCP:flags:R]` 會匹配所有帶有 RST flag 設置的 TCP 包。Geneva 需要精確的匹配，比如 `[TCP:flags:RA]` 不會匹配到僅設置了 RST flag 的 TCP 包。

#### action

封包級的行為分為 4 類：

生成副本，然後向原來的包執行 A1 行為組，然後向副本執行 A2 行為組。

在特定 offset 分片（IP 協議）或者分段（TCP 協議），然後向第一個碎片執行 A1 行為組，向第二個碎片執行 A2 行為組。可選地，按順序（inOrder）發送它們。

修改封包的特定 field 的特定值，然後向其執行 A1 行為樹。tamper 修改後會重新計算 checksum 或者 length，除非指令本來就要修改它們。

注意如果設定的 field 在原包中本來就不存在，Geneva 會加入它們。tamper 有兩種模式：replace 和 corrupt 。

`replace:newValue` 將特定 field 的值設定為 newValue 。 `corrupt` 將特定 field 的值設定為相同 bitsize 的隨機值（每次行為都生成新的隨機值）。

丟棄封包。

#### 行為樹

Geneva 的 actions 以二元樹形式呈現：`duplicate` 和 `fragment` 都有 2 個子樹；`tamper` 有一個：`drop` 沒有子樹。每個匹配的封包從根部開始按照順序執行修改。

一組 (trigger, action tree) 稱為森林，策略中可以混合許多森林。

##### 出站和入站

Geneva 可以修改入站和出站的封包。因此某策略由兩個部分組成：分別包括 trigger 和 action tree 的兩個森林。總體來說表示是這樣: `outbound-forest \/ inbound-forest`

#### 示例

此策略有一個出站樹和一個入站樹。第一個（出站）先生成 SYN 包的兩個副本，然後將第一個副本的 TCP flag 替換為 SYN/ACK，第二個拷貝不變，然後發送。在入站樹，RST 包會引發 action tree，將其丟棄。

### 進化

Geneva 通過進化 (evolution) 發現新策略，在許多世代 (generation) 中完成。每一世代都包含許多個體 (individual)(即策略，包含入站和出站行為樹的森林)，進化通常包括三步:

* 變異 (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 個體，然後發生以下之一。

* 行為森林 (action forest) 中的所有樹隨機交換 (swap)
* 每個森林中的一個隨機的樹互相交配 (mate)

交配指，每個樹隨機選取一個行為，兩個行為所在的子樹互相交換。如果每個某個方向的行為森林僅有一個樹，則使用第二個機制。

## 實用

研究人員在介紹的 Geneva 的論文中聲稱其可以在中華人民共和國、印度和哈薩克斯坦的網際網路審查環境下工作。

* Geneva 的另一次使用是為規避中華人民共和國的網際網路審查器 — 防火長城對加密伺服器名稱指示（ESNI）的封鎖，後者也是一種突破網絡審查的方案，其可以規避防火長城的深度包檢測。2020 年 8 月，研究人員在 48 小時的時間裡，從客戶端和伺服器端對 Geneva 進行了訓練。總共發現了 6 種策略來打敗對 ESNI 的封鎖機制。其中有 4 個可以在伺服器端使用，所有 6 個都可以在客戶端使用。
* 在 2020 年 8 月末，研究人員也對伊朗的協議過濾器使用了 Geneva ，該國在 2020 年初部署了協議過濾器，只允許 DNS、HTTP 和 HTTPS 協議，審查任何使用其它協議的連接。 Geneva 在兩小時內就發現了三種能挫敗協議過濾器的方法。
* 2021 年 8 月，研究人員調查防火長城的 TCP 重置攻擊行為時發現其認為存在第二個備用的審查中間件，她們使用 Geneva 規避所有「主」注入器，從而成功測量和研究了「備」注入器。用於網際網路審查的中間件通常會注入 TCP 重置包（如防火長城）或屏蔽通知頁面（參見韓國網絡審查），同年年 8 月末，在 Geneva 的幫助下，研究人員發現了利用此類中間件的注入行為發起反射放大攻擊的方法。

## 參見

* 西廂計劃
* 遺傳算法

## 參考文獻

### 引用

### 來源

* Thor Benson. "Biologically inspired" A.I can beat the world's strictest internet censors. inverse.com. 2019-11-18 [2022-01-18]. （原始內容存檔於 2022-01-18） （英語）.
* New artificial intelligence system automatically evolves to evade internet censorship. ScienceDaily. 2019-11-13 [2022-01-18]. （原始內容存檔於 2022-04-23） （英語）.