SSD Nodes Learn Hosting plans →
指南 Matt Connor作者: Matt Connor

Tor 歷史:洋蔥路由如何發展至今

Tor 於 1995 年在美國海軍研究實驗室展開洋蔥路由研究,2002 年部署目前網路;本文整理重要日期,並直接說明誰資助 Tor。

Tor 簡史

Tor 的歷史始於 1995 年,地點是美國海軍研究實驗室(U.S. Naval Research Laboratory),也就是美國海軍的研究機構。David Goldschlag、Michael G. Reed 與 Paul Syverson 在該處建立了最早的 onion routing 原型。Tor Project 的時間軸指出,他們探討的問題是:「是否有方法建立不會透露誰與誰通訊的網際網路連線?」目前人們使用的網路於 2002 年 10 月部署,並以自由且開放的軟體授權發布其程式碼。Tor Project, Inc. 於 2006 年成立為非營利組織。

以下每個日期都來自 Tor Project 發布的時間軸、版本資訊或官方支援頁面。對於存在爭議的主張(例如這項工作由誰提供資金),本節會說明現有證據,以及你可以自行查證的位置。

洋蔥路由實際上做了什麼

洋蔥路由會分離網際網路通常綁在一起的兩項資訊:你的身分,以及你提出的要求。Tor client 會選取 3 個 relay,並透過這些 relay 建立 circuit。它會為 network traffic 加上 3 層加密,每個 relay 對應 1 層。每個 relay 只剝除 1 層,僅得知下一跳的位址,然後將封包轉送出去。這種分層方式就是名稱的由來。

第一個 relay 稱為 guard,可看見你的 IP address,但看不見 destination。最後一個 relay 稱為 exit,可看見 destination,但看不見你的 IP address。中間的 relay 兩者都看不見。沒有任何單一 relay 同時掌握這兩部分,這就是整體的安全性依據。因此,這些 relay 必須由彼此無關的人員運作。如果同一個組織同時運作你的 guard 和 exit,這種分離就會消失,加密也無法提供保護。

已知的弱點是 traffic correlation。能同時監看 circuit 兩端的觀察者,可以比對送入與送出的封包時間和大小。Tor 無法防禦能同時監看整個網際網路的攻擊者。Roger Dingledine、Nick Mathewson 和 Paul Syverson 在 2004 年的設計論文《Tor: The Second-Generation Onion Router》中,也已在其 threat model 內說明這點。

為什麼私有網路毫無用處

這是簡短摘要略過的部分,也是理解本頁其他內容的關鍵。

軍事或情報組織無法從只承載自身流量的網路取得匿名性。匿名性來自人群,而不是密碼。若離開網路的每個連線都屬於同一間辦公室,觀察者只要看到連線離開,就已經得知答案。加密仍然能完美運作,但匿名性並不存在,因為沒有其他對象可以混淆。

因此,這項設計必須公開,流量也必須與其他人的流量混合。程式碼於 2002 年 10 月以自由軟體授權發布,任何人都可以執行 relay。記者、倡議者、研究人員,以及想避開廣告網路的一般使用者,最後都成為保護其中所有其他人的人群。Dingledine 和 Mathewson 於 2006 年在一篇名為 "Anonymity Loves Company: Usability and the Network Effect" 的論文中闡述這項論點,並於 Workshop on the Economics of Information Security 發表。結論是,使用者群體的規模與多樣性本身就是系統的安全性質,而不是行銷數字。

從 alpha 程式碼到非營利組織

Tor Project 的時間軸與已發布的論文記錄了以下發展:

  • 2002 年 10 月:Tor 網路部署,程式碼採用「自由且開放的軟體授權」。
  • 2003 年底:網路由「約十多個志願節點」運作,其中大多位於美國,另有 1 個位於德國。
  • 2004 年:Dingledine、Mathewson 與 Syverson 發表設計論文「Tor:第二代洋蔥路由器」。
  • 2004 年:Electronic Frontier Foundation(EFF)開始資助 Tor 的開發工作。
  • 2006 年:Tor Project, Inc. 成立,成為 501(c)(3) 非營利組織,以維護開發工作。
  • 2007 年:開始開發 bridges,因為各國防火牆已開始封鎖公開 relay 清單。
  • 2008 年:開始開發 Tor Browser。

後來的 2 個日期,有助於理解目前的網路使用方式。Tor Project 的時間軸指出,Tor 在 2010 年底的 Arab Spring 期間開始被使用,用於保護身分並存取遭封鎖的網站。時間軸也記錄了 2013 年 Snowden 文件公開,成為 Tor 的作用廣為人知的時刻,並表示這些文件顯示 Tor 在當時尚未遭破解。這 2 起事件都沒有改變通訊協定,但都改變了安裝 Tor 的使用者群體。

誰支付 Tor 的費用,以及如何查證

Tor Project 在自己的支援頁面上如此回答:「Tor Project 的資金來自政府補助、私人基金會與個人捐款。」政府資金確實是其中一部分,而且從一開始就是如此。支持者頁面列出 U.S. Department of State、Ford Foundation、Open Technology Fund、Craig Newmark Philanthropies,以及 Brave、DuckDuckGo、Mullvad VPN 和 Fastly 等公司。2026 年 10 月,該專案表示,仍與 Mullvad 維持範圍有限的技術合作,但在外界關注 Mullvad 共同創辦人政治捐款一事後,已暫停與該公司的共同品牌活動。經審計的財務資料會以部落格文章形式發布;最近一份於 2025 年 12 月發布,涵蓋 2023 至 2024 財政年度。該專案的立場是:「公開說明我們的贊助者與資金模式,是維持社群信任的最佳方式。」

真正有用的問題不是誰支付了費用,而是這些資金能買到什麼。Tor 不是需要登入的服務,而是通訊協定規格、原始碼可供閱讀的用戶端,以及由陌生人運作的中繼節點網路。若有人想植入後門,就必須放在以下三個位置之一,而且每個位置都能查證。

  • 在原始碼中。用戶端是開放原始碼,通訊協定也公開制定。學術研究人員持續發表針對 Tor 的攻擊研究,而且有充分的專業誘因搶先找出漏洞。
  • 在二進位檔中。Tor Browser 的建置自 2013 年 8 月起便具備可重現性,因此獨立建置者可以重新建置版本,並逐位元組與已發布的下載檔比較。不符合原始碼的二進位檔,無須信任發布者即可被發現。
  • 在中繼節點中。Tor Project 不負責運作整個網路。「Tor network 仰賴志願者捐出頻寬」,而 guard、中間中繼節點、出口節點與 bridge 分屬數千名彼此無關的運作者。控制資助者並不會控制這些節點。

該專案的官方聲明很簡短:「Tor 沒有後門。軟體採用開放原始碼,其程式碼可由獨立人員進行稽核,而且每個版本都經過簽署,以防止遭到竄改。」這段話之所以有意義,是因為其中每個條款都指向可以自行查證的事項。

確實存在一項限制,但問題在於優先順序,而不是誠信。補助資金會影響哪些工作優先進行,因此審查規避的資金來源比網路效能等工作更穩定。這是對該專案合理的批評,但不同於「程式碼已遭入侵」這種批評。要回答前一項問題,應閱讀財務報告,而不是相信任何人的保證。

隱藏服務改稱 onion services

onion service 是永不公開其 IP 位址的伺服器。用戶端與伺服器會各自在網路內建立通往會合點的電路,因此雙方都不會得知對方的位址。這個位址不是由註冊機構分配給任何人的名稱,而是由伺服器的公開金鑰衍生而來,因此 .onion 位址看起來像是隨機字元。

onion services 時間軸列出了相關版本:

  • 8 April 2004:在 Tor 0.0.6pre1 中首次實作 hidden services。
  • 21 September 2007:version 2 hidden services 在 Tor 0.2.0.7-alpha 中推出。
  • 19 December 2016:version 3 開始開發,版本為 Tor 0.3.0.1-alpha。
  • 9 January 2018:version 3 發布,版本為 Tor 0.3.2.9。

「hidden services」改稱「onion services」是逐步完成的,並非發生在某個單一日期;Tor Project 自己的文件目前仍同時使用這兩個名稱。舊名稱描述的是錯誤的對象。許多 onion site 都是公開、可建立索引且有人宣傳的;真正隱藏的是伺服器的位置,而不是網站本身。原始名稱仍保留在設定檔中,這是一項有用的歷史痕跡。現在仍可在 torrc 中用以下方式宣告服務:

HiddenServiceDir /var/lib/tor/my_service/
HiddenServicePort 80 127.0.0.1:8080

該目錄存放服務金鑰,以及包含位址的 hostname 檔案。port 設定會將 onion 位址上的連接埠對應到同一台機器上的本機位址,因此 web server 可以繼續繫結至 127.0.0.1,完全不必在公開網路介面上監聽。Version 3 是預設版本,因此今天使用這兩行建立的服務會取得 v3 位址。在租用的伺服器上執行此設定,主要工作是讓 nginx 維持在 loopback 上,接著關閉可能將該位址連回公開 IP 的資訊洩漏;在自己的 VPS 上代管 .onion 網站會逐步說明這個流程。

onion 位址也不是網域名稱。2015 年 10 月發布的 RFC 7686 將 .onion 保留為特殊用途網域名稱,讓一般 resolver 不再將這些查詢洩漏至公開 DNS(domain name system)。該標準訂出的規則很直接:「Authoritative servers MUST respond to queries for .onion with NXDOMAIN。」將這點與一般網域名稱的解析方式對照,差異正是重點。DNS 名稱由註冊機構分配給你,再透過你無法控制的伺服器查詢。onion 位址就是公開金鑰,因此能自行完成驗證,不需要進行查詢。

舊版 .onion 位址停止運作的原因

這兩種位址格式不相容,舊版格式也已永久停用。

圖表Onion service addresses, v2 against v3
此圖表背後的資料
[
  {
    "version": "v2 (retired 2021)",
    "address_length_chars": 16,
    "service_key": "RSA-1024",
    "address_hash": "SHA-1, truncated to 80 bits"
  },
  {
    "version": "v3 (current)",
    "address_length_chars": 56,
    "service_key": "Ed25519",
    "address_hash": "SHA3-256"
  }
]

v2 位址有 16 個字元,因為其中只包含 RSA-1024 公開金鑰之 SHA-1 雜湊的前 80 個位元。v3 位址有 56 個字元,因為其中包含完整的 Ed25519 公開金鑰,另外還有 checksum 和版本位元組。v3 位址較長,是因為不再截斷雜湊值,因此位址本身現在就是服務的完整識別。

停用計畫於 2020 年 7 月公布,時程如下:

  • 2020 年 9 月 15 日,Tor 0.4.4.x:Tor 將開始警告 operator 和 client,說明 v2 已棄用。
  • 2021 年 7 月 15 日,Tor 0.4.6.x:程式碼庫將移除 v2 支援。
  • 2021 年 10 月 15 日:所有仍受支援系列的新穩定版 client 將停用 v2。

實際版本並未在上述日期推出。程式碼提前變更:Tor 0.4.6.1-alpha 的 changelog 日期為 2021 年 3 月 18 日,其中寫道:「自此版本起,Tor 不再支援舊版 v2 onion service。」2021 年 5 月 10 日,Tor 0.4.5.8 新增了「連線至現已棄用的 v2 onion service 時」的警告,而 Tor 0.4.6.3-rc 則為「不再受支援」的服務提供更清楚的錯誤訊息。瀏覽器則較晚才變更。穩定版 Tor Browser 在 2021 年 11 月 8 日的 version 11.0 停用 v2:「更新至 Tor 0.4.6.8 後,Tor Browser 已無法連線至 v2 onion service。」

官方說明的原因是密碼學安全性。「隨著人類對數學與密碼學的理解演進,version 2 的基礎變得脆弱,在當時已不安全。」截至 2021 年,截斷為 80 位元的 SHA-1 雜湊與 1024 位元 RSA 金鑰都低於合理的安全標準,而且位址格式沒有留下替換兩者的空間。

對讀者而言,後果很簡單,因此值得明確說明。所有在 2021 年以前發布的 16 字元 .onion 連結都已永久失效,也沒有重新導向。v2 位址無法升級,因為該位址是舊 RSA 金鑰的截斷雜湊值。operator 必須建立新的服務,並透過使用者已信任的管道發布新位址。

橋接器與可插拔傳輸:審查持續演進

公開中繼站清單是刻意發布的,讓用戶端能自行選擇路徑,而不是信任某一台伺服器替它選擇。同一份公開清單也成了任何想阻止 Tor 的國家都能直接使用的封鎖清單。橋接器的研發始於 2007 年。橋接器是不在公開清單中的中繼站。你可以透過網頁或電子郵件申請少量橋接器,而審查者無法封鎖自己無法列舉的位址。這項供應之所以存在,是因為志願者持續新增橋接器;在廉價 VPS 上執行 obfs4 橋接器只需加入幾項 torrc 指令與一條防火牆規則,不需要投入大量工作。

之後,封鎖的目標從位址轉向流量特徵。無論連線的目標 IP 位址為何,深度封包檢測都能辨識線路上的 Tor 通訊協定。可插拔傳輸便是為此設計:它會改變 Tor 流量的外觀,但不改變流量的功能。在目前的 Tor Browser 中,這些傳輸整合在名為 lyrebird 的單一二進位檔中。lyrebird 是 obfs4proxy 的後繼版本,而用戶端只需加入 3 行 torrc:

UseBridges 1
ClientTransportPlugin meek_lite,obfs4,snowflake,webtunnel exec [PATH]/lyrebird
Bridge obfs4 <IP ADDRESS>:<PORT> <FINGERPRINT> cert=<CERTIFICATE> iat-mode=0

將 [PATH] 替換成存放 lyrebird 二進位檔的目錄,並從 Tor Project 的橋接器網站複製完整的 Bridge 行,不要手動輸入。每種傳輸方式都針對不同的封鎖方法:

  • obfs4 會讓流量看起來不像任何可辨識的通訊,過濾器也沒有可比對的協定標頭。Tor 的支援頁面將它列為首次嘗試繞過封鎖時應優先使用的傳輸方式。
  • snowflake 會讓連線經過由志願者在一般網頁瀏覽器中執行的短期代理,因此你連線的位址會持續變更。它已於 2021 年 7 月 6 日的 version 10.5 進入穩定版 Tor Browser。
  • meek 會讓連線經過大型雲端服務供應商,因此流量看起來像是連往該供應商;封鎖這類流量也代表必須封鎖該供應商。
  • webtunnel 採用與 obfs4 相反的方法。它不是讓流量看起來不像任何東西,而是讓流量看起來像連往網頁伺服器的一般 HTTPS 連線,方法是「將承載資料的連線包裝成類似 WebSocket 的 HTTPS 連線」。Tor Project 已在 2024 年 3 月 12 日的穩定版 Tor Browser 中發布此功能,供只允許少量通訊協定的網路使用。

這個演進順序才是過去二十年的實際脈絡。每種新傳輸方式的出現,都源於某種特定封鎖技術開始奏效;而這些版本的發布日期,也記錄了審查者在當年採用的手段。

Tor 不是 VPN,VPS 也不是

許多人是在閱讀 VPN 相關資訊後接觸 Tor,因此有必要釐清兩者的差異。VPN(virtual private network)會將網路流量傳送至由單一公司營運的伺服器,而該公司會在同一時間看到你的真實位址與目的地。Tor 會將網路流量經過由不同人員營運的 3 個中繼站,因此沒有任何單一中繼站同時掌握這兩項資訊。這是兩種不同的信任模型,也有不同的失效模式。VPS 與 VPN 的差異說明兩者各自適用的位置。

如果你需要的是在自己控制的機器之間建立私有通道,而不是在群體中實現匿名,那麼你需要的是自行營運的 VPN。你可以在約 40 行設定中,在 VPS 上自行架設 WireGuard VPN。這能保護你的網路流量,避免遭到區域網路和網際網路服務供應商查看。但它無法讓你避開主機代管公司的識別,因為你是使用自己的付款資料租用該伺服器。至於VPS 代管是否安全,則是另一個不同的威脅問題:還有誰能連線至你的主機。

營運中繼站則是另一個方向,而 Tor 網路仰賴這類運作者。橋接器、guard、中間中繼站與出口節點都需要有人營運;Tor Project 的中繼站指南明確指出:「營運中繼站需要技術能力與持續投入。」出口節點會帶來法律風險,因為其他人的網路流量會以你的 IP 位址離開網際網路,而你的代管服務供應商也會收到相關申訴。開始營運前先閱讀該指南,不要等到開始後才閱讀。

FAQ

Tor 是由美國政府建置的嗎?

洋蔥路由始於 1995 年的美國海軍研究實驗室。David Goldschlag、Michael G. Reed 與 Paul Syverson 在當地建置了最初的原型。Tor 本身是下一代設計,由 Roger Dingledine、Nick Mathewson 與 Paul Syverson 約於 2001 年至 2002 年開始開發。該網路於 2002 年 10 月依自由軟體授權條款部署。Tor Project, Inc. 自 2006 年起即為獨立的 501(c)(3) 非營利組織。Tor 的政府起源確實存在,而這也是該網路必須向所有人開放的原因:若網路只承載單一組織的流量,該組織就無法取得匿名性,因為離開該組織的每個連線都會透過使用此網路這項特徵識別出傳送者。

政府提供資金是否代表 Tor 有後門?

Tor Project 的回答是:「Tor 沒有後門。軟體採用開放原始碼,其程式碼可由獨立人士稽核,而且每個版本都會簽署,以防止遭到竄改。」之所以能驗證這項說法,而不只是接受承諾,是因為其周邊機制具備可檢驗性。通訊協定公開規範,Tor Browser 的建置具備可重現性,因此獨立建置者可以重新建置版本,並與公開的二進位檔比較;中繼站則由志願者營運,而非由任何資助者營運。資金確實會影響哪些工作優先執行,Tor 部落格上的經稽核財務報告也會說明資金來源。這是優先順序的問題,不是程式碼本身的問題。

為什麼我舊的 .onion 位址停止運作?

那是第 2 版位址,而 v2 onion service 已於 2021 年停用。Tor Project 於 2020 年 7 月宣布停用計畫,Tor 0.4.6.1-alpha 於 2021 年 3 月移除 v2 支援,穩定版 Tor Browser 則在 2021 年 11 月 8 日推出 11.0 版後停止連線至 v2 位址。v2 位址在 .onion 前有 16 個字元,v3 位址則有 56 個字元。這類位址沒有重新導向,也沒有升級路徑,因為位址是由舊金鑰衍生而來。因此,營運者必須建立新的服務,並公布新的位址。

Tor 和 VPN 相同嗎?

不相同。VPN 會將您的流量傳送至由單一公司營運的一台伺服器,而該公司可以同時看見您的真實 IP 位址與目的地。Tor 會將流量經由由不同人士營運的 3 個中繼站傳送,因此第一個中繼站看得到您的位址,但看不到目的地;最後一個中繼站看得到目的地,但看不到您的位址。Tor 的速度較慢,設計目標是針對未監看整個網際網路的觀察者提供匿名性。VPN 的速度較快,設計目標則是避免您的區域網路與網際網路服務提供者得知您的活動。

什麼是可插拔傳輸?我需要使用嗎?

可插拔傳輸是一種包裝層,會改變 Tor 流量在網路線路上的外觀,但不改變 Tor 的運作方式,因此能避免識別 Tor 協定的過濾器直接比對到它。只有在一般 Tor 無法連線時才需要使用,這通常表示您的網路或所在國家正在封鎖 Tor。Tor Browser 將 obfs4、snowflake、meek 與 webtunnel 置於名為 lyrebird 的單一二進位檔中。Tor 的支援頁面建議依序嘗試 obfs4、webtunnel、snowflake 或 meek,因此請先從 obfs4 開始;若連線始終無法完成,再依該順序往下嘗試。