在 Tor 中,當多個中繼點擁有相同的運營者時,它們應宣告自己是同一個「family」的成員。

在 Tor 目前的設計中,若要將中繼點設定為某個 family 的成員,每個中繼點都需要在其設定中列出 family 的其他所有成員,並將該清單發布給客戶端。 這些清單維護起來可能令人頭疼,下載時也需要耗費大量資源。

Happy Families 設計是 Tor 0.4.9.2-alpha 中的一項新功能,它將(最終)提供一種更簡單的方法來配置中繼系列,並且在客戶端獲取網路目錄資訊時也將節省大量流量。

(很遺憾,在過渡到 happy families 的期間,這將產生 額外 的工作量。我們認為從長遠來看是值得的。)

如果您是需要在 Tor 網路上配置系列的中繼運營商,您應該閱讀本文。

基本思想

在 Happy Families 設計中,每個中繼點 family 都由所有成員共享的秘密 family 簽署金鑰來識別。 Family 成員使用此金鑰簽署憑證,以證明其屬於該 family。

要成為 Alpha 測試者,您需要做:

  1. 為您的 family 產生一個金鑰。
  2. 將該金鑰複製到每個中繼點。
  3. 設定您的中繼點使用該金鑰。

更詳細

產生家庭密鑰

首先,您需要等待所有中繼都執行 0.4.9.2-alpha 或更高版本。

然後,若要產生 family 金鑰,請執行:

tor --keygen-family MyKey

這將建立一個名為 MyKey.secret_family_key 的檔案;它也會將類似以下的結果輸出到標準輸出:

# Generated MyKey.secret_family_key
FamilyId wweKJrJxUDs1EdtFFHCDtvVgTKftOC/crUl1mYJv830

儲存該 FamilyID 行;您之後會用到它! (請勿使用此範例中的值——那不是您的 family ID。)

設定您的中繼

MyKey.secret_family_key 檔案(或您命名的任何名稱)複製到每個中繼點的 KeyDir 中。 (預設情況下,這是 keys 子目錄,位於您的 DataDir 之下。) 檔案名稱必須以 .secret_family_key 結尾。

然後,新增 FamilyId 設定行至您的 torrc

若您的中繼點正在運行,您需要告知其重新載入設定(通常使用 SIGHUP。)

有效嗎?

若操作正確,您應能在中繼點的描述符中看到 family-cert 項目,看起來如下:

family-cert
-----BEGIN FAMILY CERT-----
AQwAB2K5AXJrxBpgTXDIvHKFShmCCD2yLnDaBf2lWaInBhR2R56HAQAgBAAjv69J
jy+7BSRh1GnGF7Zxm+AMXvJYWkUCWY+5KU8Bymkz5N4D/QNs4K6bOjLokAwD4raT
J34t8b7uxHXuFS2F2VN5Ygr3//vGsB00jideQ5Cj9aX+BLSZ2FjC6GK2XAo=
-----END FAMILY CERT-----

一旦足夠的目錄權限運行 0.4.9.2-alpha 或更高版本,它們將在中繼的微描述符中包含相應的條目,該條目將類似於:

family-ids ed25519:wweKJrJxUDs1EdtFFHCDtvVgTKftOC/crUl1mYJv830

注意:您仍然需要配置 MyFamily!

遺憾的是,您仍需要像以前一樣設定 MyFamily 選項:在所有客戶端都支援 Happy Families 之前,它們仍需要查看舊版 family 清單。

我們將盡力使這個過渡期盡可能短。

一旦不再需要包含 MyFamily,我們將發布公告。

附加資訊:如何過渡家庭鑰匙

若您的某個中繼點遭到入侵,或您不小心洩露了 family 金鑰,您需要更換金鑰。 (若不這樣做,對手的中繼點可能會偽稱是您 family 的成員。)

為此,我們建議採用逐步的流程。

  1. 按照上述方式產生新的 family 金鑰。 給它一個與舊金鑰不同的檔案名稱。
  2. 將新的 family 金鑰複製到您的每個中繼點,不要替換舊的 family 金鑰。
  3. 在所有中繼點的設定中新增新的 FamilyID 行,不要移除舊的。 此時,您的中繼點將都是 兩個 family 的成員。
  4. 等待幾天,讓新的 family 資訊有時間傳播。
  5. 從您的中繼點設定中移除舊的 FamilyID 行。 可選操作:同時移除舊的 family 金鑰。

附加資訊:此次過渡的預期節省

我們計劃同時移除 MyFamily 和舊版 TAP onion 金鑰。 當我們這樣做時,我們估計最終網路的微描述符將是其當前大小的 10% 左右。

(遺憾的是,這可能不是永久性的節省:當我們過渡到後量子密碼學時,我們可能需要再次增大微描述符的大小。但至少這次變更將為此預留空間。)