郭效泉,王 華,李鳳銀,王玉霞
(曲阜師范大學,山東 日照 276826)
無線傳感器網絡由多種傳感器節點組成,能采集其覆蓋區域內的信息并發送給接收器。因節點微小、適應能力強等優點,無線傳感器網絡被人們廣泛部署于諸多場景,以幫助人們掌握場景中的相關情況,如智慧農業和國防軍事等領域。
但是,網絡中存在很多安全威脅,一旦源節點和接收節點被敵手破壞,將不能準確采集和接收信息。同時,每個節點的能量是有限的,在數據傳輸時必須做出合理的路徑規劃,才能避免能量的不均衡消耗。此外,通信效率也是必須要關注的問題。例如,當被監視的對象是森林火災情況時,人們需要第一時間獲取監控環境的信息?;诖耍疚奶岢隽艘环N在無線傳感器網絡中基于節點的剩余能量和最短通信距離保護源節點和接收節點位置隱私的高效路由方案。
最早被提出的源位置隱私保護方案為“幻象路由”[1],發送的數據包需經過漫步階段和泛洪階段兩個階段。Jian[2]提出一種基于垃圾包和隨機路由的匯聚節點位置隱私保護協議。Shaikh[3]和Lightfoot[4]等人提出了一種基于地理位置信息的路由方案,利用泛洪和貪婪路徑等方式進行數據傳輸。
Nezhad[5]等提出了一種匿名拓撲發送方案,可以隱藏匯聚節點的位置。Chai[6]等提出了匿名的保護方案,利用節點模仿匯聚節點來迷惑攻擊者。Huang[7]等人提出了一種在非熱點區域產生大量路由分支,在數據包被傳輸到接收節點前,這些路由分支被混合成幾個新的路由路徑。Wang[8]等人提出將假數據包被注入到網絡,采用隨機游走的方法傳輸真實數據包,以隱藏方向信息。
本文提出一種在無線傳感器網絡中基于節點的剩余能量和距離接收節點距離的保護源節點和接收節點兩端位置隱私的高效路由方案。該方案保護了網絡中收發雙方節點的位置隱私,解決了網絡中節點的能量消耗不均衡問題,并提高數據在網絡中的傳遞效率。
網絡模型由采集數據的傳感器節點、負責數據發送的源節點和接收數據的sink節點組成,如圖1所示。源節點把傳感器節點采集到的數據經過多跳方式路由到sink節點。假定在網絡還存在攻擊網絡節點的敵手。

圖1 WSN模型
根據WSN模型,源節點通過廣播包統計指定跳數內節點的剩余能量、節點的路徑隊列和距離sink節點的距離。根據統計到的節點信息,選出真實發送路徑和干擾路徑。沿著干擾路徑和真實路徑的節點隊列發送數據包,此時真實路徑上的節點會把數據包路由到sink節點。sink節點接收數據包后,會對數據包繼續隨機轉發幾跳再停下。
2.2.1 統計網絡中節點信息
(1)初始化特殊數據包。方案中,源節點需要初始化一個特殊數據包。該數據包包括指定該數據包從源節點開始到停止需要廣播的跳數H、記錄該數據包在網絡廣播過程中所經過的所有節點ID的路徑隊列Q、當前數據包記錄的節點剩余能量Emin和一個表明數據包特殊身份的標簽T。
(2)廣播數據包統計節點信息。源節點廣播初始化的特殊數據包。該特殊數據包在從源節點開始即跳數等于H時到到達網絡中跳數H=0時節點的過程中,會執行如下操作:所有接收到該特殊數據包的節點會把自己的節點ID添加到路徑隊列Q中,并把數據包中的跳數H做減1操作;當前數據包中的剩余能量Emin會與當前節點中的剩余能量進行比較,若此時Emin大于當前節點的剩余能量,就用當前節點的剩余能量覆蓋Emin,否則繼續保持Emin;當該特殊數據包到達網絡中的H=0跳節點時,此時該數據包中Emin記錄了該數據包所走過的該條路徑上所有節點中剩余能量最小的那個節點的能量。數據包記錄H=0處節點到達sink節點的距離X。整個執行過程如圖2所有的Ⅰ類直線所示。
(3)把統計的節點信息反饋給源節點。網絡中指定跳數H=0跳處的節點,把記錄從源節點到H=0跳處節點ID的路徑隊列Q、路徑上對應節點的最少剩余能量Emin和路徑上H=0跳處節點到達sink節點的距離X的數據包,沿著原路徑的反方向即沿著路徑隊列Q中節點ID從H=0跳處節點傳遞給源節點,如圖2所有的Ⅱ類曲線所示。

圖2 方案示意
2.2.2 真實路徑的確定
(1)節點剩余能量確定侯選路徑階段一。源節點接收從H=0跳處節點反饋回來的所有數據包。這些數據包記錄著從源節點到達H=0跳處節點ID的路徑隊列Q、路徑上節點的最少剩余能量Emin和路徑上H=0跳處節點到達sink節點的距離X。源節點根據數據包中最少剩余能量Emin按照從大到小做降序排列,得到一個關于剩余能量Emin從大到小的剩余能量值的列表list1。根據列表list1選擇出排在前a%個剩余能量Emin,后根據前a%個剩余能量Emin找到它們所對應的路徑隊列Q得到sequence1。
(2)距離最小確定侯選路徑階段二。從路徑隊列sequence1中根據數據包中從H=0跳處節點到達sink節點的距離X按照從小到大做升序排列,得到一個關于距離X從小到大的列表list2。從列表list2中選出排在前b%個距離X,再根據前b%個距離X找到它們所對應的路徑隊列Q得到sequence2。
(3)確定真實路徑和源節點替代節點。從路徑隊列sequence2中隨機選出其中的一條作為發送數據的真實路徑real_path,如圖2所有的Ⅲ類曲線所示,并把該條路徑上的H=0跳處的節點作為源節點替代節點,把該條路徑隊列Q中的節點ID置為source_substitute,如圖2所示。
2.2.3 實現兩端匿名
(1)選擇干擾路徑實現源端匿名,再從源節點按照節點剩余能量已經選出的路徑隊列sequence1中進行選擇,在路徑總條數隨機選擇c%條路徑隊列,并保證這些路徑隊列中是排除了真實路徑real_path的路徑隊列。把這些從路徑隊列sequence1中進行隨機選擇出來的c%條路徑作為真實數據發送時的干擾路徑,如圖2所有的Ⅳ類曲線所示。
(2)sink節點隨機轉發實現匯端匿名。把sink節點當作網絡中的一個普通節點,sink節點完成數據包的接收后還要對數據包繼續在網絡中向下轉發,如圖2所有的Ⅴ類曲線所示。把sink節點發現的“危險”引到遠處,達到保護sink節點位置的目的。
2.2.4 匿名消息的傳輸
(1)路徑隊列Q上數據包的傳輸。當源節點需要發送真實數據包時,真實數據包會沿著已經選出的若干條干擾路徑(圖2所有的Ⅳ類曲線)和一條真實路徑(圖2所有的Ⅲ曲線)所記錄節點ID的路徑隊列Q,從一個節點發送到下一個節點,直到到達H=0跳處節點。
(2)H=0跳處節點。當真實數據包到達H=0跳處節點時,要判斷此處的節點ID是否為source_substitute。若此處節點ID是source_substitute,則表示該條路徑為真實路徑,要繼續把真實數據包向下網絡中下一跳節點發送;否則該條路徑為干擾路徑,在到達滿足指定跳數H=0跳時會停止對數據包的繼續發送。
(3)源節點替代者到sink節點的中間區域。從源節點替代者到到達sink節點的中間區域,數據包按照多跳隨機路由的方式(圖2所有的Ⅴ類曲線)一跳一跳進行傳遞數據包,直到sink節點。
(4)sink節點處。sink節點接收數據包后會通過隨機函數產生一個[3,6]的隨機數作為數據包繼續向下轉發的跳數。sink節點會在網絡中按照隨機選擇下一跳的方式(圖2所有的Ⅴ類曲線),根據隨機函數產生的隨機數作為隨機轉發的跳數。當滿足指定的隨機跳數時,停止對數據包的轉發。
該流程圖主要分為統計網絡中節點信息、真實路徑的確定、干擾路徑的選擇和匿名消息的傳輸4個部分,如圖3所示。

圖3 方案流程
方案涉及的算法主要包括統計網絡中節點的剩余能量和距離接收節點距離信息的算法(算法1),源節點根據統計到的節點信息進行真實路徑選擇的算法(算法2),干擾路徑選擇算法(算法3),數據包沿著干擾路徑、真實路徑以及在網絡中傳輸的匿名消息傳的傳輸算法(算法4)。
算法1:統計網絡中節點信息算法

算法2:真實路徑的確定算法


算法3:干擾路徑的選擇算法

算法4:匿名消息的傳輸算法

本文提出了一種基于網絡中節點剩余能量和距離接收距離的保護源節點和接收節點位置隱私的高效路由方案,很好地保護了收發雙方節點的位置隱私,有效解決了網絡中節點的能量不均衡消耗問題,提高了數據在網絡中的發送效率。