曾梅梅,蔣 華,王 鑫
(桂林電子科技大學計算機科學與工程學院,廣西桂林541004)
無線傳感器網絡廣泛地應用于生活、軍事、農業(yè)、環(huán)境監(jiān)測、智能家居等領域。通常,無線傳感器網絡工作環(huán)境比較惡劣,存在嚴重的安全威脅[1]。此外,無線傳感器網絡的無人照管操作使得傳感器節(jié)點易于被敵方物理性地控制,從而成為惡意節(jié)點,并獲得節(jié)點自身存儲的信息,包括密鑰等機密信息[2]。這些惡意節(jié)點將會對網絡產生巨大的危害,比如虛假信息注入[3],就是一種由惡意節(jié)點發(fā)起的嚴重攻擊。惡意節(jié)點可以注入大量的虛假流量,并隨著路徑前進發(fā)送到Sink節(jié)點,將導致應用程序失敗、能量和帶寬耗費等嚴重的問題。對于DOS攻擊,目前主要解決方案是在節(jié)點上進行過濾虛假數(shù)據包來減緩危害,但無法在攻擊后進行主動防御。
針對數(shù)據包過濾的不足,本文重點研究主動防御問題,即如何在傳感器網絡中定位到惡意節(jié)點,進而采取相應的主動防御策略。如果能夠獲知惡意節(jié)點的位置,就可以把它們從網絡中隔離或移除,從根本上消除了攻擊發(fā)生的可能性。然而,在無線傳感器網絡中,準確定位惡意節(jié)點存在很大的困難。一方面,無線傳感器網絡的架構不同于互聯(lián)網,節(jié)點既是主機又是路由器,而且每個節(jié)點都是平等的,缺少可信任的路由設施。另一方面,存在串通節(jié)點配合源惡意節(jié)點進行攻擊,它們不但共享密鑰,而且可以應用合理的方法操縱數(shù)據包來掩蓋它們的路徑,這些篡改攻擊比起簡單增加虛假流量更復雜。由于互聯(lián)網下的IP追蹤技術較少考慮到串通節(jié)點配合情況[3-5],不能直接應用于無線傳感器網絡上。針對這一問題,本文在包標記框架的基礎上,提出一種適用于無線傳感網絡下惡意節(jié)點溯源追蹤的算法。
在無線傳感器網絡中,虛假信息注入攻擊是一種重要的安全威脅,該領域的研究主要集中于途中過濾和廣播認證的方法[3,7-10]。途中過濾[3,7-8],即在虛假數(shù)據包到達Sink節(jié)點之前進行路由過濾,該方法只能暫時地減輕危害,不能夠定位并隔離惡意節(jié)點,從而無法阻止惡意節(jié)點繼續(xù)注入虛假信息,甚至這些數(shù)據包可能經過多跳后才被發(fā)現(xiàn),此時雖可以對其進行過濾,但它們已經消耗合法節(jié)點的能量。文獻[9]提出一種叫做CAPTRA的廣播認證方法,通過充分利用節(jié)點發(fā)送分組信息時的廣播特性來進行追蹤。節(jié)點利用布隆過濾器(Bloom Filter)的數(shù)據結構來節(jié)約存儲分組信息所要消耗的內存。當轉發(fā)節(jié)點接收到分組時,附近的監(jiān)聽節(jié)點也會收到該分組信息,都對分組信息進行提取,把所提取出來的部分信息作為分組摘要,并把上一跳轉發(fā)節(jié)點的標志等信息一起存儲在過濾器中。這種方法不足在于追蹤過程需要反復迭代,消耗大量通信和內存。文獻[10]提出一種基于公鑰密碼體系的廣播認證方法,將惡意節(jié)點定位在兩步范圍內,但是傳感器節(jié)點的能量和計算能力的限制,它所采用的公鑰體系方法將不適用于傳感器網絡。近年來,開始有研究提出基于包標記[11-13]的方法。文獻[12]提出了一種概率性嵌套包標記方法(PNM),為了保護上游節(jié)點在數(shù)據包上的標記,每個轉發(fā)節(jié)點以嵌套方式標記數(shù)據包,防止串通節(jié)點掩蓋數(shù)據包經過節(jié)點的位置,或者是串通節(jié)點自身的位置。但是,隨著節(jié)點不斷地被加密標記,數(shù)據包越來越大,將明顯的加重網絡通信負載。文獻[13]提出一種基于邊采樣追蹤方法,通過對節(jié)點的ID進行兩次加密,防止泄露包標記的信息。由于僅對ID加密,隨著多個數(shù)據包的傳送,將造成串通節(jié)點可以復制數(shù)據包中加密節(jié)點的信息,從而偽造其他無辜節(jié)點,而不能精確定位到惡意節(jié)點,甚至可能誤定位到無辜節(jié)點。
根據以上情況,本文提出一種適用于無線傳感器網絡的溯源追蹤方案。該方案采用對稱密鑰方法,利用包頭中的兩個節(jié)點域,根據某一概率對數(shù)據包和ID進行HASH產生水印,然后把水印標記到節(jié)點域中,實現(xiàn)惡意節(jié)點地溯源追蹤。實驗結果表明,基于水印的追蹤方法的計算量和網絡通信量較小,同時具有較高的安全性和惡意節(jié)點定位準確率。
假設每個傳感器節(jié)點都有一個唯一的ID標識符,節(jié)點的位置在傳感器網絡部署后相對固定不再移動,節(jié)點之間的通信是通過多跳無線通道來完成信息傳遞。同時,假定數(shù)據包傳輸?shù)穆窂较鄬Ψ€(wěn)定,即在短時間內是不會頻繁改變,每個節(jié)點都只有唯一的下一跳節(jié)點。
源惡意節(jié)點:發(fā)送大量虛假數(shù)據包的節(jié)點,如圖1中的節(jié)點S。
串通節(jié)點:在前轉路徑上,通過偽造標記或刪除標記,協(xié)同源惡意節(jié)點注入虛假信息等,如圖1中的節(jié)點X。
惡意節(jié)點:包括串通節(jié)點和源惡意節(jié)點。
定位節(jié)點:溯源追蹤方案定位到的節(jié)點。
定位成功:即定位節(jié)點是惡意節(jié)點或者是在惡意節(jié)點的下游一步鄰居范圍內。
圖1 攻擊示意圖,節(jié)點S與X是被俘獲節(jié)點
每個數(shù)據包都含有兩個節(jié)點(node)區(qū)域,如圖2所示。其中,node1區(qū)域用于記錄靠近源節(jié)點的節(jié)點信息,node2區(qū)域用于記錄靠近Sink節(jié)點的節(jié)點信息。設原始數(shù)據包為M,節(jié)點域初始值為null;任意節(jié)點n與Sink節(jié)點共享一個密鑰K和一個單向函數(shù)H,H用于產生節(jié)點ID和數(shù)據包的水印。當節(jié)點i收到數(shù)據包時,首先根據概率p來確定是否標記此數(shù)據包。如果確定要標記,則產生節(jié)點相應的水印W=H(id|key|M)并進行標記。標記過程如下:
圖2 標記方法
檢查node1域是否為空:①若(node1)為空,將Wi標記在node1域中;②若不為空,則檢查node2域是否為空;③若(node2)為空,則把Wi標記在此node2域中;④若不為空,則節(jié)點覆蓋node1域進行標記,并把 node2域置為 null,算法偽代碼如表1所示。
表1 標記算法
Sink節(jié)點維護一張表,表項為{id,key},其中,id是節(jié)點唯一標識符,key是節(jié)點與Sink節(jié)點對應的密鑰,以及一個安全單向函數(shù)F1,用于提取水印中的節(jié)點ID。在追蹤節(jié)點算法中,Sink節(jié)點存儲四個集合 un_set,dn_set,e_set,s_set。當節(jié)點收到一個標記包時,分別提取數(shù)據包的node1和node2區(qū)域,通過解密函數(shù)F1獲取標記節(jié)點的ID,分別記為id_u和id_d,其中id_u這類節(jié)點稱為上游節(jié)點,并存入un_set集合里;id_d這類節(jié)點稱為下游節(jié)點,并存入dn_set集合里;同時把(id_u,id_d)存放在e_set集合里,當收集到足夠多的數(shù)據包時,就可以構建出攻擊的路徑;s_set初始為空,收到標記包后進行存放id_u,當id_u節(jié)點出現(xiàn)在dn_set集合里或者id_d節(jié)點出現(xiàn)在s_set集合里,則把它從s_set中移除,不斷地進行更新,存放的唯一節(jié)點就追蹤到的目標節(jié)點,具體算法偽代碼如表2所示。
根據圖1所示,假設源惡意節(jié)點和串通節(jié)點都不標記的情況,Sink節(jié)點收到標記包經過解密后的標記ID和通過追蹤算法得到四個集合的結果,如表3所示。
表2 追蹤算法
表3 Sink節(jié)點追蹤示例表
如圖1所示,節(jié)點S和節(jié)點X是被俘獲節(jié)點,源惡意節(jié)點S發(fā)送大量虛假數(shù)據,節(jié)點X串通節(jié)點S對數(shù)據包進行轉發(fā)的同時,還可以對數(shù)據包中的標記進行修改或者刪除。下面針對幾種典型的攻擊模型,對本方案的安全性進行分析。
不標記:節(jié)點S對本身產生的數(shù)據包不進行標記,則Sink節(jié)點可以追蹤到節(jié)點S的下游節(jié)點1。
移除標記:節(jié)點X串通節(jié)點S發(fā)送虛假信息,并把在節(jié)點S與節(jié)點X之間所有標記進行隨意刪除的情況。本文方案將每個節(jié)點的ID標記和數(shù)據包進行HASH產生水印,假設節(jié)點每次傳送的數(shù)據是隨機的,則節(jié)點X不能選擇性的對某一個特定的ID標記進行刪除。如果節(jié)點X把所有的標記都刪除掉,同時不進行標記或者錯誤標記節(jié)點X本身信息,則Sink節(jié)點也可以定位到X的下游節(jié)點5;或者是正確標記,那么可以定位到串通節(jié)點X。
更改標記:節(jié)點X更改上游節(jié)點的標記。因為節(jié)點的ID與數(shù)據包M進行HASH產生水印,不同的數(shù)據包M,所產生的水印就是不同的,所以節(jié)點X無法獲得上游節(jié)點的信息來進行更改標記,如果進行隨機地更改標記,依然存在部分標記包能夠到達Sink節(jié)點,從而追蹤到節(jié)點S或者節(jié)點1。如果節(jié)點X可能更改全部的數(shù)據包標記,并且自身不進行標記或者錯誤標記數(shù)據包,則可以追蹤到節(jié)點5;如果進行正確地標記,則可以追蹤到節(jié)點X。
選擇性丟棄:節(jié)點X隨機地選擇丟棄上游節(jié)點的標記。節(jié)點X不知道所丟棄標記的ID,所以不能針對性的去選擇刪除同一ID的標記,不能進行全丟棄,同樣存在部分標記包能夠到達Sink節(jié)點,從而追蹤到節(jié)點S或者節(jié)點1。
從以上分析可以得出,本文方案能夠應對幾乎全部的攻擊類型,因此具有很強的實用性。
根據贈券收集(Coupon Collector)問題[3],Sink節(jié)點收到攻擊路徑上所有d個節(jié)點的不同標記包的期望為dlnd+O(d)。Sink節(jié)點接收到一個距離攻擊者i跳的節(jié)點標記的數(shù)據包的概率是p(1-p)d-i,當i=1時概率最小,假設攻擊路徑上所有節(jié)點的標記包到達 Sink節(jié)點的概率都為 p(1-p)d-1,那么Sink節(jié)點收到一個標記包的概率是 dp(1-p)d-1,Sink節(jié)點完成路徑重構需要的攻擊包總個數(shù)X的期望值是。假設路徑長度已知,可以通過計算最小值來得出標記概率。假設f(p)=p(1-p)d-1,根據f(p)的最大值與的最小值相等,本文通過求f(p)的最大值來得出標記概率。
假設 f(p)=p(1-p)d-1,所以對公式 f(p)求導如下:
實驗在windows7環(huán)境下,采用CYGWIN+NS2的仿真軟件,對算法進行驗證。實驗采用隨機圖,為保證網絡連通性,傳感器網絡模型的主要參數(shù)如下:有400個節(jié)點平均分布為800 m×800 m平坦區(qū)域A范圍內,其中有一個是Sink節(jié)點在傳感器區(qū)域A之外,如圖3所示。根據不同跳數(shù),由dp=1來設定固定概率的大小,如圖4所示,當節(jié)點跳數(shù)d<10時,Sink節(jié)點只要收到17個數(shù)據包,其中接收到含有標記的數(shù)據包可達92%。同樣,在d=20跳或30跳,分別需要46、55個數(shù)據包就可以達到90%,結果表明只需要較少的數(shù)據包,Sink節(jié)點就可以收到所有節(jié)點的標記,盡可能少的耗費傳感器節(jié)點能量和帶寬。
圖3 傳感器節(jié)點隨機分布圖
圖4 Sink節(jié)點收集到標記的概率
源惡意節(jié)點隨機產生的數(shù)據包M,由中間節(jié)點根據概率p確定是否進行標記,確定標記的信息是通過HASH算法根據密鑰不同對數(shù)據包產生一段長度為64 bit的水印,并根據標記算法進行相應地標記。根據對基于邊標記追蹤算法的理論分析,它所采用的是僅對節(jié)點的ID進行兩次加密的方法來進行追蹤,存在標記信息能夠被串通節(jié)點所獲悉并進行篡改的情況,因此本文選用此算法與PWM進行對比。不同跳數(shù)下節(jié)點成功定位所需要的數(shù)據包數(shù)量不同,針對數(shù)據包數(shù)量是200、400分別從5跳到50跳進行實驗,根據圖5所示,200個數(shù)據包在20跳范圍內,定位成功率為99%。根據圖6所示,400個數(shù)據包在40跳可以達到90%,并與基于邊標記的方法[12]進行對比,數(shù)據包數(shù)量為200、400定位的成功率分別提高了11.7%和13.1%。
圖5 發(fā)送200個數(shù)據包,節(jié)點成功定位的概率
圖6 發(fā)送400個數(shù)據包,節(jié)點成功定位的概率
在提高網絡的安全性同時,本文對提高安全性的代價進行分析如下:采用水印技術的追蹤方法,節(jié)點在標記的算法中,時間復雜度為常數(shù)級;Sink節(jié)點在重構路徑的時間復雜度為O(n)。由于節(jié)點的通信消耗遠遠大于計算能耗,而且本文采用是輕量級的水印技術,所以計算能耗可以忽略不計[1]。
根據無線傳輸能量模型[14],數(shù)據包在單跳傳輸/接收1 bit信息所需的能量:
其中,Eb表示節(jié)點的總能耗;Et和Er分別表示傳輸和接收狀態(tài)下的能量消耗,Edec表示數(shù)據包解碼能量,可以忽略不計。l表示有效負載。
由式(2)可得,
其中,k1表示傳輸1 bit有用信息所消耗的能量;k2表示無線電收發(fā)部件啟動時所消耗的能量;α表示數(shù)據包的頭部;τ表示數(shù)據包的尾部。兩個節(jié)點域都標記,則數(shù)據包的能耗情況如式(4):
目前虛假信息注入攻擊越來越受關注,但是現(xiàn)有的方法絕大多數(shù)都是通過途中過濾來被動地減小攻擊產生的危害。基于水印方法的追蹤方法是一種在存在串通節(jié)點的情況下,采用主動防御定位到惡意節(jié)點的方法,最后可以結合物理性移動或者網絡隔離,徹底解決惡意節(jié)點所產生的危害。本文通過安全性分析和仿真實驗證明了PWM方法,在惡意節(jié)點危害到網絡之前,能夠定位到惡意節(jié)點,有效地防止虛假信息注入。下一步將進行如下的研究:①在當前的無線傳感器網絡平臺上進行實驗來評價PWM的性能;②研究如何在網絡檢測[15]和隔離追蹤到的惡意節(jié)點。
[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]謝婧,李曦,楊峰.應對虛假數(shù)據注入結合途中過濾與溯源追蹤方法[J].計算機系統(tǒng)應用,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]楊峰,周學海,張起元,等.無線傳感器網絡惡意節(jié)點溯源追蹤方法研究[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]趙彤,楊文國.無線傳感器網絡中基于能效的最優(yōu)數(shù)據包長[J].中國科學院研究生院學報,2008,25(2):161-166.
[15]劉華博,崔建明,戴鴻君.基于多元分類的無線傳感器網絡惡意節(jié)點檢測算法[J].傳感技術學報,2011,24(5):771-777.