鮑 露,鄧 平(西南交通大學(xué)信息編碼與傳輸重點(diǎn)實(shí)驗(yàn)室,成都 610031)
無線傳感器網(wǎng)絡(luò)[1]發(fā)展至今,已在理論上基本解決靜態(tài)和安全環(huán)境下的節(jié)點(diǎn)定位問題。但對(duì)于移動(dòng)無線傳感器網(wǎng)絡(luò)MWSN(Mobile Wireless Sensor Networks)來說,移動(dòng)網(wǎng)絡(luò)環(huán)境的復(fù)雜性和多樣性使定位系統(tǒng)更容易遭受網(wǎng)外攻擊和網(wǎng)內(nèi)干擾,造成節(jié)點(diǎn)無法自定位或定位精度不達(dá)標(biāo)。因此,MWSN定位技術(shù)的安全性是一項(xiàng)亟待解決的關(guān)鍵問題。
到目前,國內(nèi)外對(duì)MWSN定位技術(shù)[2-4]的研究主要集中在假設(shè)網(wǎng)絡(luò)安全的前提下,缺乏抵御攻擊能力。對(duì)MWSN安全定位問題的研究報(bào)道還相對(duì)較少。蒙特卡洛(MC)方法作為MWSN定位的一種主要方法被廣泛研究,多跳蒙特卡羅定位算法[5]MMCL(Multi-hop-based Monte Carlo Localization)作為其中一種典型算法,結(jié)合了DV-Hop和MC方法的優(yōu)點(diǎn),有較高的定位精度和定位覆蓋率,但抗攻擊能力差。為了提高M(jìn)MCL算法的安全性,本文針對(duì)抵御蟲洞攻擊的MMCL算法展開研究。
受攻擊情況下的移動(dòng)節(jié)點(diǎn)定位問題,近年來僅有一些分散的研究:2009年,Zeng等人首次討論蒙特卡羅定位算法的安全性,提出了一種抵御欺騙攻擊的安全定位算法SecMCL[6],該算法通過非對(duì)稱密鑰和擴(kuò)大采樣來抵御欺騙攻擊。當(dāng)定位過程由于欺騙攻擊無法獲得足夠的合法樣本時(shí),降低樣本點(diǎn)的要求進(jìn)行擴(kuò)大采樣,僅要求樣本點(diǎn)與盡可能多的錨節(jié)點(diǎn)觀測(cè)信息一致。2012年,Garg等人通過純代數(shù)方法解決欺騙攻擊下的安全移動(dòng)定位問題,該算法[7]包括代價(jià)函數(shù)構(gòu)造和最小化兩個(gè)階段:首先利用錨節(jié)點(diǎn)定位參考信息構(gòu)造代價(jià)函數(shù),在第2階段通過迭代梯度下降法將代價(jià)函數(shù)最小化并剔除殘差較大的矢量值,提高節(jié)點(diǎn)的定位精度。Vennam等于2014年分析了蟲洞攻擊對(duì)MCL的影響,提出的WRMCL算法[8]采用錨盒子重置檢測(cè)方案發(fā)現(xiàn)偽錨節(jié)點(diǎn),利用節(jié)點(diǎn)間距離和通信半徑的距離約束關(guān)系剔除蟲洞范圍中的錨節(jié)點(diǎn),達(dá)到抵御蟲洞攻擊的目的。次年,池玉辰等人提出了一種抵御蟲洞攻擊的DewormMCL算法[9],該算法利用移動(dòng)節(jié)點(diǎn)連續(xù)定位特點(diǎn)進(jìn)行蟲洞攻擊檢測(cè),識(shí)別并剔除偽錨節(jié)點(diǎn),改善定位算法的抗攻擊能力。2017年,曹璐等人提出一種DWMCB安全定位算法[10],通過計(jì)算普通節(jié)點(diǎn)偵聽到的錨節(jié)點(diǎn)的質(zhì)心,比較錨節(jié)點(diǎn)到質(zhì)心的距離,識(shí)別并剔除偽錨節(jié)點(diǎn)提高蟲洞攻擊下的節(jié)點(diǎn)定位精度。
以上針對(duì)移動(dòng)定位算法安全性的研究中,大都要求傳感器節(jié)點(diǎn)有較強(qiáng)的存儲(chǔ)計(jì)算能力,算法計(jì)算量較大。SecMCL算法需要進(jìn)行循環(huán)采樣,直到獲得足夠的合法樣本,這個(gè)過程對(duì)節(jié)點(diǎn)計(jì)算和存儲(chǔ)能力要求較高,計(jì)算量大,且對(duì)定位誤差的改善并不明顯;WRMCL、DewormMCL和DWMCB 3種抵御蟲洞攻擊的定位算法在識(shí)別和剔除偽錨節(jié)點(diǎn)信息時(shí),提高了算法的計(jì)算量。除此之外,3種算法都僅考慮兩跳范圍內(nèi)的錨節(jié)點(diǎn)信息,無法滿足多跳式定位算法抵御蟲洞攻擊的需求。
蟲洞攻擊具有很好的隱藏性,對(duì)定位系統(tǒng)性能有極大的影響。近幾年蟲洞攻擊被廣泛關(guān)注[11-12]。這些抵御蟲洞攻擊的安全定位算法大多以節(jié)點(diǎn)靜態(tài)為前提,對(duì)蟲洞攻擊下節(jié)點(diǎn)跳數(shù)偏差的特征參數(shù)提取沒有與移動(dòng)網(wǎng)絡(luò)特性相關(guān)聯(lián)?;诿伤_的定位算法充分利用節(jié)點(diǎn)移動(dòng)性和和歷史定位信息,得到較高的定位精度,其中MMCL是作為一種典型MWSN定位算法,定位精度和定位率都遠(yuǎn)高于MCL和MCB,但當(dāng)前還沒有關(guān)于MMCL算法的安全性研究,且動(dòng)態(tài)、多跳式的節(jié)點(diǎn)定位算法受蟲洞攻擊的影響更大?;诖?本文針對(duì)MMCL算法在蟲洞攻擊下的定位性能展開研究。
MMCL算法的定位過程主要分為兩個(gè)階段:
①計(jì)算錨節(jié)點(diǎn)平均跳距:錨節(jié)點(diǎn)在全網(wǎng)內(nèi)洪泛信標(biāo)信息,當(dāng)錨節(jié)點(diǎn)i獲取與其他錨節(jié)點(diǎn)間的跳數(shù)hi和坐標(biāo)信息后,按式(1)計(jì)算平均跳距Ci,并在下一時(shí)刻錨節(jié)點(diǎn)洪泛信標(biāo)信息時(shí)一起廣播出去,以節(jié)省網(wǎng)絡(luò)中的通信量。
(1)
②蒙特卡羅定位:MMCL算法假設(shè)每個(gè)待定位節(jié)點(diǎn)與錨節(jié)點(diǎn)間的距離di滿足條件:
Ciα≤di≤Ciβ
(2)
式中:α=hi×0.4,β=hi+2,Ci為平均跳距。
基于此假設(shè),在預(yù)測(cè)階段,結(jié)合上一時(shí)刻樣本集合與節(jié)點(diǎn)運(yùn)動(dòng)模型,建立采樣區(qū)域如下:
(3)
(4)
(5)
(6)
若上一時(shí)刻沒有合法樣本,采樣區(qū)域則不考慮速度約束條件。
過濾階段,僅保留滿足式(2)要求的樣本,不滿足要求的樣本點(diǎn)丟棄掉。過濾表達(dá)式如下:
filter(lt)=?a∈A,Caα≤d(lt,a)≤Caβ
(7)
式中:A為錨節(jié)點(diǎn)集合,d(lt,a)表示錨節(jié)點(diǎn)a與當(dāng)前時(shí)刻樣本點(diǎn)之間的距離。
不斷重復(fù)預(yù)測(cè)和過濾過程,直到獲得足夠的合法樣本。普通節(jié)點(diǎn)的位置估計(jì)坐標(biāo)為所有合法樣本坐標(biāo)的平均。
本文假設(shè)蟲洞攻擊由W1、W2兩個(gè)位于網(wǎng)絡(luò)不同區(qū)域的攻擊節(jié)點(diǎn)協(xié)同發(fā)起,攻擊節(jié)點(diǎn)之間建立一條雙向?qū)ΨQ的蟲洞鏈路。攻擊節(jié)點(diǎn)從一端偵聽周圍節(jié)點(diǎn)的數(shù)據(jù)包,并通過蟲洞鏈路在另一端傳輸。本文參考文獻(xiàn)[9]部署蟲洞攻擊節(jié)點(diǎn),考慮蟲洞鏈路長度大于2倍節(jié)點(diǎn)通信半徑的情況。
圖1 蟲洞攻擊對(duì)跳數(shù)的影響
蟲洞攻擊對(duì)MMCL算法的兩個(gè)階段都有嚴(yán)重的影響。第1階段中,蟲洞攻擊導(dǎo)致節(jié)點(diǎn)間跳數(shù)小于真實(shí)值,從而影響錨節(jié)點(diǎn)計(jì)算平均跳距。如圖1所示,錨節(jié)點(diǎn)S1到S2間的真實(shí)路由為S1→N5→N6→N7→S2,跳數(shù)為4;在蟲洞的影響下,S1的數(shù)據(jù)包被攻擊節(jié)點(diǎn)W1捕獲,并在W2端重放,此時(shí)的路由為:S1→蟲洞鏈路→S2,跳數(shù)為1,跳數(shù)信息小于真實(shí)值。在此基礎(chǔ)上,錨節(jié)點(diǎn)由式(1)計(jì)算平均跳距時(shí)導(dǎo)致平均跳距結(jié)果偏大,使計(jì)算結(jié)果出現(xiàn)偏差。
在MMCL算法的第2階段,需要利用滿足式(2)約束條件的錨節(jié)點(diǎn)構(gòu)建錨盒子和采樣盒子。若存在蟲洞攻擊,錨盒子的約束條件也會(huì)出現(xiàn)較大偏差,嚴(yán)重影響蒙特卡羅定位過程,導(dǎo)致定位誤差進(jìn)一步增大,甚至出現(xiàn)錨盒子無法建立的情況影響節(jié)點(diǎn)定位率。
因此,蟲洞攻擊能對(duì)MMCL算法各階段造成嚴(yán)重的破壞,影響定位算法的有效性和可靠性。
針對(duì)蟲洞攻擊的攻擊特性和對(duì)MMCL算法的影響,本文受文獻(xiàn)[11]啟發(fā),依據(jù)錨節(jié)點(diǎn)距離約束條件和節(jié)點(diǎn)鄰居關(guān)系,發(fā)現(xiàn)并區(qū)分受攻擊的傳感器節(jié)點(diǎn),斷開虛假鏈路,從而保證MMCL算法在第1階段得到更準(zhǔn)確的錨節(jié)點(diǎn)平均跳距,減小蟲洞攻擊的影響,提高定位精度。
本文假設(shè)蟲洞節(jié)點(diǎn)W1、W2范圍內(nèi)的傳感器節(jié)點(diǎn)集合分別為VW1、VW2,VW1和VW2中的節(jié)點(diǎn)通過蟲洞鏈路與彼此相連,互為鄰居節(jié)點(diǎn)。如圖1所示,普通節(jié)點(diǎn)N9的真實(shí)鄰居節(jié)點(diǎn)為{S3、S4、N10},受蟲洞攻擊影響,為鄰居節(jié)點(diǎn)為{S1、N8}。
所有節(jié)點(diǎn)在定位周期初始向相鄰節(jié)點(diǎn)廣播HELLO消息,建立自己的鄰居節(jié)點(diǎn)列表,HELLO消息包括節(jié)點(diǎn)類型、節(jié)點(diǎn)ID,錨節(jié)點(diǎn)還包括節(jié)點(diǎn)位置坐標(biāo)。蟲洞攻擊導(dǎo)致在建立鄰居節(jié)點(diǎn)列表過程中出現(xiàn)異?,F(xiàn)象。
因此,本文的研究目標(biāo)是通過鄰居節(jié)點(diǎn)列表異常檢測(cè)找到受蟲洞影響的傳感器節(jié)點(diǎn),并區(qū)分得到集合VW1、VW2,斷開蟲洞建立的虛假鏈路,使鄰居節(jié)點(diǎn)列表接近未受攻擊時(shí)的情況。
為標(biāo)記區(qū)分節(jié)點(diǎn),本文將未受攻擊的節(jié)點(diǎn)標(biāo)記為‘N’,受攻擊的節(jié)點(diǎn)標(biāo)記為‘S’,其中,集合VW1中的節(jié)點(diǎn)標(biāo)記為‘S1’,集合VW2中的節(jié)點(diǎn)標(biāo)記為‘S2’。所有節(jié)點(diǎn)在定位初始都被標(biāo)記為‘N’。
當(dāng)節(jié)點(diǎn)運(yùn)動(dòng)到蟲洞范圍中,數(shù)據(jù)包通過蟲洞鏈路與另一端蟲洞范圍中的節(jié)點(diǎn)建立鄰居關(guān)系,影響MMCL算法的定位過程。因此,最簡單直接的方法就是找到蟲洞兩端受攻擊的節(jié)點(diǎn),并斷開虛假鏈路。
LB-MMCL安全定位算法分為錨節(jié)點(diǎn)標(biāo)記、普通節(jié)點(diǎn)標(biāo)記和安全定位3個(gè)階段。
①錨節(jié)點(diǎn)標(biāo)記
初始時(shí),所有節(jié)點(diǎn)標(biāo)記為‘N’,假設(shè)節(jié)點(diǎn)未受到攻擊。錨節(jié)點(diǎn)檢測(cè)的基本思想是:距離約束機(jī)制(BL1)——節(jié)點(diǎn)數(shù)據(jù)包的傳輸范圍不能超過通信半徑r,若錨節(jié)點(diǎn)在構(gòu)建鄰居列表時(shí),檢測(cè)到與鄰居錨節(jié)點(diǎn)的距離大于r,則判斷該錨節(jié)點(diǎn)受到攻擊,標(biāo)記為‘S’。如圖1,錨節(jié)點(diǎn)S1和S4因蟲洞鏈路建立鄰居關(guān)系,但通過錨節(jié)點(diǎn)坐標(biāo)計(jì)算出兩節(jié)點(diǎn)間的距離d大于r,則將S1和S4標(biāo)記為‘S’。對(duì)于未檢測(cè)到異常的錨節(jié)點(diǎn),保持原來的標(biāo)記‘N’。
完成鄰居列表創(chuàng)建后,對(duì)標(biāo)記為‘S’的錨節(jié)點(diǎn)按照地理位置關(guān)系區(qū)分為兩類:W1攻擊節(jié)點(diǎn)范圍內(nèi)、W2攻擊節(jié)點(diǎn)范圍內(nèi)。區(qū)分方法為:比較兩個(gè)標(biāo)記為‘S’錨節(jié)點(diǎn)的鄰居節(jié)點(diǎn)列表,若鄰居節(jié)點(diǎn)列表相同,則歸為一類,若具有不同的鄰居節(jié)點(diǎn)列表,則歸為另一類,并假設(shè)標(biāo)記為‘S’且節(jié)點(diǎn)ID最小的錨節(jié)點(diǎn)受W1攻擊,另一類受W2攻擊。以圖1中錨節(jié)點(diǎn)為例,錨節(jié)點(diǎn)S1、S2、S3、S4違反距離約束機(jī)制,標(biāo)記為‘S’,S1、S3具有相同的鄰居錨節(jié)點(diǎn)列表{S2、S4}且S1為ID最小,因此S1、S3假設(shè)受W1攻擊,重新標(biāo)記為‘S1’,同理,S2、S4為另一類受W2攻擊的錨節(jié)點(diǎn),重新標(biāo)記為‘S2’。錨節(jié)點(diǎn)標(biāo)記偽代碼如圖2所示。
Algorithm1BeaconNodeLabeling
圖2錨節(jié)點(diǎn)標(biāo)記偽代碼
②普通節(jié)點(diǎn)標(biāo)記
僅斷開錨節(jié)點(diǎn)間的虛假鏈路還不足以抵御蟲洞攻擊,還需要對(duì)普通節(jié)點(diǎn)進(jìn)行蟲洞檢測(cè)標(biāo)記區(qū)分。
遭受攻擊的錨節(jié)點(diǎn)向鄰居節(jié)點(diǎn)廣播警報(bào)信息,警報(bào)信息包括受攻擊的錨節(jié)點(diǎn)集合及錨節(jié)點(diǎn)的標(biāo)記,收到警報(bào)消息的普通節(jié)點(diǎn)標(biāo)記為‘U’,表示可能受到蟲洞攻擊的影響。再對(duì)標(biāo)記為‘U’的普通節(jié)點(diǎn)進(jìn)行蟲洞攻擊檢測(cè),檢測(cè)基本思想為:消息唯一性機(jī)制和距離約束機(jī)制。
消息唯一性機(jī)制(SL1):普通節(jié)點(diǎn)不可能收到來自同一鄰居錨節(jié)點(diǎn)的數(shù)據(jù)包兩次。如圖1所示,普通節(jié)點(diǎn)N9收到兩份來自S3的消息:一份直接來自S3→N9,另一份來自蟲洞鏈路重放S3→蟲洞鏈路→N9。因此若違反消息唯一機(jī)制,則表明節(jié)點(diǎn)遭受蟲洞攻擊,將其標(biāo)記為‘S’。這種情況下,普通該節(jié)點(diǎn)進(jìn)一步檢測(cè)錨節(jié)點(diǎn)的標(biāo)記,若錨節(jié)點(diǎn)標(biāo)記為‘S1’,則普通節(jié)點(diǎn)標(biāo)記為‘S2’,若錨節(jié)點(diǎn)標(biāo)記為‘S2’,則普通節(jié)點(diǎn)標(biāo)記為‘S1’。例如,此時(shí)N9檢測(cè)到S3標(biāo)記為‘S1’,則N9標(biāo)記為‘S2’。
距離約束機(jī)制(SL2):根據(jù)幾何關(guān)系可知,普通節(jié)點(diǎn)的任意兩個(gè)鄰居錨節(jié)點(diǎn)間的距離小于2r,若檢測(cè)到異常情況,則判斷普通節(jié)點(diǎn)受到蟲洞攻擊。以圖1中N8為例,其鄰居錨節(jié)點(diǎn)為{S0、S2、S3、S4},其中根據(jù)錨節(jié)點(diǎn)坐標(biāo),計(jì)算得到S0、S2之間的距離大于2r,則判斷N8受蟲洞攻擊,N8標(biāo)記為‘S’。這種情況下,進(jìn)一步檢測(cè)錨節(jié)點(diǎn)的標(biāo)記,若其中一個(gè)錨節(jié)點(diǎn)標(biāo)記為‘N’,檢測(cè)另一個(gè)錨節(jié)點(diǎn)標(biāo)記,若另一個(gè)錨節(jié)點(diǎn)標(biāo)記為‘S1’,則普通節(jié)點(diǎn)把自己標(biāo)記為‘S2’;若錨節(jié)點(diǎn)標(biāo)記為‘S2’,則普通節(jié)點(diǎn)標(biāo)記為‘S1’。例中N8檢測(cè)到S0標(biāo)記為‘N’,則繼續(xù)檢測(cè)S2的標(biāo)記為‘S2’,則N8標(biāo)記為‘S1’。
對(duì)于其他被標(biāo)記為‘S’的普通節(jié)點(diǎn)(SL3),對(duì)比其鄰居錨節(jié)點(diǎn)列表和受攻擊的錨節(jié)點(diǎn)集合,若受攻擊的錨節(jié)點(diǎn)Sj不在鄰居錨節(jié)點(diǎn)列表中,則以Sj的標(biāo)記作為自己的標(biāo)記。
圖3普通節(jié)點(diǎn)標(biāo)記偽代碼
③安全定位
將網(wǎng)絡(luò)中被標(biāo)記為‘S1’、‘S2’節(jié)點(diǎn)間的虛假鏈路斷開,移除蟲洞攻擊帶來的偽鄰居節(jié)點(diǎn),以減小定位誤差。即,對(duì)于標(biāo)記為的‘S1’所有節(jié)點(diǎn),斷開與只收到1份數(shù)據(jù)包且標(biāo)記為‘S2’的節(jié)點(diǎn)之間的鏈路;同樣的,對(duì)于標(biāo)記為的‘S2’所有節(jié)點(diǎn),斷開與只收到1份數(shù)據(jù)包且標(biāo)記為‘S1’的節(jié)點(diǎn)之間的鏈路。
完成虛假鏈路移除工作后,即可按照原來的方法計(jì)算錨節(jié)點(diǎn)平均跳距,根據(jù)MMCL算法構(gòu)建錨盒子和采樣盒子,完成蒙特卡羅定位。
LB-MMCL算法標(biāo)記并區(qū)分受攻擊的節(jié)點(diǎn),斷開虛假鏈路,蟲洞攻擊對(duì)定位過程的影響被降低。通過這種方法能夠有效地抵御蟲洞攻擊的干擾,完成安全定位過程。
本節(jié)對(duì)MMCL算法、受蟲洞攻擊的MMCL和安全定位算法進(jìn)行實(shí)驗(yàn)仿真,分別從定位精度、定位率、錨節(jié)點(diǎn)密度、節(jié)點(diǎn)移動(dòng)速度和樣本數(shù)等多個(gè)角度分析算法性能,并與文獻(xiàn)[9]中的算法進(jìn)行比較。
實(shí)驗(yàn)中將80個(gè)節(jié)點(diǎn)隨機(jī)部署在500 m×500 m的矩形區(qū)域內(nèi),節(jié)點(diǎn)通信半徑為r,最大移動(dòng)速度為Vmax,所有節(jié)點(diǎn)按照隨機(jī)行走(Random WayPoint)模型沿任意方向隨機(jī)移動(dòng)。蟲洞節(jié)點(diǎn)的位置坐標(biāo)參考文獻(xiàn)[9]進(jìn)行設(shè)置。假設(shè)時(shí)間被分為離散的時(shí)間單位T(s),在每個(gè)時(shí)間單位對(duì)移動(dòng)的節(jié)點(diǎn)進(jìn)行定位。具體默認(rèn)仿真參數(shù)設(shè)置表1所示。
表1 仿真參數(shù)典型值設(shè)置
每種算法仿真隨機(jī)運(yùn)行100次,受蟲洞攻擊的算法稱為Wormhole-MMCL,定位誤差為每個(gè)時(shí)刻定位均方誤差的平均值。
圖4、圖5分別為MMCL、受攻擊的MMCL和LB-MMCL 3種算法的定位誤差和定位率隨時(shí)間的變化曲線。
圖4 定位誤差隨時(shí)間的變化曲線
圖5 定位率隨時(shí)間的變化曲線
從圖4、圖5可見,MMCL利用網(wǎng)絡(luò)中的全部錨節(jié)點(diǎn)信息,結(jié)合運(yùn)動(dòng)模型和歷史定位信息,獲得較高的定位精度和定位率。受蟲洞攻擊后,MMCL算法定位誤差從0.14r提高到0.26r,增加一倍;同時(shí),蟲洞攻擊導(dǎo)致在蒙特卡羅定位階段錨盒子和采樣盒子無法正常建立,使定位率從98%下降到96%左右。LB-MMCL通過斷開蟲洞建立的虛假鏈路,有效抵御蟲洞攻擊,明顯改善定位誤差至0.2r附近;在錨盒子建立過程中剔除偽錨節(jié)點(diǎn),使定位率恢復(fù)到較高的水平。
平均定位誤差隨錨節(jié)點(diǎn)密度變化曲線如圖6所示。隨著錨節(jié)點(diǎn)密度的增大,網(wǎng)絡(luò)中錨節(jié)點(diǎn)比例上升,可利用的定位參考信息增多,3種算法的平均定位誤差變小;因?yàn)長B-MMCL算法對(duì)普通節(jié)點(diǎn)攻擊檢測(cè)依賴于錨節(jié)點(diǎn),因此,當(dāng)錨節(jié)點(diǎn)密度sd<1時(shí),LB-MMCL對(duì)定位誤差的改善并不明顯;但隨著錨節(jié)點(diǎn)密度的繼續(xù)增大,sd>1時(shí),標(biāo)記機(jī)制識(shí)別蟲洞范圍內(nèi)的錨節(jié)點(diǎn)和普通節(jié)點(diǎn)數(shù)增加,LB-MMCL定位誤差不斷減小,最終接近無攻擊時(shí)的定位誤差曲線。
圖6 平均定位誤差隨錨節(jié)點(diǎn)密度的變化曲線
圖7 平均定位誤差隨節(jié)點(diǎn)移動(dòng)速度的變化曲線
分析圖7,可以得出:隨著節(jié)點(diǎn)移動(dòng)速度的增大,3種算法的定位誤差逐漸增加。這是因?yàn)榫W(wǎng)絡(luò)中錨節(jié)點(diǎn)密度決定了節(jié)點(diǎn)獲得的定位參考信息保持不變,但單位時(shí)間內(nèi)節(jié)點(diǎn)移動(dòng)距離增大,上一時(shí)刻計(jì)算的錨節(jié)點(diǎn)平均跳距與當(dāng)前時(shí)刻相比偏差變大,使采集的樣本準(zhǔn)確性降低,定位誤差變大。LB-MMCL算法對(duì)蟲洞攻擊情況下的MMCL定位誤差改善明顯,在相同節(jié)點(diǎn)移動(dòng)速度的情況下,LB-MMCL的定位精度始終高于受攻擊的情況。
圖8為算法平均定位誤差隨樣本數(shù)的變化曲線,由圖可知:MMCL會(huì)隨著樣本數(shù)的增加定位精度逐漸提高。因?yàn)樵诿商乜_定位階段,利用帶有權(quán)值的樣本點(diǎn)集合來估計(jì)普通節(jié)點(diǎn)的位置坐標(biāo),增加樣本數(shù)對(duì)定位精度提高有積極作用,但同時(shí)樣本數(shù)增加會(huì)導(dǎo)致算法的計(jì)算量提高。樣本數(shù)N>50時(shí),定位精度提高緩慢,綜合考慮定位誤差和算法計(jì)算量,本實(shí)驗(yàn)中選取樣本數(shù)為50。
圖8 平均定位誤差隨樣本數(shù)的變化曲線
圖10 定位率隨時(shí)間的變化曲線
為了進(jìn)一步驗(yàn)證本算法在移動(dòng)、受蟲洞攻擊情況下的定位誤差和定位率改進(jìn)效果,我們用文獻(xiàn)[9]中的算法與本算法進(jìn)行比較,文獻(xiàn)[9]對(duì)受蟲洞攻擊情況下的MCL算法(圖中表示為Wormhole-MCL)進(jìn)行改進(jìn),由圖9和圖10仿真結(jié)果可知,文獻(xiàn)[9]算法僅利用了兩跳范圍內(nèi)的錨節(jié)點(diǎn)信息,而LB-MMCL幾乎利用了全網(wǎng)內(nèi)所有的錨節(jié)點(diǎn)信息,因此LB-MMCL比文獻(xiàn)[9]算法的定位精度和定位率在效果及收斂性方面要好得多;同時(shí),LB-MMCL需要在全網(wǎng)內(nèi)洪泛錨節(jié)點(diǎn)信息,增加了網(wǎng)絡(luò)通信量;
圖9 定位誤差隨時(shí)間的變化曲線
蟲洞檢測(cè)時(shí),文獻(xiàn)[9]算法需要計(jì)算上一時(shí)刻所有樣本點(diǎn)與兩跳錨節(jié)點(diǎn)間的距離,此過程帶來的計(jì)算量非常大;本算法為了抵御蟲洞攻擊,需要判斷錨節(jié)點(diǎn)間的距離是否合理,但由于網(wǎng)絡(luò)中錨節(jié)點(diǎn)比例較小,因此該過程計(jì)算量增加也較少;同時(shí),受攻擊的錨節(jié)點(diǎn)向外廣播警報(bào)信息,需要增加網(wǎng)絡(luò)通信量,這個(gè)增加量與受攻擊的錨節(jié)點(diǎn)個(gè)數(shù)成正比;但網(wǎng)絡(luò)中受到較少的蟲洞攻擊時(shí),本算法計(jì)算量的增加還是較少。另一方面,本算法檢測(cè)到蟲洞攻擊后,并不是簡單的丟棄受攻擊節(jié)點(diǎn),而是針對(duì)節(jié)點(diǎn)鄰居關(guān)系,斷開虛假節(jié)點(diǎn),較好的避免了因丟棄節(jié)點(diǎn)造成的網(wǎng)絡(luò)連通度降低的現(xiàn)象,從而獲得較高的定位精度和定位率,文獻(xiàn)[9]算法利用節(jié)點(diǎn)移動(dòng)性檢測(cè)蟲洞,導(dǎo)致算法收斂性低,定位率差。
總而言之,在受蟲洞攻擊時(shí),本算法與文獻(xiàn)[9]算法比,能獲得更好的定位精度和定位率,實(shí)現(xiàn)蟲洞攻擊下的安全定位。
本文總結(jié)了MWSN安全定位技術(shù)的研究現(xiàn)狀,分析了蟲洞攻擊對(duì)MMCL性能的影響,并提出了一種抵御蟲洞的安全移動(dòng)節(jié)點(diǎn)定位算法LBMMCL。本算法根據(jù)距離約束機(jī)制和消息唯一性原則,檢測(cè)節(jié)點(diǎn)鄰居列表中的異常,標(biāo)記并區(qū)分兩個(gè)蟲洞范圍內(nèi)的節(jié)點(diǎn),斷開虛假鏈路以減輕蟲洞攻擊對(duì)錨節(jié)點(diǎn)平均跳距的不利影響,提高定位算法的抗攻擊能力,在不需要額外硬件的基礎(chǔ)上能有效抵御蟲洞攻擊對(duì)MMCL的影響。