本發(fā)明是屬于監(jiān)測(cè)區(qū)域內(nèi)無(wú)線傳感器節(jié)點(diǎn)異常檢測(cè)方法技術(shù)領(lǐng)域,具體涉及一種基于多重完整性遠(yuǎn)程證明的異常節(jié)點(diǎn)檢測(cè)方法。
背景技術(shù):
無(wú)線傳感器網(wǎng)絡(luò)就是由部署在監(jiān)測(cè)區(qū)域內(nèi),大量的廉價(jià)微型節(jié)點(diǎn)組成的,通過(guò)無(wú)線通信網(wǎng)絡(luò)連接,形成的一個(gè)自組織無(wú)線網(wǎng)絡(luò)。不同傳感器節(jié)點(diǎn)所感知的數(shù)據(jù)類型不同,有的傳感器節(jié)點(diǎn)專門(mén)用于感知溫度,有的用于感知濕度,有的則感知壓力,有的則感知多種類型的數(shù)據(jù)。不同的傳感器適用于不同的應(yīng)用場(chǎng)景,典型的如用于檢測(cè)煤礦瓦斯?jié)舛鹊膫鞲衅飨到y(tǒng)。目前,傳感器網(wǎng)絡(luò)已經(jīng)大量應(yīng)用社會(huì)生活。
無(wú)線傳感器網(wǎng)絡(luò)有多種體系架構(gòu)?;镜囊环N網(wǎng)絡(luò)形式是:由大量廉價(jià)微型節(jié)點(diǎn)和少量sink節(jié)點(diǎn)組成。在這種形式下,各個(gè)廉價(jià)微型節(jié)點(diǎn)計(jì)算能力有限,能量有限,不能完成復(fù)雜的運(yùn)算。sink節(jié)點(diǎn)一般連接計(jì)算機(jī),復(fù)雜計(jì)算可委托計(jì)算機(jī)完成,可視其能夠支持復(fù)雜運(yùn)算,能量無(wú)限。在這種模式下,各個(gè)廉價(jià)微型節(jié)點(diǎn)只完成必要的計(jì)算,并盡可能減少傳輸?shù)臄?shù)據(jù)總量。為了提高網(wǎng)絡(luò)生存能力和感知能力,有的無(wú)線傳感器網(wǎng)絡(luò)引入具有較強(qiáng)計(jì)算能力的簇頭節(jié)點(diǎn),專門(mén)收集整理本簇內(nèi)微型節(jié)點(diǎn)的感知數(shù)據(jù)。也有的無(wú)線傳感器網(wǎng)絡(luò)是兩層或多層網(wǎng)絡(luò),不同層次各個(gè)節(jié)點(diǎn)的計(jì)算能力、能量水平有所不同。
由于無(wú)線傳感器網(wǎng)絡(luò)往往都部署于并不完全安全的場(chǎng)景。這就使得敵人可以在無(wú)線傳感器網(wǎng)絡(luò)管理者不察覺(jué)的情況下接近無(wú)線傳感器節(jié)點(diǎn),使用必要的手段對(duì)其進(jìn)行破解,甚至注入惡意的指令片段,使被控制的傳感器節(jié)點(diǎn)按照攻擊者的意愿發(fā)送非法數(shù)據(jù),進(jìn)而影響整個(gè)無(wú)線傳感器網(wǎng)絡(luò)的安全。由于傳感器網(wǎng)絡(luò)的末端節(jié)點(diǎn)通常都是廉價(jià)微型的節(jié)點(diǎn),出于制造成本的限制,很難大幅度提高單個(gè)節(jié)點(diǎn)的安全性。為了保證感知數(shù)據(jù)的準(zhǔn)確性,無(wú)線傳感器網(wǎng)絡(luò)大都采用密集部署的方法來(lái)增加數(shù)據(jù)的冗余,以便剔除異常的數(shù)據(jù)。
檢測(cè)異常傳感器節(jié)點(diǎn)的困難在于攻擊者可以完全控制傳感器節(jié)點(diǎn),剖析節(jié)點(diǎn)的指令和數(shù)據(jù),注入惡意指令和數(shù)據(jù)。由于成本的限制,傳感器節(jié)點(diǎn)的計(jì)算能力和可消耗的能量都十分有限,而且也不可能為其增加過(guò)多的安全機(jī)制。限于此,人們?cè)跈z測(cè)異常節(jié)點(diǎn)時(shí)往往會(huì)依賴其鄰居節(jié)點(diǎn)的協(xié)助。然而,現(xiàn)實(shí)情況是這些鄰居節(jié)點(diǎn)并不如期望那樣可信:攻擊者能夠控制目標(biāo)節(jié)點(diǎn),也很有可能會(huì)控制或者干擾其鄰居節(jié)點(diǎn)。
傳感器網(wǎng)絡(luò)異常節(jié)點(diǎn)的檢測(cè)方法大致可以分為兩種:一種是將傳感器節(jié)點(diǎn)視為黑盒,通過(guò)觀察節(jié)點(diǎn)的行為來(lái)辨別節(jié)點(diǎn)是否異常;一種是將傳感器節(jié)點(diǎn)視為白盒,通過(guò)分析節(jié)點(diǎn)內(nèi)部情況來(lái)辨別是否異常。下面分別說(shuō)明。
第一種方法通常是利用傳感器節(jié)點(diǎn)的時(shí)間相關(guān)性和空間相關(guān)性,根據(jù)多個(gè)鄰居節(jié)點(diǎn)的感知數(shù)據(jù)以及目標(biāo)節(jié)點(diǎn)以往的感知數(shù)據(jù),來(lái)研判目標(biāo)節(jié)點(diǎn)是否異常。所謂時(shí)間相關(guān)性是指節(jié)點(diǎn)感知數(shù)據(jù)前后應(yīng)該是連續(xù)的,很少發(fā)生突變。所謂空間相關(guān)性是指相鄰節(jié)點(diǎn)對(duì)同一異常事件所感知的數(shù)據(jù)應(yīng)該類似。根據(jù)時(shí)間相關(guān)性和空間相關(guān)性,人們就可以從時(shí)間和空間兩個(gè)維度來(lái)推測(cè)節(jié)點(diǎn)的當(dāng)前數(shù)據(jù),并同實(shí)際數(shù)據(jù)進(jìn)行對(duì)比研判,從而檢測(cè)節(jié)點(diǎn)是否異常。
第二種方法的代表是A.Seshadri等人提出的SWATT。該方法的原理是當(dāng)傳感器節(jié)點(diǎn)的內(nèi)存內(nèi)容被算改后,計(jì)算內(nèi)存內(nèi)容完整性指紋所耗費(fèi)時(shí)間會(huì)大大增加,其很重要的內(nèi)容就是設(shè)計(jì)出這樣的內(nèi)存內(nèi)容完整性指紋計(jì)算方法。然而,由于傳感器網(wǎng)絡(luò)是一個(gè)無(wú)線網(wǎng)絡(luò),存在數(shù)據(jù)中繼以及數(shù)據(jù)沖突等情形,數(shù)據(jù)在網(wǎng)絡(luò)中傳輸所消耗時(shí)間波動(dòng)較大,不可避免的影響了檢測(cè)結(jié)果。與本發(fā)明相近的還有Yi Yang等人提出另一種傳感器節(jié)點(diǎn)內(nèi)存數(shù)據(jù)完整性遠(yuǎn)程證明方案。該方案要求在每個(gè)傳感器節(jié)點(diǎn)的空白存儲(chǔ)區(qū)域設(shè)置隨機(jī)數(shù),并根據(jù)內(nèi)存數(shù)據(jù)完整性驗(yàn)證的方法來(lái)證明其完整性。不過(guò)這種方法不可以防御目標(biāo)節(jié)點(diǎn)與少量鄰居節(jié)點(diǎn)的合謀攻擊以及中間人攻擊。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對(duì)現(xiàn)有技術(shù)在鄰居節(jié)點(diǎn)并不完全可信的情況下,存在檢測(cè)異常傳感器節(jié)點(diǎn)不準(zhǔn)確的問(wèn)題,提出一種基于多重完整性遠(yuǎn)程證明的異常節(jié)點(diǎn)檢測(cè)方法。
本發(fā)明的技術(shù)方案是:基于多重完整性遠(yuǎn)程證明的異常節(jié)點(diǎn)檢測(cè)方法,包括以下步驟:
將節(jié)點(diǎn)鏡像文件隨機(jī)化;
利用遠(yuǎn)程證明協(xié)議的方法證明節(jié)點(diǎn)的進(jìn)行驗(yàn)證;
利用完整度量方法構(gòu)造針對(duì)節(jié)點(diǎn)的質(zhì)詢問(wèn)題;
利用主觀邏輯的合意規(guī)則實(shí)施多個(gè)意見(jiàn)的綜合,根據(jù)公式計(jì)算該意見(jiàn)所對(duì)應(yīng)的期望值。
所述的基于多重完整性遠(yuǎn)程證明的異常節(jié)點(diǎn)檢測(cè)方法,將節(jié)點(diǎn)鏡像文件隨機(jī)化的具體步驟包括:
sink節(jié)點(diǎn)將會(huì)話密鑰植入末端節(jié)點(diǎn)的基礎(chǔ)區(qū);
sink節(jié)點(diǎn)隨機(jī)在節(jié)點(diǎn)軟件中插入跟蹤探針以及軌跡跟蹤器;
sink節(jié)點(diǎn)采用指令混亂的方法,對(duì)節(jié)點(diǎn)軟件進(jìn)行混亂,生成鏡像文件;
每個(gè)末端節(jié)點(diǎn)向sink節(jié)點(diǎn)申請(qǐng)和安裝本節(jié)點(diǎn)的鏡像文件。
所述的基于多重完整性遠(yuǎn)程證明的異常節(jié)點(diǎn)檢測(cè)方法,所述節(jié)點(diǎn)的存儲(chǔ)區(qū)域劃分為基礎(chǔ)去和可裝載區(qū),基礎(chǔ)區(qū)用于容納節(jié)點(diǎn)操作系統(tǒng)支持軟件運(yùn)行的最小軟件集,是不可變的;可裝載區(qū)用于容納隨機(jī)化后的鏡像文件,是可變的。
所述的基于多重完整性遠(yuǎn)程證明的異常節(jié)點(diǎn)檢測(cè)方法,節(jié)點(diǎn)鏡像文件下載過(guò)程包括:
節(jié)點(diǎn)首先生成隨機(jī)數(shù)rand,并使用與sink節(jié)點(diǎn)共享的會(huì)話密鑰加密rand,將加密結(jié)果E(rand)發(fā)送給sink節(jié)點(diǎn);
sink節(jié)點(diǎn)收到消息后,解密獲得rand,并加密rand+1,將密文E(rand+1)和鏡像文件發(fā)送給節(jié)點(diǎn);
節(jié)點(diǎn)接收到消息后,通過(guò)rand認(rèn)證鏡像文件的來(lái)源,并將鏡像文件裝入可裝載區(qū)。
所述的基于多重完整性遠(yuǎn)程證明的異常節(jié)點(diǎn)檢測(cè)方法,所述遠(yuǎn)程證明的詳細(xì)過(guò)程包括:假設(shè)負(fù)責(zé)驗(yàn)證的sink節(jié)點(diǎn)為節(jié)點(diǎn)T,被驗(yàn)證的目標(biāo)節(jié)點(diǎn)為節(jié)點(diǎn)O,目標(biāo)節(jié)點(diǎn)O的鄰居節(jié)點(diǎn)為R1,R2,....,Rn,每個(gè)節(jié)點(diǎn)均擁有與sink節(jié)點(diǎn)T通信的會(huì)話密鑰K(T,Ri),任何節(jié)點(diǎn)均不知道其它節(jié)點(diǎn)與sink節(jié)點(diǎn)T的會(huì)話密鑰,其證明流程如下:
sink節(jié)點(diǎn)T針對(duì)目標(biāo)節(jié)點(diǎn)O隨機(jī)生成質(zhì)詢問(wèn)題集{P1,P2,...,Pn};
sink節(jié)點(diǎn)T使用密鑰K(T,O),為鄰居節(jié)點(diǎn)Ri加密質(zhì)詢問(wèn)題集E(Pi);
每個(gè)鄰居節(jié)點(diǎn)Ri收到E(Pi),轉(zhuǎn)發(fā)至節(jié)點(diǎn)O;
節(jié)點(diǎn)O使用會(huì)話密鑰K(T,O),解密質(zhì)詢問(wèn)題集E(Pi);
目標(biāo)節(jié)點(diǎn)O回答質(zhì)詢問(wèn)題Pi,將答案加密后提交給Ri;
Ri將目標(biāo)節(jié)點(diǎn)O的答案及質(zhì)詢問(wèn)題提交給sink節(jié)點(diǎn)T;
sink節(jié)點(diǎn)T解密答案,并驗(yàn)證目標(biāo)節(jié)點(diǎn)O的答案是否正確。
所述的基于多重完整性遠(yuǎn)程證明的異常節(jié)點(diǎn)檢測(cè)方法,所述完整度量方法包括基于指紋哈希完整性度量方法、值匹配的完整性度量方法和業(yè)務(wù)完整性度量方法。
所述的基于多重完整性遠(yuǎn)程證明的異常節(jié)點(diǎn)檢測(cè)方法,所述合意規(guī)則包括:設(shè)和分別是主體A和B持有的、關(guān)于x的非相關(guān)意見(jiàn);設(shè)是一個(gè)假設(shè)主體[A,B],該主體根據(jù)和得到關(guān)于x的意見(jiàn);那么其中稱為增量合意算子;設(shè)令意見(jiàn)合意規(guī)則如下:
情況1(k≠0):
情況2(k=0):
在計(jì)算所得到的綜合性意見(jiàn)的基礎(chǔ)上,根據(jù)公式計(jì)算該意見(jiàn)所對(duì)應(yīng)的期望值,該值即是合理綜合所有質(zhì)詢結(jié)論后的意見(jiàn);系統(tǒng)預(yù)設(shè)一個(gè)閾值,當(dāng)期望值大于該閾值時(shí),認(rèn)為該節(jié)點(diǎn)為異常節(jié)點(diǎn)。
本發(fā)明的技術(shù)效果:本發(fā)明的優(yōu)勢(shì)在于可以避免少量異常節(jié)點(diǎn)的合謀攻擊;本發(fā)明要求每個(gè)節(jié)點(diǎn)都有唯一的鏡像文件,使得多種完整性度量方法,在同樣的度量輸入時(shí),也會(huì)有不同的度量輸出;這樣就可以保證每個(gè)節(jié)點(diǎn)的鏡像文件所提出的質(zhì)詢問(wèn)題,只有本節(jié)點(diǎn)容易得知答案,而其它節(jié)點(diǎn)無(wú)法容易得到。本發(fā)明要求目標(biāo)節(jié)點(diǎn)的所有鄰居都參與檢測(cè),使少量異常節(jié)點(diǎn)合謀欺騙sink節(jié)點(diǎn)的企圖難以實(shí)現(xiàn)。
附圖說(shuō)明
圖1為基于多重完整性遠(yuǎn)程證明的異常節(jié)點(diǎn)檢測(cè)方法流程示意圖;
圖2為節(jié)點(diǎn)鏡像文件隨機(jī)化的具體步驟流程示意圖;
圖3為節(jié)點(diǎn)鏡像文件下載過(guò)程示意圖;
圖4為遠(yuǎn)程證明的過(guò)程流程示意圖;
圖5為本發(fā)明的技術(shù)方案思路示意圖;
圖6為遠(yuǎn)程證明數(shù)據(jù)流向示意圖;
圖7為snik節(jié)點(diǎn)和節(jié)點(diǎn)數(shù)據(jù)流向示意圖;
圖8為跟蹤探針及軌跡跟蹤器工作示意圖;
圖9為基于業(yè)務(wù)跟蹤的業(yè)務(wù)完整性度量方法示意圖。
具體實(shí)施方式
術(shù)語(yǔ)解釋:
傳感器節(jié)點(diǎn):能夠感知特定環(huán)境數(shù)據(jù)(如:溫度、濕度、壓力),且能夠通過(guò)無(wú)線網(wǎng)絡(luò)上報(bào)感知數(shù)據(jù)的微型節(jié)點(diǎn),其制造成本低廉,計(jì)算能力有限,通常采用電池供電,能量有限。在本文檔中,傳感器節(jié)點(diǎn)簡(jiǎn)稱節(jié)點(diǎn)或者末端節(jié)點(diǎn)。
傳感器網(wǎng)絡(luò):無(wú)線傳感器網(wǎng)絡(luò)就是由部署在監(jiān)測(cè)區(qū)域內(nèi),大量的廉價(jià)微型節(jié)點(diǎn)組成的,通過(guò)無(wú)線通信網(wǎng)絡(luò)連接,形成的一個(gè)自組織無(wú)線網(wǎng)絡(luò)。
sink節(jié)點(diǎn):在無(wú)線傳感器網(wǎng)絡(luò)指匯聚節(jié)點(diǎn),主要負(fù)責(zé)傳感器網(wǎng)絡(luò)與外網(wǎng)的連接。一般sink節(jié)點(diǎn)與計(jì)算機(jī)直接相連,可由計(jì)算機(jī)供電且復(fù)雜計(jì)算可委托計(jì)算機(jī)完成,所以視sink節(jié)點(diǎn)能量無(wú)限、計(jì)算能力無(wú)限。
遠(yuǎn)程證明:被驗(yàn)證者向遠(yuǎn)端驗(yàn)證者提供證據(jù),表明自己存在某種能力或者特性。本發(fā)明就是要求被驗(yàn)證節(jié)點(diǎn)向驗(yàn)證節(jié)點(diǎn)提供多種完整性證明,以證明其不是異常節(jié)點(diǎn)。
完整性度量:采用某種方法對(duì)目標(biāo)的完整性實(shí)施檢查。完整性主要強(qiáng)調(diào)事物未被破壞,在本發(fā)明中就是對(duì)被驗(yàn)證節(jié)點(diǎn)的內(nèi)存完整性進(jìn)行度量,以確保其未被攻擊者所篡改。
跟蹤探針:是在軟件指令中插入的一種特定指令,其目的是用于跟蹤軟件執(zhí)行過(guò)程。
主觀邏輯:由提出的一種適用于不確定性推理邏輯,其基本概念為意見(jiàn),反映的是某個(gè)主體對(duì)某個(gè)論斷的看法,該邏輯還給出若干意見(jiàn)運(yùn)算規(guī)則,典型的規(guī)則如將兩個(gè)意見(jiàn)合理綜合的合意規(guī)則。
代碼復(fù)用攻擊:一種不需要注入新指令就可以實(shí)施的攻擊方法,它利用現(xiàn)有代碼中某些片段,并采用特定手段將這些片段連接起來(lái),將原來(lái)無(wú)害的指令變成惡意指令。
實(shí)施例1:結(jié)合圖1-圖8,基于多重完整性遠(yuǎn)程證明的異常節(jié)點(diǎn)檢測(cè)方法,其特征在于,包括以下步驟:
S11:將節(jié)點(diǎn)鏡像文件隨機(jī)化,將節(jié)點(diǎn)鏡像文件隨機(jī)化的具體步驟包括:
S21:sink節(jié)點(diǎn)將會(huì)話密鑰植入末端節(jié)點(diǎn)的基礎(chǔ)區(qū);
S22:sink節(jié)點(diǎn)隨機(jī)在節(jié)點(diǎn)軟件中插入跟蹤探針以及軌跡跟蹤器;
S23:sink節(jié)點(diǎn)采用指令混亂的方法,對(duì)節(jié)點(diǎn)軟件進(jìn)行混亂,生成鏡像文件;
S24:每個(gè)末端節(jié)點(diǎn)向sink節(jié)點(diǎn)申請(qǐng)和安裝本節(jié)點(diǎn)的鏡像文件。
具體來(lái)講:為了避免攻擊者俘獲一個(gè)節(jié)點(diǎn)就獲知所有節(jié)點(diǎn)的信息,節(jié)點(diǎn)之間應(yīng)該有所區(qū)別,為此本發(fā)明提出節(jié)點(diǎn)鏡像文件隨機(jī)化,為每個(gè)傳感器節(jié)點(diǎn)生成網(wǎng)絡(luò)內(nèi)唯一的鏡像文件。一般而言,在單個(gè)傳感器網(wǎng)絡(luò)中每個(gè)傳感器節(jié)點(diǎn)所要完成功能應(yīng)該是一致的,其指令也應(yīng)該是相同的。這就使得攻擊者一旦獲得某個(gè)傳感器節(jié)點(diǎn)就可以知道所有節(jié)點(diǎn)的信息。為此,應(yīng)該使每個(gè)傳感器節(jié)點(diǎn)具有唯一的特征,使得攻擊者只能獲知被俘獲的節(jié)點(diǎn)信息,而無(wú)法猜測(cè)其它節(jié)點(diǎn)的內(nèi)部信息。所以,sink節(jié)點(diǎn)將根據(jù)傳感器網(wǎng)絡(luò)設(shè)計(jì)和實(shí)現(xiàn)人員所提供的、部署到傳感器節(jié)點(diǎn)上的軟件,對(duì)其進(jìn)行混亂,改變軟件的指令序列以及數(shù)據(jù)序列,達(dá)到“功能不變,指令改變”的目的,為每個(gè)節(jié)點(diǎn)隨機(jī)生成唯一的鏡像文件。
為了支持節(jié)點(diǎn)隨機(jī)化后的鏡像文件裝入,節(jié)點(diǎn)存儲(chǔ)區(qū)域劃分為基礎(chǔ)區(qū)和可裝載區(qū)?;A(chǔ)區(qū)用于容納節(jié)點(diǎn)操作系統(tǒng)等支持軟件運(yùn)行的最小軟件集,這些是不可變的。可裝載區(qū)用于容納隨機(jī)化后的鏡像文件,是可變的。理論上,節(jié)點(diǎn)基礎(chǔ)區(qū)的體積越小越好,僅僅容納支持軟件運(yùn)行的最小軟件集合即可。為了支持基本的運(yùn)行環(huán)境,一些必要的基礎(chǔ)軟件,需要提前安裝到節(jié)點(diǎn)基礎(chǔ)區(qū)內(nèi)。還有一些必備的系統(tǒng)參數(shù)也需要寫(xiě)入基礎(chǔ)區(qū),如節(jié)點(diǎn)與sink節(jié)點(diǎn)共享的會(huì)話密鑰等??裳b載區(qū)在節(jié)點(diǎn)初始情況下是空白的,需要從sink節(jié)點(diǎn)下載鏡像文件,最終完成節(jié)點(diǎn)的軟件安裝。
進(jìn)一步的:節(jié)點(diǎn)鏡像文件下載過(guò)程包括:
S31:節(jié)點(diǎn)首先生成隨機(jī)數(shù)rand,并使用與sink節(jié)點(diǎn)共享的會(huì)話密鑰加密rand,將加密結(jié)果E(rand)發(fā)送給sink節(jié)點(diǎn)。
S32:sink節(jié)點(diǎn)收到消息后,解密獲得rand,并加密rand+1,將密文E(rand+1)和鏡像文件發(fā)送給節(jié)點(diǎn)。
S33:節(jié)點(diǎn)接收到消息后,通過(guò)rand認(rèn)證鏡像文件的來(lái)源,并將鏡像文件裝入可裝載區(qū)。
進(jìn)一步的:為了確保鏡像文件的機(jī)密性和完整性,可以將鏡像文件加密后再傳輸,并且附上鏡像文件的完整性摘要值。不過(guò),這無(wú)疑會(huì)導(dǎo)致節(jié)點(diǎn)計(jì)算工作量增加,過(guò)多消耗節(jié)點(diǎn)的能量,導(dǎo)致節(jié)點(diǎn)生命周期縮短。如果能夠保證當(dāng)前通信環(huán)境的安全(例如正在室內(nèi)進(jìn)行初裝),鏡像文件可以如圖7所示,采用明文形式傳輸,以節(jié)省末端節(jié)點(diǎn)的能量消耗。
進(jìn)一步的:為了保護(hù)傳感器節(jié)點(diǎn)與sink節(jié)點(diǎn)之間的通信,sink節(jié)點(diǎn)為每個(gè)傳感器節(jié)點(diǎn)配備了會(huì)話密鑰。sink節(jié)點(diǎn)與傳感器節(jié)點(diǎn)之間的秘密信息將采用會(huì)話密鑰加密的方法實(shí)施,但不涉密的信息仍然公開(kāi)傳輸,以減少節(jié)點(diǎn)的計(jì)算量。會(huì)話密鑰可以預(yù)先植入基礎(chǔ)區(qū),也可以僅僅在基礎(chǔ)區(qū)植入根密鑰,并依托根密鑰來(lái)生成或交換會(huì)話密鑰。會(huì)話密鑰可以采用對(duì)稱密碼體制的密鑰,也可以采用非對(duì)稱密碼體制的密鑰。會(huì)話密鑰可以在傳感器節(jié)點(diǎn)初裝時(shí)注入,也可以在更換電池時(shí)更換。
在鏡像文件生成過(guò)程中,sink節(jié)點(diǎn)還隨機(jī)在節(jié)點(diǎn)代碼中插入軌跡記錄器以及數(shù)量不等的跟蹤探針。如圖8所示,在軟件中插入軌跡跟蹤器以及跟蹤探針的目的是記錄軟件執(zhí)行的軌跡。從本質(zhì)上講,跟蹤探針就是一個(gè)函數(shù)調(diào)用指令,調(diào)用跟蹤記錄器填寫(xiě)跟蹤日志。每個(gè)跟蹤探針都有一個(gè)唯一標(biāo)識(shí),軌跡記錄器維持一個(gè)單調(diào)計(jì)數(shù)器,當(dāng)軟件執(zhí)行到探針處時(shí),軌跡記錄器記錄當(dāng)前所觸發(fā)的跟蹤探針標(biāo)識(shí)以及計(jì)數(shù)值。當(dāng)軟件執(zhí)行完某個(gè)事務(wù),軌跡跟蹤器輸出軟件執(zhí)行軌跡。根據(jù)軟件執(zhí)行過(guò)程中,軟件先后所觸發(fā)的探針(用探針標(biāo)識(shí)來(lái)識(shí)別不同的探針,用計(jì)數(shù)器值來(lái)記錄觸發(fā)的先后),我們可以近似的得知軟件運(yùn)行軌跡。
利用遠(yuǎn)程證明協(xié)議的方法證明節(jié)點(diǎn)的進(jìn)行驗(yàn)證,所述遠(yuǎn)程證明的詳細(xì)過(guò)程包括:假設(shè)負(fù)責(zé)驗(yàn)證的sink節(jié)點(diǎn)為節(jié)點(diǎn)T,被驗(yàn)證的目標(biāo)節(jié)點(diǎn)為節(jié)點(diǎn)O,目標(biāo)節(jié)點(diǎn)O的鄰居節(jié)點(diǎn)為R1,R2,....,Rn,每個(gè)節(jié)點(diǎn)均擁有與sink節(jié)點(diǎn)T通信的會(huì)話密鑰K(T,Ri),任何節(jié)點(diǎn)均不知道其它節(jié)點(diǎn)與sink節(jié)點(diǎn)T的會(huì)話密鑰,其證明流程如下:
S41:sink節(jié)點(diǎn)T針對(duì)目標(biāo)節(jié)點(diǎn)O隨機(jī)生成質(zhì)詢問(wèn)題集{P1,P2,...,Pn};
S42:sink節(jié)點(diǎn)T使用密鑰K(T,O),為鄰居節(jié)點(diǎn)Ri加密質(zhì)詢問(wèn)題集E(Pi);
S43:每個(gè)鄰居節(jié)點(diǎn)Ri收到E(Pi),轉(zhuǎn)發(fā)至節(jié)點(diǎn)O;
S44:節(jié)點(diǎn)O使用會(huì)話密鑰K(T,O),解密質(zhì)詢問(wèn)題集E(Pi);
S45:目標(biāo)節(jié)點(diǎn)O回答質(zhì)詢問(wèn)題Pi,將答案加密后提交給Ri;
S46:Ri將目標(biāo)節(jié)點(diǎn)O的答案及質(zhì)詢問(wèn)題提交給sink節(jié)點(diǎn)T;
S47:sink節(jié)點(diǎn)T解密答案,并驗(yàn)證目標(biāo)節(jié)點(diǎn)O的答案是否正確。
進(jìn)一步的:如圖6所示,sink節(jié)點(diǎn)生成若干與證明目標(biāo)節(jié)點(diǎn)是否異常的相關(guān)質(zhì)詢問(wèn)題,并將其分發(fā)給目標(biāo)節(jié)點(diǎn)的鄰居節(jié)點(diǎn);鄰居節(jié)點(diǎn)代替sink節(jié)點(diǎn)向目標(biāo)節(jié)點(diǎn)提出質(zhì)詢問(wèn)題,目標(biāo)節(jié)點(diǎn)向鄰居節(jié)點(diǎn)給出應(yīng)答;鄰居節(jié)點(diǎn)將所有答案提交給sink節(jié)點(diǎn),由sink節(jié)點(diǎn)根據(jù)質(zhì)詢問(wèn)題,對(duì)目標(biāo)結(jié)點(diǎn)給出的答案進(jìn)行驗(yàn)證,并結(jié)合多個(gè)質(zhì)詢結(jié)果完成目標(biāo)節(jié)點(diǎn)是否異常的判定。
進(jìn)一步的:考慮到無(wú)線網(wǎng)絡(luò)的特殊性,本發(fā)明要求所有的鄰居節(jié)點(diǎn)都參與遠(yuǎn)程證明流程。由于無(wú)線網(wǎng)絡(luò)往往都需要利用中繼轉(zhuǎn)交來(lái)完成數(shù)據(jù)交互,這就可能存在一種攻擊場(chǎng)景:sink節(jié)點(diǎn)向被驗(yàn)證節(jié)點(diǎn)提交質(zhì)詢的問(wèn)題,但質(zhì)詢問(wèn)題由一個(gè)被攻擊者所控制的節(jié)點(diǎn)中繼轉(zhuǎn)交,那么該節(jié)點(diǎn)就可以拒絕轉(zhuǎn)交或者篡改質(zhì)詢問(wèn)題,或者假冒正常節(jié)點(diǎn)或者sink節(jié)點(diǎn)干擾證明過(guò)程。有必要使所有鄰居節(jié)點(diǎn)都參與遠(yuǎn)程證明,保證遠(yuǎn)程證明的魯棒性和準(zhǔn)確性。
進(jìn)一步的:考慮到對(duì)質(zhì)詢問(wèn)題和答案的認(rèn)證,所有問(wèn)題和答案都使用驗(yàn)證節(jié)點(diǎn)和被驗(yàn)證節(jié)點(diǎn)所共享的會(huì)話密鑰加密。假設(shè)sink節(jié)點(diǎn)向鄰居節(jié)點(diǎn)所發(fā)送的問(wèn)題均采用明文形式發(fā)送,那么攻擊者可以直接獲取問(wèn)題。類似的,攻擊者也可以獲得答案。更甚的是,攻擊者可以假冒sink節(jié)點(diǎn)發(fā)送問(wèn)題,欺騙其它節(jié)點(diǎn)回答問(wèn)題。從安全性來(lái)看,雖然這種行為不能對(duì)整個(gè)網(wǎng)絡(luò)造成顛覆性的破壞,但是會(huì)干擾網(wǎng)絡(luò)正常工作。使用密鑰加密質(zhì)詢問(wèn)題和答案可以提高安全性。
利用完整度量方法構(gòu)造針對(duì)節(jié)點(diǎn)的質(zhì)詢問(wèn)題,所述完整度量方法包括基于指紋哈希完整性度量方法、值匹配的完整性度量方法和業(yè)務(wù)完整性度量方法。
具體來(lái)講:完整性度量的目的就是構(gòu)造異常節(jié)點(diǎn)無(wú)法回答的質(zhì)詢問(wèn)題。為此,本發(fā)明對(duì)節(jié)點(diǎn)內(nèi)存中靜態(tài)數(shù)據(jù)采用基于哈希指紋的完整性度量方法,對(duì)可測(cè)數(shù)據(jù)對(duì)象采用值匹配完整性度量方法,對(duì)軟件業(yè)務(wù)流程采用運(yùn)行軌跡完整性度量。當(dāng)節(jié)點(diǎn)沒(méi)有被攻擊者所篡改,可以容易得到正確度量值。當(dāng)攻擊者篡改了節(jié)點(diǎn)內(nèi)存信息,在沒(méi)有其它計(jì)算資源的前提下,很難獲得合法的度量值。
傳感器節(jié)點(diǎn)的內(nèi)存可以劃分為以下幾個(gè)區(qū)域,包含指令區(qū)、可測(cè)數(shù)據(jù)區(qū)、不可測(cè)數(shù)據(jù)區(qū)以及空閑區(qū)。傳感器節(jié)點(diǎn)的內(nèi)存空間主要用于容納指令和數(shù)據(jù)。根據(jù)數(shù)據(jù)變化情況,本發(fā)明將數(shù)據(jù)區(qū)進(jìn)一步劃分為可測(cè)數(shù)據(jù)區(qū)和不可測(cè)數(shù)據(jù)區(qū)??蓽y(cè)數(shù)據(jù)區(qū)主要是可以檢測(cè)其完整性的數(shù)據(jù)對(duì)象所在區(qū)域。典型的可測(cè)數(shù)據(jù)如控制數(shù)據(jù)。可測(cè)數(shù)據(jù)區(qū)域是不連續(xù)的區(qū)域,它在整個(gè)數(shù)據(jù)區(qū)是離散分布的??蓽y(cè)數(shù)據(jù)占整個(gè)數(shù)據(jù)區(qū)一小部分,數(shù)據(jù)區(qū)域內(nèi)大多數(shù)的數(shù)據(jù)對(duì)象都是不可測(cè)的。除了指令和數(shù)據(jù)以外,往往還有一些暫時(shí)用不到的空閑空間。為了確保一個(gè)節(jié)點(diǎn)一個(gè)內(nèi)存鏡像,sink節(jié)點(diǎn)不僅對(duì)指令進(jìn)行混亂,也對(duì)數(shù)據(jù)區(qū)和空閑區(qū)進(jìn)行隨機(jī)數(shù)初始化填充。
對(duì)于指令區(qū)和空閑區(qū),我們采用基于哈希指紋的完整性度量方法。從效率來(lái)看,沒(méi)有必要在每次應(yīng)答過(guò)程中,節(jié)點(diǎn)對(duì)整個(gè)指令區(qū)和空閑區(qū)進(jìn)行哈希指紋計(jì)算。從安全性來(lái)看,如果sink節(jié)點(diǎn)每次提問(wèn)都是整個(gè)指令區(qū)和空閑區(qū)的哈希指紋,那么攻擊者可以事先讀取節(jié)點(diǎn)內(nèi)容,提前計(jì)算好哈希值備查。為此,應(yīng)該隨機(jī)從靜態(tài)區(qū)域截取少量片段進(jìn)行哈希指紋的計(jì)算。用Hash(seed)表示計(jì)算哈希值的算法,seed表示待計(jì)算數(shù)據(jù)的初始因子信息。sink節(jié)點(diǎn)提問(wèn)形如:使用seed作為初始因子,當(dāng)前節(jié)點(diǎn)的計(jì)算結(jié)果是多少?由于攻擊者已經(jīng)篡改了節(jié)點(diǎn)內(nèi)容,即使獲得seed作為初始因子,也難以得到正確的計(jì)算結(jié)果。一種典型的計(jì)算哈希值算法是SHA1算法。初始因子可以是起始地址以及計(jì)算長(zhǎng)度。當(dāng)然也可以有其它類型的算法和初始因子,本發(fā)明對(duì)此并不限定。
對(duì)于少量可測(cè)量數(shù)據(jù),我們采用值匹配的完整性度量方法。對(duì)于變化狀態(tài)有限的度量對(duì)象,我們窮舉其有限狀態(tài),得到一個(gè)合法的狀態(tài)集θ作為檢測(cè)基準(zhǔn)。檢測(cè)時(shí),根據(jù)檢測(cè)對(duì)象是否屬于狀態(tài)集θ,對(duì)其完整性實(shí)施檢測(cè)。值匹配的完整性度量方法典型用于控制數(shù)據(jù)的完整性度量。利用值匹配的完整性度量方法,可以有針對(duì)性的對(duì)少量數(shù)據(jù)進(jìn)行驗(yàn)證。由于驗(yàn)證工作由sink節(jié)點(diǎn)完成,而sink節(jié)點(diǎn)有足夠的計(jì)算能力和存儲(chǔ)空間來(lái)完成這項(xiàng)工作。
基于上述完整性度量手段以及關(guān)于攻擊者能力的假設(shè),攻擊者無(wú)法將惡意指令注入到節(jié)點(diǎn)內(nèi)存里。即使如此,攻擊者仍然可以利用代碼復(fù)用方法來(lái)實(shí)施攻擊:攻擊者可以采用緩沖區(qū)溢出的方法,中止當(dāng)前業(yè)務(wù)的執(zhí)行,轉(zhuǎn)而執(zhí)行其它指令。為此,我們實(shí)施業(yè)務(wù)完整性度量方法,檢測(cè)傳感器節(jié)點(diǎn)完成指定業(yè)務(wù)的情況。
基于業(yè)務(wù)跟蹤的業(yè)務(wù)完整性度量方法的工作原理如圖9所示。我們將軟件完成不同功能的過(guò)程稱之為業(yè)務(wù)。對(duì)于傳感器節(jié)點(diǎn)而言,典型的業(yè)務(wù)如感知外界溫度的過(guò)程。我們?cè)诠?jié)點(diǎn)軟件中插入了不同的跟蹤探針,不同的業(yè)務(wù)執(zhí)行過(guò)程就會(huì)觸發(fā)不同的跟蹤探針,軌跡跟蹤器會(huì)整理形成軌跡跟蹤日志,并據(jù)此來(lái)分析業(yè)務(wù)完成情況。如圖6所示,當(dāng)前存在業(yè)務(wù)1和業(yè)務(wù)2兩個(gè)業(yè)務(wù),其執(zhí)行過(guò)程中所觸發(fā)的跟蹤探針情況如圖右邊軌跡跟蹤日志部分所示。這樣,當(dāng)業(yè)務(wù)1完成后,我們解讀軌跡跟蹤日志,分析其跟蹤探針被觸發(fā)的標(biāo)識(shí)以及先后順序,就可以判定業(yè)務(wù)1是否完整執(zhí)行。
基于業(yè)務(wù)跟蹤的業(yè)務(wù)完整性度量方法只是一種近似的、粗粒度的完整性度量方法。由于軟件運(yùn)行流程復(fù)雜,往往還存在循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu),很難窮盡其所有執(zhí)行路徑。為了獲知正確的運(yùn)行軌跡,人們需要反復(fù)多次執(zhí)行業(yè)務(wù),并以此為基準(zhǔn)實(shí)施檢測(cè)。但是,在實(shí)施檢測(cè)時(shí)仍然可能出現(xiàn)新的、合法的運(yùn)行軌跡,這就會(huì)導(dǎo)致誤判。另一方面,跟蹤探針的數(shù)量也與合法軌跡的數(shù)量緊密相關(guān)。如果插入了太多的跟蹤探針,那么可以更為詳盡的探知業(yè)務(wù)運(yùn)行過(guò)程,但是也會(huì)產(chǎn)生更為復(fù)雜多變的軌跡,導(dǎo)致系統(tǒng)難以實(shí)施判定和監(jiān)控??偠灾跇I(yè)務(wù)跟蹤的業(yè)務(wù)完整性度量方法只是一種粗粒度度量方法,在分析其度量結(jié)果必須考慮到其不確定性。
利用主觀邏輯的合意規(guī)則實(shí)施多個(gè)意見(jiàn)的綜合,根據(jù)公式計(jì)算該意見(jiàn)所對(duì)應(yīng)的期望值。
具體來(lái)講:sink節(jié)點(diǎn)需要綜合目標(biāo)節(jié)點(diǎn)對(duì)所有問(wèn)題的回答情況,來(lái)生成最終的檢測(cè)結(jié)果。根據(jù)遠(yuǎn)程證明協(xié)議,目標(biāo)節(jié)點(diǎn)會(huì)回答一系列的問(wèn)題,并且這些答案會(huì)最終匯聚到sink節(jié)點(diǎn)。質(zhì)詢問(wèn)題的設(shè)計(jì)來(lái)源于三種完整性度量方法。由于三種完整性度量方法的特性不同,需要對(duì)其度量結(jié)果進(jìn)行綜合。鑒于此,我們采用主觀邏輯的方法,量化基于不同度量方法的問(wèn)題答案,并綜合所有問(wèn)題答案得到最終結(jié)論。
利用主觀邏輯綜合意見(jiàn)分為兩個(gè)階段。首先,將不同類型度量方法的結(jié)論統(tǒng)一量化為主觀邏輯的意見(jiàn)。主觀邏輯意見(jiàn)是一個(gè)四元組,包括:信念、負(fù)信念、不確定性和相對(duì)原子度,表示為意為主體A對(duì)某個(gè)論斷x的看法。量化就是將度量結(jié)論轉(zhuǎn)為該四元組,這就需要給出量化規(guī)則。然后,利用主觀邏輯現(xiàn)有的合意算子對(duì)其合意,得到綜合性意見(jiàn),并給出最終結(jié)論。
對(duì)于基于哈希指紋的完整性度量方法,其度量結(jié)果不存在不確定性,其量化過(guò)程較為直接。當(dāng)sink節(jié)點(diǎn)基于該度量方法設(shè)計(jì)了相應(yīng)的質(zhì)詢問(wèn)題,當(dāng)完整性度量結(jié)論顯示節(jié)點(diǎn)的代碼完整性未被破壞,那么對(duì)應(yīng)的主觀邏輯意見(jiàn)是(1,0,0,0.5)。根據(jù)主觀邏輯的合意規(guī)則,綜合意見(jiàn)也將是(1,0,0,0.5),其結(jié)論是節(jié)點(diǎn)的完整性被破壞。這一特性也反映了該度量結(jié)論不存在不肯定性,具有“一票否決權(quán)”。
對(duì)于基于值匹配的完整性度量方法,其度量結(jié)果存在不確定性。該度量方法不確定性主要體現(xiàn)在:即使檢測(cè)時(shí)出現(xiàn)非基準(zhǔn)的數(shù)值,也難以肯定的說(shuō)該對(duì)象是不完整的。原因是為了獲得基準(zhǔn)值,系統(tǒng)需要反復(fù)多次訓(xùn)練以獲得正確樣本,然后由于訓(xùn)練的不完備,很難保證基準(zhǔn)值的完備性。量化該結(jié)論時(shí),我們必須考慮度量結(jié)果的不確定性。鑒于此,本發(fā)明所采用的量化過(guò)程如下:假設(shè)作為基準(zhǔn)的狀態(tài)集θ包含元素的個(gè)數(shù)為n,為窮舉狀態(tài)集所完成的實(shí)驗(yàn)次數(shù)為m,如果度量結(jié)果顯示是不完整的,那么對(duì)應(yīng)的主觀邏輯意見(jiàn)為((m-n)/(m+2),n/(m+2),(n+2)/(m+2),0.5)。
本發(fā)明的量化方法是合理的。根據(jù)主觀邏輯證據(jù)空間意見(jiàn)的定義,上述意見(jiàn)應(yīng)該為(m/(m+2),0,2/(m+2),0.5)。但這顯然是不合理的,因?yàn)樵谟?xùn)練過(guò)程中無(wú)法做到樣本隨機(jī),這樣的量化過(guò)程只是反映了部分真實(shí)情況??紤]到訓(xùn)練的不完備性以及訓(xùn)練結(jié)果的多樣情況,將訓(xùn)練結(jié)果的個(gè)數(shù)引入主觀邏輯意見(jiàn)量化中來(lái),可以間接反映樣本訓(xùn)練情況,也可以反映當(dāng)前訓(xùn)練結(jié)果的可用性。
如果度量結(jié)果是完整的,則是度量結(jié)果不完整所對(duì)應(yīng)意見(jiàn)的逆意見(jiàn):(n/(m+2),(m-n)/(m+2),(n+2)/(m+2),0.5)。這是根據(jù)主觀邏輯的逆操作進(jìn)行轉(zhuǎn)換。主觀邏輯意見(jiàn)求逆的規(guī)則如下所示:設(shè)那么
對(duì)于基于業(yè)務(wù)跟蹤的業(yè)務(wù)完整性度量方法,其度量結(jié)果也存在不確定性,在量化過(guò)程中也必須考慮不確定性。導(dǎo)致其存在不確定性的原因類似于基于值匹配的完整性度量方法:很難在訓(xùn)練過(guò)程中窮盡所有可能的軟件運(yùn)行軌跡。鑒于此,本發(fā)明所采用的量化過(guò)程如下:假設(shè)作為基準(zhǔn)的軌跡集合包含元素的個(gè)數(shù)為n,為得到基準(zhǔn)所完成的實(shí)驗(yàn)次數(shù)為m,如果度量結(jié)果為不完整的,那么對(duì)應(yīng)的主觀邏輯意見(jiàn)是((m-n)/(m+2),n/(m+2),(n+2)/(m+2),0.5),如果度量結(jié)果為完整的,那么對(duì)應(yīng)的主觀邏輯意見(jiàn)是(n/(m+2),(m-n)/(m+2),(n+2)/(m+2),0.5)。
還存在無(wú)效的度量結(jié)果的情況。對(duì)于基于值匹配的完整性度量方法和基于業(yè)務(wù)跟蹤的業(yè)務(wù)完整性度量方法,如果基準(zhǔn)過(guò)于復(fù)雜而龐大,那么就說(shuō)明難以使用此類方法實(shí)施完整性度量。例如:當(dāng)業(yè)務(wù)執(zhí)行的路徑有循環(huán)結(jié)構(gòu),并且這種循環(huán)結(jié)構(gòu)的循環(huán)次數(shù)不確定,那么就有可能導(dǎo)致多次執(zhí)行業(yè)務(wù)得到的軌跡都是不一樣的。在這種情況下,再考慮該度量方法的結(jié)論就不合適。故而,我們預(yù)設(shè)某個(gè)閥值minB,如果基準(zhǔn)包含元素的數(shù)量大于該值,那么我們就認(rèn)為度量方法不合適,其度量結(jié)果不考查。
本發(fā)明直接采用主觀邏輯的合意規(guī)則實(shí)施多個(gè)意見(jiàn)的綜合,其合意規(guī)則如下:設(shè)和分別是主體A和B持有的、關(guān)于x的非相關(guān)意見(jiàn);設(shè)是一個(gè)假設(shè)主體[A,B],該主體根據(jù)和得到關(guān)于x的意見(jiàn);那么其中稱為增量合意算子。設(shè)令意見(jiàn)合意規(guī)則如下:
情況1(k≠0):
情況2(k=0):
在計(jì)算所得到的綜合性意見(jiàn)的基礎(chǔ)上,根據(jù)公式計(jì)算該意見(jiàn)所對(duì)應(yīng)的期望值。該值即是合理綜合所有質(zhì)詢結(jié)論后的意見(jiàn)。系統(tǒng)預(yù)設(shè)某個(gè)閾值,當(dāng)期望值大于某個(gè)值時(shí),認(rèn)為該節(jié)點(diǎn)為異常節(jié)點(diǎn)。