劉 昊 王勇軍
(國防科技大學(xué)計算機學(xué)院 湖南 長沙 410073)
許多網(wǎng)絡(luò)應(yīng)用,例如網(wǎng)絡(luò)選舉投票、軍事部門通信等,在使用過程中對于通信內(nèi)容的安全性要求非常高,同時,對通信用戶雙方或者是某一方的身份保密性要求非常高。傳統(tǒng)通信網(wǎng)絡(luò)在這方面不能滿足要求。因此,匿名通信技術(shù)應(yīng)運而生。匿名通信[1]利用加密、轉(zhuǎn)發(fā)、偽裝、分片等手段來對通信雙方身份信息、通信關(guān)系、位置信息、通信內(nèi)容等進行隱藏,從而實現(xiàn)對匿名網(wǎng)絡(luò)用戶的隱私保護。
本文以當(dāng)前應(yīng)用最為廣泛的匿名通信網(wǎng)絡(luò)——第二代洋蔥路由系統(tǒng)TOR現(xiàn)有的架構(gòu)為基礎(chǔ),提出一種改進的匿名通信網(wǎng)絡(luò)架構(gòu)方案,這種新的架構(gòu)能夠解決一些當(dāng)前TOR網(wǎng)絡(luò)架構(gòu)面臨的安全問題,通過網(wǎng)絡(luò)結(jié)構(gòu)上的調(diào)整對該匿名網(wǎng)絡(luò)抵御攻擊的能力進行提升。
TOR(The Onion Router)是第2代洋蔥路由算法的一種應(yīng)用實現(xiàn)[1-2],同時引入了P2P技術(shù)。用戶通過它可以在因特網(wǎng)上進行匿名通信。
TOR的組成包括洋蔥代理(Onion Proxy,OP)、洋蔥路由器(Onion Router,OR)、目錄服務(wù)器(Directory Server,DS)。OP是TOR網(wǎng)絡(luò)的用戶終端,普通主機一旦安裝了TOR客戶端,即可加入TOR網(wǎng)絡(luò),成為OP,隨時在TOR中發(fā)起匿名通信或接收匿名消息;OR是整個TOR網(wǎng)絡(luò)的路由器集合,任何來自O(shè)P的消息都通過它們中的一部分節(jié)點構(gòu)成的TOR鏈路進行轉(zhuǎn)發(fā),從而達到通信消息層層封裝,通過轉(zhuǎn)發(fā)隱藏通信雙方等目的;DS則是整個TOR匿名網(wǎng)絡(luò)架構(gòu)的核心,所有的設(shè)備加入網(wǎng)絡(luò)都需要向目錄服務(wù)器注冊,并定期向它上報狀態(tài)。它儲存著TOR網(wǎng)絡(luò)的狀態(tài)信息、OR列表,以及網(wǎng)絡(luò)中設(shè)備的公鑰信息等相關(guān)內(nèi)容。同時,為了兼顧信息安全與傳輸時延,TOR系統(tǒng)在構(gòu)建鏈路的過程中使用非對稱密鑰,在具體的通信過程中使用在建鏈階段協(xié)商好的對稱密鑰對通信內(nèi)容進行加解密。
TOR的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 Tor系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)
一臺已經(jīng)在DS注冊,加入TOR匿名網(wǎng)絡(luò)的OP向目標(biāo)接收方EXIT發(fā)起匿名通信,主要分為以下四個步驟:
(1) 獲取路由列表。當(dāng)OP決定向接收方EXIT建立匿名通信鏈路,OP首先向目錄服務(wù)器DS發(fā)起請求,獲取當(dāng)前TOR網(wǎng)絡(luò)中可用的OR列表、OR的狀態(tài)信息(包括帶寬、CPU使用率等)。同時,下載OR的公鑰信息等。
(2) 建立通信鏈路。OP選擇路由列表中的幾個OR(通常為3個,這里分別記作OR1、OR2、OR3)構(gòu)成它想要的一條匿名通信鏈路,OP首先向OR1發(fā)送一個類別為CREATE的協(xié)議報文,并將其與OR1之間的對稱的會話密鑰sk1用OR1的公鑰進行加密放在報文載荷中,OR1收到后,知曉O(shè)P試圖建立一個新通信鏈路,并用它的私鑰對消息進行解密,從而獲得它與OP之間的會話密鑰sk1。
同樣,當(dāng)OP試圖對鏈路進行拓展,它需要通過OR1來進行。OP繼續(xù)向OR1發(fā)送一個內(nèi)容為EXTEND的協(xié)議報文,報文載荷中包含OR2的名字以及OP與OR2間的會話密鑰sk2。由此OR1知曉需要將鏈路拓展至OR2。因此OR1使用OR2的公鑰,對sk2進行加密,發(fā)送至OR2。OR2收到后,用自己的私鑰解密消息,獲得它與OP間的會話對稱密鑰sk2。最后,OP使用上述方法,依次將鏈路拓展至OR3、EXIT,在TOR網(wǎng)絡(luò)中建立起一條完整的匿名通信鏈路。
(3) 發(fā)送匿名消息。當(dāng)鏈路建立完畢,OP將發(fā)送給EXIT的內(nèi)容明文msg用在建鏈過程中協(xié)商的對稱密鑰sk1、sk2、sk3層層加密,形成密文MSG,其中MSG=sk1(sk2(sk3(msg)))。消息MSG按照鏈路依次經(jīng)過OR1、OR2、OR3,被它們使用自身與OP協(xié)商好的密鑰sk1、sk2、sk3依次解密,依次生成sk2(sk3(msg))、sk3(msg)、msg,OR3將解密后的消息,明文的msg轉(zhuǎn)發(fā)至EXIT。
(4) 接收方返回消息。EXIT向OP返回消息時,與發(fā)送過程中層層解密不同的是,由于EXIT并沒有與OR們協(xié)商會話密鑰,它只能將明文消息msg′直接發(fā)送出去,而消息返回過程中沿著原路徑的反方向OR3、OR2、OR1傳輸,由OR們對它進行層層加密,依次生成sk3(msg′)、sk2(sk3(msg′))、sk1(sk2(sk3(msg′)))。最后由OR1將MSG′=sk1(sk2(sk3(msg′)))傳遞回OP。由于OP存有密鑰sk1、sk2、sk3,在OP處可直接將消息一次性解密,還原成明文msg′。由此,一次消息的往返通信結(jié)束。
為了便于理解與描述,上述過程中的對稱會話密鑰直接用在建鏈協(xié)議消息中被加密傳遞的sk1、sk2等表示。事實上,TOR網(wǎng)絡(luò)中使用DH密鑰交換協(xié)議來生成對稱的會話密鑰。即會話密鑰本身不會在建鏈過程中被傳輸。協(xié)商雙方僅在鏈路中傳輸一部分協(xié)議參數(shù),真正的會話密鑰sk1、sk2等由協(xié)議雙方根據(jù)參數(shù)自行計算獲得。這樣的做法大大提高了加密會話的安全性。
同樣,實際傳輸中的報文結(jié)構(gòu)相較MSG而言,也復(fù)雜得多。此處為方便對于消息轉(zhuǎn)發(fā)時加解密的理解,使用簡單的結(jié)構(gòu)MSG=sk1(sk2(sk3(msg)))進行表示。
1.2.1出口節(jié)點無保護
由于TOR系統(tǒng)采用鏈路中OR節(jié)點層層解密的形式,因此當(dāng)來自O(shè)P的消息經(jīng)過最后一個OR后,該OR將解密它與OP事先協(xié)商好的最內(nèi)部的一層對稱密鑰加密。經(jīng)過此步驟后,從這個OR里發(fā)出至EXIT節(jié)點的報文將是無TOR匿名系統(tǒng)封裝保護的明文;當(dāng)接收方開始向發(fā)送方返還消息,按照1.1節(jié)(4)中的步驟,將采取歷經(jīng)路由層層加密的形式。同樣地,在消息從EXIT發(fā)送至逆序第一個OR(即順序最后一個OR)的過程中,它也是無保護的明文。由于很多情況下,客戶端訪問的都是公共服務(wù),因此只需要隱藏發(fā)送方身份[3]。但匿名通信一旦用于軍事等特殊場合,對通信雙方的身份以及通信內(nèi)容都有較高的保密要求,當(dāng)前的TOR網(wǎng)絡(luò)將無法滿足。
1.2.2單點失效問題
現(xiàn)有的TOR網(wǎng)絡(luò)架構(gòu)是以目錄服務(wù)器DS提供的注冊、管理、存儲服務(wù)為基礎(chǔ)的,因此目錄服務(wù)器成為整個TOR匿名網(wǎng)絡(luò)系統(tǒng)的中心。這樣做雖然使用與管理起來方便,但由于目錄服務(wù)器的地址是公開的,因此也給TOR系統(tǒng)帶來了單點失效問題。也就是說,一旦目錄服務(wù)器遭受黑客攻擊變得癱瘓,那么整個系統(tǒng)將無法正常運行。事實上,只需要一定規(guī)模數(shù)量的主機同時進行D-DOS攻擊就能達到這個效果。
1.2.3低成本流量攻擊[4]
由于TOR網(wǎng)絡(luò)各單元的信息都存儲在目錄服務(wù)器DS上,因此一旦惡意節(jié)點以志愿者節(jié)點身份加入網(wǎng)絡(luò),便可以訪問目錄服務(wù)器,下載TOR匿名網(wǎng)絡(luò)內(nèi)所有OR的信息。同時,該惡意節(jié)點可以發(fā)揮網(wǎng)絡(luò)探針作用,與獲取到的OR列表中的各個節(jié)點建立連接,并通過這個連接發(fā)送大量特殊的探測數(shù)據(jù)包,對探測目標(biāo)的網(wǎng)絡(luò)狀況、負載等情況進行收集與分析。同時,探針節(jié)點通過被探測對象的狀態(tài)變化,來推測其傳輸模式的變化,從而進一步分析或證實當(dāng)前TOR匿名網(wǎng)絡(luò)中存在的匿名鏈路信息[5]。
1.2.4低資源路由攻擊[6]
為了提升被OP選中成為匿名鏈路成分的概率,加入TOR網(wǎng)絡(luò)的惡意節(jié)點常常在向DS上報狀態(tài)的時候?qū)λ膸?、在線時長、CPU占用率等表明其作為路由節(jié)點優(yōu)劣性的信息進行謊報。若OP通過擇優(yōu)選用策略同時選中了兩個惡意節(jié)點分別作為某條鏈路的入口和出口節(jié)點,那么安置該節(jié)點的攻擊者可以同時獲得使用該鏈路的發(fā)送者和接收者的身份。加入TOR網(wǎng)絡(luò)的惡意節(jié)點只需達到一定數(shù)量,便能以極大概率成功實施低資源路由攻擊,使TOR網(wǎng)絡(luò)的匿名性受到影響[5]。
當(dāng)前基于TOR的匿名通信網(wǎng)絡(luò)改進方案已經(jīng)積累了一定的成果,它們通常是通過增加SDN[6-8]網(wǎng)絡(luò)模式、置換復(fù)雜的自定義洋蔥層協(xié)議或安全協(xié)議[3,9-12],從數(shù)據(jù)層面提升系統(tǒng)的安全性能;或者是通過在TOR網(wǎng)絡(luò)結(jié)構(gòu)上糅合一個外部網(wǎng)絡(luò)[13-14]等來提升通信系統(tǒng)的匿名性。我們在學(xué)習(xí)現(xiàn)有方案的基礎(chǔ)上,提出一個更加簡潔、具有可觀的安全性能,并立足于網(wǎng)絡(luò)結(jié)構(gòu)層面的新型匿名網(wǎng)絡(luò)方案。
為了抵御上述針對TOR網(wǎng)絡(luò)的攻擊行為,本文提出一種新型的匿名網(wǎng)絡(luò)架構(gòu)。
這種新型架構(gòu)采用了雙層冗余目錄服務(wù)器的形式,如圖2所示。圖中的公鑰服務(wù)器以及分組目錄服務(wù)器可以不僅僅是3臺,每個分組內(nèi)的路由節(jié)點也并不一定是9臺,圖中的數(shù)量僅作為示意。
圖2 新型匿名網(wǎng)絡(luò)結(jié)構(gòu)
圖2中的E1、E2、E3是我們在TOR系統(tǒng)原本的架構(gòu)上增加的一個公鑰目錄服務(wù)器組。它們互為備份,共同提供公鑰服務(wù)。按照1.2.1節(jié)中的闡述,在特定的場合,消息的發(fā)送方和接收方(或網(wǎng)絡(luò)服務(wù)的提供方)有時需要進行能夠保護雙方身份及會話內(nèi)容的高保密要求的通信。因此,在消息發(fā)送方和接收方之間,我們增加了一層非對稱加密處理。發(fā)送方在發(fā)送消息之前,先使用接收方的公鑰將消息加密,再將加密過的消息,通過洋蔥鏈路傳遞至接收方。這樣,即使是經(jīng)過了鏈路所有OR層層轉(zhuǎn)發(fā)解密后的消息,仍然是用接收方的公鑰加密保護的。除了接收方本身的任何一方獲取到該消息,都無法看到其真正的內(nèi)容。
因此一旦客戶端決定加入新型匿名網(wǎng)絡(luò)進行高保密通信,則可以事先將自己的會話公鑰發(fā)布在網(wǎng)絡(luò)內(nèi)任意一臺公鑰服務(wù)器上。該公鑰服務(wù)器會將公鑰信息同步至公鑰服務(wù)器組的其他服務(wù)器上,保證公鑰服務(wù)器之間信息同步,互為冗余,互為備份,以提升系統(tǒng)公鑰目錄服務(wù)的魯棒性。當(dāng)發(fā)送方試圖給新型匿名網(wǎng)絡(luò)內(nèi)的主機發(fā)送消息,則可以向公鑰目錄服務(wù)器組請求下發(fā)該接收方主機的公鑰。
我們先對一些元素進行數(shù)學(xué)符號的定義:
(1)E(X,Y):用公鑰Y對信息X進行非對稱加密。
(2)D(X,Y):用私鑰Y對信息X進行解密。
(3)Gx:主機x的加密公鑰。
(4)Px:主機x的解密私鑰。
(5)DDSi:分組目錄服務(wù)器DSi(i≤n)維護的其所下轄的洋蔥路由列表。
(6)ORDSi:分組i(i≤n)中的一臺洋蔥路由器。
客戶端在新型匿名網(wǎng)絡(luò)發(fā)起一次通信的具體流程如下。
(1) 主機A(OP)試圖與主機B(EXIT)進行匿名通信,首先向公鑰服務(wù)器組請求獲取主機B的公鑰。公鑰服務(wù)器組在本地檢索B的公鑰,如果B事先已經(jīng)將其公鑰發(fā)布在公鑰服務(wù)器上,那么公鑰服務(wù)器組將B的公鑰GB返還給A(若公鑰服務(wù)器上并沒有記錄主機B事先發(fā)布的公鑰,那么本次通信將省略這步非對稱加密處理操作)。
(2) 主機A分別向所有分組目錄服務(wù)器DS1、DS2、DS3發(fā)起請求,請求每個分組目錄服務(wù)器下轄的洋蔥路由列表、洋蔥層公鑰等信息。并分別在每個分組目錄服務(wù)器的路由列表中選擇一臺質(zhì)優(yōu)洋蔥路由主機作為本次通信鏈路的組成節(jié)點,依次記作ORDS1、ORDS2、ORDS3,其中ORDS1∈DDS1,ORDS2∈DDS2,ORDS3∈DDS3。
(3) 主機A以隨機的順序排列ORDS1、ORDS2、ORDS3,并依照排列后的順序按傳統(tǒng)TOR的算法進行建鏈與鏈路拓展。因此,本次通信最終的洋蔥鏈路可能是A→ORDS3→ORDS1→ORDS2→B。
(4) 主機A將消息msg′=E(msg,GB),通過建立好的洋蔥鏈路,發(fā)送至主機B。主機B接收到從洋蔥路由層層解密后的信息msg′,使用自己本地的私鑰PB還原出msg=D(msg′,PB)。
對照TOR系統(tǒng)當(dāng)前所面臨的各種攻擊威脅,我們對其進行性能分析。
對于出口節(jié)點無保護問題,我們在消息發(fā)送方和接收方之間增加了一層非對稱加密處理后,攻擊者已不能從最后一個OR和EXIT相連的鏈路上獲取明文通信信息。攻擊者無法看到消息內(nèi)容,且無法據(jù)此判斷出通信雙方身份,本問題得到解決。
對于單點失效問題,我們在新型匿名通信網(wǎng)絡(luò)架構(gòu)中引入了復(fù)數(shù)臺分組目錄服務(wù)器,在一般的情況下,它們共同承擔(dān)起使系統(tǒng)正常運作的責(zé)任;而在一臺或多臺分組目錄服務(wù)器遭受攻擊的情況下,剩下仍然存活的分組目錄服務(wù)器可以調(diào)整運行方式,繼續(xù)維持系統(tǒng)的正常運行。也就是說,在n臺分組目錄服務(wù)器中,只要還有至少1臺仍能夠工作,那么該新型匿名網(wǎng)絡(luò)就可以繼續(xù)運行下去。假設(shè)攻擊者有足夠的能力來進行D-DOS攻擊,且致使一個目錄服務(wù)器癱瘓的攻擊代價為P。那么要使一個傳統(tǒng)的TOR網(wǎng)絡(luò)失效,只需癱瘓它的唯一目錄服務(wù)器,因此攻擊代價為P;而對于新型匿名網(wǎng)絡(luò)而言,攻擊者至少需要致癱n-1臺分組服務(wù)器才能夠使系統(tǒng)無法工作,因此攻擊者使系統(tǒng)崩潰的攻擊代價最少應(yīng)為(n-1)P,顯然,新型匿名系統(tǒng)分組越多時,分組服務(wù)器數(shù)量n越大,攻擊者的攻擊代價也就越大。
我們編寫一個C++程序運行在實驗平臺上,用于模擬x臺攻擊主機在n個分組服務(wù)器上進行隨機注冊的過程。實驗循環(huán)1×107次。對于每個x,我們分別統(tǒng)計這個數(shù)量的主機在往n臺分組服務(wù)器上注冊的1×107次中,有多少次成功地分別在每個服務(wù)器上都注冊了(即沒有空閑的分組服務(wù)器)。
n=3時,我們得出實驗結(jié)果如表1所示。
表1 n=3時x取不同值的命中次數(shù)
我們把命中次數(shù)與總實驗次數(shù)的比值認為是攻擊主機數(shù)為x時在n個分組目錄服務(wù)器下的命中概率,由表1我們能夠看出,當(dāng)x≥9時,攻擊主機才能夠以超過0.9的概率分別注冊到每個分組目錄服務(wù)器上,才能獲取全部洋蔥路由的信息;而對于傳統(tǒng)的TOR,僅僅需要1臺攻擊主機就能夠達成這個目的。且在實際情況中,TOR的中轉(zhuǎn)數(shù)往往大于或等于3[8]。因此我們在n取大于等于3的幾個數(shù)值下(n=3、n=4、n=5、n=6)重復(fù)上述的模擬實驗,具體統(tǒng)計結(jié)果見圖3、圖4。
圖3 不同n值時的命中概率(達到0.9時停止)
圖4 不同n值時突破命中概率閾值的x值
圖3是模擬實驗中分組目錄服務(wù)器數(shù)量n在不同取值下畫出的命中概率折線圖,其x軸為攻擊主機數(shù),y軸為107次模擬實驗中成功命中的概率;圖4則是以分組目錄服務(wù)器的數(shù)量n為橫軸,命中概率首次達到0.5與0.9時攻擊主機數(shù)x的取值為縱軸作出的折線圖。根據(jù)圖3、圖4可以看出,隨著n的一個個增加,投入攻擊主機數(shù)也需要相應(yīng)增加才能夠保證命中概率。對比傳統(tǒng)的TOR對于低成本流量攻擊的敏感,新型匿名網(wǎng)絡(luò)極大地增加了攻擊方的攻擊成本。尤其是當(dāng)命中概率需要達到0.9以上時,攻擊成本增長的速度更加迅速。
繼續(xù)編寫一個C++程序運行在實驗平臺上,用于模擬x臺攻擊主機在n個分組服務(wù)器上進行隨機注冊的過程。我們假定攻擊主機的狀態(tài)是所有注冊節(jié)點中最優(yōu)秀的,系統(tǒng)通過擇優(yōu)選用的策略首先將注冊成功的攻擊主機選擇作為中轉(zhuǎn)節(jié)點。實驗循環(huán)1×107次,對于每一次實驗,我們隨機選取n個分組中的兩個,注冊在這兩個分組上的攻擊主機將被系統(tǒng)分別選定為入口節(jié)點和出口節(jié)點(匿名鏈路中第一個OR和最后一個OR)。對于每個x,我們分別統(tǒng)計這個數(shù)量的主機在往n臺分組服務(wù)器上注冊的1×107次中,有多少次成功地在這兩個分組上都注冊了(即成功以攻擊主機的身份擔(dān)任了入口和出口節(jié)點)。
在n、x分別取不同值的時候,我們統(tǒng)計出的實驗結(jié)果如表2所示,其中P為實驗中的成功次數(shù)與107的比值。
表2 新型匿名網(wǎng)絡(luò)在不同n值、x值下,P的取值
表3 傳統(tǒng)TOR網(wǎng)絡(luò)在不同n值、x值下,P的取值
對比表2、表3,x≥3時,攻擊成功的概率有明顯下降。我們繼續(xù)實驗,測算出在不同的n取值下,將使攻擊成功率P分別達到50%和90%的x,作為概率閾值k,與傳統(tǒng)的TOR網(wǎng)絡(luò)的k值進行比較,比較結(jié)果如表4、表5所示。
表4 對于不同n值,攻擊成功率P達到50%的閾值k
表5 對于不同n值,攻擊成功率P達到90%的閾值k
我們將閾值差在圖5、圖6中繼續(xù)用折線圖的方式直觀表示出來。
圖5 對于不同n值,攻擊成功率P達到50%的 閾值k的折線圖
圖6 對于不同n值,攻擊成功率P達到90%的 閾值k的折線圖
從表4、圖5可以看出,新型匿名網(wǎng)絡(luò)在50%的概率閾值k上比傳統(tǒng)TOR網(wǎng)絡(luò)有少許增長,在n較小時,k的相差也較小。隨著分組數(shù)n的增加,k的差值緩慢增大;而從表5、圖6中可以看出,對于90%的概率閾值,新型匿名網(wǎng)絡(luò)相比傳統(tǒng)TOR從n=3開始就保持2.67倍以上,并隨n的增加在持續(xù)增長。也就是說要以90%的成功率攻擊新型匿名網(wǎng)絡(luò),則至少需要付出2.67倍以上的代價來實施攻擊,這對于提升系統(tǒng)防御能力來說,是切實有效的。
本文提出一種新型匿名通信網(wǎng)絡(luò)架構(gòu)的方案,該方案通過增加目錄服務(wù)器并修改中繼路由節(jié)點的組織形式的方式,基本消除了嚴重威脅傳統(tǒng)TOR匿名網(wǎng)絡(luò)通信安全的單點失效問題。同時,通過增加公鑰服務(wù)器層,解決了通信系統(tǒng)出口無保護問題。并一定程度從機制原理上緩解了低成本流量攻擊與低資源路由攻擊,使低成本流量攻擊不再“低成本”,并將低資源路由攻擊的攻擊成本提升至2.67倍以上。在不增加協(xié)議和系統(tǒng)機制復(fù)雜性的前提下,提高了目錄服務(wù)器與通信系統(tǒng)的安全性,為用戶提供更穩(wěn)定、更安全、更隱秘的通信環(huán)境。