蟲洞攻擊定位方法
【專利摘要】本發(fā)明公開了一種蟲洞攻擊定位方法,應用于傳感器網(wǎng)絡中的匯聚節(jié)點,所述方法包括:獲取所述匯聚節(jié)點接收到的數(shù)據(jù)包中的屬性值;依據(jù)所述屬性值,重構(gòu)所述傳感器網(wǎng)絡的當前網(wǎng)絡拓撲;將所述傳感器網(wǎng)絡的初始網(wǎng)絡拓撲與所述當前網(wǎng)絡拓撲進行比對,得到拓撲比對結(jié)果,所述初始網(wǎng)絡拓撲為所述傳感器網(wǎng)絡在初始化完成時的網(wǎng)絡拓撲;判斷所述拓撲比對結(jié)果是否滿足預設的網(wǎng)絡拓撲變化規(guī)則,如果是,依據(jù)所述當前網(wǎng)絡拓撲定位蟲洞節(jié)點。可見本發(fā)明公開的方法完全不影響傳感器網(wǎng)絡的正常運行,不依賴于特別的事件或行為,探測過程持續(xù)發(fā)生在網(wǎng)絡運行的整個過程,能有效抵抗主動敵手發(fā)起的蟲洞攻擊。
【專利說明】蟲洞攻擊定位方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡安全【技術(shù)領(lǐng)域】,更具體地說,涉及一種蟲洞攻擊定位方法。
【背景技術(shù)】
[0002]傳感器網(wǎng)絡系統(tǒng)通常包括傳感器節(jié)點、匯聚節(jié)點(sink node)和管理節(jié)點,大量傳感器節(jié)點隨機部署在監(jiān)測區(qū)域內(nèi)部或附近,以自組織方式構(gòu)成傳感器網(wǎng)絡,傳感器節(jié)點(源節(jié)點)監(jiān)測的數(shù)據(jù)沿著其他傳感器節(jié)點(中間節(jié)點)逐跳傳輸,在傳輸過程中監(jiān)測數(shù)據(jù)可能被多個傳感器節(jié)點(中間節(jié)點)處理,經(jīng)過多跳后路由到匯聚節(jié)點。
[0003]傳感器網(wǎng)絡中的蟲洞攻擊是一種主要針對網(wǎng)絡路由協(xié)議的惡意攻擊,該攻擊通過在兩個惡意節(jié)點之間建立一條透明于網(wǎng)絡中其他節(jié)點的私有信道,對無線傳感器網(wǎng)絡進行攻擊。發(fā)起蟲洞攻擊的敵手中,主動敵手不但具備被動敵手吸引流量的能力,而且還可以根據(jù)網(wǎng)絡的狀態(tài)自適應調(diào)整攻擊策略,有時甚至對數(shù)據(jù)包進行任意的篡改、偽造與丟棄,嚴重影響了無線傳感器網(wǎng)絡的數(shù)據(jù)傳輸過程,為此必須準確有效的定位出傳感器網(wǎng)絡中存在的蟲洞攻擊。
[0004]現(xiàn)有的蟲洞攻擊定位方法中,在匯聚節(jié)點上廣播一個控制包,以獲得全網(wǎng)每個節(jié)點的鄰接表,基于鄰接表分析網(wǎng)絡拓撲變化,進而判斷網(wǎng)絡拓撲變化是否由蟲洞攻擊引起,最終定位蟲洞。
[0005]發(fā)明人研究發(fā)現(xiàn),上述方法中,在匯聚節(jié)點進行廣播控制包的過程可被視作網(wǎng)絡啟動探測程序的標志性事件,主動敵手發(fā)起的蟲洞攻擊節(jié)點發(fā)現(xiàn)這個控制包之后就可以臨時中斷攻擊以躲避網(wǎng)絡的探測。也就是說,這種依賴于特別事件或行為的蟲洞定位方法無法抵抗主動敵手發(fā)起的蟲洞攻擊。
【發(fā)明內(nèi)容】
[0006]有鑒于此,本發(fā)明提供了 一種能有效抵抗主動敵手發(fā)起的蟲洞攻擊的方法及其裝置。
[0007]提出的方案如下:一種蟲洞攻擊定位方法,應用于傳感器網(wǎng)絡中的匯聚節(jié)點,所述方法包括:
[0008]獲取所述匯聚節(jié)點接收到的數(shù)據(jù)包中的屬性值,所述屬性值由其所經(jīng)由的中間節(jié)點進行設置;
[0009]依據(jù)所述屬性值,重構(gòu)所述傳感器網(wǎng)絡的當前網(wǎng)絡拓撲,所述當前網(wǎng)絡拓撲中包括每個源節(jié)點至所述匯聚節(jié)點的路徑;
[0010]將所述傳感器網(wǎng)絡的初始網(wǎng)絡拓撲與所述當前網(wǎng)絡拓撲進行比對,得到拓撲比對結(jié)果,所述初始網(wǎng)絡拓撲為所述傳感器網(wǎng)絡在初始化完成時的網(wǎng)絡拓撲;
[0011]判斷所述拓撲比對結(jié)果是否滿足預設的網(wǎng)絡拓撲變化規(guī)則,如果是,依據(jù)所述當前網(wǎng)絡拓撲定位蟲洞節(jié)點。
[0012]上述方法,優(yōu)選地,所述屬性值由其所經(jīng)由的中間節(jié)點通過以下步驟進行設置:[0013]當所述中間節(jié)點的信息列表中有與所述中間節(jié)點接收到的數(shù)據(jù)包所屬源節(jié)點對應的記錄,且所述記錄中序列號與所述數(shù)據(jù)包的序列號屬性值連續(xù)時:
[0014]將所述中間節(jié)點的ID值寫入所述數(shù)據(jù)包的前跳節(jié)點ID屬性值字段內(nèi),判斷所述數(shù)據(jù)包的跳數(shù)屬性值與所述記錄中跳數(shù)是否相等,如果相等,將所述數(shù)據(jù)包的跳數(shù)屬性值加1,將由密鑰、前跳節(jié)點ID和序列號計算得到的消息認證碼寫入所述數(shù)據(jù)包的消息認證碼屬性值字段內(nèi),如果不相等,將所述數(shù)據(jù)包的跳數(shù)屬性值改寫為所述記錄中的跳數(shù),生成告警信息,將所述告警信息寫入所述數(shù)據(jù)包的標記節(jié)點ID屬性值字段內(nèi),將由密鑰、前跳節(jié)點ID、序列號和跳數(shù)計算得到的消息認證碼寫入所述數(shù)據(jù)包的消息認證碼屬性值字段內(nèi);
[0015]當所述信息列表中有與所述數(shù)據(jù)包所屬源節(jié)點對應的記錄,且所述記錄中序列號與所述數(shù)據(jù)包的序列號屬性值不連續(xù)時:
[0016]將所述中間節(jié)點的ID值寫入所述數(shù)據(jù)包的標記節(jié)點ID屬性值字段內(nèi),將由密鑰、標記節(jié)點ID、由前跳節(jié)點ID和序列號計算得到的消息認證碼和跳數(shù)計算得到的消息認證碼寫入所述數(shù)據(jù)包的消息認證碼屬性值字段內(nèi);
[0017]當所述信息列表中沒有與所述數(shù)據(jù)包所屬源節(jié)點對應的記錄時:
[0018]將所述中間節(jié)點的ID值寫入所述數(shù)據(jù)包的標記節(jié)點ID屬性值字段內(nèi),將由密鑰、標記節(jié)點ID、由前跳節(jié)點ID和序列號計算得到的消息認證碼和跳數(shù)計算得到的消息認證碼寫入所述數(shù)據(jù)包的消息認證碼屬性值字段內(nèi)。
[0019]上述方法,優(yōu)選地,所述屬性值包括源節(jié)點ID、序列號、跳數(shù)、標記節(jié)點ID、前跳節(jié)點ID及消息認證碼;
[0020]相應的,所述依據(jù)所述屬性值,重構(gòu)所述傳感器網(wǎng)絡的當前網(wǎng)絡拓撲包括具體步驟:
[0021]當所述匯聚節(jié)點接收到的數(shù)據(jù)包的序列號與所述匯聚節(jié)點中記錄的序列號之差等于I時,檢查所述數(shù)據(jù)包的前跳節(jié)點ID是否和所述匯聚節(jié)點記錄的路徑中對應位置的節(jié)點ID相同,如果相同,則將所述數(shù)據(jù)包的標記節(jié)點ID寫入所述路徑中對應位置,清空所述路徑中從所述位置到所述匯聚節(jié)點之間的所有節(jié)點;
[0022]當所述數(shù)據(jù)包的序列號與所述匯聚節(jié)點中記錄的序列號之差大于I時,檢查所述數(shù)據(jù)包的標記節(jié)點ID是否和所述匯聚節(jié)點記錄的路徑中對應位置的節(jié)點ID相同,如果不相同,清空所述路徑中“跳數(shù)-所述數(shù)據(jù)包序列號與所述路徑中序列號之差”之后的所有節(jié)點,將所述數(shù)據(jù)包的標記節(jié)點ID寫入所述路徑中對應位置。
[0023]上述方法,優(yōu)選地,所述網(wǎng)絡拓撲變化規(guī)則包括:網(wǎng)絡拓撲中變化路徑的比例大于或等于比例閾值,且路徑平均縮短距離大于或等于距離閾值;
[0024]相應的,所述判斷所述拓撲比對結(jié)果是否滿足預設的網(wǎng)絡拓撲變化規(guī)則,具體包括:
[0025]判斷所述拓撲比對結(jié)果是否表明所述當前網(wǎng)絡拓撲中相對于所述初始網(wǎng)絡拓撲發(fā)生變化的路徑的比例大于或等于比例閾值,且所述發(fā)生變化的路徑的平均縮短距離大于或等于距離閾值。
[0026]上述方法,優(yōu)選地,依據(jù)所述當前網(wǎng)絡拓撲定位蟲洞節(jié)點具體包括:
[0027]將所述當前網(wǎng)絡拓撲中相對于所述初始網(wǎng)絡拓撲發(fā)生變化的路徑中距離所述匯聚節(jié)點最近且發(fā)生了距離縮短的節(jié)點確定為蟲洞入口節(jié)點;
[0028]將所述路徑中蟲洞入口節(jié)點的下一跳節(jié)點確定為蟲洞出口節(jié)點。
[0029]上述方法,優(yōu)選地,在獲取所述匯聚節(jié)點接收到的數(shù)據(jù)包中的屬性值之后,在重構(gòu)所述傳感器網(wǎng)絡的當前網(wǎng)絡拓撲之前,還包括:
[0030]判斷所述數(shù)據(jù)包的消息認證碼屬性值是否正確,如果正確,執(zhí)行所述重構(gòu)所述傳感器網(wǎng)絡的當前網(wǎng)絡拓撲步驟,否則,報告路徑中有蟲洞攻擊。
[0031]上述方法,優(yōu)選地,在獲取所述匯聚節(jié)點接收到的數(shù)據(jù)包中的屬性值之后,在重構(gòu)所述傳感器網(wǎng)絡的當前網(wǎng)絡拓撲之前,還包括:
[0032]識別所述數(shù)據(jù)包的標記節(jié)點ID屬性值字段內(nèi)是否存有告警信息,如果有,定位所述標記節(jié)點ID的前一跳節(jié)點為蟲洞節(jié)點,否則,執(zhí)行所述重構(gòu)所述傳感器網(wǎng)絡的當前網(wǎng)絡拓撲步驟。
[0033]本方案還提供了一種蟲洞攻擊定位裝置,應用于傳感器網(wǎng)絡中的匯聚節(jié)點,所述裝置包括:
[0034]獲取模塊,用于獲取所述匯聚節(jié)點接收到的數(shù)據(jù)包中的屬性值,所述屬性值由其所經(jīng)由的中間節(jié)點進行設置;
[0035]重構(gòu)模塊,用于依據(jù)所述屬性值,重構(gòu)所述傳感器網(wǎng)絡的當前網(wǎng)絡拓撲,所述當前網(wǎng)絡拓撲中包括每個源節(jié)點至所述匯聚節(jié)點的路徑;
[0036]拓撲對比模塊,用于將所述傳感器網(wǎng)絡的初始網(wǎng)絡拓撲與所述當前網(wǎng)絡拓撲進行比對,得到拓撲比對結(jié)果,所述初始網(wǎng)絡拓撲為所述傳感器網(wǎng)絡在初始化完成時的網(wǎng)絡拓撲;
[0037]規(guī)則判斷模塊,用于判斷所述拓撲比對結(jié)果是否滿足預設蟲洞攻擊的網(wǎng)絡拓撲變化規(guī)則,如果是,觸發(fā)定位模塊;
[0038]定位模塊,用于依據(jù)所述當前網(wǎng)絡拓撲定位蟲洞節(jié)點。
[0039]上述裝置,優(yōu)選地,所述屬性值由其所經(jīng)由的中間節(jié)點通過以下模塊進行設置,包括:
[0040]第一判斷模塊,用于判斷是否所述中間節(jié)點的信息列表中有與所述中間節(jié)點接收到的數(shù)據(jù)包所屬源節(jié)點對應的記錄,如果有,判斷是否所述記錄中序列號與所述數(shù)據(jù)包的序列號屬性值連續(xù),如果是,則觸發(fā)第一設置模塊;
[0041]第一設置模塊,用于將所述中間節(jié)點的ID值寫入所述數(shù)據(jù)包中屬性值的前跳節(jié)點ID字段內(nèi),并觸發(fā)第二判斷模塊;
[0042]第二判斷模塊,用于判斷所述數(shù)據(jù)包的跳數(shù)屬性值與所述記錄中跳數(shù)是否相等,如果相等,觸發(fā)第二設置模塊,如果不相等,則觸發(fā)第三設置模塊;
[0043]第二設置模塊,用于將所述數(shù)據(jù)包的跳數(shù)屬性值加1,將由密鑰、前跳節(jié)點ID和序列號計算得到的消息認證碼寫入數(shù)據(jù)包的消息認證碼屬性值字段內(nèi);
[0044]第三設置模塊,用于將所述數(shù)據(jù)包的跳數(shù)屬性值改寫為所述記錄中的跳數(shù),生成告警信息,并將所述告警信息寫入數(shù)據(jù)包的標記節(jié)點ID屬性值字段內(nèi),將由密鑰、前跳節(jié)點ID、序列號和跳數(shù)計算得到的消息認證碼寫入數(shù)據(jù)包的消息認證碼屬性值字段內(nèi);
[0045]第三判斷模塊,用于判斷是否所述信息列表中有與所述數(shù)據(jù)包所屬源節(jié)點對應的記錄,如果有,判斷是否所述記錄中序列號與所述數(shù)據(jù)包的序列號屬性值不連續(xù),如果是,則觸發(fā)第四設置模塊;
[0046]第四設置模塊,用于將所述中間節(jié)點的ID值寫入所述數(shù)據(jù)包的標記節(jié)點ID屬性值字段內(nèi),將由密鑰、標記節(jié)點ID、由前跳節(jié)點ID和序列號計算得到的消息認證碼和跳數(shù)計算得到的消息認證碼寫入數(shù)據(jù)包的消息認證碼屬性值字段;
[0047]第四判斷模塊,用于判斷是否所述信息列表中沒有與所述數(shù)據(jù)包所屬源節(jié)點對應的記錄,如果是,觸發(fā)第五設置模塊;
[0048]第五設置模塊,用于將所述中間節(jié)點的ID值寫入所述數(shù)據(jù)包的標記節(jié)點ID屬性值字段內(nèi),將由密鑰、標記節(jié)點ID、由前跳節(jié)點ID和序列號計算得到的消息認證碼和跳數(shù)計算得到的消息認證碼寫入數(shù)據(jù)包的消息認證碼屬性值字段。
[0049]上述裝置,優(yōu)選地,所述重構(gòu)模塊包括:
[0050]第一判斷子模塊,用于判斷所述匯聚節(jié)點接收到的數(shù)據(jù)包的序列號與所述匯聚節(jié)點記錄的序列號之差是否等于1,如果是,則觸發(fā)第二判斷子模塊,如果否,則觸發(fā)第三判斷子模塊;
[0051]第二判斷子模塊,用于判斷所述數(shù)據(jù)包的前跳節(jié)點ID是否和所述匯聚節(jié)點中記錄的路徑中對應位置的節(jié)點ID相同,如果相同,則觸發(fā)第一重構(gòu)子模塊;
[0052]第一重構(gòu)子模塊,用于將所述數(shù)據(jù)包的標記節(jié)點ID寫入所述路徑中對應位置,清空所述路徑中從所述位置到所述匯聚節(jié)點之間的所有節(jié)點;
[0053]第三判斷子模塊,用于判斷所述數(shù)據(jù)包的標記節(jié)點ID是否和所述匯聚節(jié)點中記錄的路徑中對應位置的節(jié)點ID相同,如果不相同,觸發(fā)第二重構(gòu)子模塊;
[0054]第二重構(gòu)子模塊,用于清空所述路徑中“跳數(shù)-所述數(shù)據(jù)包中序列號與所述路徑中序列號之差”之后的所有節(jié)點,將所述數(shù)據(jù)包的標記節(jié)點ID寫入所述路徑中對應位置。
[0055]上述裝置,優(yōu)選地,所述規(guī)則判斷模塊包括:
[0056]第一規(guī)則判斷子模塊,用于判斷所述拓撲比對結(jié)果是否表明所述當前網(wǎng)絡拓撲中相對于所述初始網(wǎng)絡拓撲發(fā)生變化的路徑的比例大于或等于比例閾值;
[0057]第二規(guī)則判斷子模塊,用于判斷所述拓撲比對結(jié)果是否表明所述當前網(wǎng)絡拓撲中相對于所述初始網(wǎng)絡拓撲發(fā)生變化的路徑的平均縮短距離大于或等于距離閾值。
[0058]上述裝置,優(yōu)選地,所述定位模塊包括:
[0059]第一蟲洞節(jié)點確定子模塊,用于將所述當前網(wǎng)絡拓撲中相對于所述初始網(wǎng)絡拓撲發(fā)生變化的路徑中距離所述匯聚節(jié)點最近且發(fā)生了距離縮短的節(jié)點確定為蟲洞入口節(jié)
占.[0060]第二蟲洞節(jié)點確定子模塊,用于將所述路徑中蟲洞入口節(jié)點的下一跳節(jié)點確定為蟲洞出口節(jié)點。
[0061]上述裝置,優(yōu)選地,還包括:
[0062]消息認證碼判斷模塊,用于在所述獲取模塊獲取到數(shù)據(jù)包的屬性值之后,在所述重構(gòu)模塊重構(gòu)拓撲網(wǎng)絡之前,判斷數(shù)據(jù)包的消息認證碼屬性值是否正確,如果正確,觸發(fā)所述重構(gòu)模塊,否則,觸發(fā)第一蟲洞攻擊報告模塊;
[0063]第一蟲洞攻擊報告模塊,用于報告路徑中有蟲洞攻擊。
[0064]上述裝置,優(yōu)選地,還包括:
[0065]告警信息識別模塊,用于在所述獲取模塊獲取到數(shù)據(jù)包的屬性值之后,在所述重構(gòu)模塊重構(gòu)拓撲網(wǎng)絡之前,識別所述數(shù)據(jù)包的標記節(jié)點ID屬性值字段內(nèi)是否存有告警信息,如果有,觸發(fā)第二蟲洞攻擊報告模塊,否則,觸發(fā)重構(gòu)模塊;
[0066]第二蟲洞攻擊報告模塊,用于報告所述標記節(jié)點ID的前一跳節(jié)點為蟲洞節(jié)點。
[0067]從上述方案可以看出,本發(fā)明公開的蟲洞攻擊定位方法中,匯聚節(jié)點根據(jù)獲得的數(shù)據(jù)包中的屬性值,重構(gòu)當前網(wǎng)絡拓撲,比對初始網(wǎng)絡拓撲與當前網(wǎng)絡拓撲,根據(jù)蟲洞攻擊特征定位蟲洞攻擊節(jié)點??梢姳景l(fā)明中的方法完全不影響傳感器網(wǎng)絡的正常運行,不依賴于特別的事件或行為,探測過程持續(xù)發(fā)生在網(wǎng)絡運行的整個過程,能有效抵抗主動敵手發(fā)起的蟲洞攻擊。
【專利附圖】
【附圖說明】
[0068]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0069]圖1為本發(fā)明實施例一提供的一種蟲洞攻擊定位方法流程圖;
[0070]圖2為本發(fā)明實施例一提供的一種數(shù)據(jù)包數(shù)據(jù)結(jié)構(gòu)圖;
[0071]圖3為本發(fā)明實施例一提供的一種節(jié)點信息列表數(shù)據(jù)結(jié)構(gòu)圖;
[0072]圖4為本發(fā)明實施例二提供的一種蟲洞攻擊定位方法的部分流程圖;
[0073]圖5為本發(fā)明實施例三提供的一種蟲洞攻擊定位方法的部分流程圖;
[0074]圖6為本發(fā)明實施例三提供的一種路徑數(shù)據(jù)結(jié)構(gòu)圖;
[0075]圖7為本發(fā)明實施例三提供的一種路徑重構(gòu)示例圖;
[0076]圖8為本發(fā)明實施例四提供的一種蟲洞攻擊定位方法的部分流程圖;
[0077]圖9為本發(fā)明實施例五提供的一種蟲洞攻擊定位方法的部分流程圖;
[0078]圖10為本發(fā)明實施例六提供的一種蟲洞攻擊定位方法的部分流程圖;
[0079]圖11為本發(fā)明實施例七提供的一種蟲洞攻擊定位方法的部分流程圖;
[0080]圖12為本發(fā)明實施例八提供的一種蟲洞攻擊定位裝置的結(jié)構(gòu)框圖;
[0081]圖13為本發(fā)明實施例八提供的一種蟲洞攻擊定位裝置的另一結(jié)構(gòu)框圖;
[0082]圖14為本發(fā)明實施例八提供的一種蟲洞攻擊定位裝置的另一結(jié)構(gòu)框圖;
[0083]圖15為本發(fā)明實施例八提供的一種蟲洞攻擊定位裝置的另一結(jié)構(gòu)框圖;
[0084]圖16為本發(fā)明實施例九提供的一種蟲洞攻擊定位裝置的結(jié)構(gòu)框圖;
[0085]圖17為本發(fā)明實施例十公開的一種蟲洞攻擊定位裝置的結(jié)構(gòu)框圖;
[0086]圖18為本發(fā)明實施例十一公開的一種蟲洞攻擊定位裝置的結(jié)構(gòu)框圖。
【具體實施方式】
[0087]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0088]參考圖1,其示出了本發(fā)明實施例一提供的一種蟲洞攻擊定位方法的流程圖,所述方法包括以下步驟:
[0089]S101、獲取所述匯聚節(jié)點接收到的數(shù)據(jù)包中的屬性值,所述屬性值由其所經(jīng)由的中間節(jié)點進行設置;
[0090]其中,設置數(shù)據(jù)包中屬性值的主要操作是讓傳感器節(jié)點將其ID寫入到經(jīng)過的數(shù)據(jù)包中。設置數(shù)據(jù)包中屬性值的步驟由中間節(jié)點進行判斷并執(zhí)行,中間節(jié)點為除匯聚節(jié)點和源節(jié)點之外的其他傳感器節(jié)點。
[0091]由于數(shù)據(jù)包本身的長度限制,只能利用幾個字節(jié)的空間來存放屬性值。原數(shù)據(jù)包包括:表示數(shù)據(jù)包來源的源節(jié)點ID、表示數(shù)據(jù)包產(chǎn)生序列的序列號、表明數(shù)據(jù)包所轉(zhuǎn)發(fā)的跳數(shù)。如果當前應用對數(shù)據(jù)包格式的設計不包含這些字段,那么中間節(jié)點設置數(shù)據(jù)包中屬性值的算法將把它們添加到數(shù)據(jù)包當中。在原數(shù)據(jù)包的基礎上,本發(fā)明新增加三個屬性值字段:標記節(jié)點ID、前跳節(jié)點ID和消息認證碼MAC,數(shù)據(jù)包的數(shù)據(jù)結(jié)構(gòu)如圖2所示。其中標記節(jié)點ID記錄給該數(shù)據(jù)包做標記的節(jié)點ID,前跳節(jié)點ID記錄給該節(jié)點做標記的節(jié)點的上一跳節(jié)點ID,MAC保證標記信息的完整性,以防止敵手的惡意篡改。MAC由安全哈希算法shal計算,MAC密鑰由標記節(jié)點和匯聚節(jié)點端共享。其他實施例中數(shù)據(jù)包中屬性值不限于此,只要起到標識作用,能通過獲取的屬性值實現(xiàn)網(wǎng)絡拓撲重構(gòu)即可。另外,其他實施例中MAC可由其他安全算法計算,不限于安全哈希算法shal。
[0092]每個中間節(jié)點維護著一個信息列表,里面存放著源節(jié)點的相關(guān)信息,信息列表的數(shù)據(jù)結(jié)構(gòu)如圖3所示,由源節(jié)點ID,來自于相應源節(jié)點的數(shù)據(jù)包最新序列號和距離該源節(jié)點的跳數(shù)組成。兩個序列號連續(xù)是指來自同一源節(jié)點的兩個數(shù)據(jù)包的序列號相差為1,即這兩個數(shù)據(jù)包是該源節(jié)點連續(xù)發(fā)出的。當源節(jié)點產(chǎn)生數(shù)據(jù)包時,它把跳數(shù)置為0,前跳節(jié)點ID置為自己ID,MAC置為MAC(前跳節(jié)點ID,序列號)。
[0093]需要說明的是,很多數(shù)據(jù)包中的屬性值并不會被設置,本發(fā)明中所述屬性值設置均指中間節(jié)點對屬性值的設置,非源節(jié)點生成數(shù)據(jù)包時對屬性值的設置。如果網(wǎng)絡是靜態(tài)的,屬性值設置操作會在收集完網(wǎng)絡拓撲后自動停止,如果網(wǎng)絡是動態(tài)的,例如蟲洞鏈路存在或者網(wǎng)絡動態(tài)性引起路徑變化時,屬性值設置操作會自動重新啟動并重新收集網(wǎng)絡拓撲,數(shù)據(jù)包被設置屬性值的原因一定是因為網(wǎng)絡發(fā)生了變化,要么是存在蟲洞鏈路等攻擊,要么是網(wǎng)絡動態(tài)性引起了路徑變化,那些沿著之前數(shù)據(jù)包所走過的路徑傳到匯聚節(jié)點的數(shù)據(jù)包不會被設置屬性值。
[0094]S102、依據(jù)所述屬性值,重構(gòu)所述傳感器網(wǎng)絡的當前網(wǎng)絡拓撲,所述當前網(wǎng)絡拓撲中包括每個源節(jié)點至所述匯聚節(jié)點的路徑;
[0095]傳感器網(wǎng)絡中,傳感器節(jié)點監(jiān)測的數(shù)據(jù)包沿著其他傳感器節(jié)點逐跳進行傳輸,經(jīng)過多跳后路由到匯聚節(jié)點,匯聚節(jié)點維護整個網(wǎng)絡拓撲。
[0096]匯聚節(jié)點通過分析收到的大量數(shù)據(jù)包中零星包含設置了屬性值的數(shù)據(jù)包,在匯聚節(jié)點上運行的重構(gòu)當前網(wǎng)絡拓撲步驟追蹤重構(gòu)每個源節(jié)點到匯聚節(jié)點的路徑,通過對所有源節(jié)點到匯聚節(jié)點的路徑進行組合拼裝,就能夠在匯聚節(jié)點重構(gòu)并維護整個網(wǎng)絡拓撲。
[0097]S103、將所述傳感器網(wǎng)絡的初始網(wǎng)絡拓撲與所述當前網(wǎng)絡拓撲進行比對,得到拓撲比對結(jié)果,所述初始網(wǎng)絡拓撲為所述傳感器網(wǎng)絡在初始化完成時的網(wǎng)絡拓撲;
[0098]網(wǎng)絡初始化階段,合法用戶隨機部署所有傳感器節(jié)點,顯然合法用戶不會部署蟲洞節(jié)點,這時首先命令各節(jié)點發(fā)送一定量的數(shù)據(jù)包,匯聚節(jié)點利用這些數(shù)據(jù)包很快建立初始網(wǎng)絡拓撲,并將初始網(wǎng)絡拓撲保存起來。
[0099]網(wǎng)絡運行階段,經(jīng)過步驟102之后會得到重構(gòu)后的當前網(wǎng)絡拓撲。比對初始網(wǎng)絡拓撲與當前網(wǎng)絡拓撲,得到拓撲比對結(jié)果,拓撲比對結(jié)果也就是兩個網(wǎng)絡拓撲中每一條從源節(jié)點出發(fā)到匯聚節(jié)點的路徑變化。
[0100]S104、判斷所述拓撲比對結(jié)果是否滿足預設的網(wǎng)絡拓撲變化規(guī)則,如果是,執(zhí)行步驟 S105 ;
[0101]S105:依據(jù)所述當前網(wǎng)絡拓撲定位蟲洞節(jié)點。
[0102]其中,所述預設的網(wǎng)絡拓撲變化規(guī)則是根據(jù)蟲洞攻擊引發(fā)的網(wǎng)絡病癥來制定的,按照蟲洞攻擊的定義,有蟲洞攻擊的網(wǎng)絡拓撲會出現(xiàn)特有的特征,例如流量吸引、變化的路徑多、路徑距離縮短等等,如果發(fā)現(xiàn)當前網(wǎng)絡拓撲出現(xiàn)這些特征,則推斷存在蟲洞攻擊。本發(fā)明公開的方法緊扣蟲洞攻擊的特征,有效的降低了檢測中的誤報。
[0103]其中,優(yōu)選地,蟲洞節(jié)點定位過程還包括:匯聚節(jié)點獲取到數(shù)據(jù)包屬性值后,首先判斷MAC是否正確,如果不正確,說明主動敵手篡改了數(shù)據(jù)包的屬性值,此時認為該路徑中存在蟲洞攻擊。
[0104]其中,優(yōu)選地,蟲洞節(jié)點定位過程還包括:匯聚節(jié)點獲取到數(shù)據(jù)包屬性值后,判斷標記節(jié)點ID字段中是否存有告警信息,如果有,說明主動敵手篡改了跳數(shù),此時認為蟲洞攻擊節(jié)點就在標記節(jié)點的前跳節(jié)點。
[0105]其中,優(yōu)選地,蟲洞節(jié)點定位過程還包括:匯聚節(jié)點比較了數(shù)據(jù)包標記節(jié)點ID的前跳節(jié)點ID與路徑中對應位置的節(jié)點ID,如果不一致,則說明主動敵手隨機選擇下一跳節(jié)點來轉(zhuǎn)發(fā)數(shù)據(jù)包,此時認為蟲洞攻擊節(jié)點就在標記節(jié)點的前跳節(jié)點。
[0106]由上述方案可知,相對于現(xiàn)有技術(shù)中無法定位主動敵手發(fā)起的蟲洞攻擊節(jié)點的問題,本發(fā)明實施例一提供的蟲洞攻擊定位方法,通過獲取數(shù)據(jù)包的屬性值,重構(gòu)當前網(wǎng)絡拓撲,實時監(jiān)測路徑變化,從而基于蟲洞攻擊引發(fā)網(wǎng)絡病癥的特征推斷蟲洞是否存在,并定位出蟲洞節(jié)點位置。本發(fā)明中匯聚節(jié)點在收集網(wǎng)絡拓撲進行蟲洞節(jié)點定位過程中不會有特殊的特征。針對被動敵手發(fā)起的蟲洞攻擊,有兩種情況,如果敵手設置自己的節(jié)點ID到數(shù)據(jù)包中,則匯聚節(jié)點可以發(fā)現(xiàn)蟲洞節(jié)點并能定位出蟲洞節(jié)點所在位置,如果敵手不設置自己的節(jié)點ID到數(shù)據(jù)包中,匯聚節(jié)點雖無法在路徑信息中發(fā)現(xiàn)蟲洞節(jié)點的存在,但蟲洞節(jié)點的鄰居節(jié)點會表現(xiàn)出蟲洞特征并且由于鄰居節(jié)點會設置自己的ID進數(shù)據(jù)包,所以匯聚節(jié)點可以定位出蟲洞節(jié)點的鄰居節(jié)點。針對主動敵手發(fā)起的蟲洞攻擊,主動敵手不能覺察網(wǎng)絡的檢測行為,所以無法躲避檢測,如果主動敵手通過故意錯誤設置數(shù)據(jù)包屬性值或隨機選擇下一跳節(jié)點來轉(zhuǎn)發(fā)數(shù)據(jù)包的方式破壞正確網(wǎng)絡拓撲的收集,本發(fā)明利用數(shù)據(jù)包的消息認證碼MAC以及告警信息,能立即定位出蟲洞攻擊節(jié)點位置,另外匯聚節(jié)點還比較了數(shù)據(jù)包標記節(jié)點ID的前跳節(jié)點ID與路徑中對應位置的節(jié)點ID,即使主動敵手隨機選擇下一跳節(jié)點來轉(zhuǎn)發(fā)數(shù)據(jù)包也能將蟲洞攻擊節(jié)點定位出來。故無論是被動敵手發(fā)起的蟲洞攻擊還是主動敵手發(fā)起的蟲洞攻擊,本發(fā)明的蟲洞攻擊定位方法都能有效定位出來。
[0107]此外,本發(fā)明還有一個顯著優(yōu)勢,整個蟲洞檢測及蟲洞節(jié)點定位過程都不會給網(wǎng)絡帶來額外信息開銷,設置數(shù)據(jù)包屬性值的過程發(fā)生在傳感器節(jié)點轉(zhuǎn)發(fā)數(shù)據(jù)包過程中,而不是額外的附加過程,這個優(yōu)點在大部分節(jié)點計算能力和通信能力都有限的無線傳感器網(wǎng)絡中顯得彌足珍貴。[0108]額外地,本發(fā)明的實現(xiàn)不受任何硬件、技術(shù)和資源的限制,易于實現(xiàn)。
[0109]由上述實施例可知,所述屬性值是由其經(jīng)由的中間節(jié)點進行設置,屬性值除了原始數(shù)據(jù)包中的源節(jié)點ID、序列號和跳數(shù)以外,還包括:標記節(jié)點ID、前跳節(jié)點ID和消息認證碼,其中,參考圖4,其示出了本發(fā)明實施例二提供的一種蟲洞攻擊定位方法的部分流程圖,其中,優(yōu)選地,所述步驟SlOl獲取數(shù)據(jù)包屬性值時,中間節(jié)點S收到數(shù)據(jù)包P之后,設置數(shù)據(jù)包P的屬性值的具體實現(xiàn)包括:
[0110]S401:判斷所述中間節(jié)點的信息列表中是否有與所述中間節(jié)點接收到的數(shù)據(jù)包所屬源節(jié)點對應的記錄,如果有,則執(zhí)行步驟S402,如果沒有,則執(zhí)行步驟S403 ;
[0111]具體地,檢查中間節(jié)點S的信息列表,如果信息列表中有關(guān)于數(shù)據(jù)包P所屬源節(jié)點的記錄,則執(zhí)行步驟S402,如果沒有,則執(zhí)行步驟S403。
[0112]S402:判斷所述記錄中序列號與所述數(shù)據(jù)包中序列號是否連續(xù),如果連續(xù),則執(zhí)行步驟S404,如果不連續(xù),則執(zhí)行步驟S405 ;
[0113]具體地,判斷數(shù)據(jù)包P的序列號與中間節(jié)點S的信息列表中對應記錄中的序列號之差是否為I,也就是判斷在數(shù)據(jù)包P之前有沒有丟包,如果連續(xù),則執(zhí)行步驟S404,如果不連續(xù),則執(zhí)行步驟S405。
[0114]S403:將所述中間節(jié)點的ID值寫入所述數(shù)據(jù)包的標記節(jié)點ID字段內(nèi),將由密鑰、標記節(jié)點ID、由前跳節(jié)點ID和序列號計算得到的消息認證碼和跳數(shù)計算得到的消息認證碼寫入數(shù)據(jù)包的消息認證碼字段內(nèi);
[0115]具體地,如果中間節(jié)點S的信息列表中沒有數(shù)據(jù)包P的源節(jié)點的相關(guān)記錄,說明中間節(jié)點S第一次接收到來自P的源節(jié)點發(fā)送的數(shù)據(jù)包,用中間節(jié)點S設置數(shù)據(jù)包P的標記節(jié)點ID,用MAC (密鑰、標記節(jié)點ID、MAC (前跳節(jié)點ID,序列號)、跳數(shù))更新數(shù)據(jù)包p的MAC,此外,為了使中間節(jié)點S接收到下一個數(shù)據(jù)包時仍能做出正確的屬性值設置,步驟S403還包括:根據(jù)數(shù)據(jù)包P中的源節(jié)點ID、序列號和跳數(shù)信息在中間節(jié)點S的信息列表中創(chuàng)建一條記錄,然后轉(zhuǎn)發(fā)數(shù)據(jù)包P,完成對數(shù)據(jù)包P的處理。
[0116]S404:將所述中間節(jié)點的ID值寫入所述數(shù)據(jù)包的前跳節(jié)點ID字段內(nèi),并判斷所述數(shù)據(jù)包的跳數(shù)與所述記錄中跳數(shù)是否相等,如果相等,將數(shù)據(jù)包中跳數(shù)加1,將由密鑰、前跳節(jié)點ID和序列號計算得到的消息認證碼寫入數(shù)據(jù)包的消息認證碼字段,如果不相等,將數(shù)據(jù)包的跳數(shù)改寫為所述記錄中的跳數(shù),生成告警信息,將所述告警信息寫入數(shù)據(jù)包的標記節(jié)點ID字段,將由密鑰、前跳節(jié)點ID、序列號和跳數(shù)計算得到的消息認證碼寫入數(shù)據(jù)包的消息認證碼字段;
[0117]具體地,將中間節(jié)點S自己的ID寫入數(shù)據(jù)包P的前跳節(jié)點ID,然后判斷數(shù)據(jù)包P的跳數(shù)和中間節(jié)點S的信息列表中對應記錄中的跳數(shù)是否相等,如果相等,將數(shù)據(jù)包中跳數(shù)加1,用MAC(密鑰、前跳節(jié)點ID、序列號)更新P的MAC,此外,為了使中間節(jié)點S接收到下一個數(shù)據(jù)包時仍能做出正確的屬性值設置,步驟S404還包括:將P的序列號寫入中間節(jié)點S的信息列表中對應記錄的序列號,然后轉(zhuǎn)發(fā)P。如果跳數(shù)不相等,生成告警信息,將所述告警信息寫入數(shù)據(jù)包P的標記節(jié)點ID字段,用MAC(密鑰、前跳節(jié)點ID、序列號、跳數(shù))更新P的MAC。需要說明的是,數(shù)據(jù)包中跳數(shù)與對應記錄中跳數(shù)不相等是因為主動敵手故意篡改,中間節(jié)點S的信息列表中對應記錄中的跳數(shù)才是正確的跳數(shù),為了后續(xù)蟲洞節(jié)點定位過程能準確定位出惡意節(jié)點位置,用中間節(jié)點S的信息列表中對應記錄中的跳數(shù)代替數(shù)據(jù)包P中跳數(shù),然后轉(zhuǎn)發(fā)數(shù)據(jù)包P,完成對數(shù)據(jù)包P的處理。
[0118]S405:將所述中間節(jié)點ID值寫入所述數(shù)據(jù)包的標記節(jié)點ID字段內(nèi);將由密鑰、標記節(jié)點ID、由前跳節(jié)點ID和序列號計算得到的消息認證碼和跳數(shù)計算得到的消息認證碼寫入數(shù)據(jù)包的消息認證碼字段內(nèi);
[0119]具體地,用中間節(jié)點S自己的ID設置數(shù)據(jù)包P的標記節(jié)點ID,用MAC (密鑰、標記節(jié)點ID、MAC(前跳節(jié)點ID,序列號)、跳數(shù))更新P的MAC。其中,為了使中間節(jié)點S接收到下一個數(shù)據(jù)包時仍能做出正確的屬性值設置,步驟S405還包括:將數(shù)據(jù)包P的序列號和跳數(shù)寫入中間節(jié)點S的信息列表對應記錄中,然后轉(zhuǎn)發(fā)數(shù)據(jù)包P,完成對數(shù)據(jù)包P的處理。
[0120]需要說明的是,如果數(shù)據(jù)包P的屬性值已經(jīng)被設置過,則直接轉(zhuǎn)發(fā)P,本實施例中提供的屬性值設置方法只針對未設置過屬性值的數(shù)據(jù)包設置,也就是說一個數(shù)據(jù)包只可能被設置一次,這樣,對于設置數(shù)據(jù)包屬性值的中間節(jié)點來說,其影響可以忽略不計,對于獲取數(shù)據(jù)包屬性值的匯聚節(jié)點來說,因為設置了屬性值的數(shù)據(jù)包比較少,所以其影響也比較小。
[0121]由上述方案可知,本實施例利用一種安全數(shù)據(jù)包屬性值設置算法對數(shù)據(jù)包屬性值進行設置。這種屬性值設置算法發(fā)生在數(shù)據(jù)包轉(zhuǎn)發(fā)過程中,不產(chǎn)生任何額外的網(wǎng)絡流量,利用這種屬性值設置算法,一個被設置了屬性值的數(shù)據(jù)包記錄了一條路徑中的一個節(jié)點和該節(jié)點在路徑中的位置。而且,一個數(shù)據(jù)包在屬性值設置算法中只能被設置一次,所以這可以避免重復設置帶來的不必要的開銷,提高了設置算法的收斂速度。這種屬性值設置算法下,利用獲取的屬性值,除了能重構(gòu)當前網(wǎng)絡拓撲,還能為提前識別出敵手的一些簡單攻擊行為做準備,例如,為防止主動敵手修改屬性值,屬性值設置階段會更新MAC,為防止主動敵手修改數(shù)據(jù)包的跳數(shù),屬性值設置階段會設置數(shù)據(jù)包告警信息。這對進一步提高蟲洞攻擊定位覆蓋率及準確率大有益處。
[0122]基于前述實施例一或?qū)嵤├?,匯聚節(jié)點收到由上述數(shù)據(jù)包屬性值設置算法設置了屬性值的數(shù)據(jù)包之后,先檢查接收到的數(shù)據(jù)包有沒有設置屬性值,也就是獲取數(shù)據(jù)包的屬性值。每當匯聚節(jié)點接收到屬性值中標記節(jié)點ID字段不為空的數(shù)據(jù)包時,其源節(jié)點與標記節(jié)點之間的路徑會被重構(gòu),同時這也告訴我們這條路由發(fā)生了變化。具體的,參見圖5所示,其示出了本發(fā)明實施例三提供的一種蟲洞攻擊定位方法的部分流程圖,匯聚節(jié)點SO收到屬性值中標記節(jié)點ID不為空的數(shù)據(jù)包pi之后,重構(gòu)pi所屬源節(jié)點到匯聚節(jié)點SO的路徑的步驟具體如下:
[0123]S501、檢查接收到的數(shù)據(jù)包的序列號與所述匯聚節(jié)點中記錄的序列號之差是否為1,如果d等于1,則執(zhí)行步驟S502,如果d大于1,則執(zhí)行步驟S503 ;
[0124]具體地,判斷數(shù)據(jù)包pi的序列號和匯聚節(jié)點SO記錄的路徑中的序列號之差d是否為1,如果是,則執(zhí)行步驟S502,如果否,則執(zhí)行步驟S503。需要說明的是,如果數(shù)據(jù)包Pl的標記節(jié)點ID為空,則說明該數(shù)據(jù)包沿著之前的數(shù)據(jù)包所走過的路徑傳到了匯聚節(jié)點,此時不需要重構(gòu)路徑,匯聚節(jié)點將Pl的序列號存入路徑中的序列號之后不再對數(shù)據(jù)包進行任何操作。
[0125]S502、檢查所述數(shù)據(jù)包的前跳節(jié)點ID是否和所述匯聚節(jié)點中記錄的路徑中對應位置的節(jié)點ID相同,如果相同,將所述數(shù)據(jù)包的標記節(jié)點ID寫入所述路徑中對應位置,清空所述路徑中從所述位置到匯聚節(jié)點之間的所有節(jié)點;[0126]具體地,檢查pi的前跳節(jié)點ID是否和匯聚節(jié)點SO中記錄的路徑中對應位置的節(jié)點ID相同,如果相同,將數(shù)據(jù)包的標記節(jié)點ID寫入路徑中的對應位置,清空從該位置到匯聚節(jié)點之間的所有節(jié)點;
[0127]其中,步驟S502還包括生成路徑變化報告,路徑變化報告告知網(wǎng)絡管理員此處發(fā)生了路徑變化,網(wǎng)絡管理員可據(jù)此報告排查網(wǎng)絡是否出現(xiàn)故障;
[0128]需要說明的是,如果發(fā)現(xiàn)pi的前跳節(jié)點ID和路徑中對應位置的節(jié)點ID不相同,步驟S502還會生成關(guān)于pi的標記節(jié)點的前跳節(jié)點所在位置的攻擊報告,也就是定位Pl的標記節(jié)點的前跳節(jié)點為蟲洞攻擊節(jié)點,針對主動敵手隨機轉(zhuǎn)發(fā)數(shù)據(jù)包到其任意鄰居節(jié)點的情況,可以不經(jīng)過后續(xù)重構(gòu)、拓撲比對、規(guī)則判斷及定位步驟就快速定位出蟲洞節(jié)點所在位置。
[0129]S503、檢查所述數(shù)據(jù)包的標記節(jié)點ID是否和所述匯聚節(jié)點存有的路徑中的對應位置節(jié)點ID相同,如果不相同,清空路徑中“跳數(shù)-所述數(shù)據(jù)包序列號與所述路徑中序列號之差”之后的所有節(jié)點,將所述數(shù)據(jù)包的標記節(jié)點ID寫入路徑中對應位置的節(jié)點ID ;
[0130]具體地,檢查pi的標記節(jié)點ID是否和路徑中對應位置的節(jié)點ID相同,如果不相同,則清空該路徑中“跳數(shù)-d”之后的所有節(jié)點,將pi的標記節(jié)點ID寫入路徑中的對應位置ID ;
[0131]其中,步驟S503還可以包括生成丟包報告,丟包報告告知網(wǎng)絡管理員此處發(fā)現(xiàn)了數(shù)據(jù)包丟失,網(wǎng)絡管理員可據(jù)此報告排查丟包原因。此外,針對主動敵手隨機丟棄數(shù)據(jù)包的情況,可以快速定位出攻擊節(jié)點所在位置;
[0132]其中,步驟S503在發(fā)現(xiàn)pi的標記節(jié)點ID是否和路徑中對應位置的節(jié)點ID不相同時還包括生成路徑變化報告,路徑變化報告告知網(wǎng)絡管理員此處發(fā)生了路徑變化,網(wǎng)絡管理員可據(jù)此報告排查網(wǎng)絡是否出現(xiàn)故障。
[0133]具體地,參見圖6所示,匯聚節(jié)點緩存區(qū)定義了一個叫做“路徑”的數(shù)據(jù)結(jié)構(gòu),用來存儲源節(jié)點到匯聚節(jié)點所經(jīng)過的路由信息。一個路徑包含一個數(shù)組,數(shù)組中每個位置存放一個數(shù)據(jù)包途徑節(jié)點的ID,這些節(jié)點ID在數(shù)組中的位置由它們到源節(jié)點的跳數(shù)距離來索弓I。一個路徑同時還包含一個字段,記錄對應的源節(jié)點到達匯聚節(jié)點的數(shù)據(jù)包的最新序列號。這樣的存儲方式簡單明了,但并不限于數(shù)組,其他實施例中可利用鏈表、隊列、樹等其他數(shù)據(jù)結(jié)構(gòu)存儲路由信息。
[0134]匯聚節(jié)點收到一個新數(shù)據(jù)包時,檢查匯聚節(jié)點是否已經(jīng)有源節(jié)點對應的路徑,如果有,則比較數(shù)據(jù)包的序列號以及路徑當前的序列號來決定進一步操作。這里將數(shù)據(jù)包中序列號與當前路徑中記錄的序列號的差記為d,如果數(shù)據(jù)包序列號小于路徑中記錄的序列號(d< I),說明這是一個重復或者延遲收到的數(shù)據(jù)包,因為重復和延遲包中的設置的屬性值信息通常已經(jīng)過時,而且很可能給屬性值獲取和網(wǎng)絡拓撲重構(gòu)過程帶來錯誤,因此本發(fā)明中直接忽略這些數(shù)據(jù)包中設置的屬性值;如果新數(shù)據(jù)包序列號與路徑中記錄的序列號僅相差Ud = I),也就是序列號連續(xù),則說明沒有數(shù)據(jù)包丟失;如果d>i,序列號出現(xiàn)不連續(xù),說明有數(shù)據(jù)包在傳輸途中丟失,丟失的包的數(shù)目為d-1,此時先生成丟包報告。如果數(shù)據(jù)包中設置的標記節(jié)點ID和路徑數(shù)組中對應索引位置上當前記錄的ID不一致,則認為有路由變化發(fā)生,并且路由發(fā)生變化的位置在跳數(shù)索引的位置和其之前d跳范圍內(nèi),網(wǎng)絡拓撲重構(gòu)時會據(jù)此生成一個路由變化報告。在發(fā)生路由變化的情況下,路徑數(shù)組中當前所記錄的從跳數(shù)之前d跳開始到匯聚節(jié)點的路由信息很可能已經(jīng)與實際路由不一致,因此將該數(shù)組中該范圍內(nèi)的數(shù)據(jù)都清空。
[0135]下面以一個路徑重構(gòu)例子詳細說明路徑重構(gòu)的原理,參見圖7所示。匯聚節(jié)點收到一個新的標記節(jié)點ID不為空的數(shù)據(jù)包,標記節(jié)點是S*,距離源節(jié)點4跳,因為該數(shù)據(jù)包標記節(jié)點ID不為空,所以一定是路由發(fā)生了變化,故S*和路徑中對應位置當前存儲的節(jié)點ID,即S4肯定不一致?,F(xiàn)在的問題是如何準確定位出路由變化所發(fā)生的起始位置,在沒有數(shù)據(jù)包丟失的情況下,可以判斷出此時的路由變化是S3節(jié)點將其下一跳節(jié)點從S4變?yōu)镾*。在本例中d = 2,意味著有一個數(shù)據(jù)包在傳輸過程中丟失了,當然實際系統(tǒng)中還存在更復雜的情況。路由變化發(fā)生的起始位置可能在S2節(jié)點處,即S2將其下一跳節(jié)點從S3變?yōu)镾*,根據(jù)本發(fā)明的屬性值設置算法,S*節(jié)點將會設置同一源節(jié)點接下來到達的數(shù)據(jù)包的屬性值,但是此被設置的數(shù)據(jù)包可能在下面的途中丟失了,因此匯聚節(jié)點并沒有及時發(fā)現(xiàn)這個路由的變化。直到之后的一個數(shù)據(jù)包被S*設置了屬性值并到達匯聚節(jié)點,匯聚節(jié)點才能夠了解到該源節(jié)點至匯聚節(jié)點的路由已經(jīng)發(fā)生了變化。另一種可能的情況就是路由變化的起始位置就在S3,但是S3沒有把該源節(jié)點的下一個數(shù)據(jù)包成功發(fā)送給S*,因此直到第二個數(shù)據(jù)包到來S*才進行屬性值設置。綜合可能存在的多種情況,在此路由變化的例子中,匯聚節(jié)點當前路徑中從S3到匯聚節(jié)點之間的路由信息都是不準確的。故路徑重構(gòu)算法將S4更新為S*并清空數(shù)組中 其他位置,等待進一步的信息來更新整條路徑。
[0136]按照上述重構(gòu)網(wǎng)絡拓撲方式,理想情況下,重構(gòu)一條路徑所需的時間=所需要的數(shù)據(jù)包數(shù)量*發(fā)包周期,而所需要的數(shù)據(jù)包數(shù)量等于該節(jié)點距離匯聚節(jié)點的跳數(shù)。
[0137]下面以一條完整路徑為例,進一步說明重構(gòu)網(wǎng)絡拓撲的過程。假設初始路徑為{S5,S4,S3,S2,SI},重構(gòu)后路徑為{S5,S4,S6,S2,SI}。重構(gòu)過程如下:數(shù)據(jù)包經(jīng)過距源節(jié)點S5兩跳的節(jié)點S6時,由于該數(shù)據(jù)包第一次經(jīng)過節(jié)點S6,故節(jié)點S6會設置數(shù)據(jù)包的屬性值,之后數(shù)據(jù)包被轉(zhuǎn)發(fā)到節(jié)點S2,節(jié)點S2發(fā)現(xiàn)該數(shù)據(jù)包被設置了屬性值,直接將該數(shù)據(jù)包轉(zhuǎn)發(fā)到節(jié)點SI,節(jié)點SI也發(fā)現(xiàn)該數(shù)據(jù)包被設置了屬性值,直接將該數(shù)據(jù)包轉(zhuǎn)發(fā)到匯聚節(jié)點。匯聚節(jié)點收到這個數(shù)據(jù)包之后,發(fā)現(xiàn)當前維護的路徑中與源節(jié)點S5距離為兩跳的節(jié)點是S3而不是S6,但前跳節(jié)點仍為節(jié)點S4,這說明路由發(fā)生了變化,但無法確認是否存在蟲洞攻擊。在沒有數(shù)據(jù)包丟失的情況下,匯聚節(jié)點將路徑中S3、S2及SI清空,將S6寫入路徑與其跳數(shù)對應的位置,此時路徑變?yōu)閧S5,S4, S6},接下來下一個數(shù)據(jù)包經(jīng)過節(jié)點S2時,節(jié)點S2因數(shù)據(jù)包序列號不連續(xù)會對數(shù)據(jù)包進行屬性值設置,SI仍直接將數(shù)據(jù)包轉(zhuǎn)發(fā)至匯聚節(jié)點,匯聚節(jié)點接收到由S2設置了屬性值的數(shù)據(jù)包之后,發(fā)現(xiàn)前跳節(jié)點仍為S6,將S2寫入路徑與其跳數(shù)對應的位置,此時路徑變?yōu)閧S5,S4,S6,S2}。同樣,接下來的一個數(shù)據(jù)包會由SI設置屬性值,匯聚節(jié)點將SI寫入路徑對應位置,最終重構(gòu)出路徑{S5,S4,S6,S2,SI}。
[0138]參考圖8,其示出了本發(fā)明實施例四提供的一種蟲洞攻擊定位方法的部分流程圖,其中,所述步驟103具體可以通過以下步驟實現(xiàn):
[0139]S801:比較初始網(wǎng)絡拓撲U和當前網(wǎng)絡拓撲Ukt中每一條從同一源節(jié)點出發(fā)的路徑,也就是下標一致的路徑;減去路徑中相似的部分,得到在U中變化的部分
'U和在Urt中的變化部分仏7.={Sk”Sk2”』.b) > t表不變化路徑的條數(shù)。
[0140]其中,網(wǎng)絡初始化階段結(jié)束后,初始網(wǎng)絡拓撲記為U,網(wǎng)絡運行階段,實時收集的當前網(wǎng)絡拓撲記為Urt,U可表示為U = Cr1, r2,...rn), T1表示一條從節(jié)點i出發(fā)到匯聚節(jié)點的路徑,假設無線傳感器網(wǎng)絡中有η個源節(jié)點,則U中就有η條路徑。同樣的,Ukt可表示為Uet = (S1, S2,...sn), Si表示一條從節(jié)點i出發(fā)到匯聚節(jié)點的路徑。t小于或等于η。
[0141 ] S802:計算路徑的平均縮短長度,路徑的平均縮短長度為[(I rkl | -1 skl |) + (| rk21 -1%21) +…+ (I rkt H skt I) ] /t。
[0142]蟲洞節(jié)點是在網(wǎng)絡初始化階段結(jié)束之后布置的,因此在成功的參與網(wǎng)絡之后它只會存在于變化的路徑中。本實施例中比對了沒有蟲洞攻擊的初始網(wǎng)絡拓撲和可能有蟲洞攻擊的當前網(wǎng)絡拓撲,比對結(jié)果是每一條從源節(jié)點出發(fā)到匯聚節(jié)點的路徑變化。
[0143]與網(wǎng)絡動態(tài)性相比,蟲洞是網(wǎng)絡中路徑縮短的主要原因,針對這個特點,匯聚節(jié)點通過兩個因素來搜尋蟲洞攻擊,一個是變化路徑的比例,因為蟲洞節(jié)點吸引了網(wǎng)絡中很大一部分流量,所以很多路徑會發(fā)生變化,雖然網(wǎng)絡拓撲的動態(tài)性也能引起路徑變化,但經(jīng)過仿真發(fā)現(xiàn),蟲洞攻擊對路徑的影響比網(wǎng)絡動態(tài)性大得多。另一個是變化路徑的縮短長度,經(jīng)過仿真實驗發(fā)現(xiàn),蟲洞攻擊很大程度的減少了變化路徑的長度。因此本實施例在找出變化的路徑之后,還計算了變化路徑的條數(shù)及平均路徑縮短長度,為后續(xù)蟲洞攻擊的定位做好了準備。
[0144]參考圖9,其示出了本發(fā)明實施例五提供的一種蟲洞攻擊定位方法的部分流程圖,步驟104中定位蟲洞節(jié)點包括以下步驟:
[0145]步驟S901:判斷所述拓撲比對結(jié)果是否表明所述當前網(wǎng)絡拓撲中相對于所述初始網(wǎng)絡拓撲發(fā)生變化的路徑的比例大于或等于比例閾值,如果大于,執(zhí)行步驟S902 ; [0146]其中,變化路徑的比例也就是t/n的值,也就是所有路徑中變化的路徑所占的比例,如果這個比例小于預設的比例閾值,我們認為路徑變化是網(wǎng)絡動態(tài)性引起的,因為它對路徑的影響不明顯。相反的,如果這個比例大于比例閾值,意味著發(fā)生了一個不可忽略的路徑變化事件。通過仿真發(fā)現(xiàn),比例閾值可以設定為1%~5%。
[0147]步驟S902:所述發(fā)生變化的路徑的平均縮短距離大于或等于距離閾值,如果大于,則執(zhí)行步驟S903 ;
[0148]其中,如果平均縮短長度大于設定的距離閾值,則認為存在蟲洞攻擊。同樣通過仿真發(fā)現(xiàn)距離閾值可以設定為1.5跳來區(qū)別蟲洞攻擊和網(wǎng)絡動態(tài)性對路徑縮短的影響。
[0149]步驟S903:將所述當前網(wǎng)絡拓撲中相對于所述初始網(wǎng)絡拓撲發(fā)生變化的路徑中距離所述匯聚節(jié)點最近且發(fā)生了距離縮短的節(jié)點確定為蟲洞入口節(jié)點;將所述路徑中蟲洞入口節(jié)點的下一跳節(jié)點確定為蟲洞出口節(jié)點。
[0150]具體地,在變化的路徑中統(tǒng)計哪些節(jié)點出現(xiàn)了距離縮短現(xiàn)象,然后找出所有路徑中距離所述匯聚節(jié)點最近且發(fā)生了距離縮短的節(jié)點,此節(jié)點就是蟲洞的入口節(jié)點,路徑中蟲洞入口節(jié)點的下一跳節(jié)點即是蟲洞的出口節(jié)點,從而定位出了蟲洞節(jié)點對。
[0151 ] 由上述方案可知,本實施例中預設的蟲洞攻擊網(wǎng)絡拓撲變化規(guī)則為變化路徑在所有路徑中所占比例及路徑的平均縮短距離。本發(fā)明其他實施例中不限于這個規(guī)則,只要是蟲洞攻擊引發(fā)的網(wǎng)絡特征都可用于判斷蟲洞攻擊并定位蟲洞攻擊節(jié)點。
[0152]上述實施例中,雖然主動敵手不會發(fā)現(xiàn)傳感器網(wǎng)絡正在檢測并定位蟲洞節(jié)點,但是,主動敵手會故意通過錯誤設置數(shù)據(jù)包屬性值或隨機選擇下一跳節(jié)點來轉(zhuǎn)發(fā)數(shù)據(jù)包的方式破壞正確網(wǎng)絡拓撲的收集。
[0153]為了防止主動敵手故意篡改數(shù)據(jù)包的屬性值,優(yōu)選地,參考圖10,其示出了本發(fā)明實施例六提供的一種蟲洞攻擊定位方法的部分流程圖,在步驟SlOl之后,在步驟S102之前,蟲洞攻擊定位方法還包括以下步驟:
[0154]S1001:匯聚節(jié)點接收到數(shù)據(jù)包之后,判斷數(shù)據(jù)包的消息認證碼是否正確,如果正確,執(zhí)行步驟S102 ;如果不正確,執(zhí)行步驟S1002 ;
[0155]其中,匯聚節(jié)點需要計算兩次MAC,一次由前跳節(jié)點計算的MAC,另一次是由標記節(jié)點計算的MAC,如果MAC有誤,說明有敵手偽造或篡改了 MAC。
[0156]S1002:匯聚節(jié)點生成關(guān)于該源節(jié)點所在路徑的攻擊報告。
[0157]由上述方案可知,本實施例利用消息認證碼來防止數(shù)據(jù)包屬性值被惡意篡改,它保護了數(shù)據(jù)包所有屬性值。在主動敵手故意篡改數(shù)據(jù)包屬性值的情況下,不需要拓撲重構(gòu)、拓撲比對、規(guī)則判斷和定位等后續(xù)步驟即可實現(xiàn)蟲洞攻擊的快速定位。
[0158]為了保護數(shù)據(jù)包的跳數(shù)這一屬性值,防止主動敵手故意篡改,優(yōu)選地,參考圖11,其示出了本發(fā)明實施例七提供的一種蟲洞攻擊定位方法的部分流程圖,在步驟SlOl之后,在步驟S102之前,蟲洞攻擊定位方法還包括以下步驟:
[0159]SllOl:匯聚節(jié)點接收到數(shù)據(jù)包之后,判斷數(shù)據(jù)包中標記節(jié)點ID字段中是否存有告警信息,如果有,執(zhí)行步驟SI 102,如果沒有,執(zhí)行步驟S102 ;
[0160]S1102:匯聚節(jié)點生成關(guān)于數(shù)據(jù)包中標記節(jié)點的前一跳節(jié)點所在位置的攻擊報告。
[0161]結(jié)合上述實施例給出的數(shù)據(jù)包屬性值設置過程,由上述方案可知,本實施例保護了跳數(shù)不被主動敵手隨意篡改。在主動敵手故意篡改數(shù)據(jù)包跳數(shù)的情況下,不需要拓撲重構(gòu)、拓撲比對、規(guī)則判斷和定位等后續(xù)步驟即可實現(xiàn)蟲洞攻擊的快速定位。
[0162]基于上述兩個實施例,其他實施例中蟲洞攻擊定位方法可同時包括步驟S1001、S1002、SllOl和S1102,當主動敵手故意篡改任意數(shù)據(jù)包屬性值阻礙正確收集網(wǎng)絡拓撲時,這樣的蟲洞攻擊定位方法可快速定位出蟲洞節(jié)點位置。
[0163]參考圖12,其示出了本發(fā)明實施例八提供的一種蟲洞攻擊定位裝置,所述裝置包括:獲取模塊1201、重構(gòu)模塊1202、拓撲對比模塊1203、規(guī)則判斷模塊1204和蟲洞攻擊定位模塊1205,其中:
[0164]所述獲取模塊1201,用于獲取所述匯聚節(jié)點接收到的數(shù)據(jù)包中的屬性值,所述屬性值由其所經(jīng)由的中間節(jié)點進行設置;
[0165]其中,原始數(shù)據(jù)包屬性值包括:源節(jié)點ID、序列號、跳數(shù),本發(fā)明還新增加三個屬性值:標記節(jié)點ID、前跳節(jié)點ID和消息認證碼,中間節(jié)點緩存的信息列表包括:源節(jié)點ID、序列號、跳數(shù)。
[0166]所述重構(gòu)模塊1202,用于依據(jù)所述屬性值,重構(gòu)所述傳感器網(wǎng)絡的當前網(wǎng)絡拓撲,所述當前網(wǎng)絡拓撲中包括每個源節(jié)點至所述匯聚節(jié)點的路徑;
[0167]其中,優(yōu)選地,參考圖13,其示出了本發(fā)明實施例的另一結(jié)構(gòu)框圖,所述重構(gòu)模塊1202包括第一判斷子模塊1221和第二判斷子模塊1222:
[0168]第一判斷子模塊1221,用于判斷數(shù)據(jù)包中序列號與所述匯聚節(jié)點存有的序列號之差是否為1,如果等于1,則觸發(fā)第二判斷子模塊1222,如果大于1,則觸發(fā)第三判斷子模塊1223 ;
[0169]第二判斷子模塊1222,用于判斷所述數(shù)據(jù)包中前跳節(jié)點ID是否和所述匯聚節(jié)點存有的路徑中對應位置節(jié)點ID相同,如果相同,則觸發(fā)第一重構(gòu)子模塊1224 ;[0170]其中,所述路徑是指記錄從源節(jié)點到匯聚節(jié)點所走過的有序節(jié)點集,匯聚節(jié)點會維護所有路徑,也就是網(wǎng)絡拓撲。
[0171]第一重構(gòu)子模塊1224,用于將數(shù)據(jù)包標記節(jié)點ID寫入路徑中對應位置的節(jié)點ID,清空路徑中從該位置到匯聚節(jié)點之間的所有節(jié)點;
[0172]第三判斷子模塊1223,用于判斷所述數(shù)據(jù)包標記節(jié)點ID是否和所述匯聚節(jié)點存有的路徑中的對應位置節(jié)點ID相同,如果不相同,觸發(fā)第二重構(gòu)子模塊1225 ;
[0173]第二重構(gòu)子模塊1225,用于清空路徑中“跳數(shù)-所述數(shù)據(jù)包序列號與路徑中序列號之差”之后的所有節(jié)點,將數(shù)據(jù)包的標記節(jié)點ID寫入路徑中對應位置的節(jié)點ID。
[0174]所述拓撲對比模塊1203,用于將所述傳感器網(wǎng)絡的初始網(wǎng)絡拓撲與所述當前網(wǎng)絡拓撲進行比對,得到拓撲比對結(jié)果,所述初始網(wǎng)絡拓撲為所述傳感器網(wǎng)絡在初始化完成時的網(wǎng)絡拓撲;
[0175]所述規(guī)則判斷模塊1204,用于判斷所述拓撲比對結(jié)果是否滿足預設蟲洞攻擊的網(wǎng)絡拓撲變化規(guī)則,如果是,觸發(fā)定位模塊1205 ;
[0176]其中,優(yōu)選地,參考圖14,其示出了本發(fā)明實施例的另一結(jié)構(gòu)框圖,所述規(guī)則判斷模塊1204包括第一規(guī)則判斷子模塊1241和第二規(guī)則判斷子模塊1242,其中:
[0177]第一規(guī)則判斷子模塊1241,用于判斷所述拓撲比對結(jié)果是否表明所述當前網(wǎng)絡拓撲中相對于所述初始網(wǎng)絡拓撲發(fā)生變化的路徑的比例大于或等于比例閾值;
[0178]第二規(guī)則判斷子模塊1242,用于判斷所述拓撲比對結(jié)果是否表明所述當前網(wǎng)絡拓撲中相對于所述初始網(wǎng)絡拓撲發(fā)生變化的路徑的平均縮短距離大于或等于距離閾值。
[0179]其中,同時滿足第一規(guī)則判斷子模塊1241和第二規(guī)則判斷子模塊1242得出的結(jié)果時,滿足預設的蟲洞攻擊的網(wǎng)絡拓撲變化規(guī)則,說明有蟲洞攻擊存在。
[0180]所述定位模塊1205,用于依據(jù)所述當前網(wǎng)絡拓撲定位蟲洞節(jié)點。
[0181]其中,優(yōu)選地,參考圖15,其示出了本發(fā)明實施例的另一結(jié)構(gòu)示意圖,所述定位模塊1205包括:
[0182]第一蟲洞節(jié)點確定子模塊1251,用于將所述當前網(wǎng)絡拓撲中相對于所述初始網(wǎng)絡拓撲發(fā)生變化的路徑中距離所述匯聚節(jié)點最近且發(fā)生了距離縮短的節(jié)點確定為蟲洞入口節(jié)點;
[0183]第二蟲洞節(jié)點確定子模塊1252,用于將所述路徑中蟲洞入口節(jié)點的下一跳節(jié)點確定為蟲洞出口節(jié)點。
[0184]基于上述實施例,所述屬性值包括標記節(jié)點ID、前跳節(jié)點ID和消息認證碼MAC,優(yōu)選地,參考圖16,其示出了本發(fā)明實施例九提供的結(jié)構(gòu)框圖,本實施例中所述屬性值由其所經(jīng)由的中間節(jié)點通過以下模塊進行設置,包括:
[0185]第一判斷模塊1601,用于判斷是否所述中間節(jié)點的信息列表中有與接收到的數(shù)據(jù)包所屬源節(jié)點對應的記錄,如果有,判斷是否所述記錄中序列號與所述數(shù)據(jù)包中序列號連續(xù),如果是,則觸發(fā)第一設置模塊1602 ;
[0186]第一設置模塊1602,用于在所述數(shù)據(jù)包的前跳節(jié)點ID字段內(nèi),寫入所述中間節(jié)點ID值,并觸發(fā)第二判斷模塊1603 ;
[0187]第二判斷模塊1603,用于判斷所述數(shù)據(jù)包的跳數(shù)與所述記錄中跳數(shù)是否相等,如果相等,觸發(fā)第二設置模塊1604 ;如果不相等,觸發(fā)第三設置模塊1605 ;[0188]第二設置模塊1604,用于將所述數(shù)據(jù)包的跳數(shù)加1,將由密鑰、前跳節(jié)點ID和序列號計算得到的消息認證碼寫入數(shù)據(jù)包的消息認證碼字段;
[0189]第三設置模塊1605,用于將所述數(shù)據(jù)包的跳數(shù)改為所述記錄中的跳數(shù),生成告警信息,并將告警信息寫入數(shù)據(jù)包的標記節(jié)點ID字段內(nèi),用于將由密鑰、前跳節(jié)點ID、序列號和跳數(shù)計算得到的消息認證碼寫入數(shù)據(jù)包的消息認證碼字段;
[0190]第三判斷模塊1606,用于判斷是否所述信息列表有與所述數(shù)據(jù)包所屬源節(jié)點對應的記錄,如果有,判斷是否所述記錄中序列號與所述數(shù)據(jù)包中序列號不連續(xù),如果是,則觸發(fā)第四設置模塊1607;
[0191]第四設置模塊1607,用于在所述數(shù)據(jù)包的標記節(jié)點ID字段內(nèi),寫入所述中間節(jié)點ID值;將由密鑰、標記節(jié)點ID、由前跳節(jié)點ID和序列號計算得到的消息認證碼和跳數(shù)計算得到的消息認證碼寫入數(shù)據(jù)包的消息認證碼字段;
[0192]第四判斷模塊1608,用于判斷是否所述信息列表中沒有與所述數(shù)據(jù)包所屬源節(jié)點對應的記錄,如果是,觸發(fā)第五設置模塊1609 ;
[0193]第五設置模塊1609,用于在所述數(shù)據(jù)包的標記節(jié)點ID字段內(nèi),寫入所述中間節(jié)點ID值,將由密鑰、標記節(jié)點ID、由前跳節(jié)點ID和序列號計算得到的消息認證碼和跳數(shù)計算得到的消息認證碼寫入數(shù)據(jù)包的消息認證碼字段。
[0194]本實施例中的屬性值設置模塊在數(shù)據(jù)包大小允許的情況下,只設置了與蟲洞攻擊定位有關(guān)的屬性值,設置規(guī)則簡單直觀,且設置過屬性值的數(shù)據(jù)包不再多次設置,對執(zhí)行屬性值設置的中間節(jié)點來說影響可忽略不計。其他實施例中屬性值設置模塊不限于此,只要能起到標識作用,利于后續(xù)網(wǎng)絡拓撲重構(gòu)即可。
[0195]其中,優(yōu)選地,參考圖17,其示出了本發(fā)明實施例十的結(jié)構(gòu)框圖,所述蟲洞攻擊定位裝置還包括消息認證碼判斷模塊1701和第一蟲洞攻擊報告模塊1702,其中:
[0196]消息認證碼判斷模塊1701,用于在所述獲取模塊1201獲取到數(shù)據(jù)包屬性值之后,在所述重構(gòu)模塊1202重構(gòu)拓撲網(wǎng)絡之前,判斷屬性值中消息認證碼是否正確,如果正確,觸發(fā)重構(gòu)模塊1202 ;否則,觸發(fā)第一蟲洞攻擊報告模塊1702 ;
[0197]第一蟲洞攻擊報告模塊1702,用于報告路徑中有蟲洞攻擊。
[0198]其中,判斷消息認證碼是否正確,需要判斷數(shù)據(jù)包的屬性值的消息認證碼與由前跳節(jié)點ID或標記節(jié)點ID計算的消息認證碼是否一致。
[0199]本實施例中的裝置增加了兩個模塊,利用數(shù)據(jù)包信息認證碼,保護了數(shù)據(jù)包的所有屬性值,針對主動敵手故意篡改數(shù)據(jù)包屬性值的情況,不需要經(jīng)過后續(xù)重構(gòu)、拓撲比對、規(guī)則判斷和定位模塊的處理就可快速定位出蟲洞節(jié)點位置。
[0200]其中,優(yōu)選地,參考圖18,其示出了本發(fā)明實施例十一提供的另一結(jié)構(gòu)示意圖,所述蟲洞攻擊定位裝置還包括告警信息識別模塊1801和第二蟲洞攻擊報告模塊1802,其中:
[0201]告警信息識別模塊1801,用于在所述獲取模塊1201獲取到數(shù)據(jù)包屬性值之后,在所述重構(gòu)模塊1202重構(gòu)拓撲網(wǎng)絡之前,識別所述數(shù)據(jù)包的標記節(jié)點ID字段中是否存有告警信息,如果有,觸發(fā)第二蟲洞攻擊報告模塊1802,否則,觸發(fā)重構(gòu)模塊1202 ;
[0202]第二蟲洞攻擊報告模塊1802,用于報告所述標記節(jié)點的前一跳節(jié)點為蟲洞節(jié)點。
[0203]本實施例中的裝置增加了兩個模塊,利用數(shù)據(jù)包告警信息,針對主動敵手故意篡改數(shù)據(jù)包跳數(shù)的情況,不需要經(jīng)過后續(xù)重構(gòu)、拓撲比對、規(guī)則判斷和定位模塊的處理就可快速定位出蟲洞節(jié)點位置。
[0204]基于上述兩個實施例,其他實施例中蟲洞攻擊定位裝置可同時包括消息認證碼判斷模塊1701、第一蟲洞攻擊報告模塊1702、告警信息識別模塊1801和第二蟲洞攻擊報告模塊1802,當主動敵手故意篡改任意數(shù)據(jù)包屬性值阻礙正確收集網(wǎng)絡拓撲時,這樣的蟲洞攻擊定位裝置可快速定位出蟲洞節(jié)點位置。
[0205]最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
[0206]本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。[0207]對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
【權(quán)利要求】
1.蟲洞攻擊定位方法,其特征在于,應用于傳感器網(wǎng)絡中的匯聚節(jié)點,所述方法包括:獲取所述匯聚節(jié)點接收到的數(shù)據(jù)包中的屬性值,所述屬性值由其所經(jīng)由的中間節(jié)點進行設置; 依據(jù)所述屬性值,重構(gòu)所述傳感器網(wǎng)絡的當前網(wǎng)絡拓撲,所述當前網(wǎng)絡拓撲中包括每個源節(jié)點至所述匯聚節(jié)點的路徑; 將所述傳感器網(wǎng)絡的初始網(wǎng)絡拓撲與所述當前網(wǎng)絡拓撲進行比對,得到拓撲比對結(jié)果,所述初始網(wǎng)絡拓撲為所述傳感器網(wǎng)絡在初始化完成時的網(wǎng)絡拓撲; 判斷所述拓撲比對結(jié)果是否滿足預設的網(wǎng)絡拓撲變化規(guī)則,如果是,依據(jù)所述當前網(wǎng)絡拓撲定位蟲洞節(jié)點。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述屬性值由其所經(jīng)由的中間節(jié)點通過以下步驟進行設置: 當所述中間節(jié)點的信息列表中有與所述中間節(jié)點接收到的數(shù)據(jù)包所屬源節(jié)點對應的記錄,且所述記錄中序列號與所述數(shù)據(jù)包的序列號屬性值連續(xù)時: 將所述中間節(jié)點的ID值寫入所述數(shù)據(jù)包的前跳節(jié)點ID屬性值字段內(nèi),判斷所述數(shù)據(jù)包的跳數(shù)屬性值與所述記錄中跳數(shù)是否相等,如果相等,將所述數(shù)據(jù)包的跳數(shù)屬性值加1,將由密鑰、前跳節(jié)點ID和序列號計算得到的消息認證碼寫入所述數(shù)據(jù)包的消息認證碼屬性值字段內(nèi),如果不相等,將所述數(shù)據(jù)包的跳數(shù)屬性值改寫為所述記錄中的跳數(shù),生成告警信息,將所述告警信息寫入所述數(shù)據(jù)包的標記節(jié)點ID屬性值字段內(nèi),將由密鑰、前跳節(jié)點ID、序列號和跳數(shù)計算 得到的消息認證碼寫入所述數(shù)據(jù)包的消息認證碼屬性值字段內(nèi); 當所述信息列表中有與所述數(shù)據(jù)包所屬源節(jié)點對應的記錄,且所述記錄中序列號與所述數(shù)據(jù)包的序列號屬性值不連續(xù)時: 將所述中間節(jié)點的ID值寫入所述數(shù)據(jù)包的標記節(jié)點ID屬性值字段內(nèi),將由密鑰、標記節(jié)點ID、由前跳節(jié)點ID和序列號計算得到的消息認證碼和跳數(shù)計算得到的消息認證碼寫入所述數(shù)據(jù)包的消息認證碼屬性值字段內(nèi); 當所述信息列表中沒有與所述數(shù)據(jù)包所屬源節(jié)點對應的記錄時: 將所述中間節(jié)點的ID值寫入所述數(shù)據(jù)包的標記節(jié)點ID屬性值字段內(nèi),將由密鑰、標記節(jié)點ID、由前跳節(jié)點ID和序列號計算得到的消息認證碼和跳數(shù)計算得到的消息認證碼寫入所述數(shù)據(jù)包的消息認證碼屬性值字段內(nèi)。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述屬性值包括源節(jié)點ID、序列號、跳數(shù)、標記節(jié)點ID、前跳節(jié)點ID及消息認證碼;相應的,所述依據(jù)所述屬性值,重構(gòu)所述傳感器網(wǎng)絡的當前網(wǎng)絡拓撲包括具體步驟:當所述匯聚節(jié)點接收到的數(shù)據(jù)包的序列號與所述匯聚節(jié)點中記錄的序列號之差等于I時,檢查所述數(shù)據(jù)包的前跳節(jié)點ID是否和所述匯聚節(jié)點記錄的路徑中對應位置的節(jié)點ID相同,如果相同,則將所述數(shù)據(jù)包的標記節(jié)點ID寫入所述路徑中對應位置,清空所述路徑中從所述位置到所述匯聚節(jié)點之間的所有節(jié)點; 當所述數(shù)據(jù)包的序列號與所述匯聚節(jié)點中記錄的序列號之差大于I時,檢查所述數(shù)據(jù)包的標記節(jié)點ID是否和所述匯聚節(jié)點記錄的路徑中對應位置的節(jié)點ID相同,如果不相同,清空所述路徑中“跳數(shù)-所述數(shù)據(jù)包序列號與所述路徑中序列號之差”之后的所有節(jié)點,將所述數(shù)據(jù)包的標記節(jié)點ID寫入所述路徑中對應位置。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述網(wǎng)絡拓撲變化規(guī)則包括:網(wǎng)絡拓撲中變化路徑的比例大于或等于比例閾值,且路徑平均縮短距離大于或等于距離閾值; 相應的,所述判斷所述拓撲比對結(jié)果是否滿足預設的網(wǎng)絡拓撲變化規(guī)則,具體包括:判斷所述拓撲比對結(jié)果是否表明所述當前網(wǎng)絡拓撲中相對于所述初始網(wǎng)絡拓撲發(fā)生變化的路徑的比例大于或等于比例閾值,且所述發(fā)生變化的路徑的平均縮短距離大于或等于距離閾值。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,依據(jù)所述當前網(wǎng)絡拓撲定位蟲洞節(jié)點具體包括: 將所述當前網(wǎng)絡拓撲中相對于所述初始網(wǎng)絡拓撲發(fā)生變化的路徑中距離所述匯聚節(jié)點最近且發(fā)生了距離縮短的節(jié)點確定為蟲洞入口節(jié)點; 將所述路徑中蟲洞入口節(jié)點的下一跳節(jié)點確定為蟲洞出口節(jié)點。
6.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,在獲取所述匯聚節(jié)點接收到的數(shù)據(jù)包中的屬性值之后,在重構(gòu)所述傳感器網(wǎng)絡的當前網(wǎng)絡拓撲之前,還包括: 判斷所述數(shù)據(jù)包的消息認證碼屬性值是否正確,如果正確,執(zhí)行所述重構(gòu)所述傳感器網(wǎng)絡的當前網(wǎng)絡拓撲步驟,否則,報告路徑中有蟲洞攻擊。
7.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,在獲取所述匯聚節(jié)點接收到的數(shù)據(jù)包中的屬性值之后,在重構(gòu)所述傳感器網(wǎng)絡的當前網(wǎng)絡拓撲之前,還包括: 識別所述數(shù)據(jù)包的標記節(jié)點ID屬性值字段內(nèi)是否存有告警信息,如果有,定位所述標記節(jié)點ID的前一跳節(jié)點為蟲洞節(jié)點,否則,執(zhí)行所述重構(gòu)所述傳感器網(wǎng)絡的當前網(wǎng)絡拓撲步驟。
8.蟲洞攻擊定位裝置,其特征在于,應用于傳感器網(wǎng)絡中的匯聚節(jié)點,所述裝置包括: 獲取模塊,用于獲取所述匯聚節(jié)點接收到的數(shù)據(jù)包中的屬性值,所述屬性值由其所經(jīng)由的中間節(jié)點進行設置; 重構(gòu)模塊,用于依據(jù)所述屬性值,重構(gòu)所述傳感器網(wǎng)絡的當前網(wǎng)絡拓撲,所述當前網(wǎng)絡拓撲中包括每個源節(jié)點至所述匯聚節(jié)點的路徑; 拓撲對比模塊,用于將所述傳感器網(wǎng)絡的初始網(wǎng)絡拓撲與所述當前網(wǎng)絡拓撲進行比對,得到拓撲比對結(jié)果,所述初始網(wǎng)絡拓撲為所述傳感器網(wǎng)絡在初始化完成時的網(wǎng)絡拓撲; 規(guī)則判斷模塊,用于判斷所述拓撲比對結(jié)果是否滿足預設蟲洞攻擊的網(wǎng)絡拓撲變化規(guī)貝U,如果是,觸發(fā)定位模塊; 定位模塊,用于依據(jù)所述當前網(wǎng)絡拓撲定位蟲洞節(jié)點。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述屬性值由其所經(jīng)由的中間節(jié)點通過以下模塊進行設置,包括: 第一判斷模塊,用于判斷是否所述中間節(jié)點的信息列表中有與所述中間節(jié)點接收到的數(shù)據(jù)包所屬源節(jié)點對應的記錄,如果有,判斷是否所述記錄中序列號與所述數(shù)據(jù)包的序列號屬性值連續(xù),如果是,則觸發(fā)第一設置模塊; 第一設置模塊,用于將所述中間節(jié)點的ID值寫入所述數(shù)據(jù)包中屬性值的前跳節(jié)點ID字段內(nèi),并觸發(fā)第二判斷模塊; 第二判斷模塊,用于判斷所述數(shù)據(jù)包的跳數(shù)屬性值與所述記錄中跳數(shù)是否相等,如果相等,觸發(fā)第二設置模塊,如果不相等,則觸發(fā)第三設置模塊; 第二設置模塊,用于將所述數(shù)據(jù)包的跳數(shù)屬性值加1,將由密鑰、前跳節(jié)點ID和序列號計算得到的消息認證碼寫入數(shù)據(jù)包的消息認證碼屬性值字段內(nèi); 第三設置模塊,用于將所述數(shù)據(jù)包的跳數(shù)屬性值改寫為所述記錄中的跳數(shù),生成告警信息,并將所述告警信息寫入數(shù)據(jù)包的標記節(jié)點ID屬性值字段內(nèi),將由密鑰、前跳節(jié)點ID、序列號和跳數(shù)計算得到的消息認證碼寫入數(shù)據(jù)包的消息認證碼屬性值字段內(nèi); 第三判斷模塊,用于判斷是否所述信息列表中有與所述數(shù)據(jù)包所屬源節(jié)點對應的記錄,如果有,判斷是否所述記錄中序列號與所述數(shù)據(jù)包的序列號屬性值不連續(xù),如果是,則觸發(fā)第四設置模塊; 第四設置模塊,用于將所述中間節(jié)點的ID值寫入所述數(shù)據(jù)包的標記節(jié)點ID屬性值字段內(nèi),將由密鑰、標記節(jié)點ID、由前跳節(jié)點ID和序列號計算得到的消息認證碼和跳數(shù)計算得到的消息認證碼寫入數(shù)據(jù)包的消息認證碼屬性值字段; 第四判斷模塊,用于判斷是否所述信息列表中沒有與所述數(shù)據(jù)包所屬源節(jié)點對應的記錄,如果是,觸發(fā)第五設置模塊; 第五設置模塊,用于將所述中間節(jié)點的ID值寫入所述數(shù)據(jù)包的標記節(jié)點ID屬性值字段內(nèi),將由密鑰、標記節(jié)點ID、由前跳節(jié)點ID和序列號計算得到的消息認證碼和跳數(shù)計算得到的消息認證碼寫入數(shù)據(jù)包的消息認證碼屬性值字段。
10.根據(jù)權(quán)利要求8或9所述的裝置,其特征在于,所述重構(gòu)模塊包括: 第一判斷子模塊,用于判斷所述匯聚節(jié)點接收到的數(shù)據(jù)包的序列號與所述匯聚節(jié)點記錄的序列號之差是否等于I,如果是,則觸發(fā)第二判斷子模塊,如果否,則觸發(fā)第三判斷子模塊; 第二判斷子模塊,用于判斷所述數(shù)據(jù)包的前跳節(jié)點ID是否和所述匯聚節(jié)點中記錄的路徑中對應位置的節(jié)點ID相同,如果相同,則觸發(fā)第一重構(gòu)子模塊; 第一重構(gòu)子模塊,用于將所述數(shù)據(jù)包的標記節(jié)點ID寫入所述路徑中對應位置,清空所述路徑中從所述位置到所述匯聚節(jié)點之間的所有節(jié)點; 第三判斷子模塊,用于判斷所述數(shù)據(jù)包的標記節(jié)點ID是否和所述匯聚節(jié)點中記錄的路徑中對應位置的節(jié)點ID相同,如果不相同,觸發(fā)第二重構(gòu)子模塊; 第二重構(gòu)子模塊,用于清空所述路徑中“跳數(shù)-所述數(shù)據(jù)包中序列號與所述路徑中序列號之差”之后的所有節(jié)點,將所述數(shù)據(jù)包的標記節(jié)點ID寫入所述路徑中對應位置。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述規(guī)則判斷模塊包括: 第一規(guī)則判斷子模塊,用于判斷所述拓撲比對結(jié)果是否表明所述當前網(wǎng)絡拓撲中相對于所述初始網(wǎng)絡拓撲發(fā)生變化的路徑的比例大于或等于比例閾值; 第二規(guī)則判斷子模塊,用于判斷所述拓撲比對結(jié)果是否表明所述當前網(wǎng)絡拓撲中相對于所述初始網(wǎng)絡拓撲發(fā)生變化的路徑的平均縮短距離大于或等于距離閾值。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述定位模塊包括: 第一蟲洞節(jié)點確定子模塊,用于將所述當前網(wǎng)絡拓撲中相對于所述初始網(wǎng)絡拓撲發(fā)生變化的路徑中距離所述匯聚節(jié)點最近且發(fā)生了距離縮短的節(jié)點確定為蟲洞入口節(jié)點; 第二蟲洞節(jié)點確定子模塊,用于將所述路徑中蟲洞入口節(jié)點的下一跳節(jié)點確定為蟲洞出口節(jié)點。
13.根據(jù)權(quán)利要求8或9所述的裝置,其特征在于,還包括: 消息認證碼判斷模塊,用于在所述獲取模塊獲取到數(shù)據(jù)包的屬性值之后,在所述重構(gòu)模塊重構(gòu)拓撲網(wǎng)絡之前,判斷數(shù)據(jù)包的消息認證碼屬性值是否正確,如果正確,觸發(fā)所述重構(gòu)模塊,否則,觸發(fā)第一蟲洞攻擊報告模塊; 第一蟲洞攻擊報告模塊,用于報告路徑中有蟲洞攻擊。
14.根據(jù)權(quán)利要求8或9所述的裝置,其特征在于,還包括: 告警信息識別模塊,用于在所述獲取模塊獲取到數(shù)據(jù)包的屬性值之后,在所述重構(gòu)模塊重構(gòu)拓撲網(wǎng)絡之前,識別所述數(shù)據(jù)包的標記節(jié)點ID屬性值字段內(nèi)是否存有告警信息,如果有,觸發(fā)第二蟲洞攻擊報告模塊,否則,觸發(fā)重構(gòu)模塊; 第二蟲洞攻擊報告模塊,用于報告所述標記節(jié)點ID的前一跳節(jié)點為蟲洞節(jié)點。
【文檔編號】H04W12/12GK103957526SQ201410214743
【公開日】2014年7月30日 申請日期:2014年5月20日 優(yōu)先權(quán)日:2014年5月20日
【發(fā)明者】魯力, 羅國星, 韓志罡, 劉永帥 申請人:電子科技大學