(杭州電子科技大學通信工程學院,浙江 杭州310018)
無線傳感器網(wǎng)絡是部署在特定區(qū)域的傳感器節(jié)點自組織構成的無線網(wǎng)絡[1]。在無線傳感器網(wǎng)絡中,組播是比單播更有效的通信方法,組播能夠在很大程度上節(jié)省帶寬和能量。在一般情況下,由于傳輸是發(fā)生在多個網(wǎng)絡渠道上的,組播遠比單播更容易受到攻擊。因此,如何保證無線傳感器網(wǎng)絡中組通信的安全成為了一個重要問題[2]。為了保證組通信安全,文獻[3-4]提出了兩個經(jīng)典的組密鑰管理方案。這兩個方案都采用本地協(xié)作的方法,節(jié)點預存組密鑰分量信息,通過與鄰居節(jié)點的協(xié)作來實現(xiàn)組密鑰的更新,從而保證組通信的安全,但這兩個方案的安全性并不理想,而且存儲開銷和通信開銷也非常大。文獻[5]提出了一種基于多項式的組密鑰管理方案,該方案利用節(jié)點存儲的多項式和匯聚節(jié)點發(fā)送的節(jié)點標識符集合來實現(xiàn)組密鑰的更新,減小了網(wǎng)絡的通信開銷,但存在安全性太低的問題。文獻[6]提出了一種基于本地協(xié)作的改進方案,該方案引入基站參與組密鑰分量更新,提高了組密鑰更新的安全性,但仍存在通信開銷過大的問題。本文在借鑒本地協(xié)作方法的基礎上,提出了一種基于簇協(xié)作的組密鑰管理方案,本方案不需要基站參與更新,采用簇協(xié)作的方式進行組密鑰更新,避免了簇內(nèi)節(jié)點多余地發(fā)送信息。性能分析和仿真結果表明,相比于現(xiàn)有采用本地協(xié)作的方案,本方案在保證良好安全性的同時,減小了存儲開銷和通信開銷。
1)以組為單位將節(jié)點部署到特定區(qū)域后,節(jié)點根據(jù)文獻[7]中的分簇算法生成多個簇,同時每簇生成自身在組內(nèi)的編號;
2)合法節(jié)點能夠及時檢測出妥協(xié)節(jié)點以及新加入節(jié)點。
假設每組節(jié)點總數(shù)為N。在節(jié)點部署前,基站為每個節(jié)點Ui(i=1,2,…,N)預置:
1)節(jié)點的ID;
2)偽隨機數(shù)生成器(Pseudo-random Number Generator,PRNG);
3)初始組密鑰K0;
4)哈希函數(shù)H1(x)和H2(x);
5)初始組密鑰分量GK0。GK0的生成操作如下:在節(jié)點部署前,基站在有限域Fq上隨機選取t+1個隨機數(shù)a0,0,a0,1,…,a0,t,用這t+1個隨機數(shù)構建t 階多項式根據(jù)門限密鑰共享機制[8],任意節(jié)點Ui的初始組密鑰分量為GK0=f0(IDi)。
節(jié)點部署后,每個簇的簇內(nèi)合法節(jié)點(簇內(nèi)未被妥協(xié)的節(jié)點)將各自的ID 單播發(fā)送給簇頭節(jié)點,簇頭保存各自簇內(nèi)合法節(jié)點的ID。當簇頭因被妥協(xié)或能量消耗等特殊原因退出組通信,組內(nèi)所有合法節(jié)點都會重新選舉產(chǎn)生新簇頭,接著簇內(nèi)合法節(jié)點將自身的ID 單播發(fā)送給新簇頭,選舉前的合法簇頭會刪除自身存儲的簇內(nèi)合法節(jié)點的ID,最后新簇頭發(fā)起簇頭退出的組密鑰更新,其更新操作與下面描述的簇內(nèi)合法節(jié)點被妥協(xié)進行的組密鑰更新相同。本文中新加入節(jié)點由基站預置最新階段的消息。第1輪更新表示為節(jié)點部署后的第一次組密鑰更新,第j 階段表示為第j 輪到第j+1 輪更新之間的時間段。第j 輪組密鑰更新操作如下:
1)當某一簇頭收到新加入節(jié)點的組通信請求消息和它的ID,或者當某一簇頭收到簇內(nèi)合法節(jié)點檢測到的妥協(xié)節(jié)點的ID,該簇頭需要聯(lián)合幾個鄰居簇頭對消息進行核實。如屬實,該簇頭生成組密鑰更新消息,并將其發(fā)送給組內(nèi)其他簇頭,接著廣播組密鑰分量請求消息給其簇內(nèi)合法節(jié)點;
2)簇內(nèi)合法節(jié)點收到消息后,將自身的組密鑰分量單播給簇頭。簇頭至少得到t個組密鑰分量后,加上自身的組密鑰分量,采用拉格朗日插值定理得到第j 階段的組密鑰多項式fj-1(x),并計算出新的組密鑰Kj=H1(fj-1(0));
3)組內(nèi)其他簇頭收到更新消息后,也各自廣播組密鑰分量請求消息給其簇內(nèi)合法節(jié)點,后面的操作如步驟2所述;
為了保證組通信的安全性,本方案采用一個更新多項式來對組密鑰分量進行更新。更新多項式中系數(shù)的生成如圖1所示。組密鑰分量更新操作如下:
1)簇頭得到第j 階段的fj-1(0)之后,將fj-1(0)作為隨機種子代入PRNG 中得到aj,0,再將aj,0作為隨機種子代入PRNG 得到aj,1,以此類推得到t+1個偽隨機數(shù)aj,0,aj,1,…,aj,t;
2)簇頭將每個aj,i代入哈希函數(shù)H2(x)計算得到bj,i,用這t+1個數(shù)構造t 階更新多項式gj(x)=并用組密鑰Kj加密更新多項式,接著將其廣播發(fā)送給簇內(nèi)合法節(jié)點,簇內(nèi)任意合法節(jié)點Ui解密后代入計算就可將組密鑰分量更新為GKj=GKj-1+gj(IDi),簇頭也計算自身的組密鑰分量GKj,隨之刪除更新多項式gj(x)。
圖1 更新多項式系數(shù)的生成圖
在每次組密鑰更新之后,每個簇頭都會發(fā)起組密鑰分量的更新,從而及時更新組內(nèi)合法節(jié)點的組密鑰分量,這保證了每個階段都具有不同的組密鑰多項式fj-1(x)。由于簇頭節(jié)點數(shù)遠遠小于簇內(nèi)合法節(jié)點數(shù),其被妥協(xié)的概率非常小,如果簇頭節(jié)點被妥協(xié),組內(nèi)所有合法節(jié)點根據(jù)分簇算法重新生成新簇頭,分簇前的合法簇頭會刪除自身存儲的簇內(nèi)合法節(jié)點的ID,新簇頭存儲的簇內(nèi)合法節(jié)點ID 集合與妥協(xié)簇頭存儲的ID 集合肯定不會相同,因此新階段組密鑰更新時的撤銷多項式無法被妥協(xié)簇頭破解,從而保證組密鑰更新的繼續(xù)進行。但如果攻擊者在同一階段妥協(xié)的節(jié)點數(shù)超過t個,那么攻擊者可以計算得到當前階段的組密鑰多項式fj-1(x),并可以計算出當前階段的組密鑰Kj和此階段之后的組密鑰多項式,從而攻破網(wǎng)絡。因此,只要攻擊者在同一階段妥協(xié)的節(jié)點數(shù)少于t+1個,本方案利用撤銷多項式使得妥協(xié)節(jié)點無法得到新的組密鑰,并更新合法節(jié)點的組密鑰分量,使得組密鑰多項式得到更新,從而保證了組通信的安全性。
本文方案中節(jié)點ID、簇編號、哈希函數(shù)和PRNG 占用空間比較小,其信息長度可以忽略不計,其他信息的長度均為L bits,本文方案中大O表示復雜度。簇頭和簇內(nèi)合法節(jié)點都需存儲節(jié)點自身的ID、簇編號、哈希函數(shù)、PRNG、組密鑰分量GKj和組密鑰Kj,除此之外簇頭還需存儲簇內(nèi)所有合法節(jié)點的ID,但由于ID的信息長度可以忽略不計,因此簇頭和簇內(nèi)合法節(jié)點的存儲開銷都為O(L)。組密鑰更新時,發(fā)起組密鑰更新的簇頭需要將組密鑰更新消息發(fā)送給組內(nèi)其他簇頭,組內(nèi)每個簇頭都需要廣播一條組密鑰分量請求消息,每個簇頭至少需要t個簇內(nèi)合法節(jié)點向其發(fā)送組密鑰分量,每個簇頭需要將各自的撤銷多項式廣播給簇內(nèi)合法節(jié)點,并將加密后的更新多項式發(fā)送給簇內(nèi)合法節(jié)點,方案總體的通信開銷為O(NL)。組密鑰更新時,簇頭需進行拉格朗日插值、計算組密鑰、構建撤銷多項式、生成和加密更新多項式、計算新的組密鑰分量,當中拉格朗日插值的計算開銷為O(t3),遠大于其他操作的計算開銷,因此簇頭的計算開銷約為O(t3);簇內(nèi)合法節(jié)點需將ID 代入撤銷多項式計算組密鑰、解密更新多項式和計算新的組密鑰分量,當中撤銷多項式的代入計算的計算開銷為O(d2)(d為簇內(nèi)合法節(jié)點總數(shù)),遠大于其他操作的計算開銷,因此簇內(nèi)合法節(jié)點的計算開銷約為O(d2)。
本文方案(簡稱CCBG方案)和文獻[3]中的GKD方案、文獻[4]中的B-PCGR方案、文獻[6]中的DGKM方案的性能比較如表1所示。4種方案的通信開銷仿真圖如圖2所示。表1中,L為信息長度,n為平均鄰居節(jié)點數(shù),r為組密鑰會話次數(shù),d為簇內(nèi)合法節(jié)點總數(shù),s為B-PCGR方案的系統(tǒng)參數(shù)。
表1 方案性能比較
圖2的仿真軟件為Matlab2010a,仿真區(qū)域設定為400 m×400 m,節(jié)點均勻分布在此區(qū)域內(nèi)。節(jié)點的通信半徑為50 m,組內(nèi)節(jié)點總數(shù)N 取500 3 000,t=n/3。
圖2 通信開銷仿真圖
4種方案對比結果分析如下:
1)GKD方案需要節(jié)點保存每次會話的隱藏多項式分量和一個加密多項式分量,B-PCGR方案中節(jié)點除了保存自身的t 階多項式之外,還需保存所有鄰居節(jié)點的t 階加密多項式分量,DGKM方案中節(jié)點需要保存節(jié)點標識符、組密鑰分量和組密鑰,CCBG方案中節(jié)點主要需要保存組密鑰分量和組密鑰,其他存儲信息的信息長度可以忽略不計,因此CCBG方案的存儲開銷略小于DGKM方案,遠小于其他2個方案;
2)每次密鑰更新,GKD方案中每個節(jié)點都需要t個鄰居節(jié)點向其發(fā)送自身的密鑰預置信息,B-PCGR方案中每個節(jié)點都需向所有鄰居節(jié)點發(fā)送加密多項式分量,DGKM方案中每個節(jié)點都需t個鄰居節(jié)點向其發(fā)送自身的組密鑰分量,而CCBG方案中每個簇頭至少需要t個簇內(nèi)合法節(jié)點向其發(fā)送組密鑰分量信息,每個簇頭負責廣播撤銷多項式和t 階更新多項式,理論上的通信開銷要小于其他3個方案,仿真結果也表明隨著組內(nèi)節(jié)點規(guī)模的增大,CCBG方案在通信開銷方面的優(yōu)勢越來越大;
3)在密鑰更新階段,CCBG方案中簇頭需要進行一次拉格朗日插值,簇內(nèi)合法節(jié)點需要進行一次撤銷多項式的代入計算,其他3個方案都需要節(jié)點進行一次拉格朗日插值,4個方案總體的計算開銷相差不大,而且4個方案的密鑰計算時間很短,并不會影響到組密鑰更新的實時性;
4)B-PCGR方案中攻擊者攻破網(wǎng)絡只需獲取t+1個不同階段的組密鑰或妥協(xié)一個節(jié)點及其s+1個鄰居節(jié)點,GKD方案中攻擊者只要妥協(xié)節(jié)點數(shù)超過2t個就可攻破網(wǎng)絡,DGKM方案中攻擊者只要在連續(xù)的兩個階段內(nèi)妥協(xié)節(jié)點數(shù)超過t+2個就可攻破網(wǎng)絡,與其他3個方案相比,CCBG方案安全性相對較高。
本文采用簇協(xié)作的方式實現(xiàn)組密鑰的更新,并使用偽隨機數(shù)生成器和哈希函數(shù)產(chǎn)生更新多項式,從而實現(xiàn)組內(nèi)所有合法節(jié)點組密鑰分量的及時更新。與其他基于本地協(xié)作的方案相比,本文提出的方案在保證安全性的同時,減小了通信開銷與存儲開銷。然而,本文方案還是存在一些可以改進的地方,下一步的工作是如何在保證方案開銷小的同時,進一步提高方案安全性。
[1]Akyildiy I F,Su W,Sankarasubramaniam Y,et al.Wireless sensor networks:a survey[J].Computer Networks,2002,38(4):393-422.
[2]Wu F,Pai H,Zhu X,et al.Am adaptable and scalable group access control scheme for managing wireless sensor networks[J].Telematics and Informatics,2013,30(2):144-157.
[3]Chadha A,Yonghe L,Das S K.Group key distribution via local collaboration in wireless sensor networks[C].Piscataway:Institute of Electrical and Electronics Engineers Computer Society,2005:46-54.
[4]Zhang W,Zhu S,Cao G.Predistribution and local collaboration-based group rekeying for wireless sensor networks[J].Ad Hoc Networks,2009,7(6):1 229-1 242.
[5]Fan X,Gong G.LPKM:A Lightweight Polynomial-Based Key Management Protocol for Distributed Wireless Sensor Networks[C].Berlin:Springer Verlag,2012:180-195.
[6]鄧淑華,趙澤茂.WSN的一種分布式組密鑰管理方案[J].信息安全與技術,2012,3(2),18-20.
[7]樊志平,金政哲,謝冬青.基于能量效率的無線傳感網(wǎng)絡分簇算法[J].小型微型計算機系統(tǒng),2013,34(3):535-539.
[8]Shamir A.How to share a secret[J].Communications of the Association for Computing Machinery,1979,22(11):612-613.