張嫻靜
(鄭州工業(yè)應(yīng)用技術(shù)學(xué)院信息工程學(xué)院,鄭州 451150)
隨著信息技術(shù)的發(fā)展以及智能設(shè)備的微型化,物聯(lián)網(wǎng)(InternetofThings,IoT)[1]已在智能交通、智慧農(nóng)業(yè)、康復(fù)醫(yī)療等領(lǐng)域廣泛使用。目前,IoT 通過IEEE802.15.4,6LoWPAN 以及低功率低損耗網(wǎng)絡(luò)路由協(xié)議(Routing Protocol for Low Power and Lossy Network,RPL)[2]技術(shù)手段在實(shí)際應(yīng)用系統(tǒng)中使用。
考慮到能耗、計(jì)算能力、存儲(chǔ)和帶寬限制,多數(shù)IoT 設(shè)備采用IEEE802.15.4 技術(shù)標(biāo)準(zhǔn)以及IPv6 編址標(biāo)準(zhǔn)。不失一般性,典型的6LoWPANIoT 協(xié)議棧常將RPL 作為網(wǎng)絡(luò)層的路由協(xié)議。
RPL 是面向低功耗的IoT 設(shè)備的距離矢量協(xié)議。RPL 利用以BR 為根節(jié)點(diǎn)的優(yōu)化目的節(jié)點(diǎn)為導(dǎo)向的有向無環(huán)圖(Destination Oriented Directed Acyclic Graph,DODAG)處理所有網(wǎng)絡(luò)操作[3]。為了得到最優(yōu)的路由,DODAG 中的每個(gè)節(jié)點(diǎn)必須依據(jù)路由指標(biāo)[4]準(zhǔn)確地選擇它的父節(jié)點(diǎn)。通過目標(biāo)函數(shù)(Objective Function,OF)將路由指標(biāo)轉(zhuǎn)換成節(jié)點(diǎn)的秩值,其反映了節(jié)點(diǎn)離BR 的相對(duì)距離。
此外,為了向BR 傳輸數(shù)據(jù)包,網(wǎng)絡(luò)內(nèi)任何一個(gè)節(jié)點(diǎn)先向它的父節(jié)點(diǎn)發(fā)數(shù)據(jù)包,然后它的父節(jié)點(diǎn)再向它的父節(jié)點(diǎn)傳輸,直到數(shù)據(jù)包傳輸至BR。
由于節(jié)點(diǎn)資源受限以及多跳路由特性,IoT 環(huán)境下的RPL 協(xié)議容量遭受路由攻擊[5]。而黑洞攻擊是RPL 協(xié)議遭受的最典型的拒絕服務(wù)攻擊。攻擊者試圖成為DODAG 活動(dòng)區(qū)域的父節(jié)點(diǎn),進(jìn)而收集更多節(jié)點(diǎn)傳輸?shù)臄?shù)據(jù)包。黑洞攻擊阻礙了BR 對(duì)數(shù)據(jù)包的收集,降低了網(wǎng)絡(luò)內(nèi)數(shù)據(jù)包傳輸率。
目前,研究人員針對(duì)RPL 協(xié)議的黑洞攻擊進(jìn)行了大量的研究,并提出了相應(yīng)的策略。文獻(xiàn)[6-7]提出了基于信任策略。每個(gè)節(jié)點(diǎn)監(jiān)聽鄰居節(jié)點(diǎn)所傳輸?shù)男畔?。而文獻(xiàn)[8-9]對(duì)OF 函數(shù)進(jìn)行修改,并利用信任目標(biāo)函數(shù)進(jìn)行替換。此外,文獻(xiàn)[10]利用ICM Pv6 響應(yīng)機(jī)制檢測選擇性轉(zhuǎn)發(fā)攻擊。
文獻(xiàn)[11]提出了一個(gè)輕量級(jí)的入侵檢測系統(tǒng)SVELTE。通過SVELTE 系統(tǒng)檢測黑洞攻擊。但是該系統(tǒng)存在較高的虛警率。
為此,提出基于投票法的黑洞攻擊檢測(Voting Method-based Blackhole Attack Detection,VMBAD)算法。利用VMBAD 算法排除RPL 協(xié)議上的黑洞攻擊節(jié)點(diǎn),進(jìn)而提高數(shù)據(jù)包傳輸率。仿真結(jié)果表明,VMBAD 算法能夠有效地檢測黑洞攻擊節(jié)點(diǎn)。
除了BR 之外,網(wǎng)絡(luò)內(nèi)每個(gè)葉節(jié)點(diǎn)均有轉(zhuǎn)發(fā)數(shù)據(jù)包的任務(wù)。黑洞節(jié)點(diǎn)試圖通過廣播具有高的路由指標(biāo),進(jìn)而成為網(wǎng)絡(luò)活動(dòng)區(qū)的父節(jié)點(diǎn)。
在DODAG 信息傳輸過程中,黑洞節(jié)點(diǎn)表現(xiàn)正常的行為,但在轉(zhuǎn)發(fā)數(shù)據(jù)包時(shí),黑洞節(jié)點(diǎn)故意地丟棄數(shù)據(jù)包。
RPL 利用消息對(duì)象(DODAG Information Object,DIO)和目標(biāo)廣播消息對(duì)象(DODAG Destination Advertisement Object,DAO)兩類控制消息計(jì)算節(jié)點(diǎn)的秩值。圖1 顯示了DODAG 的信息構(gòu)建過程,其利用信號(hào)的接收信號(hào)強(qiáng)度(Received Signal Strength Indicator,RSSI)計(jì)算節(jié)點(diǎn)的秩值。
圖1 DIO 和DAO 的傳輸過程
最初,節(jié)點(diǎn)N1 廣播DIO 消息,鄰居節(jié)點(diǎn)(N2 和N3)就接收此消息。隨后,節(jié)點(diǎn)N2 和N3 就將節(jié)點(diǎn)N1 作為自己的父節(jié)點(diǎn),并將自己的秩值設(shè)置為2,如圖1(a)所示。同時(shí),向節(jié)點(diǎn)N1 回復(fù)DAO 消息。然后,節(jié)點(diǎn)N1 和N2 也廣播DIO 消息,尋求更多節(jié)點(diǎn)加入DODAG。如圖1(b)所示,重復(fù)上述過程,使每個(gè)節(jié)點(diǎn)都具有自己的秩值。
整個(gè)VMBAD 算法由節(jié)點(diǎn)層次模塊和BR 層次模塊兩部分組成,如下頁圖2 所示。節(jié)點(diǎn)層次模塊主要獲取個(gè)人決策意見,然后傳輸至路徑選擇器,同時(shí),傳輸BR 層,最后由BR 層次模塊判斷黑洞攻擊節(jié)點(diǎn)。
在節(jié)點(diǎn)層次模型中收集鄰居的行為信息。網(wǎng)絡(luò)內(nèi)每個(gè)節(jié)點(diǎn)監(jiān)聽鄰居節(jié)點(diǎn)的行為,相比于看門狗策略,VMBAD 算法通過過濾器模塊構(gòu)建了一個(gè)嫌疑列表,并監(jiān)測網(wǎng)絡(luò)中的節(jié)點(diǎn)。
假定網(wǎng)絡(luò)中良性節(jié)點(diǎn)自行地轉(zhuǎn)發(fā)來自其子節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包。若節(jié)點(diǎn)接收了來自其子節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包,而故意地不轉(zhuǎn)發(fā)該數(shù)據(jù),這類節(jié)點(diǎn)稱為惡意節(jié)點(diǎn),不轉(zhuǎn)發(fā)數(shù)據(jù)包事件稱為惡意事件。當(dāng)屢犯惡意事件的次數(shù)達(dá)到預(yù)設(shè)的閾值,該節(jié)點(diǎn)就稱為黑洞攻擊節(jié)點(diǎn)。
圖2 VMBAD 算法框架
除BR 之外,其他所有節(jié)點(diǎn)都需執(zhí)行局部檢測。一個(gè)局部檢測從RPL 初始階段開始,到檢測到黑洞攻擊節(jié)點(diǎn)結(jié)束。整個(gè)節(jié)點(diǎn)層次模塊主要由以下幾個(gè)單元組成:
2.1.1 過濾器
每個(gè)節(jié)點(diǎn)維持一個(gè)鄰居列表,其包含鄰居節(jié)點(diǎn)和它們相關(guān)的特性。通常,惡意節(jié)點(diǎn)可能虛假地宣稱自己有更好地通達(dá)BR 的路由,進(jìn)而成為父節(jié)點(diǎn),收集更多的信息。
2.1.2 觀察器
表1 給出一個(gè)示例。表1 中的節(jié)點(diǎn)5 接收了8個(gè)數(shù)據(jù)包,其發(fā)送了6 個(gè)數(shù)據(jù)包,而節(jié)點(diǎn)6 接收了8個(gè)數(shù)據(jù)包,但其無發(fā)送數(shù)據(jù)包。相比于節(jié)點(diǎn)6,節(jié)點(diǎn)5 是黑洞攻擊節(jié)點(diǎn)的概率更高。
表1 嫌疑列表
2.1.3 檢測器
記錄了嫌疑節(jié)點(diǎn)所收、發(fā)數(shù)據(jù)包數(shù)后,就計(jì)算收數(shù)據(jù)包數(shù)與發(fā)數(shù)據(jù)包數(shù)的差。如果差值大于預(yù)設(shè)的閾值δ,則認(rèn)為該嫌疑節(jié)點(diǎn)是黑洞攻擊節(jié)點(diǎn),如算法1 所示。
2.1.4 路徑修改單元
檢測階段結(jié)束后,節(jié)點(diǎn)就查看自己的鄰居節(jié)點(diǎn)是否存在黑洞攻擊節(jié)點(diǎn)。如果存在黑洞攻擊節(jié)點(diǎn),就對(duì)RPL 路由協(xié)議進(jìn)行修改,避開黑洞攻擊節(jié)點(diǎn)。
算法1:
并且向BR 通知,黑洞攻擊節(jié)點(diǎn)的信息。
BR 層次模塊是由BR 完成。當(dāng)BR 收集了來自不同節(jié)點(diǎn)上報(bào)的黑洞攻擊節(jié)點(diǎn)的意見后,它需要做出最終決策。
首先分兩種情況討論嫌疑節(jié)點(diǎn)行為以及觀察節(jié)點(diǎn)(嫌疑節(jié)點(diǎn)的鄰居節(jié)點(diǎn))的行為。Case1:節(jié)點(diǎn)可能執(zhí)行正?;驉阂庑袨?;Case2:觀察節(jié)點(diǎn)是否如實(shí)地向BR 節(jié)點(diǎn)匯報(bào)自己決策意見。
在Case1 情況中,節(jié)點(diǎn)實(shí)施惡意行為的概率為0.5。而在Case2 情況,觀察節(jié)點(diǎn)向BR 報(bào)告虛假信息的概率也為0.5。因此,認(rèn)為如果嫌疑節(jié)點(diǎn)實(shí)施了惡意行為,觀察節(jié)點(diǎn)可能不真實(shí)地向BR 匯報(bào)。據(jù)此,節(jié)點(diǎn)實(shí)施惡意行為和觀察節(jié)點(diǎn)向BR 不真實(shí)地匯報(bào)信息的概率均為0.5×0.5=0.25。
2.2.1 投票法概述
2.2.2 基于改進(jìn)的投票法的攻擊檢測算法
簡單投票法是基于“完全公平”的思想,并沒有考慮各個(gè)投票者的準(zhǔn)確性[13]。為此,VMBAD 算法對(duì)簡單的投票法進(jìn)行改進(jìn),提出基于距離優(yōu)化的投票法。
圖3 距離歸一化處理示意圖
一旦確定了最終的決策意見,BR 形成黑洞攻擊節(jié)點(diǎn)列表bt就在全網(wǎng)內(nèi)進(jìn)行通報(bào),致使黑洞攻擊節(jié)點(diǎn)與網(wǎng)絡(luò)隔離。
BR 將黑洞攻擊節(jié)點(diǎn)bt 插入DIO 消息中,在網(wǎng)絡(luò)廣播。表2 給出了典型的DIO 數(shù)據(jù)包格式。DIO數(shù)據(jù)包中有兩個(gè)8 bit 域(Flags 段和Reserved 段),它們目前還未使用。為此,VMBAD 算法選用Flags段表述黑洞攻擊節(jié)點(diǎn)的ID 號(hào)。一旦收到DIO 消息,就從中提出黑洞攻擊的ID,并將此節(jié)點(diǎn)加入黑洞攻擊列表。
表2 DIO 消息格式
利用Contiki3.0[14]操作系統(tǒng)和Cooja[15]仿真器建立仿真平臺(tái)。在區(qū)域內(nèi)部署20~50 個(gè)節(jié)點(diǎn)。所有節(jié)點(diǎn)為靜態(tài)節(jié)點(diǎn)。所有節(jié)點(diǎn)引用有向無線媒介(Directed Graph Radio Medium,DGRM),因此,節(jié)點(diǎn)能夠設(shè)置RSSI 值,具體的仿真參數(shù)如表3 所示。
表3 仿真參數(shù)
引用數(shù)據(jù)包傳遞率作為性能指標(biāo),數(shù)據(jù)包傳遞率等于BR 所接收的數(shù)據(jù)包數(shù)與網(wǎng)絡(luò)內(nèi)節(jié)點(diǎn)所產(chǎn)生的數(shù)據(jù)包總數(shù)之比。
3.2.1 實(shí)驗(yàn)1
本次實(shí)驗(yàn)分析惡意節(jié)點(diǎn)數(shù)對(duì)數(shù)據(jù)包傳遞率的影響。如下頁圖4 所示,圖4 分別顯示了節(jié)點(diǎn)數(shù)為20、30、40 和50 四類情況。
從圖4 可知,節(jié)點(diǎn)密度的增加使數(shù)據(jù)包傳遞率總體呈下降趨勢。例如,對(duì)比圖4(a)和4(d)不難發(fā)現(xiàn),在10%黑洞攻擊節(jié)點(diǎn)條件下,20 個(gè)節(jié)點(diǎn)的環(huán)境下(圖4(a))的數(shù)據(jù)包傳遞率高于50 個(gè)節(jié)點(diǎn)環(huán)境(圖4(d))。原因在于:節(jié)點(diǎn)數(shù)越多,密度越大,數(shù)據(jù)包間的傳輸干擾越大,網(wǎng)絡(luò)擁塞越嚴(yán)重,進(jìn)而降低了數(shù)據(jù)包傳輸。
此外,圖4 還顯示了沒有惡意節(jié)點(diǎn)的攻擊、攻擊消除后以及存在攻擊3 種情況下的數(shù)據(jù)包傳遞率。從這3 種情況下的數(shù)據(jù)包傳遞率數(shù)據(jù)可知,存在攻擊下的數(shù)據(jù)包傳遞率最低,而經(jīng)過攻擊檢測消除后,數(shù)據(jù)包傳遞率得到有效提升。例如,在圖4(d)中,當(dāng)50%的惡意節(jié)點(diǎn)時(shí),存在攻擊環(huán)境下的數(shù)據(jù)包傳遞率只有72%。經(jīng)攻擊消除后,數(shù)據(jù)包傳遞率提升至約86%。這也說明,通過檢測黑洞攻擊節(jié)點(diǎn),并將其隔離,能夠有效地提升數(shù)據(jù)包傳遞率。
圖4 攻擊節(jié)點(diǎn)對(duì)數(shù)據(jù)包傳遞率的影響
3.2.2 實(shí)驗(yàn)2
本次實(shí)驗(yàn)分析對(duì)黑洞攻擊節(jié)點(diǎn)的檢測率。檢測率等于所檢測到的黑洞攻擊節(jié)點(diǎn)與總的黑洞攻擊節(jié)點(diǎn)之比。
從圖5 可知,提出的VMBAD 算法能夠有效地檢測黑洞攻擊節(jié)點(diǎn)。當(dāng)有50%的黑洞攻擊節(jié)點(diǎn)時(shí),對(duì)黑洞攻擊節(jié)點(diǎn)的檢測率達(dá)到90%以上。此外,觀察圖5 可知,節(jié)點(diǎn)數(shù)越多,檢測率越大。原因在于:黑洞攻擊節(jié)點(diǎn)越多,更容易發(fā)現(xiàn)攻擊節(jié)點(diǎn)。
圖5 對(duì)黑洞攻擊節(jié)點(diǎn)的檢測率
針對(duì)RPL 協(xié)議的黑洞攻擊節(jié)點(diǎn)問題,提出基于投票檢測黑洞攻擊節(jié)點(diǎn)算法。先通過觀察鄰居節(jié)點(diǎn)的行為,再構(gòu)建嫌疑節(jié)點(diǎn)列表,并利用投票法進(jìn)一步判斷嫌疑節(jié)點(diǎn)是否為黑洞攻擊節(jié)點(diǎn)。仿真結(jié)果表明,通過排除黑洞攻擊節(jié)點(diǎn),提高了數(shù)據(jù)包傳遞率。
VMBAD 算法是利用節(jié)點(diǎn)捕獲RSSI 值為依據(jù),并利用改進(jìn)的投票法進(jìn)行黑洞攻擊檢測。不容忽視的是:RSSI 值容易受到外界環(huán)境的影響。然而,VMBAD 算法是通過比較鄰居節(jié)點(diǎn)的RSSI 值進(jìn)行檢測黑洞攻擊。盡管RSSI 值受到外界影響,但是處于同一區(qū)域的鄰居節(jié)點(diǎn)的RSSI 值所受的影響可能是相同的。
后期,將進(jìn)一步分析RSSI 值的精度對(duì)檢測性能的影響,這將是后期的研究工作方向。