曾梅梅,蔣 華,王 鑫
(桂林電子科技大學計算機科學與工程學院,廣西桂林541004)
無線傳感器網絡廣泛地應用于生活、軍事、農業、環境監測、智能家居等領域。通常,無線傳感器網絡工作環境比較惡劣,存在嚴重的安全威脅[1]。此外,無線傳感器網絡的無人照管操作使得傳感器節點易于被敵方物理性地控制,從而成為惡意節點,并獲得節點自身存儲的信息,包括密鑰等機密信息[2]。這些惡意節點將會對網絡產生巨大的危害,比如虛假信息注入[3],就是一種由惡意節點發起的嚴重攻擊。惡意節點可以注入大量的虛假流量,并隨著路徑前進發送到Sink節點,將導致應用程序失敗、能量和帶寬耗費等嚴重的問題。對于DOS攻擊,目前主要解決方案是在節點上進行過濾虛假數據包來減緩危害,但無法在攻擊后進行主動防御。
針對數據包過濾的不足,本文重點研究主動防御問題,即如何在傳感器網絡中定位到惡意節點,進而采取相應的主動防御策略。如果能夠獲知惡意節點的位置,就可以把它們從網絡中隔離或移除,從根本上消除了攻擊發生的可能性。然而,在無線傳感器網絡中,準確定位惡意節點存在很大的困難。一方面,無線傳感器網絡的架構不同于互聯網,節點既是主機又是路由器,而且每個節點都是平等的,缺少可信任的路由設施。另一方面,存在串通節點配合源惡意節點進行攻擊,它們不但共享密鑰,而且可以應用合理的方法操縱數據包來掩蓋它們的路徑,這些篡改攻擊比起簡單增加虛假流量更復雜。由于互聯網下的IP追蹤技術較少考慮到串通節點配合情況[3-5],不能直接應用于無線傳感器網絡上。針對這一問題,本文在包標記框架的基礎上,提出一種適用于無線傳感網絡下惡意節點溯源追蹤的算法。
在無線傳感器網絡中,虛假信息注入攻擊是一種重要的安全威脅,該領域的研究主要集中于途中過濾和廣播認證的方法[3,7-10]。途中過濾[3,7-8],即在虛假數據包到達Sink節點之前進行路由過濾,該方法只能暫時地減輕危害,不能夠定位并隔離惡意節點,從而無法阻止惡意節點繼續注入虛假信息,甚至這些數據包可能經過多跳后才被發現,此時雖可以對其進行過濾,但它們已經消耗合法節點的能量。文獻[9]提出一種叫做CAPTRA的廣播認證方法,通過充分利用節點發送分組信息時的廣播特性來進行追蹤。節點利用布隆過濾器(Bloom Filter)的數據結構來節約存儲分組信息所要消耗的內存。當轉發節點接收到分組時,附近的監聽節點也會收到該分組信息,都對分組信息進行提取,把所提取出來的部分信息作為分組摘要,并把上一跳轉發節點的標志等信息一起存儲在過濾器中。這種方法不足在于追蹤過程需要反復迭代,消耗大量通信和內存。文獻[10]提出一種基于公鑰密碼體系的廣播認證方法,將惡意節點定位在兩步范圍內,但是傳感器節點的能量和計算能力的限制,它所采用的公鑰體系方法將不適用于傳感器網絡。近年來,開始有研究提出基于包標記[11-13]的方法。文獻[12]提出了一種概率性嵌套包標記方法(PNM),為了保護上游節點在數據包上的標記,每個轉發節點以嵌套方式標記數據包,防止串通節點掩蓋數據包經過節點的位置,或者是串通節點自身的位置。但是,隨著節點不斷地被加密標記,數據包越來越大,將明顯的加重網絡通信負載。文獻[13]提出一種基于邊采樣追蹤方法,通過對節點的ID進行兩次加密,防止泄露包標記的信息。由于僅對ID加密,隨著多個數據包的傳送,將造成串通節點可以復制數據包中加密節點的信息,從而偽造其他無辜節點,而不能精確定位到惡意節點,甚至可能誤定位到無辜節點。
根據以上情況,本文提出一種適用于無線傳感器網絡的溯源追蹤方案。該方案采用對稱密鑰方法,利用包頭中的兩個節點域,根據某一概率對數據包和ID進行HASH產生水印,然后把水印標記到節點域中,實現惡意節點地溯源追蹤。實驗結果表明,基于水印的追蹤方法的計算量和網絡通信量較小,同時具有較高的安全性和惡意節點定位準確率。
假設每個傳感器節點都有一個唯一的ID標識符,節點的位置在傳感器網絡部署后相對固定不再移動,節點之間的通信是通過多跳無線通道來完成信息傳遞。同時,假定數據包傳輸的路徑相對穩定,即在短時間內是不會頻繁改變,每個節點都只有唯一的下一跳節點。
源惡意節點:發送大量虛假數據包的節點,如圖1中的節點S。
串通節點:在前轉路徑上,通過偽造標記或刪除標記,協同源惡意節點注入虛假信息等,如圖1中的節點X。
惡意節點:包括串通節點和源惡意節點。
定位節點:溯源追蹤方案定位到的節點。
定位成功:即定位節點是惡意節點或者是在惡意節點的下游一步鄰居范圍內。

圖1 攻擊示意圖,節點S與X是被俘獲節點
每個數據包都含有兩個節點(node)區域,如圖2所示。其中,node1區域用于記錄靠近源節點的節點信息,node2區域用于記錄靠近Sink節點的節點信息。設原始數據包為M,節點域初始值為null;任意節點n與Sink節點共享一個密鑰K和一個單向函數H,H用于產生節點ID和數據包的水印。當節點i收到數據包時,首先根據概率p來確定是否標記此數據包。如果確定要標記,則產生節點相應的水印W=H(id|key|M)并進行標記。標記過程如下:

圖2 標記方法
檢查node1域是否為空:①若(node1)為空,將Wi標記在node1域中;②若不為空,則檢查node2域是否為空;③若(node2)為空,則把Wi標記在此node2域中;④若不為空,則節點覆蓋node1域進行標記,并把 node2域置為 null,算法偽代碼如表1所示。

表1 標記算法
Sink節點維護一張表,表項為{id,key},其中,id是節點唯一標識符,key是節點與Sink節點對應的密鑰,以及一個安全單向函數F1,用于提取水印中的節點ID。在追蹤節點算法中,Sink節點存儲四個集合 un_set,dn_set,e_set,s_set。當節點收到一個標記包時,分別提取數據包的node1和node2區域,通過解密函數F1獲取標記節點的ID,分別記為id_u和id_d,其中id_u這類節點稱為上游節點,并存入un_set集合里;id_d這類節點稱為下游節點,并存入dn_set集合里;同時把(id_u,id_d)存放在e_set集合里,當收集到足夠多的數據包時,就可以構建出攻擊的路徑;s_set初始為空,收到標記包后進行存放id_u,當id_u節點出現在dn_set集合里或者id_d節點出現在s_set集合里,則把它從s_set中移除,不斷地進行更新,存放的唯一節點就追蹤到的目標節點,具體算法偽代碼如表2所示。
根據圖1所示,假設源惡意節點和串通節點都不標記的情況,Sink節點收到標記包經過解密后的標記ID和通過追蹤算法得到四個集合的結果,如表3所示。

表2 追蹤算法

表3 Sink節點追蹤示例表
如圖1所示,節點S和節點X是被俘獲節點,源惡意節點S發送大量虛假數據,節點X串通節點S對數據包進行轉發的同時,還可以對數據包中的標記進行修改或者刪除。下面針對幾種典型的攻擊模型,對本方案的安全性進行分析。
不標記:節點S對本身產生的數據包不進行標記,則Sink節點可以追蹤到節點S的下游節點1。
移除標記:節點X串通節點S發送虛假信息,并把在節點S與節點X之間所有標記進行隨意刪除的情況。本文方案將每個節點的ID標記和數據包進行HASH產生水印,假設節點每次傳送的數據是隨機的,則節點X不能選擇性的對某一個特定的ID標記進行刪除。如果節點X把所有的標記都刪除掉,同時不進行標記或者錯誤標記節點X本身信息,則Sink節點也可以定位到X的下游節點5;或者是正確標記,那么可以定位到串通節點X。
更改標記:節點X更改上游節點的標記。因為節點的ID與數據包M進行HASH產生水印,不同的數據包M,所產生的水印就是不同的,所以節點X無法獲得上游節點的信息來進行更改標記,如果進行隨機地更改標記,依然存在部分標記包能夠到達Sink節點,從而追蹤到節點S或者節點1。如果節點X可能更改全部的數據包標記,并且自身不進行標記或者錯誤標記數據包,則可以追蹤到節點5;如果進行正確地標記,則可以追蹤到節點X。
選擇性丟棄:節點X隨機地選擇丟棄上游節點的標記。節點X不知道所丟棄標記的ID,所以不能針對性的去選擇刪除同一ID的標記,不能進行全丟棄,同樣存在部分標記包能夠到達Sink節點,從而追蹤到節點S或者節點1。
從以上分析可以得出,本文方案能夠應對幾乎全部的攻擊類型,因此具有很強的實用性。
根據贈券收集(Coupon Collector)問題[3],Sink節點收到攻擊路徑上所有d個節點的不同標記包的期望為dlnd+O(d)。Sink節點接收到一個距離攻擊者i跳的節點標記的數據包的概率是p(1-p)d-i,當i=1時概率最小,假設攻擊路徑上所有節點的標記包到達 Sink節點的概率都為 p(1-p)d-1,那么Sink節點收到一個標記包的概率是 dp(1-p)d-1,Sink節點完成路徑重構需要的攻擊包總個數X的期望值是。假設路徑長度已知,可以通過計算最小值來得出標記概率。假設f(p)=p(1-p)d-1,根據f(p)的最大值與的最小值相等,本文通過求f(p)的最大值來得出標記概率。
假設 f(p)=p(1-p)d-1,所以對公式 f(p)求導如下:

實驗在windows7環境下,采用CYGWIN+NS2的仿真軟件,對算法進行驗證。實驗采用隨機圖,為保證網絡連通性,傳感器網絡模型的主要參數如下:有400個節點平均分布為800 m×800 m平坦區域A范圍內,其中有一個是Sink節點在傳感器區域A之外,如圖3所示。根據不同跳數,由dp=1來設定固定概率的大小,如圖4所示,當節點跳數d<10時,Sink節點只要收到17個數據包,其中接收到含有標記的數據包可達92%。同樣,在d=20跳或30跳,分別需要46、55個數據包就可以達到90%,結果表明只需要較少的數據包,Sink節點就可以收到所有節點的標記,盡可能少的耗費傳感器節點能量和帶寬。

圖3 傳感器節點隨機分布圖

圖4 Sink節點收集到標記的概率
源惡意節點隨機產生的數據包M,由中間節點根據概率p確定是否進行標記,確定標記的信息是通過HASH算法根據密鑰不同對數據包產生一段長度為64 bit的水印,并根據標記算法進行相應地標記。根據對基于邊標記追蹤算法的理論分析,它所采用的是僅對節點的ID進行兩次加密的方法來進行追蹤,存在標記信息能夠被串通節點所獲悉并進行篡改的情況,因此本文選用此算法與PWM進行對比。不同跳數下節點成功定位所需要的數據包數量不同,針對數據包數量是200、400分別從5跳到50跳進行實驗,根據圖5所示,200個數據包在20跳范圍內,定位成功率為99%。根據圖6所示,400個數據包在40跳可以達到90%,并與基于邊標記的方法[12]進行對比,數據包數量為200、400定位的成功率分別提高了11.7%和13.1%。

圖5 發送200個數據包,節點成功定位的概率

圖6 發送400個數據包,節點成功定位的概率
在提高網絡的安全性同時,本文對提高安全性的代價進行分析如下:采用水印技術的追蹤方法,節點在標記的算法中,時間復雜度為常數級;Sink節點在重構路徑的時間復雜度為O(n)。由于節點的通信消耗遠遠大于計算能耗,而且本文采用是輕量級的水印技術,所以計算能耗可以忽略不計[1]。
根據無線傳輸能量模型[14],數據包在單跳傳輸/接收1 bit信息所需的能量:

其中,Eb表示節點的總能耗;Et和Er分別表示傳輸和接收狀態下的能量消耗,Edec表示數據包解碼能量,可以忽略不計。l表示有效負載。
由式(2)可得,

其中,k1表示傳輸1 bit有用信息所消耗的能量;k2表示無線電收發部件啟動時所消耗的能量;α表示數據包的頭部;τ表示數據包的尾部。兩個節點域都標記,則數據包的能耗情況如式(4):

目前虛假信息注入攻擊越來越受關注,但是現有的方法絕大多數都是通過途中過濾來被動地減小攻擊產生的危害。基于水印方法的追蹤方法是一種在存在串通節點的情況下,采用主動防御定位到惡意節點的方法,最后可以結合物理性移動或者網絡隔離,徹底解決惡意節點所產生的危害。本文通過安全性分析和仿真實驗證明了PWM方法,在惡意節點危害到網絡之前,能夠定位到惡意節點,有效地防止虛假信息注入。下一步將進行如下的研究:①在當前的無線傳感器網絡平臺上進行實驗來評價PWM的性能;②研究如何在網絡檢測[15]和隔離追蹤到的惡意節點。
[1]Sen J.A Survey on Wireless Sensor Network Security[J].International Journal of Communication Networks and Information Security(IJCNIS),2009,1(2):55-76.
[2]楊黎斌,慕德俊,蔡曉妍.基于博弈理論的傳感器網絡拒絕服務攻擊限制模型[J].傳感技術學報,2009,20(1):90-94.
[3]Ye F,Luo H Y,Lu S W,et al.Statistical En-Route Filtering of Injected False Data in Sensor Networks[J].IEEE Journal on Selected Areas in Communication,2005,23(4):839-850.
[4]Savage S,Wetherall D,Karlin A,et al.Practical Network Support for IP Traceback[C]//Proc.ACM SIGCOMM’00,2000:319-327.
[5]Snoeren A,Partridge C,Sanchez L,et al.Hash-Based IP Traceback[C]//ACM SIGCOMM’01,2001:27-31.
[6]Dong Q,Banerjee S,Adler M,et al.Efficient Probabilistic Packet Marking[J].Proceedingsofthe13th IEEE International Conference on Network Protocols,2005:368-377.
[7]Zhu S,Setia S,Jajodia S,et al.An Interleaved Hop-by-Hop Authentication Scheme for Filtering of Injected False Data in Sensor Networks[C]//IEEE Symposium on Security and Privacy’04.Caliomia:Los Alamitos,Calif,2004.259-271.
[8]謝婧,李曦,楊峰.應對虛假數據注入結合途中過濾與溯源追蹤方法[J].計算機系統應用,2011,20(12):249-256.
[9]Sy D,Bao L.CAPTRA:Coordinated Packet Traceback[J].The Fifth International Conference on Information Processing in Sensor Networks(IPSN),Nashville,TN,2006:19-21.
[10]Wang R,Du W,Ning P.Containing Denial-of-Service Attacks in Broadcast Authentication in Sensor Networks[C]//Proc.ACM Mobihoc’07.New York,USA:ACM N.Y.,USA,2007.71-79.
[11]楊峰,周學海,張起元,等.無線傳感器網絡惡意節點溯源追蹤方法研究[J].電子學報,2009,37(1):202-206.
[12]Ye F,Yang H,Liu Z.Catching Moles in Sensor Networks[J].In Proc.IEEEICDCS.Washington,DC,USA:IEEEComputer Society,2007:69-77.
[13]Xu J,Zhou X H,Yang F.Edge-Based Traceback in Sensor Networks[J].6th International Conference on Wireless Communications Networking and Mobile Computing(WiCOM),2010:1-4.
[14]趙彤,楊文國.無線傳感器網絡中基于能效的最優數據包長[J].中國科學院研究生院學報,2008,25(2):161-166.
[15]劉華博,崔建明,戴鴻君.基于多元分類的無線傳感器網絡惡意節點檢測算法[J].傳感技術學報,2011,24(5):771-777.