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

N j Q|FQ(N) Q|FP(N)
其中N代表的是原始數據的內容,數據包前所在的層次用j表示,Q代表的當前所在層次中第一個轉發此數據包的節點,P代表的是j-1層中第一個轉發此數據包的節點。其中第三個域和第四個域中的初始值是0。

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

圖2:層次式拓撲結構

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