呂兆輝,張紅梅,郭遠(yuǎn)洋
(桂林電子科技大學(xué) 信息與通信學(xué)院,桂林 541004)
無(wú)線傳感器網(wǎng)絡(luò)作為一種新型的無(wú)線網(wǎng)絡(luò)形式,有著很好的發(fā)展前景[1]。與此同時(shí),由于無(wú)線傳感器網(wǎng)絡(luò)自組織、無(wú)控制中心和拓?fù)漕l繁變化等特點(diǎn),其安全性也受到了越來(lái)越多的關(guān)注。無(wú)線傳感器網(wǎng)絡(luò)中的蟲(chóng)洞攻擊就是一種主要針對(duì)網(wǎng)絡(luò)路由協(xié)議的惡意攻擊,該攻擊通過(guò)擾亂網(wǎng)絡(luò)路由層數(shù)據(jù)分組的傳輸,達(dá)到攻擊整個(gè)網(wǎng)絡(luò)的目的。現(xiàn)有的針對(duì)蟲(chóng)洞攻擊檢測(cè)和防御的相關(guān)研究中,有的方案引入GPS模塊或者有向天線等輔助硬件,還有一些方案依賴(lài)于網(wǎng)絡(luò)節(jié)點(diǎn)精確的地理位置信息或者節(jié)點(diǎn)之間的時(shí)鐘同步來(lái)對(duì)攻擊節(jié)點(diǎn)進(jìn)行定位。這些方案對(duì)能量資源和處理能力都有限的網(wǎng)絡(luò)節(jié)點(diǎn)來(lái)說(shuō),是很大的挑戰(zhàn)。本文基于無(wú)線傳感器網(wǎng)絡(luò)反應(yīng)式路由協(xié)議——AODV路由協(xié)議[2],不需引入輔助硬件,也不要求節(jié)點(diǎn)間時(shí)鐘同步,僅通過(guò)對(duì)路由協(xié)議進(jìn)行優(yōu)化,來(lái)實(shí)現(xiàn)對(duì)蟲(chóng)洞攻擊的防御。
蟲(chóng)洞攻擊一般由至少兩個(gè)相距較遠(yuǎn)的惡意節(jié)點(diǎn)合謀發(fā)起[3],合謀節(jié)點(diǎn)之間建立一條比正常節(jié)點(diǎn)間高效的私有信道。當(dāng)蟲(chóng)洞攻擊發(fā)起時(shí),合謀節(jié)點(diǎn)之一在網(wǎng)絡(luò)的一端獲取網(wǎng)絡(luò)中的數(shù)據(jù)分組,通過(guò)私有信道將數(shù)據(jù)分組傳遞至另一個(gè)合謀節(jié)點(diǎn),然后該合謀節(jié)點(diǎn)再把數(shù)據(jù)分組重放回網(wǎng)絡(luò)中。數(shù)據(jù)分組在私有信道的傳遞過(guò)程中被惡意節(jié)點(diǎn)實(shí)施選擇性丟棄或者數(shù)據(jù)篡改等惡意行為,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)的攻擊。蟲(chóng)洞攻擊模型如圖1所示。

圖1 蟲(chóng)洞攻擊模型
N1和N2是網(wǎng)絡(luò)中相距較遠(yuǎn)的兩個(gè)節(jié)點(diǎn),兩節(jié)點(diǎn)不在可通信范圍之內(nèi)。正常情況下,兩者需要經(jīng)過(guò)多跳路由才能實(shí)現(xiàn)互相通信。M1和M2是兩個(gè)惡意節(jié)點(diǎn),它們之間建立起一條私有信道。M1和M2分別處于N1和N2的通信范圍,當(dāng)N1發(fā)送數(shù)據(jù)時(shí),M1會(huì)首先收到該數(shù)據(jù),然后 M1通過(guò)私有信道把該數(shù)據(jù)傳遞給其合謀節(jié)點(diǎn)M2。M2接收到數(shù)據(jù)后繼續(xù)將其轉(zhuǎn)發(fā)給N2。這樣,N1和N2就會(huì)誤認(rèn)為彼此是鄰居節(jié)點(diǎn),M1和M2也因此獲得路由權(quán)。
表面現(xiàn)象讓我們覺(jué)得,如果蟲(chóng)洞合謀節(jié)點(diǎn)是忠實(shí)可靠的節(jié)點(diǎn),蟲(chóng)洞私有信道反而形成了一條更加高效的網(wǎng)絡(luò)鏈路,提供了一個(gè)高效的網(wǎng)絡(luò)連接服務(wù),有效地減少了數(shù)據(jù)傳輸?shù)难訒r(shí)。但實(shí)際上,蟲(chóng)洞合謀節(jié)點(diǎn)在數(shù)據(jù)傳遞的過(guò)程中并不忠實(shí)于傳遞所有數(shù)據(jù),而是對(duì)數(shù)據(jù)包實(shí)施選擇性丟棄或者數(shù)據(jù)篡改等惡意行為。更嚴(yán)重的是,即使網(wǎng)絡(luò)通信已經(jīng)采用了加密或認(rèn)證機(jī)制,惡意節(jié)點(diǎn)仍然可以發(fā)起蟲(chóng)洞攻擊。
[4]中提出了“數(shù)據(jù)包限制”機(jī)制,并采用一種有效的認(rèn)證協(xié)議TIK來(lái)對(duì)蟲(chóng)洞節(jié)點(diǎn)檢測(cè)和防御。該機(jī)制的主要思想是在數(shù)據(jù)分組中附加地理限制信息或者時(shí)間限制信息來(lái)限制分組的最大傳輸距離。數(shù)據(jù)分組接收節(jié)點(diǎn)依據(jù)附加在數(shù)據(jù)分組中的地理限制信息或者時(shí)間限制信息來(lái)計(jì)算自己到發(fā)送節(jié)點(diǎn)間的最大傳輸距離,由此判斷數(shù)據(jù)分組來(lái)源的合法性。這種機(jī)制需要網(wǎng)絡(luò)中節(jié)點(diǎn)真實(shí)的地理信息和精確的時(shí)鐘同步。
參考文獻(xiàn)[5]從數(shù)據(jù)分組的延時(shí)出發(fā)提出了蟲(chóng)洞攻擊的檢測(cè)方案:記錄從源節(jié)點(diǎn)到目的節(jié)點(diǎn)之間所有的不相交路徑,然后計(jì)算出每條路徑的長(zhǎng)度和延時(shí),進(jìn)而得到每條路徑平均每跳的延時(shí)。如果存在一條路徑,其平均每跳的延時(shí)相比較于其他路徑的平均每跳延時(shí)異常地大,那么就認(rèn)為這條路徑遭受到蟲(chóng)洞攻擊。這種機(jī)制同樣需要網(wǎng)絡(luò)中節(jié)點(diǎn)的時(shí)鐘同步。
參考文獻(xiàn)[6]基于數(shù)據(jù)包往返時(shí)間(RTT)的方法檢測(cè)蟲(chóng)洞的存在,因?yàn)橄x(chóng)洞節(jié)點(diǎn)之間傳輸數(shù)據(jù)包的RTT必然大于真實(shí)鄰居節(jié)點(diǎn)之間的RTT。這種方法雖然不需要額外的硬件,但是也需要網(wǎng)絡(luò)中節(jié)點(diǎn)的時(shí)鐘同步。
參考文獻(xiàn)[7]提出使用統(tǒng)計(jì)分析的方法進(jìn)行蟲(chóng)洞檢測(cè)。在蟲(chóng)洞攻擊下,惡意節(jié)點(diǎn)所在的路徑在路由表中出現(xiàn)的比例將很高。此方案統(tǒng)計(jì)出出現(xiàn)比例較高的路徑,并使用測(cè)試包對(duì)其進(jìn)行測(cè)試,由此來(lái)確定惡意節(jié)點(diǎn)。但是這種方法只適合在多路徑協(xié)議中使用,對(duì)AODV等單播路由協(xié)議是失效的。
作為網(wǎng)絡(luò)的管理者,應(yīng)該清楚網(wǎng)絡(luò)的規(guī)模與拓?fù)浣Y(jié)構(gòu)。在數(shù)據(jù)傳輸過(guò)程中,如果源節(jié)點(diǎn)和目的節(jié)點(diǎn)之間的路由要經(jīng)過(guò)10跳左右才能實(shí)現(xiàn)源節(jié)點(diǎn)和目的節(jié)點(diǎn)的通信,而某一條路由僅經(jīng)過(guò)5跳甚至更少的跳數(shù)就可以實(shí)現(xiàn)節(jié)點(diǎn)間通信,網(wǎng)絡(luò)管理者就可以斷定此路由遭受到了蟲(chóng)洞攻擊。本文算法的提出正是基于這種思想。
在描述本文提出的算法之前,為了使描述更加清晰,首先對(duì)網(wǎng)絡(luò)作如下假設(shè):
① 整個(gè)網(wǎng)絡(luò)是一個(gè)分層結(jié)構(gòu);
② 每個(gè)節(jié)點(diǎn)都有其唯一的ID;
③ 源節(jié)點(diǎn)和目的節(jié)點(diǎn)不是蟲(chóng)洞攻擊的合謀節(jié)點(diǎn);
④ 節(jié)點(diǎn)與其鄰居節(jié)點(diǎn)之間進(jìn)行直接通信,與非鄰居節(jié)點(diǎn)之間以多跳方式進(jìn)行通信。
本文提出的蟲(chóng)洞攻擊防御路由算法IAODV是在AODV協(xié)議算法的基礎(chǔ)上,增加了源節(jié)點(diǎn)路由跳數(shù)判斷和路由隨機(jī)選擇機(jī)制。改進(jìn)后的IAODV協(xié)議路由發(fā)現(xiàn)過(guò)程的算法描述如下:
① 當(dāng)源節(jié)點(diǎn)希望與目的節(jié)點(diǎn)進(jìn)行數(shù)據(jù)傳輸,并且源節(jié)點(diǎn)路由表中沒(méi)有到達(dá)此目的節(jié)點(diǎn)的有效路由時(shí),源節(jié)點(diǎn)就會(huì)發(fā)起路由發(fā)現(xiàn)過(guò)程。
② 源節(jié)點(diǎn)生成一個(gè)路由請(qǐng)求分組即RREQ分組,RREQ分組中包含其ID號(hào)、源節(jié)點(diǎn)地址、源節(jié)點(diǎn)序列號(hào)、目的節(jié)點(diǎn)地址、目的節(jié)點(diǎn)序列號(hào)和跳數(shù)計(jì)數(shù)器等信息,寫(xiě)入RREQ分組中,然后泛洪廣播該RREQ分組。
③ 當(dāng)中間節(jié)點(diǎn)接收到該RREQ分組后,首先檢查RREQ分組的ID號(hào)和源節(jié)點(diǎn)地址信息,以確認(rèn)自己之前是否已經(jīng)處理過(guò)相同的RREQ分組。若是已經(jīng)處理過(guò),則丟棄該分組,以防止路由環(huán)路的出現(xiàn)。若之前沒(méi)有收到過(guò)該RREQ分組,中間節(jié)點(diǎn)將做兩項(xiàng)工作:一是更新本地路由表,更新內(nèi)容包括目的序列號(hào)、定時(shí)器等;二是建立到達(dá)源節(jié)點(diǎn)的反向路由。完成上述更新工作后,中間節(jié)點(diǎn)將RREQ分組中的跳數(shù)加1,然后繼續(xù)將其轉(zhuǎn)發(fā)。
④ 當(dāng)RREQ到達(dá)目的節(jié)點(diǎn)或者到目的節(jié)點(diǎn)路由的中間節(jié)點(diǎn),目的節(jié)點(diǎn)或者該中間節(jié)點(diǎn)就會(huì)沿著反向路由向源節(jié)點(diǎn)回復(fù)路由響應(yīng)分組,即RREP分組。RREP分組中包括目的節(jié)點(diǎn)地址、目的節(jié)點(diǎn)序列號(hào)、源節(jié)點(diǎn)地址以及源節(jié)點(diǎn)到目的節(jié)點(diǎn)的跳數(shù)值等信息。
⑤ 同轉(zhuǎn)發(fā)RREQ分組的中間節(jié)點(diǎn)類(lèi)似,轉(zhuǎn)發(fā)RREP分組的中間節(jié)點(diǎn)也會(huì)做兩項(xiàng)工作,一是更新本地路由表,二是建立從源節(jié)點(diǎn)到目的節(jié)點(diǎn)正向路由,為源節(jié)點(diǎn)向目的節(jié)點(diǎn)傳送數(shù)據(jù)分組創(chuàng)建路由。完成上述更新工作后,中間節(jié)點(diǎn)將RREP分組中的跳數(shù)加1,然后繼續(xù)轉(zhuǎn)發(fā),直至將RREP分組轉(zhuǎn)發(fā)至源節(jié)點(diǎn)。
⑥ 源節(jié)點(diǎn)在接收到從目的節(jié)點(diǎn)轉(zhuǎn)發(fā)來(lái)的第一個(gè)RREP分組后,并不立即傳輸數(shù)據(jù)。源節(jié)點(diǎn)首先會(huì)創(chuàng)建一個(gè)路由表,將RREP分組存儲(chǔ)起來(lái),同時(shí)設(shè)置一個(gè)定時(shí)器,等待隨后從其他反向路由轉(zhuǎn)播到源節(jié)點(diǎn)的所有的RREP分組。定時(shí)器時(shí)間的設(shè)置要使得源節(jié)點(diǎn)能接收到隨后到達(dá)的所有RREP分組。另外,隨后到達(dá)的RREP分組不對(duì)源路由保存的RREP分組作任何更新,這樣能保證源節(jié)點(diǎn)可以接收到所有從源節(jié)點(diǎn)到目的節(jié)點(diǎn)的路由。
⑦ 定時(shí)器時(shí)間結(jié)束后,源節(jié)點(diǎn)將所有RREP分組的跳數(shù)字段中的跳數(shù)信息提取出來(lái)。

圖2 安全區(qū)間示意圖
⑧利用分布函數(shù)模型,以路由跳數(shù)為隨機(jī)變量X,其分布函數(shù)為 F(X)。 根 據(jù) 路 由 跳數(shù)的分布函數(shù) F(X),設(shè)置一個(gè)安全區(qū)間(a,b)(0<a<b<1),如圖2所示。區(qū)間(a,b)的設(shè)置是靈活的,網(wǎng)絡(luò)管理者可以依據(jù)網(wǎng)絡(luò)規(guī)模和網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)來(lái)調(diào)整區(qū)間值,以適應(yīng)不同的網(wǎng)絡(luò)環(huán)境。安全區(qū)間對(duì)應(yīng)的跳數(shù)區(qū)間(i,j)稱(chēng)之為安全跳數(shù)區(qū)間。
⑨ 根據(jù)安全跳數(shù)區(qū)間,源節(jié)點(diǎn)將接收到的RREP分組里處于安全跳數(shù)區(qū)間內(nèi)的路由保存起來(lái),并在數(shù)據(jù)傳輸過(guò)程中隨機(jī)使用這些路由。隨機(jī)使用這些路由的目的在于:一是可以平衡節(jié)點(diǎn)能量的使用,延長(zhǎng)網(wǎng)絡(luò)壽命;二是即使包含在安全區(qū)間內(nèi)的路由再次遭受攻擊,隨機(jī)使用安全跳數(shù)區(qū)間內(nèi)的路由也能降低網(wǎng)絡(luò)遭受蟲(chóng)洞攻擊的概率。
另外,在此僅討論路由發(fā)現(xiàn)階段路由算法的改進(jìn),所以,路由維護(hù)過(guò)程所需要的控制分組(RRER、HELLO)在改進(jìn)后的IAODV中保持和AODV中同樣的分組格式。
實(shí)驗(yàn)仿真是在 Windows XP+Cygwin+NS2平臺(tái)上完成的。實(shí)驗(yàn)內(nèi)容主要包括蟲(chóng)洞攻擊模塊的仿真和改進(jìn)協(xié)議IAODV協(xié)議移植至NS2平臺(tái)后的仿真。
蟲(chóng)洞攻擊中私有信道的建立是違背常規(guī)通信模型的[3]。對(duì)私有信道的仿真要實(shí)現(xiàn)它的三種特性:高效性、隱蔽性和惡意性。為了使蟲(chóng)洞路徑能夠優(yōu)于其他路徑的延時(shí)和跳數(shù),體現(xiàn)出其高效性,本實(shí)驗(yàn)采取的解決方案是對(duì)蟲(chóng)洞合謀節(jié)點(diǎn)和其余普通節(jié)點(diǎn)使用不同的無(wú)線信號(hào)功率,使得蟲(chóng)洞合謀節(jié)點(diǎn)之間的傳輸距離遠(yuǎn)遠(yuǎn)大于普通節(jié)點(diǎn)的信號(hào)范圍。蟲(chóng)洞信道中傳輸?shù)臄?shù)據(jù)應(yīng)該對(duì)外界隱蔽,為了模擬這個(gè)特性,需要在數(shù)據(jù)鏈路層中對(duì)蟲(chóng)洞鏈路設(shè)置對(duì)外的隱蔽性。為了模擬蟲(chóng)洞信道對(duì)傳輸數(shù)據(jù)的惡意性,本實(shí)驗(yàn)通過(guò)使用NS2中提供的無(wú)線遺失模型對(duì)蟲(chóng)洞信道設(shè)置了2%的隨機(jī)丟包率[8]。
通過(guò)使用NS2中的TCL腳本語(yǔ)言對(duì)網(wǎng)絡(luò)屬性的定義和對(duì)NS2相關(guān)源程序的修改,本實(shí)驗(yàn)建立起一個(gè)具有如下參數(shù)的網(wǎng)絡(luò)仿真環(huán)境。
◆節(jié)點(diǎn)數(shù):14個(gè)。
◆仿真時(shí)間:20s。
◆環(huán)境大小:1000m×1000m。
◆傳輸半徑:正常節(jié)點(diǎn)100m,惡意節(jié)點(diǎn)250m。
◆遺失模型丟包率2%。
如圖3所示是本實(shí)驗(yàn)中網(wǎng)絡(luò)仿真環(huán)境的拓?fù)浣Y(jié)構(gòu)。其中節(jié)點(diǎn)10被設(shè)置為源節(jié)點(diǎn),節(jié)點(diǎn)2被設(shè)置為目的節(jié)點(diǎn)。節(jié)點(diǎn)0和1被設(shè)置為惡意節(jié)點(diǎn),這兩個(gè)節(jié)點(diǎn)之間建立起一條高質(zhì)量的私有信道,吸引從節(jié)點(diǎn)10發(fā)出的數(shù)據(jù)包,然后直接傳輸至節(jié)點(diǎn)私有信道的另一端。惡意節(jié)點(diǎn)在私有信道的傳輸過(guò)程中對(duì)數(shù)據(jù)包進(jìn)行隨機(jī)丟包,以實(shí)現(xiàn)蟲(chóng)洞攻擊的目的。

圖3 實(shí)驗(yàn)網(wǎng)絡(luò)拓?fù)鋱D
實(shí)驗(yàn)中,在部署了蟲(chóng)洞節(jié)點(diǎn)的網(wǎng)絡(luò)環(huán)境中分別運(yùn)行AODV協(xié)議和IAODV協(xié)議,并使用網(wǎng)絡(luò)丟包率和網(wǎng)絡(luò)吞吐量?jī)蓚€(gè)性能指標(biāo)來(lái)對(duì)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行分析。實(shí)驗(yàn)數(shù)據(jù)分析結(jié)果如圖4和圖5所示。
如圖4所示,在無(wú)線傳感器網(wǎng)絡(luò)的路由協(xié)議為AODV協(xié)議的情況下,網(wǎng)絡(luò)數(shù)據(jù)包的丟包率在8.0%左右。而在IAODV協(xié)議的情況下,網(wǎng)絡(luò)的丟包率降低至6.0%左右。兩者2.0%的差距與本實(shí)驗(yàn)設(shè)置的遺失模型2.0%的丟包率是相互吻合的。數(shù)據(jù)說(shuō)明了IAODV路由協(xié)議中的路由跳數(shù)判斷機(jī)制將蟲(chóng)洞合謀節(jié)點(diǎn)創(chuàng)建的私有信道排除在安全跳數(shù)區(qū)間之外。
如圖5所示,實(shí)驗(yàn)中為了在圖中形象地表示數(shù)據(jù)傳輸?shù)拈_(kāi)始和結(jié)束,把開(kāi)始和最后一筆記錄的吞吐量數(shù)據(jù)均設(shè)為0。從圖中可以看出,隨著網(wǎng)絡(luò)運(yùn)行時(shí)間的逐漸增加,IAODV協(xié)議下的網(wǎng)絡(luò)吞吐量要優(yōu)于AODV協(xié)議下的網(wǎng)絡(luò)吞吐量。這與圖4中丟包率的差別也是吻合的。

圖4 網(wǎng)絡(luò)丟包率仿真圖

圖5 吞吐量仿真圖
無(wú)線傳感器網(wǎng)絡(luò)是Ad Hoc網(wǎng)絡(luò)的一種特殊形式,安全問(wèn)題是無(wú)線傳感器網(wǎng)絡(luò)的關(guān)鍵技術(shù)。考慮到網(wǎng)絡(luò)路由層數(shù)據(jù)傳輸?shù)陌踩裕疚幕贏ODV路由協(xié)議提出一種針對(duì)蟲(chóng)洞攻擊的防御方案,以降低在路由發(fā)現(xiàn)過(guò)程中選中含有蟲(chóng)洞私有信道的概率。實(shí)驗(yàn)仿真表明,改進(jìn)協(xié)議對(duì)防御蟲(chóng)洞攻擊有效。鑒于網(wǎng)絡(luò)節(jié)點(diǎn)資源和處理能力的局限性、節(jié)點(diǎn)能量的有限性,以及網(wǎng)絡(luò)拓?fù)涞牟淮_定性,本文提出的防御方案還有進(jìn)一步優(yōu)化的空間。
參考文獻(xiàn)
[1] 孫利民,李建中,陳渝,等.無(wú)線傳感器網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,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ú)線網(wǎng)絡(luò)攻防原理與實(shí)踐[M].北京:清華大學(xué)出版社,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仿真實(shí)驗(yàn)——多媒體和無(wú)線網(wǎng)絡(luò)通信[M].北京:電子工業(yè)出版社,2009.
單片機(jī)與嵌入式系統(tǒng)應(yīng)用2013年4期