基于跳數(shù)的防御無線傳感器網(wǎng)絡(luò)中蟲洞攻擊方案
作為網(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ù)信息提取出來。
⑧利用分布函數(shù)模型,以路由跳數(shù)為隨機變量X,其分布函數(shù)為F(X)。根據(jù)路由跳數(shù)的分布函數(shù)F(X),設(shè)置一個安全區(qū)間(a,b)(0ab 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中同樣的分組格式。
4 實驗分析
實驗仿真是在Windows XP+Cygwin+NS2平臺上完成的。實驗內(nèi)容主要包括蟲洞攻擊模塊的仿真和改進協(xié)議IAODV協(xié)議移植至NS2平臺后的仿真。
蟲洞攻擊中私有信道的建立是違背常規(guī)通信模型的。對私有信道的仿真要實現(xiàn)它的三種特性:高效性、隱蔽性和惡意性。為了使蟲洞路徑能夠優(yōu)于其他路徑的延時和跳數(shù),體現(xiàn)出其高效性,本實驗采取的解決方案是對蟲洞合謀節(jié)點和其余普通節(jié)點使用不同的無線信號功率,使得蟲洞合謀節(jié)點之間的傳輸距離遠遠大于普通節(jié)點的信號范圍。蟲洞信道中傳輸?shù)臄?shù)據(jù)應(yīng)該對外界隱蔽,為了模擬這個特性,需要在數(shù)據(jù)鏈路層中對蟲洞鏈路設(shè)置對外的隱蔽性。為了模擬蟲洞信道對傳輸數(shù)據(jù)的惡意性,本實驗通過使用NS2中提供的無線遺失模型對蟲洞信道設(shè)置了2%的隨機丟包率。
通過使用NS2中的TCL腳本語言對網(wǎng)絡(luò)屬性的定義和對NS2相關(guān)源程序的修改,本實驗建立起一個具有如下參數(shù)的網(wǎng)絡(luò)仿真環(huán)境。
◆節(jié)點數(shù):14個。
◆仿真時間:20 s。
◆環(huán)境大?。?000 m×1000 m。
◆傳輸半徑:正常節(jié)點100 m,惡意節(jié)點250 m。
◆遺失模型丟包率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)蟲洞攻擊的目的。
評論