呂兆輝,張紅梅,郭遠洋
(桂林電子科技大學 信息與通信學院,桂林 541004)
無線傳感器網(wǎng)絡(luò)作為一種新型的無線網(wǎng)絡(luò)形式,有著很好的發(fā)展前景[1]。與此同時,由于無線傳感器網(wǎng)絡(luò)自組織、無控制中心和拓撲頻繁變化等特點,其安全性也受到了越來越多的關(guān)注。無線傳感器網(wǎng)絡(luò)中的蟲洞攻擊就是一種主要針對網(wǎng)絡(luò)路由協(xié)議的惡意攻擊,該攻擊通過擾亂網(wǎng)絡(luò)路由層數(shù)據(jù)分組的傳輸,達到攻擊整個網(wǎng)絡(luò)的目的?,F(xiàn)有的針對蟲洞攻擊檢測和防御的相關(guān)研究中,有的方案引入GPS模塊或者有向天線等輔助硬件,還有一些方案依賴于網(wǎng)絡(luò)節(jié)點精確的地理位置信息或者節(jié)點之間的時鐘同步來對攻擊節(jié)點進行定位。這些方案對能量資源和處理能力都有限的網(wǎng)絡(luò)節(jié)點來說,是很大的挑戰(zhàn)。本文基于無線傳感器網(wǎng)絡(luò)反應(yīng)式路由協(xié)議——AODV路由協(xié)議[2],不需引入輔助硬件,也不要求節(jié)點間時鐘同步,僅通過對路由協(xié)議進行優(yōu)化,來實現(xiàn)對蟲洞攻擊的防御。
蟲洞攻擊一般由至少兩個相距較遠的惡意節(jié)點合謀發(fā)起[3],合謀節(jié)點之間建立一條比正常節(jié)點間高效的私有信道。當蟲洞攻擊發(fā)起時,合謀節(jié)點之一在網(wǎng)絡(luò)的一端獲取網(wǎng)絡(luò)中的數(shù)據(jù)分組,通過私有信道將數(shù)據(jù)分組傳遞至另一個合謀節(jié)點,然后該合謀節(jié)點再把數(shù)據(jù)分組重放回網(wǎng)絡(luò)中。數(shù)據(jù)分組在私有信道的傳遞過程中被惡意節(jié)點實施選擇性丟棄或者數(shù)據(jù)篡改等惡意行為,實現(xiàn)對網(wǎng)絡(luò)的攻擊。蟲洞攻擊模型如圖1所示。
圖1 蟲洞攻擊模型
N1和N2是網(wǎng)絡(luò)中相距較遠的兩個節(jié)點,兩節(jié)點不在可通信范圍之內(nèi)。正常情況下,兩者需要經(jīng)過多跳路由才能實現(xiàn)互相通信。M1和M2是兩個惡意節(jié)點,它們之間建立起一條私有信道。M1和M2分別處于N1和N2的通信范圍,當N1發(fā)送數(shù)據(jù)時,M1會首先收到該數(shù)據(jù),然后 M1通過私有信道把該數(shù)據(jù)傳遞給其合謀節(jié)點M2。M2接收到數(shù)據(jù)后繼續(xù)將其轉(zhuǎn)發(fā)給N2。這樣,N1和N2就會誤認為彼此是鄰居節(jié)點,M1和M2也因此獲得路由權(quán)。
表面現(xiàn)象讓我們覺得,如果蟲洞合謀節(jié)點是忠實可靠的節(jié)點,蟲洞私有信道反而形成了一條更加高效的網(wǎng)絡(luò)鏈路,提供了一個高效的網(wǎng)絡(luò)連接服務(wù),有效地減少了數(shù)據(jù)傳輸?shù)难訒r。但實際上,蟲洞合謀節(jié)點在數(shù)據(jù)傳遞的過程中并不忠實于傳遞所有數(shù)據(jù),而是對數(shù)據(jù)包實施選擇性丟棄或者數(shù)據(jù)篡改等惡意行為。更嚴重的是,即使網(wǎng)絡(luò)通信已經(jīng)采用了加密或認證機制,惡意節(jié)點仍然可以發(fā)起蟲洞攻擊。
[4]中提出了“數(shù)據(jù)包限制”機制,并采用一種有效的認證協(xié)議TIK來對蟲洞節(jié)點檢測和防御。該機制的主要思想是在數(shù)據(jù)分組中附加地理限制信息或者時間限制信息來限制分組的最大傳輸距離。數(shù)據(jù)分組接收節(jié)點依據(jù)附加在數(shù)據(jù)分組中的地理限制信息或者時間限制信息來計算自己到發(fā)送節(jié)點間的最大傳輸距離,由此判斷數(shù)據(jù)分組來源的合法性。這種機制需要網(wǎng)絡(luò)中節(jié)點真實的地理信息和精確的時鐘同步。
參考文獻[5]從數(shù)據(jù)分組的延時出發(fā)提出了蟲洞攻擊的檢測方案:記錄從源節(jié)點到目的節(jié)點之間所有的不相交路徑,然后計算出每條路徑的長度和延時,進而得到每條路徑平均每跳的延時。如果存在一條路徑,其平均每跳的延時相比較于其他路徑的平均每跳延時異常地大,那么就認為這條路徑遭受到蟲洞攻擊。這種機制同樣需要網(wǎng)絡(luò)中節(jié)點的時鐘同步。
參考文獻[6]基于數(shù)據(jù)包往返時間(RTT)的方法檢測蟲洞的存在,因為蟲洞節(jié)點之間傳輸數(shù)據(jù)包的RTT必然大于真實鄰居節(jié)點之間的RTT。這種方法雖然不需要額外的硬件,但是也需要網(wǎng)絡(luò)中節(jié)點的時鐘同步。
參考文獻[7]提出使用統(tǒng)計分析的方法進行蟲洞檢測。在蟲洞攻擊下,惡意節(jié)點所在的路徑在路由表中出現(xiàn)的比例將很高。此方案統(tǒng)計出出現(xiàn)比例較高的路徑,并使用測試包對其進行測試,由此來確定惡意節(jié)點。但是這種方法只適合在多路徑協(xié)議中使用,對AODV等單播路由協(xié)議是失效的。
作為網(wǎng)絡(luò)的管理者,應(yīng)該清楚網(wǎng)絡(luò)的規(guī)模與拓撲結(jié)構(gòu)。在數(shù)據(jù)傳輸過程中,如果源節(jié)點和目的節(jié)點之間的路由要經(jīng)過10跳左右才能實現(xiàn)源節(jié)點和目的節(jié)點的通信,而某一條路由僅經(jīng)過5跳甚至更少的跳數(shù)就可以實現(xiàn)節(jié)點間通信,網(wǎng)絡(luò)管理者就可以斷定此路由遭受到了蟲洞攻擊。本文算法的提出正是基于這種思想。
在描述本文提出的算法之前,為了使描述更加清晰,首先對網(wǎng)絡(luò)作如下假設(shè):
① 整個網(wǎng)絡(luò)是一個分層結(jié)構(gòu);
② 每個節(jié)點都有其唯一的ID;
③ 源節(jié)點和目的節(jié)點不是蟲洞攻擊的合謀節(jié)點;
④ 節(jié)點與其鄰居節(jié)點之間進行直接通信,與非鄰居節(jié)點之間以多跳方式進行通信。
本文提出的蟲洞攻擊防御路由算法IAODV是在AODV協(xié)議算法的基礎(chǔ)上,增加了源節(jié)點路由跳數(shù)判斷和路由隨機選擇機制。改進后的IAODV協(xié)議路由發(fā)現(xiàn)過程的算法描述如下:
① 當源節(jié)點希望與目的節(jié)點進行數(shù)據(jù)傳輸,并且源節(jié)點路由表中沒有到達此目的節(jié)點的有效路由時,源節(jié)點就會發(fā)起路由發(fā)現(xiàn)過程。
② 源節(jié)點生成一個路由請求分組即RREQ分組,RREQ分組中包含其ID號、源節(jié)點地址、源節(jié)點序列號、目的節(jié)點地址、目的節(jié)點序列號和跳數(shù)計數(shù)器等信息,寫入RREQ分組中,然后泛洪廣播該RREQ分組。
③ 當中間節(jié)點接收到該RREQ分組后,首先檢查RREQ分組的ID號和源節(jié)點地址信息,以確認自己之前是否已經(jīng)處理過相同的RREQ分組。若是已經(jīng)處理過,則丟棄該分組,以防止路由環(huán)路的出現(xiàn)。若之前沒有收到過該RREQ分組,中間節(jié)點將做兩項工作:一是更新本地路由表,更新內(nèi)容包括目的序列號、定時器等;二是建立到達源節(jié)點的反向路由。完成上述更新工作后,中間節(jié)點將RREQ分組中的跳數(shù)加1,然后繼續(xù)將其轉(zhuǎn)發(fā)。
④ 當RREQ到達目的節(jié)點或者到目的節(jié)點路由的中間節(jié)點,目的節(jié)點或者該中間節(jié)點就會沿著反向路由向源節(jié)點回復(fù)路由響應(yīng)分組,即RREP分組。RREP分組中包括目的節(jié)點地址、目的節(jié)點序列號、源節(jié)點地址以及源節(jié)點到目的節(jié)點的跳數(shù)值等信息。
⑤ 同轉(zhuǎn)發(fā)RREQ分組的中間節(jié)點類似,轉(zhuǎn)發(fā)RREP分組的中間節(jié)點也會做兩項工作,一是更新本地路由表,二是建立從源節(jié)點到目的節(jié)點正向路由,為源節(jié)點向目的節(jié)點傳送數(shù)據(jù)分組創(chuàng)建路由。完成上述更新工作后,中間節(jié)點將RREP分組中的跳數(shù)加1,然后繼續(xù)轉(zhuǎn)發(fā),直至將RREP分組轉(zhuǎn)發(fā)至源節(jié)點。
⑥ 源節(jié)點在接收到從目的節(jié)點轉(zhuǎn)發(fā)來的第一個RREP分組后,并不立即傳輸數(shù)據(jù)。源節(jié)點首先會創(chuàng)建一個路由表,將RREP分組存儲起來,同時設(shè)置一個定時器,等待隨后從其他反向路由轉(zhuǎn)播到源節(jié)點的所有的RREP分組。定時器時間的設(shè)置要使得源節(jié)點能接收到隨后到達的所有RREP分組。另外,隨后到達的RREP分組不對源路由保存的RREP分組作任何更新,這樣能保證源節(jié)點可以接收到所有從源節(jié)點到目的節(jié)點的路由。
⑦ 定時器時間結(jié)束后,源節(jié)點將所有RREP分組的跳數(shù)字段中的跳數(shù)信息提取出來。
圖2 安全區(qū)間示意圖
⑧利用分布函數(shù)模型,以路由跳數(shù)為隨機變量X,其分布函數(shù)為 F(X)。 根 據(jù) 路 由 跳數(shù)的分布函數(shù) F(X),設(shè)置一個安全區(qū)間(a,b)(0<a<b<1),如圖2所示。區(qū)間(a,b)的設(shè)置是靈活的,網(wǎng)絡(luò)管理者可以依據(jù)網(wǎng)絡(luò)規(guī)模和網(wǎng)絡(luò)拓撲結(jié)構(gòu)來調(diào)整區(qū)間值,以適應(yīng)不同的網(wǎng)絡(luò)環(huán)境。安全區(qū)間對應(yīng)的跳數(shù)區(qū)間(i,j)稱之為安全跳數(shù)區(qū)間。
⑨ 根據(jù)安全跳數(shù)區(qū)間,源節(jié)點將接收到的RREP分組里處于安全跳數(shù)區(qū)間內(nèi)的路由保存起來,并在數(shù)據(jù)傳輸過程中隨機使用這些路由。隨機使用這些路由的目的在于:一是可以平衡節(jié)點能量的使用,延長網(wǎng)絡(luò)壽命;二是即使包含在安全區(qū)間內(nèi)的路由再次遭受攻擊,隨機使用安全跳數(shù)區(qū)間內(nèi)的路由也能降低網(wǎng)絡(luò)遭受蟲洞攻擊的概率。
另外,在此僅討論路由發(fā)現(xiàn)階段路由算法的改進,所以,路由維護過程所需要的控制分組(RRER、HELLO)在改進后的IAODV中保持和AODV中同樣的分組格式。
實驗仿真是在 Windows XP+Cygwin+NS2平臺上完成的。實驗內(nèi)容主要包括蟲洞攻擊模塊的仿真和改進協(xié)議IAODV協(xié)議移植至NS2平臺后的仿真。
蟲洞攻擊中私有信道的建立是違背常規(guī)通信模型的[3]。對私有信道的仿真要實現(xiàn)它的三種特性:高效性、隱蔽性和惡意性。為了使蟲洞路徑能夠優(yōu)于其他路徑的延時和跳數(shù),體現(xiàn)出其高效性,本實驗采取的解決方案是對蟲洞合謀節(jié)點和其余普通節(jié)點使用不同的無線信號功率,使得蟲洞合謀節(jié)點之間的傳輸距離遠遠大于普通節(jié)點的信號范圍。蟲洞信道中傳輸?shù)臄?shù)據(jù)應(yīng)該對外界隱蔽,為了模擬這個特性,需要在數(shù)據(jù)鏈路層中對蟲洞鏈路設(shè)置對外的隱蔽性。為了模擬蟲洞信道對傳輸數(shù)據(jù)的惡意性,本實驗通過使用NS2中提供的無線遺失模型對蟲洞信道設(shè)置了2%的隨機丟包率[8]。
通過使用NS2中的TCL腳本語言對網(wǎng)絡(luò)屬性的定義和對NS2相關(guān)源程序的修改,本實驗建立起一個具有如下參數(shù)的網(wǎng)絡(luò)仿真環(huán)境。
◆節(jié)點數(shù):14個。
◆仿真時間:20s。
◆環(huán)境大小:1000m×1000m。
◆傳輸半徑:正常節(jié)點100m,惡意節(jié)點250m。
◆遺失模型丟包率2%。
如圖3所示是本實驗中網(wǎng)絡(luò)仿真環(huán)境的拓撲結(jié)構(gòu)。其中節(jié)點10被設(shè)置為源節(jié)點,節(jié)點2被設(shè)置為目的節(jié)點。節(jié)點0和1被設(shè)置為惡意節(jié)點,這兩個節(jié)點之間建立起一條高質(zhì)量的私有信道,吸引從節(jié)點10發(fā)出的數(shù)據(jù)包,然后直接傳輸至節(jié)點私有信道的另一端。惡意節(jié)點在私有信道的傳輸過程中對數(shù)據(jù)包進行隨機丟包,以實現(xiàn)蟲洞攻擊的目的。
圖3 實驗網(wǎng)絡(luò)拓撲圖
實驗中,在部署了蟲洞節(jié)點的網(wǎng)絡(luò)環(huán)境中分別運行AODV協(xié)議和IAODV協(xié)議,并使用網(wǎng)絡(luò)丟包率和網(wǎng)絡(luò)吞吐量兩個性能指標來對實驗數(shù)據(jù)進行分析。實驗數(shù)據(jù)分析結(jié)果如圖4和圖5所示。
如圖4所示,在無線傳感器網(wǎng)絡(luò)的路由協(xié)議為AODV協(xié)議的情況下,網(wǎng)絡(luò)數(shù)據(jù)包的丟包率在8.0%左右。而在IAODV協(xié)議的情況下,網(wǎng)絡(luò)的丟包率降低至6.0%左右。兩者2.0%的差距與本實驗設(shè)置的遺失模型2.0%的丟包率是相互吻合的。數(shù)據(jù)說明了IAODV路由協(xié)議中的路由跳數(shù)判斷機制將蟲洞合謀節(jié)點創(chuàng)建的私有信道排除在安全跳數(shù)區(qū)間之外。
如圖5所示,實驗中為了在圖中形象地表示數(shù)據(jù)傳輸?shù)拈_始和結(jié)束,把開始和最后一筆記錄的吞吐量數(shù)據(jù)均設(shè)為0。從圖中可以看出,隨著網(wǎng)絡(luò)運行時間的逐漸增加,IAODV協(xié)議下的網(wǎng)絡(luò)吞吐量要優(yōu)于AODV協(xié)議下的網(wǎng)絡(luò)吞吐量。這與圖4中丟包率的差別也是吻合的。
圖4 網(wǎng)絡(luò)丟包率仿真圖
圖5 吞吐量仿真圖
無線傳感器網(wǎng)絡(luò)是Ad Hoc網(wǎng)絡(luò)的一種特殊形式,安全問題是無線傳感器網(wǎng)絡(luò)的關(guān)鍵技術(shù)。考慮到網(wǎng)絡(luò)路由層數(shù)據(jù)傳輸?shù)陌踩?,本文基于AODV路由協(xié)議提出一種針對蟲洞攻擊的防御方案,以降低在路由發(fā)現(xiàn)過程中選中含有蟲洞私有信道的概率。實驗仿真表明,改進協(xié)議對防御蟲洞攻擊有效。鑒于網(wǎng)絡(luò)節(jié)點資源和處理能力的局限性、節(jié)點能量的有限性,以及網(wǎng)絡(luò)拓撲的不確定性,本文提出的防御方案還有進一步優(yōu)化的空間。
參考文獻
[1] 孫利民,李建中,陳渝,等.無線傳感器網(wǎng)絡(luò)[M].北京:清華大學出版社,2006.
[2] Rutvij H Jhaveri,Ashish D Patel.MANET Routing Protocols And Wormhole Attack against AODV[J].IJCSNS International Journal of Computer Science and Network Security,2010,10(4).
[3] 易平.無線網(wǎng)絡(luò)攻防原理與實踐[M].北京:清華大學出版社,2012.
[4] Yih-Chun Hu,Adrian Perrig,David B Johnson.Packet Leashes:A Defense against Wormhole Attacks in Wireless Networks[C]//Twenty-Second Annual Joint Conference of the IEEE Computer and Communications,INFOCOM 2003,2003:1976-1986.
[5] H S,Chiu,K S Lui.DelPHI:Wormhole Detection Mechanism for Ad Hoc Wireless Networks[C]//The 1st International Symposium on Wireless Pervasive Computing,Phuket island,2006.
[6] J Zhen,S Srinivas.Preventing replay attacks for secure routing in ad hoc networks[J].Ad Hoc Networks&Wireless,2003(3):140-150.
[7] Lijnn Qian,Ning Song,Xiangfang Li.Detecting and Locating Wormhole Attacks in Wireless Ad Hoc Networks through Statistical Analysis of Multi-path[J],IEEE Communications Society,2005,4:2106-2111.
[8] 柯志亨,程榮祥,鄧德雋.NS2仿真實驗——多媒體和無線網(wǎng)絡(luò)通信[M].北京:電子工業(yè)出版社,2009.