發明與實現
1990年代中期,美國海軍研究實驗室的研究員保羅‧塞維亞森(Paul Syverson)、麥可‧里德和大衛‧戈爾德施拉格(David Goldschlag)為了保護美國線上情報系統而開發了洋蔥路由。其後國防高等研究計畫署接手該項目繼續開發,並在1998年獲得海軍的專利。2002年計算機科學家羅傑‧丁高戴恩(Roger Dingledine)和尼克‧馬修森(Nick Mathewson)加入了塞維亞森的項目,並開始開發Tor;Tor為“洋蔥路由項目”(The Onion Routing project)的頭字語,該項目後來成為規模最大的洋蔥路由實現並廣為人知。之後美國海軍研究實驗室將Tor以自由軟體授權的方式公開了原始碼,丁高戴恩、馬修森以及其他五位成員在2006年成立了名為“The Tor Project”的非營利組織,並獲得包含電子前哨基金會在內的幾個組織的財政資助。
數據結構
一個在洋蔥路由網路中傳遞的數據包例子。傳送者首先將數據包傳送給路由器A,解密了藍色一層,並發現要傳給B,而數據包傳送至B時又解密了綠色一層,同理再傳給C,而C在解密了紅色一層後得到原始要傳送的訊息並將之傳給目的地。
被稱作洋蔥路由的原因在於訊息一層一層的加密包裝成被稱作洋蔥數據包的數據結構,層數取決於到目的地中間會經過的節點數,每經過一個節點層會將數據包的最外層解密,因此任一個節點都無法同時知曉這個訊息最初與最終的目的地,使傳送者達到匿名的效果。
數據包的創建與傳送
為了傳送洋蔥數據包,傳送訊息者會從“目錄節點”(directory node)提供的列表中選取一些節點,並以這些規劃出一條被稱作“鏈”(chain)或“線路”(circuit)的傳送路徑,這條路徑將為傳輸數據包所用。為了確保傳送者的匿名性,任一節點都無法知道在鏈中自己的前一個節點是傳送者還是鏈上的另一節點;同理,任一節點也無法知道在鏈中自己的下一節點是目的地還是鏈上另一節點。只有鏈上的最後一個節點知道自己是鏈上最終節點,該節點被稱作“出口節點”(exit node)。
洋蔥路由網路使用非對稱加密,傳送者從目錄節點獲得一把公開密鑰,用之將要傳送的訊息加密並傳送給鏈上的第一個節點,該節點又被稱作入口節點(entry node);其後與之創建連線和共享密鑰。創建連線後傳送者就可以通過這條連線傳送加密過的訊息至鏈上的第二個節點,該訊息將只有第二個節點可以解密;當第二個節點收到此訊息後,便會與前一個節點也就是入口節點同樣的創建連線,使傳送者的加密連線延伸到它,但第二個節點並不曉得前一個節點在鏈中的身份。之後按照同樣原理,傳送者通過入口節點和第二個節點的這條加密連線將只有第三個節點能解密的訊息傳送給第三個節點,第三節點同樣的與第二個節點創建連線;藉由重複相同的步驟,傳送者能產生一條越來越長的連線,但在性能上仍有限制。
當鏈上的連線都創建後,傳送者就可以透過其傳送數據並保持匿名性。當目的地回送數據時,鏈上的節點會透過同一條連線將數據回傳,且一樣對數據層層加密,但加密的順序與傳送者完全相反;原傳送者收到目的地回傳的數據時,將僅剩最內一層加密,此時對其解密就可拿到目的地回送的訊息。
弱點
計時分析
傳統網際網路不被認為具有匿名性的一個理由為網際網路服務供應商具有紀錄和追蹤各電腦間的連線能力;例如當有人訪問一個特定網站時,往來的信息內容如密碼等,雖然能透過像是HTTPS等加密連線方式保護讓其他人無法得知內容,但是連線本身卻仍會有紀錄,包含何時創建連線,多少數據量被傳送等。洋蔥路由雖然能創建並隱藏兩電腦之間的連線,使兩者之間並無一個可分辨的直接連線,但仍會有上述的連線紀錄問題。流量分析可藉由搜尋連線紀錄的連線時間和數據傳輸量來試圖判別潛在的一對傳送者與接收者;例如當有人傳送51KB的數據到一個未知的電腦,三秒後另一未知的電腦傳送51KB的數據給一個特定的網站,則可以推斷此人可能與該網站曾創建連線。此外還有一些原因可以讓流量分析更加有效,包含節點的損壞或離開網路,以及當鏈已經因為定期重建而改變,但有些鏈上節點卻仍在追蹤此前創建的會話等。
大蒜路由是洋蔥路由的一種變體,其結合了I2P網路並將多份訊息加密打包在一起,使其更難被攻擊者以流量分析的方式破解。
出口節點漏洞
雖然訊息在洋蔥路由網路中被層層加密,但是在出口節點時,該節點會把最後一層解密並將原始訊息傳給接收者;因此若出口節點遭到攻擊或是受控制,則原始的訊息將會被截取。瑞典研究員丹‧伊格史塔德(瑞典語:Dan Egersta)曾用此方式獲得了超過100封寄給外國大使館的電子郵件密碼。出口節點漏洞的原理與未加密無線網路很類似,後者為用戶將未加密的數據在無線網路上傳送時可能中途被其他人截走;這兩種問題都可以透過端對端加密連線如SSL、HTTPS等方式解決。
相關條目
•密碼學
•迪菲-赫爾曼密鑰交換
•Java Anon Proxy
•俄羅斯娃娃
•代理伺服器
•暗網