劉 宣, 張曉榮, 許 勇
(安徽師范大學(xué) 計(jì)算機(jī)與信息學(xué)院,安徽 蕪湖 241000)
無線傳感器網(wǎng)絡(luò)(Wireless Sensor Networks,WSN)是由大量的傳感器節(jié)點(diǎn)組成的,每一個(gè)傳感器節(jié)點(diǎn)都具有體積小、價(jià)格便宜、具有無線通信和監(jiān)測能力等特點(diǎn)。無線傳感器網(wǎng)絡(luò)在軍事、國土安全、醫(yī)療保健、環(huán)境、農(nóng)業(yè)、制造業(yè)等許多領(lǐng)域都有應(yīng)用。早期的研究主要考慮同構(gòu)傳感器網(wǎng)絡(luò),即每個(gè)傳感器節(jié)點(diǎn)都有相同的性能。然而,理論研究[1-2]和仿真實(shí)驗(yàn)[3]表明,同構(gòu)傳感網(wǎng)在性能上存在瓶頸。由于傳感器網(wǎng)絡(luò)在應(yīng)用上的特殊性,節(jié)點(diǎn)通常被部署在無人區(qū)或者敵方區(qū)域,所以傳感器網(wǎng)絡(luò)的安全變得至關(guān)重要。在無線傳感器網(wǎng)絡(luò)安全領(lǐng)域中,密鑰管理問題引起了人們的關(guān)注。
根據(jù)方案所依據(jù)的加密技術(shù),WSN密鑰管理可以分為對稱密鑰管理和公鑰密鑰管理兩類。對稱密鑰管理所使用的對稱密鑰長度較短,通訊、計(jì)算和存儲開銷較小,然而其密鑰協(xié)商較復(fù)雜。公鑰加密算法曾被認(rèn)為不適用于WSN,因其使用的公鑰加密對傳感器存儲、通信和計(jì)算開銷要求較高。隨著研究的深入,人們發(fā)現(xiàn)了一些改進(jìn)的公鑰加密算法可以應(yīng)用在WSN中。
圖1 異構(gòu)傳感器網(wǎng)絡(luò)Fig.1 Heterogeneous sensor networks
Du X.[4]提出了一種基于橢圓曲線密碼學(xué)(Elliptic curve cryptography)的密鑰管理機(jī)制(以下簡稱Du-ECC)。在Du-ECC中,節(jié)點(diǎn)只與通信鄰居節(jié)點(diǎn)建立連接,減少了建立連接的開銷。若鄰居節(jié)點(diǎn)C在A通往sink的鏈路上,則C是A的通信鄰居。簇內(nèi)采用基于最小生成樹的路由結(jié)構(gòu)進(jìn)行數(shù)據(jù)傳輸,節(jié)點(diǎn)間采用基于ECC的密鑰協(xié)商減少了建立連接的開銷,提高了網(wǎng)絡(luò)的安全性,采用集中式或分布式方式建立共享密鑰。然而集中式的路由協(xié)議可能會使某條鏈路一直被使用,加速其能量消耗。由于節(jié)點(diǎn)通常由不可替換的電池供電,網(wǎng)絡(luò)的生命期隨著節(jié)點(diǎn)能量的耗盡而結(jié)束。
在無線傳感器網(wǎng)絡(luò)中,由于其多對一的流量模式使得傳感器網(wǎng)絡(luò)能量不均衡,離sink近的節(jié)點(diǎn)會承擔(dān)大量的數(shù)據(jù)轉(zhuǎn)發(fā),加速其能量消耗。如圖1所示,A節(jié)點(diǎn)不僅要將自身數(shù)據(jù)傳送給sink節(jié)點(diǎn),還要轉(zhuǎn)發(fā)來自B的數(shù)據(jù)。Gurakan等人[5]提出了能量合作技術(shù),Kang等人[6]提出了三種能量合作模型:能量預(yù)支付合作傳輸、能量租借合作傳輸和能量租借直接傳輸。通過能量合作,避免了某些節(jié)點(diǎn)因能量耗盡而過早死亡,延長了網(wǎng)絡(luò)的生命期。
基于上述分析,本文提出一種基于能量合作的的異構(gòu)傳感網(wǎng)密鑰管理機(jī)制(以下簡稱HECC)。在HECC中,各傳感器節(jié)點(diǎn)只與他們的通信鄰居建立連接,并采用能量均衡路由進(jìn)行數(shù)據(jù)傳輸,平衡了節(jié)點(diǎn)壽命。同時(shí)采用能量合作技術(shù)延長了網(wǎng)絡(luò)的生命期,并提高了網(wǎng)絡(luò)安全性。
針對對稱密鑰體制密鑰管理問題,文獻(xiàn)[7]提出了一種基于部署知識的隨機(jī)密鑰預(yù)分配機(jī)制,提高了網(wǎng)絡(luò)的安全性和連通性,但存儲開銷過大。文獻(xiàn)[8]對隨機(jī)密鑰預(yù)分配的初始化階段進(jìn)行改進(jìn),提高了它的安全性,然而并未解決存儲開銷過大的問題。文獻(xiàn)[9]提出了一種基于多元非對稱多項(xiàng)式的密鑰管理方案,該方案安全性較好,同時(shí)支持鄰居節(jié)點(diǎn)的身份認(rèn)證,但其計(jì)算開銷、通信開銷和存儲開銷過大。文獻(xiàn)[10]提出了一種分組部署方案,將異構(gòu)傳感網(wǎng)部署區(qū)域分為六邊形分組區(qū)域,簡化了密鑰池的劃分,對各個(gè)分組分別部署密鑰,提高了節(jié)點(diǎn)安全連通率,但其抗捕獲攻擊能力較差。
隨著ECC在無線傳感網(wǎng)密鑰管理中的應(yīng)用,Kishore等人[11]提出一種基于ECC的密鑰預(yù)分配方案。其安全強(qiáng)度在計(jì)算意義上要遠(yuǎn)遠(yuǎn)高于傳統(tǒng)的基于對稱密鑰的密鑰管理方案,降低了存儲開銷和能量消耗,提高了網(wǎng)絡(luò)連通率,但無法實(shí)現(xiàn)節(jié)點(diǎn)的動態(tài)增加和密鑰的實(shí)時(shí)更新和回收,不適用于動態(tài)WSN。文獻(xiàn)[12]提出了一種基于ECC和自認(rèn)證公鑰的密鑰協(xié)商協(xié)議。該協(xié)議減少了計(jì)算和存儲開銷,提高了網(wǎng)絡(luò)的安全性,但可擴(kuò)展性較差。Jiang和Liu[13]提出了基于ECC的密鑰管理方案。此方案主要采用了身份認(rèn)證和ECC兩種技術(shù),連通性能達(dá)到100%,并且支持節(jié)點(diǎn)的動態(tài)加入和撤銷。但是沒有很好的解決簇頭的選擇問題,容易導(dǎo)致節(jié)點(diǎn)能量的耗盡。Louw等人[14]提出了一種基于ECC的密鑰分配機(jī)制。該機(jī)制類似于擴(kuò)展的客戶-服務(wù)器體系結(jié)構(gòu),使用系統(tǒng)密鑰對節(jié)點(diǎn)身份進(jìn)行認(rèn)證,具有良好的靈活性和可擴(kuò)展性,但實(shí)施起來較為復(fù)雜。Karunkaran[15]對Du-ECC的路由方案進(jìn)行改進(jìn),使用Shamir秘密分割技術(shù)對信息進(jìn)行分割后隨機(jī)擴(kuò)散,增強(qiáng)了鏈路的可靠性,然而計(jì)算開銷過大。
假設(shè)異構(gòu)傳感網(wǎng)主要有三種不同類型的節(jié)點(diǎn):大量普通節(jié)點(diǎn)、少數(shù)簇頭節(jié)點(diǎn)和一個(gè)sink節(jié)點(diǎn)。各節(jié)點(diǎn)都具備ECC和對稱密鑰(如AES)計(jì)算能力,并且普通節(jié)點(diǎn)具有能量收集功能,即可以從周圍環(huán)境中收集能量來補(bǔ)充自身能量。與普通節(jié)點(diǎn)相比,簇頭節(jié)點(diǎn)在安全性、存儲能力、計(jì)算能力、傳輸范圍等方面有較大的提高,并配備有防篡改硬件。在部署時(shí)簇頭節(jié)點(diǎn)可以跟普通節(jié)點(diǎn)一樣采取隨機(jī)拋灑的方式,我們認(rèn)為普通節(jié)點(diǎn)和簇頭節(jié)點(diǎn)是均勻隨機(jī)分布的。每個(gè)普通節(jié)點(diǎn)和簇頭節(jié)點(diǎn)都預(yù)分配一對唯一的基于ECC的公私鑰對。此外簇頭節(jié)點(diǎn)還存儲著sink的公鑰。sink節(jié)點(diǎn)被認(rèn)為具有足夠的能量、存儲能力和計(jì)算能力,存儲著所有簇頭節(jié)點(diǎn)ID和對應(yīng)的的公鑰,同時(shí)自身也預(yù)分配了一對基于ECC的公私鑰對。
為了表述方便,下面列出在本文中所使用的符號:
C表示普通傳感器節(jié)點(diǎn),其中C是A的通信鄰居;
ID表示普通節(jié)點(diǎn)或簇頭節(jié)點(diǎn)的身份;
H表示簇頭節(jié)點(diǎn);
P表示一個(gè)節(jié)點(diǎn)的公鑰,S表示一個(gè)節(jié)點(diǎn)的私鑰;
Ek(...)表示用密鑰k對括號內(nèi)的消息進(jìn)行加密;
Es表示發(fā)送數(shù)據(jù)包消耗的能量;
Er表示接收數(shù)據(jù)包消耗的能量;
n表示通信鄰居節(jié)點(diǎn)個(gè)數(shù);
Serial表示序列號,隨著節(jié)點(diǎn)發(fā)送信息的次數(shù)遞增。
為了便于描述,本文作了如下定義:
前向鄰居節(jié)點(diǎn)與后向鄰居節(jié)點(diǎn):若鄰居節(jié)點(diǎn)O是N到sink的下一跳鄰居節(jié)點(diǎn),則N是O的前向鄰居節(jié)點(diǎn),O是N的后向鄰居節(jié)點(diǎn)。
能量合作指的是在能量收集型傳感器網(wǎng)絡(luò)中,節(jié)點(diǎn)之間將收集的能量以無線能量傳輸?shù)姆绞竭M(jìn)行能量共享[16]。
如圖2所示為能量收集型合作網(wǎng)絡(luò)模型,該網(wǎng)絡(luò)主要由三種類型的節(jié)點(diǎn):源節(jié)點(diǎn)(S)、合作節(jié)點(diǎn)(C)和目標(biāo)節(jié)點(diǎn)(D)。所有的節(jié)點(diǎn)都具備從周圍環(huán)境中收集能量的能力。節(jié)點(diǎn)由兩大模塊組成:
能量收集模塊:該模塊主要用于節(jié)點(diǎn)能量的收集和存儲。
信息傳輸模塊:該模塊主要功能是節(jié)點(diǎn)之間信息傳輸。節(jié)點(diǎn)間存在如下合作方式:
數(shù)據(jù)傳輸合作:如圖3所示,在網(wǎng)絡(luò)初始化階段,各節(jié)點(diǎn)能量充足,節(jié)點(diǎn)間以數(shù)據(jù)傳輸合作的方式進(jìn)行能量合作。在數(shù)據(jù)傳輸合作中,源節(jié)點(diǎn)S與合作節(jié)點(diǎn)C共同完成信息的傳輸。作為源節(jié)點(diǎn)S到目標(biāo)節(jié)點(diǎn)D的中繼,合作節(jié)點(diǎn)C不僅接收來自源節(jié)點(diǎn)的信息,也接受來自源節(jié)點(diǎn)的能量。在傳輸開始前,S根據(jù)數(shù)據(jù)包大小計(jì)算發(fā)送所需能量,并將能量和數(shù)據(jù)包發(fā)送給C,減少了中繼節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)的能量損失。
圖2 能量收集型合作網(wǎng)絡(luò)模型
圖3 數(shù)據(jù)傳輸合作
能量合作:由于數(shù)據(jù)傳輸?shù)膯蜗蛐裕?jié)點(diǎn)的能量總是低于其前向鄰居節(jié)點(diǎn)。當(dāng)某些節(jié)點(diǎn)剩余能量低于某個(gè)閾值(假設(shè)為Emin)時(shí),我們認(rèn)為節(jié)點(diǎn)可用能量不足,進(jìn)入能量合作階段。在該階段,各節(jié)點(diǎn)向其前向鄰居節(jié)點(diǎn)發(fā)送能量請求報(bào)文請求能量傳輸,各節(jié)點(diǎn)根據(jù)他們的能量狀態(tài)承擔(dān)其后向鄰居節(jié)點(diǎn)的能量補(bǔ)充任務(wù)。
本文假設(shè)在初始化階段,所有傳感器節(jié)點(diǎn)都是合法的。所有H隨機(jī)延遲一段時(shí)間后向周圍的節(jié)點(diǎn)廣播Hello信息,隨機(jī)延遲可避免臨近簇頭節(jié)點(diǎn)之間信息的干擾。Hello信息包括H的ID、位置和公鑰PH。由于H是均勻隨機(jī)分布的,周圍的節(jié)點(diǎn)都能收到一個(gè)或多個(gè)H的Hello信息。節(jié)點(diǎn)A選擇信號強(qiáng)度最好的Hello信息的發(fā)送者作為自身H并存儲其公鑰PH,接收到的其它Hello信息的發(fā)送者可作為備用簇頭節(jié)點(diǎn),然后向簇頭發(fā)送用PH加密的自身的ID、位置和公鑰。簇頭收到簇內(nèi)其它節(jié)點(diǎn)的公鑰信息后解密進(jìn)行存儲。
若節(jié)點(diǎn)A在部署后一段時(shí)間內(nèi)沒收到Hello信息,它將向周圍廣播探測信息。當(dāng)通信鄰居節(jié)點(diǎn)C收到探測信息后,將隨機(jī)延遲向探測者發(fā)送響應(yīng)信息,響應(yīng)信息包括自身H的ID和位置。A收到響應(yīng)信息后可將C的H作為自己的H,最終所有節(jié)點(diǎn)都能找到自己的H。為了減少能量消耗,A收到響應(yīng)信息后不必回復(fù)C。
本文采用能量合作技術(shù)構(gòu)建能量均衡路由,具體合作算法如下:
①所有節(jié)點(diǎn)定期向鄰居節(jié)點(diǎn)廣播匯報(bào)自身能量狀態(tài)。
②節(jié)點(diǎn)A根據(jù)其后向鄰居節(jié)點(diǎn)的能量狀態(tài),從中選擇能量最高的節(jié)點(diǎn)作為其中繼,采用數(shù)據(jù)傳輸合作的方式進(jìn)行合作。傳輸?shù)哪芰縀t可用以下方式計(jì)算:
Et=Es+Er(由于能量傳輸損失,接收到的能量略少于發(fā)送的能量)。
③若一段時(shí)間后,節(jié)點(diǎn)R當(dāng)前可用能量低于Emin,進(jìn)入能量合作階段。它將向其前向鄰居節(jié)點(diǎn)請求能量大小為Ec的能量傳輸。為了達(dá)到較好的能量均衡,能量傳輸總量Ec可用以下方式計(jì)算:
Ec=Sum/(n+1);其中Sum為其鄰居節(jié)點(diǎn)可用能量之和。
同時(shí)各節(jié)點(diǎn)根據(jù)它們能量在Sum中的比重分擔(dān)能量傳輸任務(wù)。
圖4 共享密鑰生成Fig.4 The generation of shared keys
為了減少計(jì)算開銷,節(jié)點(diǎn)之間用對稱密鑰加密進(jìn)行通信。在通信開始前要進(jìn)行密鑰的協(xié)商。如圖4所示,A向H發(fā)送消息1向H請求C的公鑰,并用自身私鑰進(jìn)行加密。H收到消息后解密然后向節(jié)點(diǎn)A發(fā)送消息2,并用自身私鑰進(jìn)行加密,然后向節(jié)點(diǎn)C發(fā)送自身私鑰加密后的消息3。節(jié)點(diǎn)A與C獲得對方的公鑰后即可用通信密鑰進(jìn)行通信,A與C之間的通信密鑰KAC為PA⊕PC=PC⊕PA。
為了避免重放攻擊影響密鑰的更新,所有的密鑰更新信息可加上唯一的序列號。當(dāng)傳感器節(jié)點(diǎn)因?yàn)槟承┰?能量耗盡、被捕獲、物理損害)退出原有網(wǎng)絡(luò)時(shí),為了接替這些傳感器節(jié)點(diǎn)的工作,系統(tǒng)需要及時(shí)補(bǔ)充一批新的節(jié)點(diǎn)。舊節(jié)點(diǎn)退出時(shí)新節(jié)點(diǎn)A根據(jù)能量均衡路由選擇恰當(dāng)?shù)耐ㄐ培従庸?jié)點(diǎn)C,并將自身公鑰、位置和ID通過Hello信息發(fā)送給C,C經(jīng)過多跳轉(zhuǎn)發(fā)后將該消息傳輸?shù)酱仡^節(jié)點(diǎn),簇頭節(jié)點(diǎn)收到后即向A傳輸自身公鑰。為了保證信息的前向安全性,簇頭應(yīng)及時(shí)對簇內(nèi)密鑰進(jìn)行更新。簇頭節(jié)點(diǎn)隨機(jī)生成更新密鑰KU并發(fā)送給其鄰居節(jié)點(diǎn),能量均衡路由確保了中繼節(jié)點(diǎn)不會因能量耗盡而失效。鄰居節(jié)點(diǎn)收到后進(jìn)行逐跳轉(zhuǎn)發(fā),直到所有節(jié)點(diǎn)都收到KU。A和C收到KU后設(shè)置新的共享密鑰為KAC⊕KU=KCA⊕KU。此外,為了降低節(jié)點(diǎn)捕獲攻擊的危害,網(wǎng)絡(luò)應(yīng)定期對密鑰進(jìn)行更新,密鑰更新過程與新節(jié)點(diǎn)加入相同。
下面從存儲開銷、網(wǎng)絡(luò)生命期和安全性方面用matlab對HECC進(jìn)行仿真分析并與Du-ECC進(jìn)行對比。
假設(shè)異構(gòu)傳感網(wǎng)部署了m個(gè)H和n個(gè)普通節(jié)點(diǎn),則Du-ECC集中式和分布式密鑰管理方案存儲密鑰總數(shù)為(m+2)n+3m和2n+3m。HECC由于在初始化階段簇頭節(jié)點(diǎn)只存儲簇內(nèi)節(jié)點(diǎn)公鑰,避免了無關(guān)節(jié)點(diǎn)占用其存儲空間,其存儲密鑰為(4n+2m),假設(shè)m∶n=1∶50。HECC與Du-ECC的密鑰存儲對比如下圖。
圖5 普通節(jié)點(diǎn)個(gè)數(shù)為50-300個(gè)
圖6 普通節(jié)點(diǎn)個(gè)數(shù)為1000-2000個(gè)
Fig.6 The number of nodes is between 1000 and 2000
由圖5和圖6可知,HECC存儲密鑰總數(shù)始終高于分布式Du-ECC。當(dāng)普通節(jié)點(diǎn)數(shù)目不足100時(shí),HECC存儲密鑰數(shù)高于集中式Du-ECC方案。當(dāng)節(jié)點(diǎn)數(shù)目超過100時(shí),HECC存儲密鑰數(shù)介于集中式Du-ECC和分布式Du-ECC之間。
3.2.1 節(jié)點(diǎn)剩余能量 我們采用圖1所示的網(wǎng)絡(luò)拓?fù)?,假設(shè)每個(gè)普通傳感器節(jié)點(diǎn)預(yù)分配了1.8*105mW的能量。Et=80mW,Er=30mW,空閑能量消耗為10mW。假設(shè)各節(jié)點(diǎn)每一小時(shí)進(jìn)行一次數(shù)據(jù)傳輸,只考慮數(shù)據(jù)傳輸?shù)哪芰肯?,采用太陽能收集技術(shù)為節(jié)點(diǎn)補(bǔ)充能量,太陽能電池板面積(sp)分別為2cm2、3cm2、4cm2,其收集效率為30mW/cm2。圖7揭示了節(jié)點(diǎn)D剩余能量與時(shí)間的關(guān)系。
由圖7可知,能量收集技術(shù)的引入增加了節(jié)點(diǎn)的剩余能量。若不使用能量收集技術(shù),則2000h后D節(jié)點(diǎn)將因失去能量而無法工作。能量收集技術(shù)的引入使得傳感器節(jié)點(diǎn)的能量不一定會減少,反而可能隨著時(shí)間增加,延長了網(wǎng)絡(luò)的生命期。
3.2.2 節(jié)點(diǎn)能量消耗速率 由于在無線傳感網(wǎng)中存在能量不均衡問題,“木桶效應(yīng)”大大減少了網(wǎng)絡(luò)的生命期。若不考慮能量收集,則圖1中A的消耗速率為420mW/h,然而C和D的消耗速率僅為90mW/h,這意味著C、D的生命期是A的4.7倍。為了減少中繼節(jié)點(diǎn)因轉(zhuǎn)發(fā)數(shù)據(jù)大量消耗自身能量,節(jié)點(diǎn)間以某種概率采用能量預(yù)支付直接傳輸合作模型。表1為節(jié)點(diǎn)能量消耗與能量傳輸效率的關(guān)系。
圖7 節(jié)點(diǎn)剩余能量隨時(shí)間的變化
表1 節(jié)點(diǎn)能量消耗速率與能量傳輸效率的關(guān)系
由表1可知,隨著能量傳輸效率的提高,中繼節(jié)點(diǎn)因轉(zhuǎn)發(fā)數(shù)據(jù)包而損失的能量逐漸降低。因此,能量平衡路由避免了節(jié)點(diǎn)的能量不均衡性,提高了通信鏈路的可靠性,相應(yīng)地提高了密鑰更新的成功率。由于A下一跳是簇頭節(jié)點(diǎn),而簇頭節(jié)點(diǎn)被認(rèn)為能量充足,因此A不需要采用數(shù)據(jù)傳輸合作。
與E-G等基于對稱加密算法的密鑰管理機(jī)制相比,Du-ECC有明顯的優(yōu)勢。各個(gè)傳感器節(jié)點(diǎn)之間的密鑰互不影響,捕獲某個(gè)節(jié)點(diǎn)不能對其他節(jié)點(diǎn)產(chǎn)生影響,因此能很好地抵御節(jié)點(diǎn)捕獲攻擊。然而其在安全方面存在一些缺陷。首先,基于最小生成樹的集中式路由會使網(wǎng)絡(luò)因?yàn)楣?jié)點(diǎn)能量耗盡而頻繁更新,在更新期間容易遭到非法用戶的干擾和入侵,HECC通過均衡節(jié)點(diǎn)能量提高了密鑰更新的成功率。其次,由于節(jié)點(diǎn)能量的增加,HECC提高了Du-ECC節(jié)點(diǎn)的抗能量攻擊(如DoS)能力。為了避免重放攻擊對網(wǎng)絡(luò)的影響,對傳輸?shù)男畔⒓由狭宋ㄒ坏男蛄刑枴R虼?,HECC提高了Du-ECC的安全性。
本文提出了一種基于能量合作的異構(gòu)傳感網(wǎng)密鑰管理機(jī)制。在能量收集型傳感器網(wǎng)絡(luò)中,節(jié)點(diǎn)采用能量合作技術(shù)平衡能量消耗,使用能量均衡型路由進(jìn)行數(shù)據(jù)傳輸。節(jié)點(diǎn)使用ECC對傳輸?shù)拿荑€加密,產(chǎn)生用于對稱加密的共享密鑰,然后使用對稱加密算法對傳輸?shù)臄?shù)據(jù)進(jìn)行加密。性能分析表明,該機(jī)制減少了密鑰存儲開銷、延長了網(wǎng)絡(luò)的生命期,并提高了網(wǎng)絡(luò)的安全性和密鑰更新的成功率。然而能量合作技術(shù)的引入帶來了新的安全問題,下一步可考慮提高能量合作型網(wǎng)絡(luò)的安全性。