◆楊 鋼
(遼寧大學信息學院 遼寧 110036)
無線傳感器網絡是由一系列具有感知、計算、通信功能的傳感器節點組成,由于其低成本、分布式部署方式、實時監測和自組織等特點,能夠滿足信息獲取所需的時效性和準確性而廣泛應用于生活中的各行業之中[1]。但在無線傳感網中因為需要把傳感器節點布置在野外環境中,傳感器節點容易受到攻擊,傳感器節點會因為大量的攻擊數據包而嚴重消耗有限的資源,最終導致整個網絡癱瘓[2]。因此設計一種能夠追蹤到攻擊節點的追蹤方法具有十分重要的意義。在現有的溯源追蹤方法中,概率包標記技術由于其占用的資源較少以及不影響網絡的正常通信,并能夠滿足不同協議的要求等特點[3],從而最為適用于傳感器網絡中進行溯源追蹤,從而使得概率包標記技術成為該領域研究的一大熱點。
基本的概率包標記策略中由于下游節點的標記容易覆蓋上游節點的標記,從而導致該策略的溯源追蹤效率低,匯聚節點需收集到足夠多的數據包,才能重構溯源路徑。基于鄰居節點信息的溯源追蹤策略雖然改進了溯源追蹤的效率,但仍采用逐級定位的方法進行溯源追蹤,這就要求在溯源過程中需要途中節點的參與,導致溯源的效率仍然較低和消耗的能量較多。
假定無線傳感器網絡中節點分布不均勻且密集,網絡拓撲結構可動態變化,匯聚節點布置后就不再移動,且具有不會被俘獲、資源不受限制和安全性強的特點。與現有的安全問題研究假設基本相同,但在本網絡中還需假設源節點不受攻擊以及不會出現連續節點受到攻擊的情況。
攻擊模型,如圖1所示。在該模型中存在著多條攻擊路徑,模型中的一條攻擊路徑為:P={S0,S1,S2,…,Sn,Sink}。其中S0為源節點,Si(0≤i≤n)為中間節點,攻擊路徑長度為n+1。

圖1 多重攻擊路徑圖
部署前,每個節點都有一個唯一的 ID 標識,個人密鑰生成公式,全局的單向鏈生成函數H(x)以及與匯聚節點共享的密鑰。假設在網絡初始化過程中,每個節點都是安全的。個人密鑰生成公式如式(1):

f是隨機函數,ksm是該節點與匯聚節點的私鑰,且這個密鑰由匯聚節點發送。由于使用哈希函數可能會出現沖突現象,本方法中使用開放定址法對哈希函數進行處理,如下式:

其中H(x)為哈希函數;di為增量序列,取di=1,2,…,m-1,稱為線性探測再散列;m為哈希表表長。
因此單向鏈密鑰生成函數如公式(3)。

當節點部署在某區域后,每個節點如 V利用式(1)生成密鑰kvm,然后通過公式(3)生成每個節點對應的m+1 個單向鏈密鑰〈kv0,kv1, … … ,kvm〉。每個節點存儲間隔為d的若干密鑰,其余密鑰由相鄰密鑰利用密鑰生成算式生成。之后每個節點向鄰居節點廣播自身與鄰居節點的共享密鑰,鄰居節點將這個密鑰記錄下來,以此類推,每個節點就都記錄了其與下一跳鄰居節點的共享密鑰,同時每個中間轉發節點還記錄了其與上一跳鄰居節點的共享密鑰。
本文中用雙重密文的方式進行信息的傳遞,確保信息的安全傳輸。為了防止傳輸信息被惡意節點篡改,本文采用以下措施進行保護:
將每個節點的真實 ID 隱藏起來:

其中是由匯聚節點發送的節點 V和匯聚節點的私鑰,|| 為連接操作。
采用與密文相關的 MAC 認證:

其中E為加密算法,data為要傳輸的消息,ki為兩相鄰節點的共享密鑰,C為 MAC 算法,為源節點與匯聚節點的私鑰。
當某一傳感器節點收到至少 T 個傳感器節點發送的感知信息時,就向其鄰居節點聲明自己是簇頭節點。之后簇頭節點將收集到的感知信息進行數據融合處理,形成數據包發送給下一跳節點,然后經過中間節點進行轉發,最后發送到匯聚節點。本文中數據包格式如下所示:

第一步:源節點首先將收集到的信息進行數據融合處理,形成初始的數據包,源節點再將該數據包轉發給下一跳節點。
第二步:中間轉發節點接收到數據包后,首先利用兩通信節點的共享密鑰解密雙重密文Mi得到初級密文,然后該節點將得到的初級密文與數據包中保存的E(data)進行比較,若比較結果相同,則進行第三步;反之,則進行第四步。
第三步:若 MAC 認證成功,則該節點先利用其與下一跳節點的共享密鑰和 MAC 算法對E(data)進行加密得到新的雙重密文Mi,再將更新好的數據包傳輸給下一跳節點后直接進入第五步。
第四步:若 MAC 認證未成功,則該節點記錄其上一跳節點的隱藏 ID 到攻擊節點 ID 域IDA′中,然后根據數據包中的E(data),與下一跳節點共享的密鑰以及MAC 算法重新生成一個雙重密文Mi;最后將更新的數據包轉發給下一跳節點后進行第五步。
第五步:當下一跳節點接收到數據包后,驗證當前節點是否為匯聚節點,若為匯聚節點,則數據包不再進行轉發;若不為匯聚節點,則進入第二步。
當網絡中各通信路徑上的數據包傳遞到匯聚節點后:
第一步:匯聚節點首先檢查數據包中的攻擊節點域的值,若其值為空,則表示該數據包代表的通信路徑是安全的路徑;若其值不為空,則表明該通信路徑為攻擊路徑。
本文提出的基于雙重密文的攻擊節點追蹤方法,匯聚節點不需要收集大量的數據包和利用“邊”思想進行定位便可追蹤到攻擊節點。而且還可以追蹤到網絡 上的所有攻擊節點,并不局限于只追蹤攻擊源,但該方法不能夠有效的處理網絡中出現的合謀攻擊,因此還需對網絡上出現的合謀攻擊的情況進行深一步的研究。