文/楊鋼
因為無線傳感器網(wǎng)絡(luò)的在生活中的各個領(lǐng)域都有著廣泛的應(yīng)用前景,所以在生活受到了人們的關(guān)注。在現(xiàn)在的軍事等一些對數(shù)據(jù)的保密性要求很高的領(lǐng)域中也使用無線傳感器網(wǎng)絡(luò)技術(shù)。在這些領(lǐng)域中,收集處理的數(shù)據(jù)需要保密,不能讓不相關(guān)的人員也收集到這些數(shù)據(jù),比如說軍事戰(zhàn)爭中,如果信息數(shù)據(jù)被敵方知道,可能就導(dǎo)致一場戰(zhàn)爭的失敗。因此對于這些領(lǐng)域WSN是否安全對于整個應(yīng)用都是很重要的。但是由于網(wǎng)絡(luò)中的節(jié)點大量的部署、節(jié)點之間通過無線的方式通信和傳感器節(jié)點的一些限制,使得無線傳感器網(wǎng)絡(luò)極易受到外人的攻擊,因此,對于無線傳感器網(wǎng)絡(luò)的安全性的研究和探索一直是現(xiàn)在科研領(lǐng)域中的一個熱點。
如圖1所示是本章考慮的攻擊場景,就是攻擊者向網(wǎng)絡(luò)發(fā)起虛假數(shù)據(jù)注入的攻擊。惡意節(jié)點就是攻擊者用來攻擊網(wǎng)絡(luò)的節(jié)點,惡意節(jié)點向匯聚節(jié)點上發(fā)送很多虛假的數(shù)據(jù)包。在虛假數(shù)據(jù)包傳輸?shù)穆窂缴嫌幸粋€合謀節(jié)點,此節(jié)點就是為了隱藏惡意節(jié)點,合謀惡意節(jié)點使對網(wǎng)絡(luò)的攻擊達到最大化,所以被稱為合謀節(jié)點。
假設(shè)匯聚節(jié)點是一個資源無限大,能力無限強的節(jié)點,無線傳感器網(wǎng)絡(luò)中有的節(jié)點是可信的,被用來對其他節(jié)點發(fā)送的數(shù)據(jù)進行收集和處理,這個節(jié)點就是因為虛假數(shù)據(jù)注入而受到傷害的。在本文中,我們假定節(jié)點在布置后就不再移動,當(dāng)節(jié)點周圍發(fā)生一些事件時,傳感器節(jié)點會對這個事件生成一個表現(xiàn)事件的數(shù)據(jù)包,并通過無線網(wǎng)絡(luò)把數(shù)據(jù)包傳輸給匯聚節(jié)點。
網(wǎng)絡(luò)中的每一個節(jié)點有擁有一個獨一無二的ID,每個節(jié)點都用密鑰加密數(shù)據(jù)和產(chǎn)生一個自己的匿名ID,在匯聚節(jié)點中有一個用來查找匿名ID到節(jié)點ID的查找表。
如圖2所示為系統(tǒng)層次式拓撲結(jié)構(gòu)。先把整個無線傳感器網(wǎng)絡(luò)的所有區(qū)域以一條平行的線和一條垂直的線等分成四分,同時對被均分的四份進行編號,左上的為00,右上的為01,左下的為10,右下的為11。然后繼續(xù)把每個部分再以此方法等分成四份,繼續(xù)編號,并以此方法繼續(xù)運行,直到每個區(qū)域中最后有一個節(jié)點后停止運行,在運行結(jié)束后每個傳感器節(jié)點都擁有一個與別的節(jié)點不同的區(qū)域編號。例在圖2中所示的節(jié)點L的區(qū)域編碼為001111。然后對節(jié)點所在的最小的區(qū)域成為第0層,第0層的上一層節(jié)點的對應(yīng)區(qū)域稱之為第1層,以此類推,相當(dāng)于域位串樹結(jié)構(gòu)一樣,第0層相當(dāng)于葉子節(jié)點。如圖3所示。
數(shù)據(jù)包所在的層次:當(dāng)數(shù)據(jù)包在網(wǎng)絡(luò)中傳輸時,當(dāng)前數(shù)據(jù)包所在的節(jié)點所在的區(qū)域的層次。
Fi(N):指i節(jié)點用其獨有的密鑰對數(shù)據(jù)N進行加密處理。
層次式標(biāo)記方法數(shù)據(jù)包格式如下:

N j Q|FQ(N) Q|FP(N)
其中N代表的是原始數(shù)據(jù)的內(nèi)容,數(shù)據(jù)包前所在的層次用j表示,Q代表的當(dāng)前所在層次中第一個轉(zhuǎn)發(fā)此數(shù)據(jù)包的節(jié)點,P代表的是j-1層中第一個轉(zhuǎn)發(fā)此數(shù)據(jù)包的節(jié)點。其中第三個域和第四個域中的初始值是0。

圖1:虛假數(shù)據(jù)注入攻擊示意圖
節(jié)點會對周圍的數(shù)據(jù)加工成一個數(shù)據(jù)包,當(dāng)數(shù)據(jù)包發(fā)送之前,令j等于0,然后節(jié)點對原始數(shù)據(jù)進行加密,并把節(jié)點自己的域位串和加密過的數(shù)據(jù)一起填寫在第三個域中,同時不改變第四個域中的值。然后數(shù)據(jù)包繼續(xù)傳輸,當(dāng)節(jié)點i收到上一個節(jié)點傳輸過來的數(shù)據(jù)包時,節(jié)點i先計算數(shù)據(jù)包當(dāng)前所在的層次,當(dāng)所在的層次與上一個節(jié)點所在的層次相同時,節(jié)點i不對數(shù)據(jù)包進行處理,直接轉(zhuǎn)發(fā)包;如果不處在同一個層次,節(jié)點將利用算法計算層次同時把層次填寫到j(luò)域中,然后把數(shù)據(jù)包中的Q|FQ(N)域中的數(shù)據(jù)覆蓋到P|FP(N)中,然后節(jié)點計算自己的i|Fi(N),并把i|Fi(N)填寫在Q|FQ(N)域中。通過這種標(biāo)記方法可以把數(shù)據(jù)包傳輸?shù)拿恳粚又械谝粋€轉(zhuǎn)發(fā)的節(jié)點的數(shù)據(jù)和上一層第一個轉(zhuǎn)發(fā)的節(jié)點的數(shù)據(jù)標(biāo)記在包頭中。

圖2:層次式拓撲結(jié)構(gòu)

圖3:層次式拓撲結(jié)構(gòu)對應(yīng)的域位串樹
惡意節(jié)點發(fā)動的攻擊可以分為以下五種情況:
(1)惡意節(jié)點按照正常的標(biāo)記方法來填寫各個域中的數(shù)據(jù);
(2)惡意節(jié)點隨意的填寫各個域中的數(shù)據(jù);
(3)惡意節(jié)點對j中的值填寫一個非0的值,其他域中的數(shù)據(jù)正常填寫;
(4)惡意節(jié)點對j中的值填寫一個非0的值,同時正常填寫Q|FQ(N)域中的數(shù)據(jù)并加工創(chuàng)造P|FP(N)域中的數(shù)據(jù);
(5)惡意節(jié)點對j中的值填寫一個非0的值,在Q|FQ(N)域和P|FP(N)域中添加一些經(jīng)過加工的數(shù)據(jù)。
針對上面的五種情況,層次式追蹤方案有著以下的處理方案:
(1)當(dāng)惡意節(jié)點正常填寫域中的數(shù)據(jù)時,追蹤程序就按照溯源追蹤方案一樣一層層追蹤下去,當(dāng)轉(zhuǎn)發(fā)節(jié)點在層次1中同時追蹤的數(shù)據(jù)包中的j為0時,將惡意節(jié)點定位到轉(zhuǎn)發(fā)節(jié)點的一步鄰居節(jié)點中;
(2)如果惡意節(jié)點隨意填寫域中的數(shù)據(jù)時,在層次1中的轉(zhuǎn)發(fā)節(jié)點檢測時,Q|FQ(N)域中將出錯,因此將惡意節(jié)點定位到轉(zhuǎn)發(fā)節(jié)點的一步鄰居節(jié)點中;
(3)如果惡意節(jié)點對j隨意設(shè)置,而其他兩個域中數(shù)據(jù)正常填寫時,當(dāng)層次1中的轉(zhuǎn)發(fā)節(jié)點檢測時,Q|FQ(N)域中不會出錯,但是檢測到P|FP(N)域中的數(shù)據(jù)不為初始值,但是j不等于0,所以惡意節(jié)點就為節(jié)點Q;
(4)如果出現(xiàn)第四種情況,當(dāng)層次1中的轉(zhuǎn)發(fā)節(jié)點檢測時,Q|FQ(N)域中的數(shù)據(jù)是正確的,但是P|FP(N)域檢測出錯,所以將惡意節(jié)點定位到轉(zhuǎn)發(fā)節(jié)點的一步鄰居節(jié)點中;
(5)如果出現(xiàn)第五種情況,當(dāng)層次1中的轉(zhuǎn)發(fā)節(jié)點檢測時,Q|FQ(N)域中的數(shù)據(jù)檢測會出錯,所以將惡意節(jié)點定位到轉(zhuǎn)發(fā)節(jié)點的一步鄰居節(jié)點中。
近些年來,國內(nèi)外提出了很多關(guān)于無線傳感器網(wǎng)絡(luò)的定位算法,每一種算法都有其各自的特點。對于精度比較高的算法,通信開銷和收斂速度等方面可能就會有所下降,采用硬件測距可以提高定位精度,但同時會增加傳感器節(jié)點的成本,根據(jù)具體業(yè)務(wù)的需要定位算法的條件和要求會有所不同。無線傳感器網(wǎng)絡(luò)中距離無關(guān)的分布式定位算法可滿足大多數(shù)應(yīng)用的要求,是目前重點關(guān)注的定位機制。本文介紹了利用交疊換思想定位節(jié)點的分布式定位算法ROCRSSI,和N-hop multilateration算法以及Robust positioning算法。