天天看點

“洋蔥頭”路由安全性分析與改進 ---不讓你的IP被追蹤的資訊交流平台TOR系統

“洋蔥頭”路由安全性分析與改進

---不讓你的IP被追蹤的資訊交流平台TOR系統

 Jack zhai

一、問題提出

美國人營運的TOR系統,是一個隐匿源IP位址的資訊交流平台,可以提供了很強的反跟蹤能力。其原理是建立一個轉發伺服器矩陣,采用“洋蔥頭”式路由,服務節點按需逐層剝開,使得監管者無法将虛拟賬戶與現實網絡連接配接者關聯起來。這個方案在如下的條件具備情況下,成為一個不錯的共用的隐匿者資訊溝通平台。

    1、使用者數量足夠多:路徑是臨時設定的,監控者隻有在使用者釋出資訊的連接配接時間内可以反向跟蹤,一旦使用者下線,或調整路徑,跟蹤線索就馬上斷了。是以,當使用者數量足夠大時,無異于大海撈針;

    2、 服務矩陣是來自多方管理的伺服器群,每個服務節點嚴格遵守TOR安全法則:

隻撥開洋蔥的一層,隻發現下一跳的路由即可;

将資料包的源IP,改為自己的IP;

雙向連接配接時,僅記錄上下一跳的IP,為了連接配接斷開前的資料轉發使用。連接配接結束時,删除該連接配接的全部資訊,即不存儲連接配接日志;

發現來的資料包源IP不是上一跳的IP位址時,說明上一跳節點“違規”,此時的做法應該是,中斷連接配接,丢棄該資料包;

其實,美國人的TOR系統也沒有達到上訴條件的全部,安全法則的第三條就有待考證,第四條應該不具備。美國的TOR系統是由一家第三方非營利機構營運,很神秘,獨立性如何,需要考證。

最近有一些報道:NSA已經可以有能力破譯TOR系統,也确實有報道,破獲了一些利用TOR系統的案件。有文章分析說,TOR系統從誕生時起,就與美國政府與軍方有千絲萬縷的聯系…我對這一點還是有懷疑的。美國人做事是不含蓄的,要是有如此“技術基礎”,或者可以“直接操作”,應該不會對TOR上邊很多事情“沒辦法”,也不會在破獲那些案件時,那麼大費周折。

接下來,我從技術角度,分析一下基于洋蔥頭路由的TOR系統的一些安全隐患。

二、對洋蔥頭路由的反跟蹤能力分析

洋蔥頭路由的原理是多層加密,每個節點隻能解開一層,既不知道資訊的原始來源,也不知道資訊的最終目的地,更加不知道資訊的實際内容(洋蔥的最裡層)。洋蔥頭路由轉發如下圖:

<a href="http://s3.51cto.com/wyfs02/M01/46/82/wKiom1PyvCqgwcYjAABIDJN88CU026.jpg" target="_blank"></a>

每個服務節點在遵守TOR安全法則的情況下,TOR系統的反追蹤能力還應該注意兩個邊界條件:

    1、服務節點數量必須大于三:因為服務節點可以知道它的上一跳與下一條,節點數目為三時,就可以直接看到全部路徑了;

    2、 連接配接路徑必須動态生成:路徑不确定,包括起始節點與最後節點,路徑是一次性使用,它限定了追蹤時間隻能在使用者連接配接的這段時間内;

反過來,我們再分析一下,如何追蹤TOR系統。

<a href="http://s3.51cto.com/wyfs02/M01/46/84/wKioL1PyvX_yLFD3AABQUpaSNGI726.jpg" target="_blank"></a>

追蹤者的辦法是從兩頭開始的:

    1、  使用者登入點:這裡有使用者的注冊資訊,以及使用者實際連接配接的源IP位址,當然你不知道哪些話是他說的,與虛拟賬戶不對應;正向追蹤的方式是:利用使用者源IP,跟蹤到連接配接的第一個節點,查詢服務節點的連接配接連結清單,發現下一跳IP,再逐漸進行路徑前進;

    2、  代理服務點:這裡是洋蔥撥開的時候,知道了使用者釋出的實際内容,是否是監控者關注的,一目了然,但如何追蹤到釋出者呢?反向追蹤的方式是:利用虛拟賬戶的源IP,跟蹤到路徑的最後一個節點,查詢服務節點的連接配接連結清單,發現上一跳IP,再逐漸進行路徑回溯;

從上面的分析中,我們可以發現,追蹤的關鍵點有兩個:

    1、服務節點的連接配接連結清單是可查的:無論正向、還是反向路由追蹤都是依據服務節點中記錄了上、跳的IP。雖然TOR安全法則中要求清除該資訊,但作為轉發實作與效率的要求,暫存或存儲該資訊一段時間是可能的。隻要有這個清單,查詢它隻是權限的問題;要解決這個問題隐患,主要是靠代碼開發者的“自律”了。

    2、 路徑是可追蹤的:可追蹤是因為連接配接清單中路徑的出口是唯一的或是可确定的,追蹤者可以直接定位追蹤的下一個IP,有了IP就可以定位服務節點,當IP位址出現在使用者登入的清單中,或者是代理服務的IP時,就完成了路徑的追蹤;要解決這個問題,可以在路徑的定義上花些功夫。

三、對洋蔥頭路由反跟蹤的一些改進設想

對于系統的建設者來說,代碼的選擇是靜态的,標明後,就不會輕易改變的;營運方不提供服務節點内的資料,保護使用者隐私的能力也隻是相對的。作為一個TOR系統的使用者來說,能夠自己掌控的,就隻有在路徑上想辦法了。

最容易想到的,就是增加路徑的長度,路徑越長,追蹤的難度越大。當然,路徑長,延遲就大幅度增大,更為要命的是,若服務節點是“臨時”服務的,你連接配接時,有一個節點動态退出,路徑就斷了,釋出就需要重來,連接配接的時間可能是指數級增長。若是雙向實時通信,路徑過長的災難就更大了。是以,路徑的長度最好在10個節點之内。

本文提供的技術改進有兩個設想:

    1、循環重複路徑:

    路徑中有循環重複的路徑,就會在連接配接清單中有重複的出口。追蹤者在同來源,不同出口的路徑中,不知道該選擇哪一個。從洋蔥頭路由的設計來看,循環重複路徑不會影響正常轉發,因為他們處在不同的洋蔥層上,解密出的下一跳是唯一的。

<a href="http://s3.51cto.com/wyfs02/M00/46/84/wKioL1PyvbuC6-4vAABREV6z43w070.jpg" target="_blank"></a>

節點1:上一跳有兩個,下一跳是一個,對反向追蹤時,選擇不對就會循環往複;

節點2:上一跳是一個,下一跳有兩個,在正向追蹤時,選擇不對也會循環往複。

    2、黑洞路徑:

    誘惑追蹤者走入“死胡同”,就是所謂的黑洞路徑。其具體的實作是這樣的:連接配接時,發送兩種資料包,一個是黑洞路徑引導,資料是随機的;一個是正常路徑,資料是要釋出的。

<a href="http://s3.51cto.com/wyfs02/M02/46/83/wKiom1PyvMmyjKTaAABO6V9Cgyg837.jpg" target="_blank"></a>

    圖中的黑洞路徑在轉向節點處,兩種資料路包開始分離,正向追蹤者無法區分那條路徑是正确的。當黑洞路徑采用不隻一條時,追蹤者要麼碰運氣地選擇一條,要麼采用回溯周遊的算法了。

    無論是循環重複路徑,還是黑洞路徑,目的都是增加追蹤者的複雜度,延長他的跟蹤時間。實際使用中,我們可以把兩種技術一起使用,既有循環,又有黑洞,建立一個路徑的“迷宮”,讓追蹤者在裡面“兜圈子”。

四、小結

TOR系統是隐匿使用者源IP,對抗追蹤者的探索之一,技術上的可行性隻是安全保障的一部分,這裡也隻是從洋蔥頭路由轉發原理的角度進行的分析與改進;管理上的非集中式管理也是必須的,最好是大量利用“民間”愛好者的服務站作為動态服務節點,是躲避追蹤的最好方法。

隐匿源IP不僅是黑市交易,一些敏感資料的查詢者也常常使用。很多公共的查詢平台目前都在采用大資料統計,對經常對敏感資訊、特殊技術搜尋的源IP進行統計追蹤,一旦成為跟蹤對象,你查詢的資訊結果就有待評估了(可能被有意屏蔽或篡改)。

另外,随着人們對安全意識到加強,很多網站也采用通路者大資料統計分析,對一些安全部門的監管IP、檢索網站IP、第三方評價的爬蟲IP等,進行特殊處理,導緻資訊的失衡。

是以,建立中國自己的TOR平台,提供公衆服務,從長期來看是必須的。

本文轉自 zhaisj 51CTO部落格,原文連結:http://blog.51cto.com/zhaisj/1541883,如需轉載請自行聯系原作者

繼續閱讀