Tor

暗網和洋蔥路由

暗網和洋蔥路由

Posted by laochanlam on December 3, 2018

暗網和洋蔥路由

暗網一詞,素來給人感覺恐懼且神秘,尤其是在近年恐懼小說作家及媒體的大肆渲染下,使“暗網”一詞增添了不少邪惡的色彩元素。各種犯罪行為,都市傳說,人類內心最陰暗的部分,傳說都能夠暗網裡找得到,甚至有人說暗網中所提供的網站佔全部網站的 96%(笑)。

那麼,到底什麼才是暗網?

Imgur

0x00 暗網

暗網,是指相對於一般表層網絡之下,需要使用特殊的配置方式或協議才能進入的“深層”網絡。在暗網中因為能夠持續保持匿名地暢遊網絡,網頁不能被搜索引擎輕易找出等特性以及進入暗網必須要有一定的“門檻”,使得暗網成為犯罪分子以及技術愛好者經常出沒的地方。

0x01 歷史

那麼,暗網是怎麼而來的呢?

1990年,美國海軍研究試驗室(United States Naval Research Laboratory)國防部高級研究項目署(DARPA)進行了一個軍事研究計畫「洋蔥計畫」,目的是希望能夠建立出一個不能被反追蹤的點對點網絡,也就是洋蔥網絡,現時暗網的技術原型。

那麼,既然是出處軍方用途的研究項目,為什麼會出現在大眾的視野上,使得今天的你和我都有機會認識暗網呢?

Imgur

2004年,暗網始祖「洋蔥計畫」的主持人 Roger Dingledine 在一場演講中提及到,若要令暗網的使用者達到“真正匿名”的目標,最好的方法就是公開給公眾使用。此舉其實是為了保護政府的情報人員,不然當網頁管理員發現網頁的有一個來自洋蔥路由的特殊來訪者時就會驚覺:

「噢,FBI 又來逛我的網頁了。」

Imgur

0x02 Tor 洋蔥網絡

洋蔥網絡 (以下簡稱為 Tor) 這個名字也是十分有意思的,“洋蔥”一詞形象地描述了資料在其網絡中傳輸過程的封裝,而在接下來的這個章節中,我們將簡單介紹一下 Tor的技術實現,以及 Tor 是怎麼使你“隱藏”在大眾之中的。

Imgur

Tor 是一個由全球志願者共同搭建的網絡,這些志願者當中不乏技術愛好者,研究人員,以及在 Tor 中設下層層陷阱的政府情報人員。當我們開始透過 Tor 的瀏覽器連接到 Tor 網絡的時候,等於是連接到這個由各地志願者共同提供的一個巨大的網絡,並透過不停地轉換網絡中志願者的中繼節點,達到難以追蹤的效果。

0x03 技術原理

Imgur

連接 Tor 的第一步,我們會先連接到 Tor 網絡的服務器,隨後會得到一份所有志願節點的資訊列表,而透過這份列表,可以讓我們得知各節點的狀況。

Imgur

得知各節點的資訊後,Tor 透過隨機的方式與 Tor 網絡中的節點進行連接,並透過中繼點連接其他中繼點,最後再由出口的中繼點訪問你的目的網站。

Imgur

注意在整個過程中,每一個中繼點並不會得知整條路徑的訊息,他們只會收到從上一個節點所給的數據,而且這條路徑中每經過一段短時間就會隨機的轉換,以確保路徑不被有心人進行關聯。

說到這裡,也許你會有疑問,這怎麼能確保中繼節點不能透過接收到的數據分析出整條傳送路徑呢?

這就牽涉到我們偉大的密碼學了。

0x04 對稱加密與非對稱加密

接下來講述的東西就要開始進入密碼學的領域了,可是別擔心,這只是一些前置知識,我們會一切從簡!

我們先來了解一下對稱加密的原理:

Imgur

假如我今天要傳送一個文件給 Alice,可是 Eve 有機會在路上攔截,那麼最好的方法是我和 Alice 事先共享同一條密鑰,然後在每次的傳輸過程中我先對文件進行加密,當文件傳送到 Alice 手中的時候,Alice 再進行解密,完成整個流程,而這種加密方法,我們稱之為對稱加密方法。

而非對稱式加密又是什麼呢?

Imgur

非對稱加密,指的是相比起對稱加密而言,加密與解密的過程並非對稱的,即加密和解密可能會使用不同的金鑰。在上圖中,我們可以看到有兩把金鑰,分別為公鑰及私鑰,透過公鑰加密的文件,可以被另外一把完全不同的私鑰所解密,而被私鑰加密過的文件,也可以透過公鑰進行解密,這其中公鑰和私鑰的存在是成對的,我們稱這為一對公私鑰對。通常接收者的公鑰會公開到網絡上供大家使用,若我們需要向接收者傳送訊息,會先使用接收者公開的公鑰進行加密,而接收者收到加密的訊息後,再使用自己的私鑰進行解密。

既然前置知識介紹完,那接下來我們就來說說在 Tor 網絡中,是如何透過非對稱式加密,使每個中繼節點間能夠做到互相連接但又不知道整條 Tor 傳輸路徑吧!

0x05 Tor 中的密碼學

終於又回到了 Tor 網絡,正如我們之前也提及過,在 Tor 網絡中的每一段訊息,都像像洋蔥似一片片地被包裹著,洋蔥的核心部分當然就是我們最關鍵的訊息,而外層這些“洋蔥瓣”的功用,就是用來保護我們的要傳送的訊息。

Imgur

很複雜嗎?不一點也不複雜,我們直接來看例子吧!

Imgur

假設我們現在正在使用 Tor 網絡來訪問右上角的服務器,這裡用回我們上述的知識,還記得連接 Tor 網絡的第一步嗎?先拿到所有 Tor 中繼節點(即 ABCDEFGHI)的資訊清單以及他們的公鑰,然後隨機選擇幾個節點組成傳輸路徑。

Imgur

當我們選取好中繼節點(A,D,G)之後,接著就到非對稱加密派上用場的時候了!每個節點都擁有自己的公私鑰對,公鑰是在網絡上的公開的,而私鑰是只有節點自己才會知道。假設現在我想直接加密發送我的訊息給右上角的服務器,我只需取得他的公鑰(綠色的鑰匙)進行加密,當訊息到達服務器時,他再用自己的私鑰解密,即可完成整個加解密傳送流程,但,這樣路徑上的所有人不就都知道了你要傳送給右上方的服務器嗎?Tor 網絡當然不會讓這種事情發生,接下來讓我們看一下 Tor 的傳送流程。

Imgur

假設現在我們要向 1.1.1.1 發送搜索 Toyota 的訊息,我們需要先取得 A,D,G 以及 1.1.1.1 的公鑰,隨後依照路徑使用每一個中繼節點的公鑰逆序進行加密,最後組成像洋蔥一樣的層層加密結構。

Imgur

最後從自己那邊發出的訊息就變成了左下方的“洋蔥”一樣,當訊息經過第一個節點 A,A 節點會使用自己的密鑰進行解密(剝洋蔥),解密後得到的訊息是 “傳送到 D 節點”,隨後即把剝了一層後的洋蔥送到節點 D 後,D 節點再使用自己的密鑰進行解密,一直到最後一個節點 1.1.1.1 用自己的密鑰解開洋蔥的最後一層,才會得到真正訊息(洋蔥核心),這樣可以把每個節點收到的資訊隔離,大大加強 Tor 網絡中的私隱性以及安全性。

0x06 總結

本文介紹了暗網的基本相關知識,從歷史、技術方面出發扼要地探討了 Tor 網絡以及相關的密碼學知識(對稱加密與非對稱加密等),最後使用簡單的實用例子講述 Tor 的加解密流程。