基于跳數(shù)的防御無線傳感器網(wǎng)絡中蟲洞攻擊方案
摘要:蟲洞攻擊是一種針對無線傳感器網(wǎng)絡路由協(xié)議的特殊攻擊,一般由至少兩個合謀節(jié)點協(xié)同發(fā)起。合謀節(jié)點通過建立起一條高帶寬高質(zhì)量的私有信道來對數(shù)據(jù)進行吸引和傳輸,通過擾亂路由分組的傳輸達到破壞網(wǎng)絡正常運行的目的。本文基于無線傳感器網(wǎng)絡反應式路由協(xié)議AODV協(xié)議,從網(wǎng)絡管理者的角度出發(fā),不引入額外的硬件輔助,也不需要節(jié)點之間時鐘同步,提出IAODV(Improved AODV)協(xié)議。相比較于AODV協(xié)議,IAODV協(xié)議增加了源節(jié)點路由跳數(shù)判斷機制和隨機選擇路由的蟲洞攻擊防御方案。用NS2仿真平臺實現(xiàn)蟲洞攻擊模塊的仿真和改進協(xié)議的仿真,結(jié)果證明了改進協(xié)議的有效性。
關(guān)鍵詞:無線傳感器網(wǎng)絡;蟲洞攻擊;AODV協(xié)議;IAODV協(xié)議;NS2仿真
引言
無線傳感器網(wǎng)絡作為一種新型的無線網(wǎng)絡形式,有著很好的發(fā)展前景。與此同時,由于無線傳感器網(wǎng)絡自組織、無控制中心和拓撲頻繁變化等特點,其安全性也受到了越來越多的關(guān)注。無線傳感器網(wǎng)絡中的蟲洞攻擊就是一種主要針對網(wǎng)絡路由協(xié)議的惡意攻擊,該攻擊通過擾亂網(wǎng)絡路由層數(shù)據(jù)分組的傳輸,達到攻擊整個網(wǎng)絡的目的?,F(xiàn)有的針對蟲洞攻擊檢測和防御的相關(guān)研究中,有的方案引入GPS模塊或者有向天線等輔助硬件,還有一些方案依賴于網(wǎng)絡節(jié)點精確的地理位置信息或者節(jié)點之間的時鐘同步來對攻擊節(jié)點進行定位。這些方案對能量資源和處理能力都有限的網(wǎng)絡節(jié)點來說,是很大的挑戰(zhàn)。本文基于無線傳感器網(wǎng)絡反應式路由協(xié)議——AODV路由協(xié)議,不需引入輔助硬件,也不要求節(jié)點間時鐘同步,僅通過對路由協(xié)議進行優(yōu)化,來實現(xiàn)對蟲洞攻擊的防御。
1 蟲洞攻擊
蟲洞攻擊一般由至少兩個相距較遠的惡意節(jié)點合謀發(fā)起,合謀節(jié)點之間建立一條比正常節(jié)點間高效的私有信道。當蟲洞攻擊發(fā)起時,合謀節(jié)點之一在網(wǎng)絡的一端獲取網(wǎng)絡中的數(shù)據(jù)分組,通過私有信道將數(shù)據(jù)分組傳遞至另一個合謀節(jié)點,然后該合謀節(jié)點再把數(shù)據(jù)分組重放回網(wǎng)絡中。數(shù)據(jù)分組在私有信道的傳遞過程中被惡意節(jié)點實施選擇性丟棄或者數(shù)據(jù)篡改等惡意行為,實現(xiàn)對網(wǎng)絡的攻擊。蟲洞攻擊模型如圖1所示。
N1和N2是網(wǎng)絡中相距較遠的兩個節(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)絡鏈路,提供了一個高效的網(wǎng)絡連接服務,有效地減少了數(shù)據(jù)傳輸?shù)难訒r。但實際上,蟲洞合謀節(jié)點在數(shù)據(jù)傳遞的過程中并不忠實于傳遞所有數(shù)據(jù),而是對數(shù)據(jù)包實施選擇性丟棄或者數(shù)據(jù)篡改等惡意行為。更嚴重的是,即使網(wǎng)絡通信已經(jīng)采用了加密或認證機制,惡意節(jié)點仍然可以發(fā)起蟲洞攻擊。
2 相關(guān)工作
參考文獻中提出了“數(shù)據(jù)包限制”機制,并采用一種有效的認證協(xié)議TIK來對蟲洞節(jié)點檢測和防御。該機制的主要思想是在數(shù)據(jù)分組中附加地理限制信息或者時間限制信息來限制分組的最大傳輸距離。數(shù)據(jù)分組接收節(jié)點依據(jù)附加在數(shù)據(jù)分組中的地理限制信息或者時間限制信息來計算自己到發(fā)送節(jié)點間的最大傳輸距離,由此判斷數(shù)據(jù)分組來源的合法性。這種機制需要網(wǎng)絡中節(jié)點真實的地理信息和精確的時鐘同步。
參考文獻從數(shù)據(jù)分組的延時出發(fā)提出了蟲洞攻擊的檢測方案:記錄從源節(jié)點到目的節(jié)點之間所有的不相交路徑,然后計算出每條路徑的長度和延時,進而得到每條路徑平均每跳的延時。如果存在一條路徑,其平均每跳的延時相比較于其他路徑的平均每跳延時異常地大,那么就認為這條路徑遭受到蟲洞攻擊。這種機制同樣需要網(wǎng)絡中節(jié)點的時鐘同步。
參考文獻基于數(shù)據(jù)包往返時間(RTT)的方法檢測蟲洞的存在,因為蟲洞節(jié)點之間傳輸數(shù)據(jù)包的RTT必然大于真實鄰居節(jié)點之間的RTT。這種方法雖然不需要額外的硬件,但是也需要網(wǎng)絡中節(jié)點的時鐘同步。
參考文獻提出使用統(tǒng)計分析的方法進行蟲洞檢測。在蟲洞攻擊下,惡意節(jié)點所在的路徑在路由表中出現(xiàn)的比例將很高。此方案統(tǒng)計出出現(xiàn)比例較高的路徑,并使用測試包對其進行測試,由此來確定惡意節(jié)點。但是這種方法只適合在多路徑協(xié)議中使用,對AODV等單播路由協(xié)議是失效的。
3 防御方案
作為網(wǎng)絡的管理者,應該清楚網(wǎng)絡的規(guī)模與拓撲結(jié)構(gòu)。在數(shù)據(jù)傳輸過程中,如果源節(jié)點和目的節(jié)點之間的路由要經(jīng)過10跳左右才能實現(xiàn)源節(jié)點和目的節(jié)點的通信,而某一條路由僅經(jīng)過5跳甚至更少的跳數(shù)就可以實現(xiàn)節(jié)點間通信,網(wǎng)絡管理者就可以斷定此路由遭受到了蟲洞攻擊。本文算法的提出正是基于這種思想。
在描述本文提出的算法之前,為了使描述更加清晰,首先對網(wǎng)絡作如下假設:
①整個網(wǎng)絡是一個分層結(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é)點回復路由響應分組,即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分組存儲起來,同時設置一個定時器,等待隨后從其他反向路由轉(zhuǎn)播到源節(jié)點的所有的RREP分組。定時器時間的設置要使得源節(jié)點能接收到隨后到達的所有RREP分組。另外,隨后到達的RREP分組不對源路由保存的RREP分組作任何更新,這樣能保證源節(jié)點可以接收到所有從源節(jié)點到目的節(jié)點的路由。
⑦定時器時間結(jié)束后,源節(jié)點將所有RREP分組的跳數(shù)字段中的跳數(shù)信息提取出來。
⑧利用分布函數(shù)模型,以路由跳數(shù)為隨機變量X,其分布函數(shù)為F(X)。根據(jù)路由跳數(shù)的分布函數(shù)F(X),設置一個安全區(qū)間(a,b)(0<a<b <1),如圖2所示。區(qū)間(a,b)的設置是靈活的,網(wǎng)絡管理者可以依據(jù)網(wǎng)絡規(guī)模和網(wǎng)絡拓撲結(jié)構(gòu)來調(diào)整區(qū)間值,以適應不同的網(wǎng)絡環(huán)境。安全區(qū)間對應的跳數(shù)區(qū)間(i,j)稱之為安全跳數(shù)區(qū)間。
⑨根據(jù)安全跳數(shù)區(qū)間,源節(jié)點將接收到的RREP分組里處于安全跳數(shù)區(qū)間內(nèi)的路由保存起來,并在數(shù)據(jù)傳輸過程中隨機使用這些路由。隨機使用這些路由的目的在于:一是可以平衡節(jié)點能量的使用,延長網(wǎng)絡壽命;二是即使包含在安全區(qū)間內(nèi)的路由再次遭受攻擊,隨機使用安全跳數(shù)區(qū)間內(nèi)的路由也能降低網(wǎng)絡遭受蟲洞攻擊的概率。
另外,在此僅討論路由發(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ù)應該對外界隱蔽,為了模擬這個特性,需要在數(shù)據(jù)鏈路層中對蟲洞鏈路設置對外的隱蔽性。為了模擬蟲洞信道對傳輸數(shù)據(jù)的惡意性,本實驗通過使用NS2中提供的無線遺失模型對蟲洞信道設置了2%的隨機丟包率。
通過使用NS2中的TCL腳本語言對網(wǎng)絡屬性的定義和對NS2相關(guān)源程序的修改,本實驗建立起一個具有如下參數(shù)的網(wǎng)絡仿真環(huán)境。
◆節(jié)點數(shù):14個。
◆仿真時間:20 s。
◆環(huán)境大?。?000 m×1000 m。
◆傳輸半徑:正常節(jié)點100 m,惡意節(jié)點250 m。
◆遺失模型丟包率2%。
如圖3所示是本實驗中網(wǎng)絡仿真環(huán)境的拓撲結(jié)構(gòu)。其中節(jié)點10被設置為源節(jié)點,節(jié)點2被設置為目的節(jié)點。節(jié)點0和1被設置為惡意節(jié)點,這兩個節(jié)點之間建立起一條高質(zhì)量的私有信道,吸引從節(jié)點10發(fā)出的數(shù)據(jù)包,然后直接傳輸至節(jié)點私有信道的另一端。惡意節(jié)點在私有信道的傳輸過程中對數(shù)據(jù)包進行隨機丟包,以實現(xiàn)蟲洞攻擊的目的。
實驗中,在部署了蟲洞節(jié)點的網(wǎng)絡環(huán)境中分別運行AODV協(xié)議和IAODV協(xié)議,并使用網(wǎng)絡丟包率和網(wǎng)絡吞吐量兩個性能指標來對實驗數(shù)據(jù)進行分析。實驗數(shù)據(jù)分析結(jié)果如圖4和圖5所示。
如圖4所示,在無線傳感器網(wǎng)絡的路由協(xié)議為AODV協(xié)議的情況下,網(wǎng)絡數(shù)據(jù)包的丟包率在8.0%左右。而在IAODV協(xié)議的情況下,網(wǎng)絡的丟包率降低至6.0%左右。兩者2.0%的差距與本實驗設置的遺失模型2.0%的丟包率是相互吻合的。數(shù)據(jù)說明了IAODV路由協(xié)議中的路由跳數(shù)判斷機制將蟲洞合謀節(jié)點創(chuàng)建的私有信道排除在安全跳數(shù)區(qū)間之外。
如圖5所示,實驗中為了在圖中形象地表示數(shù)據(jù)傳輸?shù)拈_始和結(jié)束,把開始和最后一筆記錄的吞吐量數(shù)據(jù)均設為0。從圖中可以看出,隨著網(wǎng)絡運行時間的逐漸增加,IAODV協(xié)議下的網(wǎng)絡吞吐量要優(yōu)于AODV協(xié)議下的網(wǎng)絡吞吐量。這與圖4中丟包率的差別也是吻合的。
結(jié)語
無線傳感器網(wǎng)絡是Ad Hoc網(wǎng)絡的一種特殊形式,安全問題是無線傳感器網(wǎng)絡的關(guān)鍵技術(shù)??紤]到網(wǎng)絡路由層數(shù)據(jù)傳輸?shù)陌踩?,本文基于AODV路由協(xié)議提出一種針對蟲洞攻擊的防御方案,以降低在路由發(fā)現(xiàn)過程中選中含有蟲洞私有信道的概率。實驗仿真表明,改進協(xié)議對防御蟲洞攻擊有效。鑒于網(wǎng)絡節(jié)點資源和處理能力的局限性、節(jié)點能量的有限性,以及網(wǎng)絡拓撲的不確定性,本文提出的防御方案還有進一步優(yōu)化的空間。