◆闞 澤
(山東省濱海公安局網(wǎng)安支隊 山東 257000)
無線傳感器網(wǎng)絡是物聯(lián)網(wǎng)的一部分,其本身通信信道所具備的開放性、節(jié)點資源的有限性以及網(wǎng)絡拓撲變化的頻繁性,使得無線傳感器網(wǎng)絡更容易遭受安全威脅,蟲洞攻擊就是其中一種危害嚴重的攻擊模式,而且因為蟲洞攻擊不需要用到網(wǎng)絡的加密信息和認證信息,實施簡單,會在占用網(wǎng)絡資源的同時,引發(fā)數(shù)據(jù)篡改、數(shù)據(jù)丟失等問題。因此,需要切實做好無線傳感器網(wǎng)絡蟲洞攻擊的檢測和防御工作,保證網(wǎng)絡信息安全。
無線傳感器網(wǎng)絡WSN屬于一種分布式傳感器網(wǎng)絡,網(wǎng)絡的末梢是傳感器,能夠對外部世界進行感知和檢查,可以將其看作是大量傳感器節(jié)點通過自有組合的方式形成的網(wǎng)絡,夠成功傳感器的節(jié)點的單元包括了數(shù)據(jù)采集單元、數(shù)據(jù)傳輸單元、數(shù)據(jù)處理單元和能量供應單元。在無線傳感器網(wǎng)絡中,存在兩種節(jié)點,分別是傳感器節(jié)點和匯聚節(jié)點,匯聚節(jié)點指網(wǎng)關可以將傳感器節(jié)點中錯誤的數(shù)據(jù)刪除,也可以與相關報告結合來推動數(shù)據(jù)融合,針對發(fā)生的事件做出合理判斷。
蟲洞攻擊是由兩個及以上蟲洞節(jié)點聯(lián)合發(fā)起的供給,在實際網(wǎng)絡拓撲中,蟲洞節(jié)點的距離很遠,但是如果表現(xiàn)在路由上,蟲洞節(jié)點是僅一跳的鄰居節(jié)點,其供給原理如圖1所示。
圖1 蟲洞攻擊
結合上圖分析,M點和N點代表蟲洞節(jié)點,其余則為傳感器節(jié)點,0表示源節(jié)點,5表示目的節(jié)點,不存在蟲洞攻擊時,路由的路徑從0依次到5;存在蟲洞攻擊時,蟲洞鏈路的存在,能夠更快的建立源節(jié)點到目的節(jié)點的鏈路,路由路徑為0→M→N→5。
改進AODV路由算法需要在RREQ路由請求分組中增加相應的字段,實現(xiàn)對請求分組各節(jié)點在數(shù)據(jù)傳輸過程中的能量消耗的記錄,涉及符號的相關描述如下:Etx(節(jié)點發(fā)送數(shù)據(jù)包能耗);Ercu(節(jié)點接收數(shù)據(jù)包能耗);Etotal(數(shù)據(jù)包傳輸過程總能耗);Esingle-hop(單跳能耗);Emulti-hop(多跳能耗和);Chop(路由跳數(shù))。
無線傳感器網(wǎng)絡在運行時,節(jié)點能耗可以分為數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)發(fā)送和數(shù)據(jù)接收四個部分,相關研究報表明,數(shù)據(jù)傳輸能耗要遠遠超過數(shù)據(jù)采集以及數(shù)據(jù)處理能耗,在對無線傳感器網(wǎng)絡能耗進行分析時,可以將數(shù)據(jù)采集和數(shù)據(jù)處理消耗的能量忽略,在合法路由路徑上,傳輸一個數(shù)據(jù)分組需要消耗的能量為:
數(shù)據(jù)傳輸能耗會受到節(jié)點距離的影響,距離越遠,數(shù)據(jù)分組經(jīng)過一跳路由需要消耗的能量越大,因此,在網(wǎng)絡部署前,管理人員可以對一跳路由的最大能耗值進行明確,多跳后數(shù)據(jù)分組消耗的能量可以表示為:
節(jié)點廣播RREQ路由在請求分組時,會將本節(jié)點發(fā)送數(shù)據(jù)包所消耗的能量記錄在Etotal中,下一跳節(jié)點在接收到RREQ路由請求分組后,會對其能耗進行計算,然后根據(jù)上述公式來對多跳總能耗進行計算。如果在無線傳感器網(wǎng)絡中,存在有相應的蟲洞節(jié)點,則多跳總能耗會小于路徑實際能耗,滿足 Emulti-hop<Etotal。而當傳感器節(jié)點接收到RREQ路由請求分組并進行計算后,其結果滿足公式(2),表明上一跳節(jié)點屬于蟲洞節(jié)點,通過丟棄分組的方式,可以將從路由路徑中將蟲洞節(jié)點排除。
無線傳感器中傳感器節(jié)點在對路由請求分組進行處理時,需要經(jīng)過幾個步驟:一是發(fā)現(xiàn)時間,傳感器節(jié)點本身的路由表中不存在目的地節(jié)點路由,路由發(fā)現(xiàn)過程發(fā)起;二是中間節(jié)點在接收到上一跳節(jié)點發(fā)送的RREQ路由請求分組后,會判斷分組是否是自身發(fā)出,如果是則會將其丟棄;三是依照源節(jié)點ID和序列號,對RREQ路由請求分組是否接收過進行判斷,若接收過,需要將其丟棄,反之則對源節(jié)點 ID及廣播序列號進行更新;四是從RREQ路由請求分組記錄中,提取能耗信息,依照公式(2)來對上一跳節(jié)點是否屬于蟲洞節(jié)點進行判斷,如果是,則將分組丟棄;五是對反向路由表進行查找,看是否存在源節(jié)點路由,若存在,依照路由跳數(shù)等信息,判斷是否需要對反向路由表進行更新;若不存在,需要對本節(jié)點到源節(jié)點的反向路由進行添加和更新;六是對正向路由表中目的節(jié)點路由的存在進行查找,若存在可以向源節(jié)點發(fā)送RREQ路由應答包,建立起相應的路由路徑,若不存在,需要對RREQ路由請求分組中的相關信息進行更新,繼續(xù)做好廣播;七是目的節(jié)點接收到RREQ路由請求分組,回復相應的RREP路由應答分組,完成路由路徑的構建。
一是對仿真環(huán)境和參數(shù)的選擇,這里采用了UBUNTU+NS2仿真平臺開展仿真實驗,模擬的無線傳感器網(wǎng)絡大小為900m×500m,其中共有6個合法節(jié)點(0-5)和2個蟲洞節(jié)點(6、7),兩者的通信半徑分別是250m和400m,節(jié)點0和節(jié)點5分別是源節(jié)點和目的節(jié)點,合法節(jié)點保持靜止,蟲洞節(jié)點在數(shù)據(jù)傳輸7.5s后展開攻擊;二是仿真結果分析。對不同網(wǎng)絡狀況進行仿真,得到相應的網(wǎng)絡路由消耗、網(wǎng)絡平均時延以及網(wǎng)絡丟包數(shù),分析可知,蟲洞攻擊會降低網(wǎng)絡路由消耗,因為其會提前結束路由查詢過程,而改進算法會導致路由消耗的增加,因為蟲洞節(jié)點在攻擊時,會不斷申請加入網(wǎng)絡,不過對比可知,沒有蟲洞攻擊的情況下,改進路由算法并不會額外消耗資源。同時,高效蟲洞鏈路能夠降低網(wǎng)絡平均時延,而在應用改進算法后,即便存在蟲洞攻擊的網(wǎng)絡平均時延會有所增加,但是依然處于可以接受的范圍內(nèi)。對網(wǎng)絡丟包情況進行分析,蟲洞攻擊會對正常的數(shù)據(jù)傳輸產(chǎn)生影響,導致網(wǎng)絡丟包數(shù)量的增加,經(jīng)過新的路由發(fā)現(xiàn)過程后,蟲洞節(jié)點會建立起新的路由路徑,其本身高效傳輸和低時延的特性,能夠避免網(wǎng)絡丟包問題,改進算法在建立路由時會直接識別和排除蟲洞節(jié)點,實現(xiàn)對于蟲洞攻擊的有效抵御。
總而言之,在無線傳感器網(wǎng)絡中,蟲洞節(jié)點能夠借助較大的通信半徑以及高效的傳輸路徑來吸引網(wǎng)絡流量,建立起包含蟲洞鏈路的路由路徑,破壞網(wǎng)絡功能。對此,本文提出了一種基于能耗的蟲洞攻擊檢測方法,只需要消耗極小的資源,就可以準確檢測和識別蟲洞節(jié)點,將其隔離到網(wǎng)絡外,建立起安全的路由路徑,保證網(wǎng)絡的穩(wěn)定運行。