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