技術文章

無狀態 Tor Relay 的部署路線與開放問題

本頁內容
  1. 無狀態系統
  2. Tor Relay 做到無狀態的難處
  3. TPM 的角色
  4. 既有的部署路線
  5. 尚未解決的問題
  6. 未來方向
  7. 結語
  8. 參考資料
  9. 台灣營運者的觀點
  10. 相關閱讀

中繼節點被扣押時,機器裡能交出的東西越少,使用者就越安全。在義大利營運出口節點的 Osservatorio Nessuno 把這個想法推到作業系統層,讓 relay 每次開機都從同一份唯讀映像啟動,身分金鑰交給 TPM 保管。他們在 Tor Blog 的客座文章比較了三種已經有人採用的部署路線,也列出重新 sealing、自動更新與記憶體上限等尚未解決的問題,適合正在評估硬體與部署方式的營運者參考。

以下翻譯自 Osservatorio Nessuno 在 Tor Blog「捍衛自由網路的組織」系列發表的 A Server That Forgets: Exploring Stateless Relays(2026-04-08),文中的「我們」指 Osservatorio Nessuno。文末的台灣營運者觀點由 anoni.net 社群補充。

A Server That Forgets

營運 Tor relay 需要持續對抗試圖攻擊節點、藉此破壞整個網路的敵手,對方可能是民間勢力,也可能有國家支持。有些營運者還要面對扣押、搜索,或硬體遭到直接實體接觸。奧地利、德國、美國與俄羅斯都有先例,其他地方很可能也有。在這些案例裡,伺服器本身可能成為營運者的負擔。

Tor 存在的目的,是保護網路使用者免於不必要的監控。Tor 網路的設計讓任何單一營運者或伺服器都無法重建誰在跟誰通訊,記者、社運工作者與吹哨者都仰賴這項前提。relay 若在扣押後能交出內容,整個系統賴以運作的信任就會受到侵蝕,我們想解決的正是這個問題。

本文探討無狀態、無磁碟的作業系統如何從韌體到使用者空間提升 relay 的安全,重點放在軟體完整性與抵抗實體攻擊的能力。內容來自 Osservatorio Nessuno 在義大利營運出口 relay 的經驗。relay 的管理方式隨背景、技術能力、預算與司法管轄而有很大差異,我們希望引發討論,文中的做法只是其中一種模式。

無狀態系統

無狀態系統在重開機之間不保留任何資料,每次開機都從固定、已知的映像啟動,做法與 Tails 相同。把 Tor relay 完全放在 RAM 裡執行並非新構想,專為這個用途製作、以 uClibc 為基礎的微型 Linux 發行版 Tor-ramdisk,至少在 2015 年就已經出現。

對 relay 營運者來說,無狀態的設計本身就要求更好的操作習慣,安全門檻也隨之提高:

  • 抵抗實體攻擊:機器被扣押或複製時,裡面沒有可供分析的東西。視部署方式而定,抽取 relay 金鑰可能變得不可行。
  • 宣告式設定:系統設定納入版本控制,每次開機都重新套用一次宣告的設定,系統不會偏離它。
  • 不可變的執行環境:檔案系統唯讀,攻擊者即使取得程式執行權,也無法讓任何東西在重開機後留存。
  • 可重現性:重開機前後不變的系統比較容易驗證,進一步也能重現與稽核。

Tor Relay 做到無狀態的難處

Tor relay 的信譽隨時間累積,連續運作數個月的 relay 會取得頻寬相關的旗標,對網路更有用。信譽綁在長期的加密身分金鑰上,金鑰遺失,relay 就失去身分與在網路中的信譽,只能從頭開始。

所以 relay 的身分必須在重開機後延續,同時又不能被抽取。存在磁碟上的金鑰可能被扣押與複製,放在 TPM 這類安全晶片裡,攻擊者要取得可能就困難得多。

除了身分金鑰,relay 還會累積一份 state 檔,記錄頻寬歷史與其他暫存資訊,每次重開機都丟掉它會拖累效能。完全在 RAM 裡執行,也代表整個作業系統要放得進記憶體,而且沒有 swap 可用。行程超出可用記憶體時,核心的 OOM killer 會直接終止它們。實務上,把 glibc 的記憶體配置器換成 jemalloc 或 mimalloc,可以明顯降低 Tor 的記憶體用量,在一台繁忙的 guard relay 上從約 5.7 GB 降到 1.2 GB 以下,主要原因是避開了目錄快取物件頻繁汰換造成的碎片化。

TPM 的角色

TPM(Trusted Platform Module,可信任平台模組)是主機板上的專用硬體晶片,負責儲存加密金鑰並用它們執行運算,私鑰從不暴露給作業系統。TPM 可以 seal 一份秘密,也就是把它綁定到機器的特定量測狀態,只有量測到的軟體堆疊與建立金鑰時完全相同,金鑰才能使用。

對無狀態 relay 來說,身分金鑰存在硬體裡,可以跨重開機保留,即使機器遭到實體接觸,也無法用一般方法抽取。TPM 也支援遠端證明(remote attestation),晶片可以向外部系統證明機器開機時載入了哪些軟體,並附上以硬體為信任根的簽章。如此一來,不必信任營運者,也能驗證節點實際執行的內容。

TPM 也有解決不了的地方,例如 Tor 使用的 ed25519 金鑰不受 TPM 晶片支援,金鑰雖然經過 TPM 加密,仍以位元組字串存放在非揮發性記憶體,技術上還是有可能匯出。

sealing 還要求事先決定 TPM 要信任哪些軟體狀態。更新核心或 bootloader 時量測狀態會跟著改變,營運者必須預測下一次開機的量測結果,重新 seal TPM。

既有的部署路線

不同的營運者在部署的簡便程度與安全深度之間,選了不同的取捨點。

最小化的 RAM disk

最簡單的做法是全部放在 RAM 裡執行,金鑰手動管理。Tor-ramdisk 從 2015 年起就採用這種做法,身分金鑰透過 SCP 匯出與匯入,重開機前沒有匯出就只能從頭開始。這條路線沒有 TPM、遠端證明與 verified boot,唯一的保證是斷電後 RAM 的內容不會留存,但跟傳統把狀態存在磁碟上的部署相比,仍是有意義的改進。

以 VM 執行的 RAM disk

Emerald Onion 在 Proxmox hypervisor 上替每個 relay 執行一份 Alpine Linux 映像(每份 66 MB),VM 完全開機到 RAM 裡,不掛載任何持久儲存。身分用 Tor 的 OfflineMasterKey 功能管理,長期的 master key 在離線環境產生,從不經過 relay。更新的方式是重建映像,回滾很容易,也不需要特殊硬體。

裸機與綁定 TPM 的身分

我們開發的 Patela 走偏向硬體的路線。relay 透過 stboot 開機,這個 bootloader 會先下載已簽署的作業系統映像並驗證簽章,再交出控制權。開機之後,節點透過 mTLS 向中央伺服器取得設定。中央伺服器即使遭入侵,攻擊者也只能讓服務中斷,無法把憑證推送到節點,也無法從節點抽取金鑰。relay 的身分金鑰存在 TPM 的非揮發性記憶體,綁定量測過的開機狀態,可以跨重開機保留,即使遭到實體接觸也無法抽取。代價是營運更複雜,需要裸機,每次更新後也要重新 seal。

尚未解決的問題

有些問題只出現在我們的部署,有些是所有無狀態 relay 都會遇到的。

更新後的重新 sealing

軟體堆疊改變時,TPM 的量測狀態也跟著改變。要自動化重新 sealing,就得預測更新後的開機量測值,目前仍是較難的未解問題之一。systemd-pcrlock 等工具正朝這個方向發展,但還無法開箱即用。

無狀態重開機與升級的衝突

我們用標準的 unattended upgrades 更新 Tor 執行檔,但重開機會回到作業系統映像,映像裡還是前一個版本,結果變成非預期的降版。自動安全更新與無狀態映像要如何兼顧,我們還沒有完全解決。

記憶體限制

沒有 swap,行程超出可用記憶體時會在沒有預警的情況下被終止,而 Tor 執行時的記憶體用量很難預測。前面提到的配置器替換幫助很大,但根本的限制仍在。

網路穩定性

持久的更新只能透過重建映像、重新開機來套用。relay 若太常重新啟動,可能失去 Stable 旗標,影響網路分配給它的流量。

未來方向

遠端證明

sealing 把金鑰綁在機器的狀態上,attestation 則讓節點向外部證明自己處在該狀態。設定伺服器,或將來的 Tor directory authority 這類驗證方,可以發出加密挑戰,只有執行預期軟體堆疊的節點能正確回應。開機完整性因此從只能在本機確認的性質,變成可以遠端驗證,對營運者的信任需求也隨之降低。

透明日誌

有了量測過的開機鏈,就能把量測結果公開。relay 營運者提供可重現建置的做法,任何人都能重新計算預期的雜湊值,比對是否與 TPM 回報的一致。只能附加寫入的透明日誌(transparency log)可以讓這些證明接受公開稽核,Tor 社群也可以執行獨立的監測服務,追蹤整個 relay 群的狀態。

機密運算

VM 路線可以再結合 AMD SEV-SNP 等技術,把 guest VM 的記憶體與 hypervisor 本身隔離。結合之後同樣能降低對營運者的信任需求,也能縮小 VM 與裸機路線之間的安全差距。

更小的硬體

Walking onions 是一項提案中的 Tor 協定擴充,節點不再需要在本機保存整個網路的視圖。如果 arti 與相關工具能在更小的硬體上執行,目前負擔不起資源成本的裝置也有機會用來營運 relay。

結語

對 Tor 這類應用,無狀態設計同時能防範攻擊與減少營運者的操作失誤。再經過更多研究與工程,還有機會提高整個網路的可信度。

無狀態系統有實際的營運成本,也有真正困難的未解問題,資源較多的專案與組織同樣要面對。不過它可以作為改進隱私基礎設施的基礎,類似的概念與框架也能用在技術堆疊的其他部分。

這項工作從 Tor Community Gathering 2025 開始,目前仍在進行。如果你營運 relay、開發 Tor 相關工具,或思考過上述任何一個問題,我們很想聽聽你的想法。

參考資料


台灣營運者的觀點

以下由 anoni.net 社群補充。台灣網路普及、商業託管成熟,同時身處區域資訊衝突的壓力之下,同一套技術方案常要兼顧快速上線與高壓下的實際考驗。

台灣既有的小型主機供應、資料中心服務與公民科技社群,可以幫助營運者比較快建立標準化的映像、事件應變流程與可驗證的運作紀錄。不過台灣的 relay 多由志工分散維運,遇到濫用通報、設備處置要求或執法單位接觸時,流程若沒有事先準備好,技術設計再好也無法降低營運者個人承擔的風險。放到台灣的條件來看,下面三個方向值得先著手。

志工營運與法律程序

台灣的 relay 與 exit 營運者可以先整理機房通知、執法接觸與設備扣押的標準應變流程。技術上先把可擷取的資料降到最低,事件發生時營運者個人承擔的風險也比較小。

硬體取得與供應鏈成本

具備 TPM 的主機、小型伺服器與代管服務在台灣都可以取得,但成本差距很大。社群若能整理出幾組可重現的硬體與映像組合,維運與稽核的成本比較容易控制。每個團隊各自組一套的話,安全主張難以互相比較,維護成本也會持續增加。

可驗證運算的公共討論

量測開機鏈、遠端證明與透明日誌的用途不限於 Tor 的技術圈,也跟公民科技、關鍵基礎設施透明度的討論有關。這些證明要成為社群共享、外界能理解的證據,才能支撐社會的信任。若只有少數技術人員能讀懂,外界的信任仍只能依靠口碑。

相關閱讀