摘 要: 在分析現(xiàn)有報(bào)文丟棄攻擊檢測(cè)算法的基礎(chǔ)上,提出了一種基于簇首協(xié)作的報(bào)文丟棄攻擊全局感知方案,利用IDS簇首協(xié)同監(jiān)視節(jié)點(diǎn)報(bào)文收發(fā)狀態(tài),改進(jìn)現(xiàn)有算法的監(jiān)測(cè)方式和節(jié)點(diǎn)狀態(tài)判定算法。仿真結(jié)果表明,該算法具有良好的檢測(cè)率和誤檢率,在規(guī)避網(wǎng)絡(luò)中的惡意節(jié)點(diǎn)以及維護(hù)網(wǎng)絡(luò)正常吞吐量等方面具有較好的性能。
關(guān)鍵詞: 移動(dòng)自組織網(wǎng)絡(luò);丟棄攻擊;惡意節(jié)點(diǎn)檢測(cè);入侵檢測(cè)系統(tǒng)
移動(dòng)自組織網(wǎng)絡(luò)MANET(Mobile Ad Hoc Networks)由眾多節(jié)點(diǎn)以自組織的方式組成,網(wǎng)絡(luò)中不存在中心控制節(jié)點(diǎn),較遠(yuǎn)距離節(jié)點(diǎn)間以多跳的方式進(jìn)行通信。然而,在大規(guī)模無(wú)線自組織網(wǎng)絡(luò)中,部分節(jié)點(diǎn)為了保護(hù)自身較少的資源,可能不轉(zhuǎn)發(fā)其他節(jié)點(diǎn)請(qǐng)求轉(zhuǎn)發(fā)的數(shù)據(jù)包,產(chǎn)生自私節(jié)點(diǎn)問(wèn)題[1],特別場(chǎng)景下(如戰(zhàn)爭(zhēng)環(huán)境)合法節(jié)點(diǎn)被攻陷后將成為惡意節(jié)點(diǎn)。
在數(shù)據(jù)報(bào)文傳輸過(guò)程中,自私節(jié)點(diǎn)和惡意節(jié)點(diǎn)可以故意隨機(jī)丟棄部分需要自身轉(zhuǎn)發(fā)的數(shù)據(jù)報(bào)文來(lái)對(duì)網(wǎng)絡(luò)通信實(shí)施破壞,這就是內(nèi)部節(jié)點(diǎn)丟棄報(bào)文攻擊,它導(dǎo)致網(wǎng)絡(luò)吞吐率下降、報(bào)文重傳率增高,嚴(yán)重時(shí)會(huì)造成網(wǎng)絡(luò)報(bào)文傳輸無(wú)法進(jìn)行。然而,由于無(wú)線自組織網(wǎng)絡(luò)中節(jié)點(diǎn)性質(zhì)的不確定性,現(xiàn)有的適用于Ad Hoc網(wǎng)絡(luò)的路由協(xié)議無(wú)法應(yīng)對(duì)這種在網(wǎng)絡(luò)層發(fā)起的攻擊。報(bào)文丟棄攻擊難以檢測(cè)和防范,嚴(yán)重影響到了無(wú)線自組織網(wǎng)絡(luò)的通信性能和實(shí)際應(yīng)用。
目前,針對(duì)報(bào)文丟棄攻擊的研究多數(shù)集中在基于鄰居節(jié)點(diǎn)監(jiān)測(cè)方法[2]對(duì)現(xiàn)有路由協(xié)議(如DSR)的改進(jìn),希望構(gòu)造一個(gè)安全的路由協(xié)議或模型來(lái)抵抗攻擊。然而,鄰居節(jié)點(diǎn)監(jiān)測(cè)算法本身存在一些局限性,此類方案增加了MANET網(wǎng)絡(luò)路由協(xié)議的復(fù)雜度,監(jiān)測(cè)效果卻不理想。
本文在分析現(xiàn)有解決方案的基礎(chǔ)上,提出了一種基于簇首協(xié)作的報(bào)文丟棄攻擊全局感知算法,在MANET入侵檢測(cè)系統(tǒng)中利用分簇IDS的簇首節(jié)點(diǎn)協(xié)作進(jìn)行全局監(jiān)測(cè)。該方案將安全檢測(cè)從路由協(xié)議中獨(dú)立出來(lái),由IDS來(lái)實(shí)現(xiàn)報(bào)文丟棄攻擊的檢測(cè),簡(jiǎn)化了Ad Hoc路由協(xié)議的設(shè)計(jì),同時(shí)彌補(bǔ)了鄰居節(jié)點(diǎn)監(jiān)測(cè)算法的不足,在報(bào)文丟棄攻擊的檢測(cè)率、誤報(bào)率和檢測(cè)響應(yīng)速率方面有較好的性能。
1 鄰居節(jié)點(diǎn)檢測(cè)算法分析
1.1 報(bào)文丟棄攻擊相關(guān)研究
為對(duì)抗內(nèi)部節(jié)點(diǎn)在網(wǎng)絡(luò)層發(fā)起的報(bào)文丟棄攻擊,MARTI S等人提出了Watchdog算法[3],節(jié)點(diǎn)在混雜模式下工作,當(dāng)節(jié)點(diǎn)把報(bào)文轉(zhuǎn)發(fā)給下一跳節(jié)點(diǎn)后,利用無(wú)線信號(hào)暴露在空中的特性來(lái)監(jiān)聽(tīng)下一跳節(jié)點(diǎn)是否繼續(xù)轉(zhuǎn)發(fā)該報(bào)文。LEE S和CHOI Y采用了類似Watchdog的鄰居節(jié)點(diǎn)監(jiān)測(cè)系統(tǒng)(NWS)來(lái)獲取鄰居節(jié)點(diǎn)的報(bào)文狀況,但是局部管理的方法增加了節(jié)點(diǎn)能量耗費(fèi),降低了網(wǎng)絡(luò)帶寬使用效率。參考文獻(xiàn)[4]中提出兩種不合作的節(jié)點(diǎn)形式,并提出用CCS中央控制系統(tǒng)給每個(gè)節(jié)點(diǎn)分配信用值,如果節(jié)點(diǎn)A為節(jié)點(diǎn)B轉(zhuǎn)發(fā)了到目的節(jié)點(diǎn)D數(shù)據(jù)報(bào),則D要給A一些信用幣,哪個(gè)節(jié)點(diǎn)用完了信用,可以向CCS要求補(bǔ)充。由于每次都是目的節(jié)點(diǎn)支付信用幣,這就為DOS攻擊提供了方便。參考文獻(xiàn)[5]希望利用有限自動(dòng)機(jī)構(gòu)造自組網(wǎng)的入侵檢測(cè)算法,此方案能夠監(jiān)測(cè)節(jié)點(diǎn)發(fā)送的報(bào)文,但在如何監(jiān)測(cè)節(jié)點(diǎn)收到的報(bào)文方面沒(méi)有給出有效的解決方法。
1.2 鄰居節(jié)點(diǎn)監(jiān)測(cè)算法介紹
上述研究大多以鄰居節(jié)點(diǎn)監(jiān)測(cè)算法為基礎(chǔ)對(duì)節(jié)點(diǎn)的收發(fā)報(bào)文情況進(jìn)行監(jiān)聽(tīng),從而達(dá)到判斷入侵節(jié)點(diǎn)的目的。當(dāng)一個(gè)節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)時(shí),鄰居監(jiān)測(cè)系統(tǒng)會(huì)確認(rèn)路由的下一跳節(jié)點(diǎn)是否轉(zhuǎn)發(fā)了該報(bào)文。鄰居監(jiān)測(cè)系統(tǒng)監(jiān)聽(tīng)下一跳節(jié)點(diǎn)采取的行為,并依此判斷下一跳節(jié)點(diǎn)是否有惡意行為。
如圖1所示,假設(shè)S到D有通路,中間節(jié)點(diǎn)為A、B、C,節(jié)點(diǎn)A不能直接和C通信,但A可以監(jiān)聽(tīng)到B發(fā)送的報(bào)文。A可以辨認(rèn)B是否轉(zhuǎn)發(fā)了報(bào)文。A緩存下剛發(fā)送的數(shù)據(jù)報(bào),和監(jiān)聽(tīng)到的B轉(zhuǎn)發(fā)的數(shù)據(jù)報(bào)比較,看是否一致。如果一致,表明此數(shù)據(jù)報(bào)已經(jīng)發(fā)送,A移除緩存的數(shù)據(jù)報(bào),這一過(guò)程結(jié)束;如果不一致,表明B有篡改信息的惡意行為;如果數(shù)據(jù)報(bào)在緩存區(qū)保留的時(shí)間超過(guò)一個(gè)門限,則認(rèn)為B沒(méi)有正常工作。對(duì)于后兩種情況,A會(huì)給這個(gè)沒(méi)有盡責(zé)的節(jié)點(diǎn)記過(guò)。如果B被記過(guò)的次數(shù)超過(guò)一個(gè)門限值,A確定此節(jié)點(diǎn)有惡意行為,它向源節(jié)點(diǎn)S發(fā)送路由出錯(cuò)報(bào)文(RRER)通知B是惡意節(jié)點(diǎn)。在從A回到S節(jié)點(diǎn)過(guò)程中,路由到的節(jié)點(diǎn)都會(huì)記錄下B是惡意節(jié)點(diǎn),在以后的路由選擇過(guò)程中會(huì)將B節(jié)點(diǎn)從路由鏈路中排除。
1.3 鄰居節(jié)點(diǎn)監(jiān)測(cè)算法的缺陷
鄰居節(jié)點(diǎn)算法利用無(wú)線網(wǎng)絡(luò)信號(hào)暴露在空間中而且信號(hào)多向傳播的特性來(lái)實(shí)現(xiàn)對(duì)鄰居節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)的監(jiān)測(cè),然而這種方法卻存在以下的局限性:
(1)鄰居監(jiān)測(cè)系統(tǒng)需要每個(gè)節(jié)點(diǎn)監(jiān)督其鄰居節(jié)點(diǎn),并緩存有用的狀態(tài)信息,要求節(jié)點(diǎn)的存儲(chǔ)和計(jì)算功能得到加強(qiáng)。而且由于每個(gè)節(jié)點(diǎn)均被其所有鄰居節(jié)點(diǎn)監(jiān)視,導(dǎo)致監(jiān)測(cè)信息存在大量冗余,浪費(fèi)了節(jié)點(diǎn)電池能量和計(jì)算資源。
(2)節(jié)點(diǎn)A只能孤立地監(jiān)測(cè)其鄰居節(jié)點(diǎn)的轉(zhuǎn)發(fā)報(bào)文狀態(tài),并根據(jù)自身的監(jiān)測(cè)記錄判斷鄰居節(jié)點(diǎn)B是否有惡意丟包行為,不能綜合B的其他鄰居節(jié)點(diǎn)(如C)對(duì)節(jié)點(diǎn)B的監(jiān)測(cè)結(jié)果。因此,這種判斷帶有很大的片面性,容易得出錯(cuò)誤的監(jiān)測(cè)結(jié)論。
(3)惡意節(jié)點(diǎn)可以把無(wú)辜節(jié)點(diǎn)作為惡意節(jié)點(diǎn)放在RRER數(shù)據(jù)報(bào)中,發(fā)送給源節(jié)點(diǎn)S,比如,節(jié)點(diǎn)A可以向S打虛假報(bào)告B沒(méi)有轉(zhuǎn)發(fā)報(bào)文,使S認(rèn)為B是惡意節(jié)點(diǎn),這個(gè)問(wèn)題的發(fā)現(xiàn)就需要依賴消息正常發(fā)送到D,節(jié)點(diǎn)D反饋消息給S,則S會(huì)認(rèn)為路由是正常的。如果在消息給B傳遞后未能到達(dá)目的節(jié)點(diǎn)D,或者D的反饋消息沒(méi)有正常到達(dá)A,則節(jié)點(diǎn)B就會(huì)被當(dāng)作惡意節(jié)點(diǎn),從而造成誤報(bào),本文稱這種攻擊為虛假丟報(bào)文丟棄攻擊。
2 報(bào)文丟棄攻擊全局感知方案
2.1 分簇IDS
移動(dòng)自組網(wǎng)的組網(wǎng)特點(diǎn)決定了相應(yīng)的入侵檢測(cè)系統(tǒng)必須要采取分簇架構(gòu)。分簇結(jié)構(gòu)IDS典型層次如圖2所示,整個(gè)MANET系統(tǒng)以簇為單位分成多IDS簇,每個(gè)簇選出簇頭,IDS功能模塊按需要置于簇頭或簇成員節(jié)點(diǎn)上。
在鄰居節(jié)點(diǎn)檢測(cè)算法中,每個(gè)節(jié)點(diǎn)都監(jiān)測(cè)其鄰居節(jié)點(diǎn)的行為,產(chǎn)生大量冗余監(jiān)測(cè)信息,耗費(fèi)了節(jié)點(diǎn)資源。本文提出基于簇首的監(jiān)測(cè)模式,即整個(gè)網(wǎng)絡(luò)劃分為簇,每個(gè)區(qū)域選出一個(gè)簇頭作為監(jiān)視節(jié)點(diǎn),負(fù)責(zé)整個(gè)區(qū)域的入侵檢測(cè)。該簇頭收集整個(gè)區(qū)域內(nèi)節(jié)點(diǎn)的行為信息,并按檢測(cè)算法進(jìn)行分析,確定入侵行為。IDS簇首節(jié)點(diǎn)周期性地廣播告示報(bào)文,以維持簇首監(jiān)測(cè)節(jié)點(diǎn)的地位。簇首節(jié)點(diǎn)服務(wù)時(shí)間到了后,就重新啟動(dòng)一個(gè)新的選舉過(guò)程。為了保證公平和隨機(jī)性,防止惡意節(jié)點(diǎn)一直占據(jù)簇首位置,發(fā)動(dòng)虛假報(bào)文丟棄攻擊,IDS分簇算法要求上一分簇周期的簇首節(jié)點(diǎn)將不能參加下一周期簇首節(jié)點(diǎn)的選舉,除非整個(gè)區(qū)域只有一個(gè)節(jié)點(diǎn)存在。
2.2 簇首節(jié)點(diǎn)協(xié)作實(shí)現(xiàn)監(jiān)測(cè)節(jié)點(diǎn)報(bào)文收發(fā)狀態(tài)
不同于傳統(tǒng)有線網(wǎng)絡(luò)中的IDS,MANET中的簇首節(jié)點(diǎn)并不能像在有線網(wǎng)絡(luò)中那樣監(jiān)測(cè)到節(jié)點(diǎn)的報(bào)文收發(fā)狀態(tài)。由于無(wú)線網(wǎng)絡(luò)的傳播特性,分簇結(jié)構(gòu)IDS中的簇首節(jié)點(diǎn)只能監(jiān)測(cè)到其簇成員節(jié)點(diǎn)發(fā)送的報(bào)文,而對(duì)于簇成員接收到的數(shù)據(jù)包只能部分監(jiān)測(cè)到,因此,在應(yīng)對(duì)報(bào)文丟棄攻擊之類的被動(dòng)攻擊時(shí)顯得無(wú)能為力。圖2中,節(jié)點(diǎn)C、E為簇首,節(jié)點(diǎn)A、S為C的簇成員,節(jié)點(diǎn)B、D為E的簇成員。簇首節(jié)點(diǎn)E只能監(jiān)測(cè)到節(jié)點(diǎn)B發(fā)送了數(shù)據(jù)包,如果節(jié)點(diǎn)A轉(zhuǎn)發(fā)給B一個(gè)數(shù)據(jù)包,并要求B轉(zhuǎn)發(fā)給D,如果節(jié)點(diǎn)B此時(shí)發(fā)動(dòng)報(bào)文丟棄攻擊,這時(shí),簇首節(jié)點(diǎn)E并不能監(jiān)測(cè)到B接收了這樣一個(gè)數(shù)據(jù)包,因此,并不能發(fā)現(xiàn)B丟棄了應(yīng)轉(zhuǎn)發(fā)給節(jié)點(diǎn)D的數(shù)據(jù)包。
為了解決這個(gè)缺陷,本文提出了基于簇首協(xié)作監(jiān)測(cè)的方案,利用各簇首節(jié)點(diǎn)間相互通信協(xié)作檢測(cè)的方法實(shí)現(xiàn)對(duì)報(bào)文丟棄攻擊的檢測(cè)。圖2中,雖然節(jié)點(diǎn)E不能夠監(jiān)測(cè)到B應(yīng)該轉(zhuǎn)發(fā)一個(gè)數(shù)據(jù)包,但節(jié)點(diǎn)A在給B轉(zhuǎn)發(fā)數(shù)據(jù)包時(shí),節(jié)點(diǎn)A的簇首節(jié)點(diǎn)C能夠監(jiān)測(cè)到節(jié)點(diǎn)A給節(jié)點(diǎn)B轉(zhuǎn)發(fā)了數(shù)據(jù)包,并通過(guò)查詢數(shù)據(jù)包中下一跳路由信息得知B接收了這個(gè)數(shù)據(jù)報(bào)并應(yīng)該轉(zhuǎn)發(fā)該數(shù)據(jù)包給D,如果E和C進(jìn)行通信,交換彼此監(jiān)測(cè)信息,節(jié)點(diǎn)B的簇首節(jié)點(diǎn)E就能夠借助和C交換的消息來(lái)全面監(jiān)測(cè)節(jié)點(diǎn)B應(yīng)發(fā)的數(shù)據(jù)報(bào)和已發(fā)數(shù)據(jù)報(bào)狀態(tài)。下面利用這一方法給出詳細(xì)解決方案。
2.3 基于簇首協(xié)作的報(bào)文丟棄攻擊全局感知方案
首先,為了監(jiān)測(cè)節(jié)點(diǎn)收發(fā)報(bào)文狀態(tài),各IDS簇首節(jié)點(diǎn)需要為網(wǎng)絡(luò)中所有節(jié)點(diǎn)維護(hù)一個(gè)數(shù)據(jù)結(jié)構(gòu),記錄各節(jié)點(diǎn)收到報(bào)文的數(shù)量和發(fā)送報(bào)文的數(shù)量。數(shù)據(jù)結(jié)構(gòu)定義偽碼表示如下:
typedef struct {Long Receive; Long Send;} Record;其中,Record表示此數(shù)據(jù)結(jié)構(gòu),下文簡(jiǎn)記為Recd;Send表示監(jiān)聽(tīng)到節(jié)點(diǎn)轉(zhuǎn)發(fā)一個(gè)數(shù)據(jù)報(bào)文;Receive表示根據(jù)監(jiān)聽(tīng)到的報(bào)文中的路由信息,該數(shù)據(jù)報(bào)文下一跳節(jié)點(diǎn)應(yīng)該轉(zhuǎn)發(fā)此數(shù)據(jù)報(bào)文,其值為負(fù),下文簡(jiǎn)記為Rece。
假設(shè)S到D有通路,中間節(jié)點(diǎn)為A、B,此時(shí)節(jié)點(diǎn)S轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文到A,因?yàn)楣?jié)點(diǎn)S處于簇首C的簇內(nèi),C能夠監(jiān)聽(tīng)到節(jié)點(diǎn)S轉(zhuǎn)發(fā)了一個(gè)數(shù)據(jù)報(bào)文,同時(shí),從該數(shù)據(jù)報(bào)文路由信處表中查得一下跳地址為節(jié)點(diǎn)A,則執(zhí)行操作S.Recd.Send+1和A.Recd.Rece-1,表示節(jié)點(diǎn)A需要轉(zhuǎn)發(fā)一個(gè)數(shù)據(jù)報(bào)文。如果節(jié)點(diǎn)A也正常轉(zhuǎn)發(fā)了該數(shù)據(jù)報(bào)文,其簇首節(jié)點(diǎn)C會(huì)監(jiān)聽(tīng)到該數(shù)據(jù)報(bào)文,執(zhí)行操作A.Recd.Send+1和B.Recd.Rece-1。節(jié)點(diǎn)B并不在簇首C的監(jiān)控范圍內(nèi),但如果節(jié)點(diǎn)B正常轉(zhuǎn)發(fā)此數(shù)據(jù)報(bào)文到節(jié)點(diǎn)D,則其簇首節(jié)點(diǎn)E會(huì)監(jiān)聽(tīng)到該數(shù)據(jù)報(bào)文并執(zhí)行操作B.Recd.Send+1和C.Recd.Rece-1。
在MANET網(wǎng)絡(luò)中,各簇首節(jié)點(diǎn)在監(jiān)測(cè)周期結(jié)束時(shí)多播Hello消息,彼此交換監(jiān)測(cè)的簇內(nèi)節(jié)點(diǎn)報(bào)文轉(zhuǎn)發(fā)狀態(tài)表,其中,服務(wù)周期的長(zhǎng)短由系統(tǒng)根據(jù)需要設(shè)定。通過(guò)檢測(cè)算法就可以對(duì)網(wǎng)絡(luò)中是否存在報(bào)文攻擊及惡意節(jié)點(diǎn)號(hào)做出檢測(cè)。
2.4 報(bào)文丟棄攻擊全局感知算法詳細(xì)實(shí)現(xiàn)
設(shè)網(wǎng)絡(luò)中共有m個(gè)IDS簇頭,分別記為H1、H2、…、Hm。則經(jīng)過(guò)一個(gè)Hello周期交換后,節(jié)點(diǎn)i應(yīng)發(fā)送數(shù)據(jù)包數(shù)為-■Xk.I.Recd.Rece,已發(fā)送的報(bào)文總數(shù)為-■Xk.I.Recd.Rece。則節(jié)點(diǎn)i的報(bào)文轉(zhuǎn)發(fā)率可以表示為:
2.5 惡意丟棄報(bào)文節(jié)點(diǎn)判定
本方案采用狄克遜準(zhǔn)則對(duì)惡意節(jié)點(diǎn)進(jìn)行判定。狄克遜準(zhǔn)則是通過(guò)極差比判定和剔除異常數(shù)據(jù)。與一般比較簡(jiǎn)單的極差方法不同,該準(zhǔn)則為了提高判斷效率,對(duì)不同的實(shí)驗(yàn)量測(cè)定數(shù)應(yīng)用不同的極差比進(jìn)行計(jì)算。該準(zhǔn)則認(rèn)為異常數(shù)據(jù)應(yīng)該是最大數(shù)據(jù)和最小數(shù)據(jù),因此其基本方法是將數(shù)據(jù)按大小排隊(duì),檢驗(yàn)最大數(shù)據(jù)和最小數(shù)據(jù)是否是異常數(shù)據(jù)。
依式(4)分別計(jì)算各節(jié)點(diǎn)的Status值,從小到大排列為Status(1),≤Status(2),……≤Status(n),因?yàn)閬G包率大的節(jié)點(diǎn)才有可能是惡意節(jié)點(diǎn),所以這里舍棄最小值,僅取最大值,應(yīng)用狄克遜準(zhǔn)則進(jìn)行節(jié)點(diǎn)類型進(jìn)行判定。如果f0>f(n,α)就可以判定該值所對(duì)應(yīng)節(jié)點(diǎn)為可疑節(jié)點(diǎn)。f(n,α)可以查表獲得,其中n是節(jié)點(diǎn)個(gè)數(shù),α為檢驗(yàn)水平,根據(jù)檢測(cè)精度需要可以取0.01或是0.05。fo的計(jì)算如下:
為防止惡意簇首節(jié)點(diǎn)發(fā)送虛假報(bào)文丟棄通告對(duì)正常節(jié)點(diǎn)進(jìn)行攻擊,節(jié)點(diǎn)i連續(xù)在兩個(gè)系統(tǒng)監(jiān)測(cè)周期內(nèi)都被判定為可疑節(jié)點(diǎn)后,系統(tǒng)即判定該節(jié)點(diǎn)為惡意節(jié)點(diǎn),發(fā)出告警并通過(guò)Hello消息廣播將該節(jié)點(diǎn)隔離出網(wǎng)絡(luò)后,重新進(jìn)行報(bào)文丟棄惡意節(jié)點(diǎn)檢測(cè)。
如果簇首節(jié)點(diǎn)j在自己的監(jiān)測(cè)周期內(nèi)發(fā)動(dòng)虛假報(bào)文丟棄攻擊,使正常節(jié)點(diǎn)i在該監(jiān)測(cè)周期內(nèi)被判定為可疑節(jié)點(diǎn),但下一監(jiān)測(cè)周期中,由于更改了IDS簇頭,節(jié)點(diǎn)i將不再被判定為可疑節(jié)點(diǎn),則系統(tǒng)記錄節(jié)點(diǎn)j為可疑節(jié)點(diǎn),認(rèn)為j在自己的監(jiān)測(cè)周期內(nèi)可能發(fā)動(dòng)了虛假報(bào)文丟棄攻擊,如果在節(jié)點(diǎn)j再次當(dāng)選為IDS簇首周期內(nèi),再次有發(fā)送虛假報(bào)文丟棄攻擊嫌疑,則系統(tǒng)認(rèn)為節(jié)點(diǎn)j為惡意節(jié)點(diǎn),發(fā)出告警并通過(guò)Hello消息廣播將該節(jié)點(diǎn)隔離出網(wǎng)絡(luò)。
為便于算法實(shí)現(xiàn),需要定義節(jié)點(diǎn)狀態(tài)數(shù)據(jù)結(jié)構(gòu):
tepydef struct{
Bool Drop;//上一監(jiān)測(cè)周期節(jié)點(diǎn)狀態(tài)判定結(jié)果
Bool LastDrop;//上一監(jiān)測(cè)周期節(jié)點(diǎn)狀態(tài)判定結(jié)果
Bool Cheat;//簇首節(jié)點(diǎn)虛假報(bào)文丟棄攻擊嫌疑
}Node;
算法偽碼表示如下:當(dāng)系統(tǒng)一個(gè)監(jiān)測(cè)周期結(jié)束后,對(duì)每個(gè)節(jié)點(diǎn)執(zhí)行如下算法,設(shè)節(jié)點(diǎn)i的上一周期IDS簇首節(jié)點(diǎn)為j。
while(true)//系統(tǒng)按周期循環(huán)監(jiān)測(cè)
{
if (node.Drop)//被判定為可疑報(bào)文丟棄節(jié)點(diǎn)
if(node.LastDrop)//上一周期也是可疑結(jié)點(diǎn)
{Alarm(node);//報(bào)警并隔離節(jié)點(diǎn),
next;
}//進(jìn)入下一周期
else node.LastDrop = true;//記錄node為可疑節(jié)點(diǎn)
else//node未被判定為可疑節(jié)點(diǎn)
if(i.LastDrop)//上一周期是可疑節(jié)點(diǎn)
if(j.Cheat)//如果j已是可疑節(jié)點(diǎn)
{Alarm(j);//報(bào)警并隔離節(jié)點(diǎn)j,
netxt;
}//進(jìn)入下一周期
else
{ j.Cheat = true;//記錄j可疑節(jié)點(diǎn)
node.LastDrop = false;//節(jié)點(diǎn)node取消懷疑
}
}
3 實(shí)驗(yàn)與性能分析
本文使用Qualnet[6]作為模擬仿真實(shí)驗(yàn)平臺(tái)。在2 000×2 000的區(qū)域內(nèi)隨機(jī)布置100個(gè)節(jié)點(diǎn)。仿真時(shí)間為1 000 s,節(jié)點(diǎn)使用Random Waypoint移動(dòng)模型,以0~ 20 m/s的速度運(yùn)動(dòng)。通信模型采用CBR(Continuous Bit Rat)流,CBR流大小為512 B。每秒鐘發(fā)10個(gè)數(shù)據(jù)包, 從源節(jié)點(diǎn)到目的節(jié)點(diǎn)有不間斷的數(shù)據(jù)包發(fā)送,網(wǎng)絡(luò)層采用AODV路由協(xié)議,實(shí)驗(yàn)中采用不同數(shù)量的惡意節(jié)點(diǎn)發(fā)動(dòng)報(bào)文丟棄攻擊和虛假報(bào)文丟棄攻擊。影響仿真結(jié)果的因素很多,主要是環(huán)境的設(shè)置,如節(jié)點(diǎn)間發(fā)報(bào)的速率、節(jié)點(diǎn)移動(dòng)速度、IDS簇首監(jiān)測(cè)周期大小、節(jié)點(diǎn)活動(dòng)的范圍。
評(píng)價(jià)算法性能的主要指標(biāo)是惡意節(jié)點(diǎn)的檢測(cè)率和惡意節(jié)點(diǎn)的誤檢率。檢測(cè)率是指被檢測(cè)出來(lái)的惡意節(jié)點(diǎn)個(gè)數(shù)占網(wǎng)絡(luò)中實(shí)際的全部惡意節(jié)點(diǎn)個(gè)數(shù)的比例。誤檢率是指正常節(jié)點(diǎn)被誤檢為惡意節(jié)點(diǎn)的個(gè)數(shù)占整個(gè)網(wǎng)絡(luò)中正常節(jié)點(diǎn)的比例。對(duì)檢測(cè)率和誤檢率各做10次實(shí)驗(yàn),然后取平均值。
圖4表示了不同惡意節(jié)點(diǎn)數(shù)量下,全局感知算法的檢測(cè)率。無(wú)論是否存在虛假報(bào)文丟棄攻擊,算法對(duì)惡意節(jié)點(diǎn)的檢測(cè)率均隨著惡意節(jié)點(diǎn)在網(wǎng)絡(luò)中所占比例的增加有所下降,因?yàn)閻阂夤?jié)點(diǎn)的增加導(dǎo)致了網(wǎng)絡(luò)中節(jié)點(diǎn)報(bào)文轉(zhuǎn)發(fā)率的異常數(shù)據(jù)增多,干擾了統(tǒng)計(jì)分析過(guò)程。圖5表示了不同惡意節(jié)點(diǎn)數(shù)量下,全局感知算法對(duì)惡意節(jié)點(diǎn)的誤測(cè)率。從圖5可以看出,無(wú)論是否存在虛假報(bào)文丟棄攻擊,算法的誤檢率都較低,雖然隨惡意節(jié)點(diǎn)數(shù)量的增大而有小幅上升,但最高不超過(guò)3%。
實(shí)驗(yàn)表明,本文算法的惡意節(jié)點(diǎn)檢測(cè)率和誤檢率性能良好。在惡意節(jié)點(diǎn)所占比例較低的情況下,檢測(cè)率接近100%,誤檢率接近0%。隨著惡意節(jié)點(diǎn)所占比例的提高和惡意節(jié)點(diǎn)發(fā)送虛假的鄰居節(jié)點(diǎn)報(bào)文轉(zhuǎn)發(fā)率信息,惡意節(jié)點(diǎn)的檢測(cè)率有所下降,但仍保持在90%以上;誤檢率有所上升,但仍保持在3%范圍內(nèi)。
惡意簇首節(jié)點(diǎn)發(fā)送虛假的簇內(nèi)節(jié)點(diǎn),節(jié)點(diǎn)報(bào)文轉(zhuǎn)發(fā)率信息對(duì)檢測(cè)率造成了一定的影響,這主要是由于實(shí)驗(yàn)時(shí)指定的惡意節(jié)點(diǎn)并不一定會(huì)被選舉為簇首。本算法對(duì)于發(fā)送虛假報(bào)文丟棄攻擊,需要在節(jié)點(diǎn)兩次當(dāng)選為監(jiān)測(cè)簇首才做出判定,但這并不會(huì)影響網(wǎng)絡(luò)的性能。因?yàn)樗惴ㄊ腔诖亟Y(jié)構(gòu)的,惡意節(jié)點(diǎn)只有連續(xù)兩次當(dāng)選簇首才能對(duì)一個(gè)正常節(jié)點(diǎn)發(fā)動(dòng)虛假報(bào)文誣陷攻擊,而算法在成簇階段已經(jīng)阻止了此類攻擊發(fā)生,所以節(jié)點(diǎn)無(wú)法發(fā)動(dòng)虛假報(bào)文丟棄攻擊,因此表現(xiàn)為檢測(cè)率降低。在虛假報(bào)文丟棄攻擊惡意節(jié)點(diǎn)比例較高的情況下,檢測(cè)率平均降低了2%左右。
本文分析了現(xiàn)有依據(jù)鄰居節(jié)點(diǎn)檢測(cè)算法對(duì)報(bào)文丟棄攻擊和虛假報(bào)文丟棄攻擊進(jìn)行檢測(cè)算法存在的不足,在此基礎(chǔ)上,設(shè)計(jì)了一種基于簇首協(xié)作的報(bào)文丟棄攻擊全局感知算法。仿真實(shí)驗(yàn)表明,該算法通過(guò)對(duì)報(bào)文丟棄攻擊節(jié)點(diǎn)進(jìn)行全局監(jiān)測(cè),減輕了網(wǎng)絡(luò)各節(jié)點(diǎn)資源和網(wǎng)絡(luò)帶寬的消耗;利用狄克遜準(zhǔn)則進(jìn)行惡意節(jié)點(diǎn)判定,提高了報(bào)文丟棄攻擊的檢測(cè)精確度;同時(shí),由于使用了基于簇首的監(jiān)測(cè)方式,惡意節(jié)點(diǎn)在作為簇成員的時(shí)候無(wú)法發(fā)動(dòng)虛假報(bào)文丟棄攻擊,很大程度上抑制了虛擬報(bào)文丟棄攻擊在網(wǎng)絡(luò)中發(fā)生的頻率。由于算法基于全局監(jiān)測(cè)周期進(jìn)行消息交換,在周期結(jié)束的時(shí)候進(jìn)行惡意節(jié)點(diǎn)的檢測(cè),因此,在提高入侵檢測(cè)響應(yīng)速率和改進(jìn)Hello消息傳播方式節(jié)省網(wǎng)絡(luò)帶寬方面需要進(jìn)一步優(yōu)化。
參考文獻(xiàn)
[1] PAUL K, WESTHOFF D. Context aware detection of selfish Nodes in DSR based Ad hoc networks[C]. IEEE Global Telecommunications Conference, 2002: 178-182.
[2] LEE S, CHOI Y. A resilient packet-forwarding scheme against maliciously packet-dropping nodes in sensor networks[C]. Proceedings of the 4th ACM Workshop on Security of Ad Hoc and Sensor Networks (SASN’06). Alexandria, USA, 2006:59-70.
[3] MARTI S, GIULI T, LAI K, et al. Mitigating routing misbehavior in mobile Ad Hoc networks[C]. Proceedings of the 6th International Conference on Mobile Computing and Networking (Mobicom’00). Boston, USA, 2000: 255-265.
[4] ZHONG S, CHEN J, YANG Y R. Sprite: a simple cheat-proof credit-Based system for mobile ad hoc networks[C]. INFOCOM 2003, twenty Second Annual Joint Conference of the IEEE Computer and Communications. San Francisco, CA, USA, April, 2003:1987-1997.
[5] 王芳,易平,吳越,等.基于規(guī)范的移動(dòng)Ad Hoc網(wǎng)絡(luò)分布式入侵檢測(cè)[J].計(jì)算機(jī)科學(xué),2010,37(10):118-122.
[6] JAIKAEO C, SHEN C C. Qualnet Tutorial[R]. Scalable Network Technologies, University of Delaware, 2007:21-46.