洋蔥服務是只能夠透過洋蔥路由來存取的網路服務。 營運洋蔥服務讓您的用戶享有 HTTPS 所有安全再加上 Tor 瀏覽器的隱私好處。

為何需要洋蔥服務?

洋蔥服務可以為使用者提供多種安全性與私密性的保護機制。

所在位置隱藏

洋蔥服務的 IP 地址受到保護。 洋蔥服務是 TCP/IP 上層的覆蓋網路,因此某程度而言 IP 地址對洋蔥服務沒什麼意義: 洋蔥協議甚至沒用到 IP。

端對端驗證

當使用者造訪某個洋蔥服務時,可以確定他們所看到的內容全都是從該特定的洋蔥站台所取得的。 在這裡假冒為造是不可能做到的。 通常當您連上普通的網站時,是無法確定沒有中間人將您的連線流量重導至其他位址的(例如DNS攻擊)。

端對端加密

洋蔥服務的所有連線,在客戶端與洋蔥主機端間都是全程加密的。 就好像是強化版的SSL/HTTPS連線傳輸通道。

NAT穿透

您所使用的網路有被過濾且無法在防火牆開通特定連接埠號嗎? 若您是身處於大學校園、辦公室、機場等類似場所的話,這種情形很有可能發生。 洋蔥服務並不需要開通特定連接埠號,因為它本身只會發起對外連線,因此可以穿透NAT網路閘道。

洋蔥服務通訊協定:概覽

所以問題是在於 需要什麼樣的通訊協定才能滿足這樣的特性? 通常人們只是連接上某個IP位址就可以建立連線,但是若本身連IP位址都沒有的話,是要怎麼建立連線呢?

例如洋蔥服務的地址類似這樣: vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd.onion

它看起來怪異且隨機,因為這是洋蔥服務的 公鑰身份識別。 這是我們能夠達成上述安全保護機制的原因之一。

洋蔥服務協議使用 Tor 網路,讓客戶端可以向服務介紹自己,然後通過 Tor 網路與服務建立會合點。 底下是整個流程的詳細分解說明:

第 1幕: 洋蔥服務設定介紹點

讓我們想像您的地方新聞報決定要設置SecureDrop)洋蔥服務以接收匿名消息。 協議的第一步,洋蔥服務將聯繫一群 Tor 中繼,要求它們作為其 引入點 來建立長期迴路。 這幾條迴路都是匿名化的迴路,因此引見節點不會知道該主機的實際位址。

Onion 服務僅透過三個介紹點連線,並經由三跳 Tor 電路存取,藉此在 Tor 網路後隱藏並保護自身。

洋蔥服務:第1步

第 2幕: 洋蔥服務發佈它的描述符

此時引見節點已經設立完成,接下來就需要提供客戶端程式可以找到這些節點的方式。

為此,洋蔥服務組成一個 洋蔥服務描述符 ,其中包含其介紹點列表(和“驗證密鑰”),並使用洋蔥服務的 身份私鑰 對該描述符進行簽名。 身份識別私鑰 在此作為 洋蔥服務地址公鑰裏頭的私密部份。

洋蔥服務上傳簽名的描述符到 Tor 網路中的 分佈式進雜湊表,好讓客戶也可取得它。 它在上傳時也是透過匿名化的洋蔥路由迴路來進行,因此它的真實位址並不會被揭露。

洋蔥服務:第2步

第 3幕: 客戶訪問洋蔥服務

比如說您掌握到一份企業逃漏稅的機密資料,想要透過SecureDrop暗中送交給當地的報社進行爆料。 而您透過公開網站搜尋或者朋友介紹,找到了這家報社的SecureDrop的洋蔥位址。

洋蔥服務:第3步

第 4幕: 客戶向洋蔥服務介紹自己

前述步驟是為了設定洋蔥服務,以便讓訪客來訪問。 現在我們就來說明,當某個客戶端程式要造訪該洋蔥服務時的情境。

此時客戶端程式已經取得該SecureDrop的洋蔥位址,並要透過洋蔥路由瀏覽器與它連上線。 現在接下來需要做的是客戶端到步驟 2 中的 分佈式雜湊表 並請求 SecureDrop 洋蔥服務的簽名描述符。

洋蔥服務:第4步

第5階段:客戶端程式驗證洋蔥位址的數位簽章

當客戶端取得該簽署過的描述子後,會利用包含在該洋蔥位址裡的公開金鑰來驗證其數位簽章。 它提供 端對端驗證 安全性能,所以可確保此描述符是由洋蔥服務所產生而非它人建立。

在此描述符中,有一個介紹點可讓客戶自我介紹給 SecureDrop 的洋蔥服務。

洋蔥服務:第5步

第6階段:客戶端程式設立一個會見節點

在開始進行引見程序之前,客戶端程式(就是指您的電腦)會先自行挑選一個洋蔥路由中繼節點,並與它建立一條迴路。 客戶端程式會請求該節點扮演引見節點的角色,並且同時提交一份「一次性機密碼」給它,以便在後續的會見程序可以使用。

洋蔥服務:第6步

第 7幕: 洋蔥服務與客戶的會合

介紹點會遽送您的詳細資料(祕密字串與會合地址)到洋蔥服務,而洋蔥服務會進行多重驗證來決定是否可信任您。

洋蔥服務:第7步

第8階段:會見節點驗證客戶端的機密碼

洋蔥服務(透由匿名迴路)連接到會合點並對它發送一次性密語。 此時會見節點會進行最後階段驗證,也就是去比對您與該服務所提交的機密碼字串是否完全相符(來自服務的機密碼當然也是您送交給服務主機的,但是是透過其他迴路轉送的)。

然後會見節點所扮演的角色,就是將客戶端程式與服務主機間的資料(已被端對端加密)來回轉送。

洋蔥服務:第8步

第 9幕: 洋蔥服務與客戶的會合

通常客戶端和洋蔥服務之間的完整連接由 6 個中繼組成:3 個由客戶端挑選,其中第 3 個中繼為會合點,另外 3 個由洋蔥服務挑選。 這樣的機制可以讓整個連線過程保持 位址隱藏 狀態。

最後使用會合點, 它是客戶與新聞媒體的 SecureDrop 洋蔥服務之間所構成的 Tor 迴路。

洋蔥服務:第9步

更進一步的資源

這只是 Tor 洋蔥服務協定的高階概論。 若您想要更深入的了解的話,可以參閱底下這些資源: