黃文鋒
(廈門海洋職業(yè)技術學院 信息工程學院,福建 廈門 361006)
分簇式網(wǎng)絡包括:基站、簇頭、普通傳感器節(jié)點[1](以下簡稱節(jié)點).目前國內外已有許多基于分簇式WSN的密鑰管理方案,過程包括:系統(tǒng)初始化、密鑰生成、簇間密鑰管理、簇內密鑰管理、密鑰更新等,但針對移動場景下的分簇無線傳感器網(wǎng)絡提出專門的密鑰管理解決方案較少,筆者基于分簇無線傳感器網(wǎng)絡,提出移動場景下的密鑰管理方案[2].
筆者研究了近年相關資料,提出可以改進之處. 2022年吳萬青等提出了環(huán)形區(qū)域WSN密鑰管理方案,但節(jié)點封裝了多種數(shù)據(jù),簇間移動需要多次計算不同的密鑰,運算過于復雜[3]. 2021年李峰等提出移動場景下異構無線傳感器網(wǎng)絡密鑰管理方法,但方案中節(jié)點移動需要反復驗證,過程繁雜;方案中節(jié)點移動速度的計算增加了運算負載[4]. 2021年,F(xiàn)ang等提出了基于二項分布的輕量級信任管理方案和基于動態(tài)維度權重的多維安全分簇路由方案,但如果簇頭在網(wǎng)絡中被攻破,則簇內節(jié)點存在較大風險[5]. 2020年伍家玉等基于ECC等設計了一個適用于WSN與用戶之間的密鑰協(xié)商協(xié)議,但方案對節(jié)點公私鑰的獲取過程過于復雜[6]. 2020年徐震等提出的方案基于互斥基底系統(tǒng),但方案中節(jié)點直接向基站申請離簇增加了節(jié)點計算和通信成本;申請加入新簇的流程過于復雜[7]. 2020年Rehman等提出通過多項式管理簇間和簇內密鑰,但方案需頻繁地更新簇密鑰,增加了網(wǎng)絡的負擔,且在簇分發(fā)過程中沒有進行加密,增加了網(wǎng)絡的風險[8].
(1)基站是安全無法被攻破的,基站的計算、存儲、通信能力都是無限的;(2)WSN網(wǎng)絡分簇完成,網(wǎng)絡為雙向信道,節(jié)點可以正常通信;(3)WSN網(wǎng)絡完成密鑰協(xié)商,基站和各簇頭、相鄰簇頭、簇頭和簇內節(jié)點都有共享密鑰[9];(4)WSN網(wǎng)絡使用非對稱加密,即存在公鑰和私鑰,基站為所有節(jié)點預加載基站的公鑰[10].
節(jié)點在簇間移動分兩種:(1)主動離簇.節(jié)點主動申請離開當前簇并加入新簇.節(jié)點離開時會向當前簇申請離開,同時清楚即將加入的簇的相關信息,如位置、簇頭ID等信息.(2)被動離簇.節(jié)點可能由于不可抗力等因素,突然離開當前簇,并且不清楚即將加入的簇的相關信息,該情況下無法向舊簇頭申請離開,同樣無法確定即將加入的簇的相關信息.其中方案使用的符號及描述見表1.
表1 符號和描述
1.3.1 主動離簇
步驟1:申請離簇.節(jié)點n向舊簇頭A申請離簇,將身份信息和時間、地點、隨機數(shù)、申請加密后與消息驗證碼等發(fā)送給簇頭A[11].簇頭A收到信息后先驗證MAC碼是否正確,如果MAC碼正確,可確定消息的完整性及消息確實來自節(jié)點n而非偽造節(jié)點.簇頭A解密并驗證節(jié)點信息,信息正確則刪除簇頭A的簇內相關信息,更新簇內節(jié)點列表,同時將節(jié)點n離開的信息廣播通知簇內所有節(jié)點.
步驟2:申請加簇.節(jié)點n將身份信息和時間、地點、隨機數(shù)、申請加密后發(fā)送給簇頭B.此時簇頭B和節(jié)點n還未進行過密鑰協(xié)商,沒有共享密鑰,因此沒有采用消息驗證碼MAC方式發(fā)送.
步驟3:確認身份.簇頭B將節(jié)點發(fā)送的信息加上新的時間和隨機數(shù)加密后和消息驗證碼一起發(fā)送給基站.基站驗證MAC碼是否正確,然后解密兩次獲得節(jié)點n的ID信息、舊簇頭、公鑰、時間、地點、隨機數(shù)等相關信息.基站查詢節(jié)點n的相關信息,信息錯誤則發(fā)送錯誤信息通知簇頭B將節(jié)點n加入黑名單.信息正確則將確認信息加密后和消息驗證碼一起發(fā)送給簇頭B.同時,基站保存n的新簇信息、新地點信息.
步驟4:加簇與密鑰協(xié)商.簇頭B驗證MAC后解密并保存確認信息.然后向n發(fā)送同意入簇通知,n接收信息驗證并解密,確認加入B簇,與節(jié)點B進行密鑰協(xié)商,各個網(wǎng)絡的密鑰協(xié)商方式不同,在此就不具體描述,密鑰協(xié)商后節(jié)點n和簇頭B分別獲取共享密鑰Kn-B和KB-n.
步驟5:更新與廣播.簇頭B更新簇內節(jié)點列表,新增節(jié)點n的信息,同時將節(jié)點n加入的信息廣播通知簇內所有節(jié)點.
1.3.2 被動離簇
步驟1:廣播申請加簇.節(jié)點n由于某種原因突然離開舊簇后,無法向舊簇頭A發(fā)送消息,處于一個未加入任何簇的狀態(tài).此時節(jié)點n廣播自己的信息申請加入附近的簇,采用基站公鑰進行加密.
步驟2:確認身份.附近簇頭節(jié)點收到信息后將這些信息與自己的信息整合,加密后和消息驗證碼一起發(fā)送給基站.基站先驗證MAC碼是否正確,然后解密后獲得節(jié)點n的相關信息.基站查詢節(jié)點n的身份信息,身份錯誤則無動作.身份正確則進行下一步.基站可能同時收到多個簇頭發(fā)來的信息,基站對比節(jié)點位置和簇頭位置,選出適合節(jié)點n加入的簇頭B.基站將確認信息加密后和消息驗證碼一起發(fā)送給簇頭B.同時,基站保存n的新簇信息、新地點信息.其他未收到基站信息的簇頭無動作.
步驟3:加簇與密鑰協(xié)商.同主動離簇.
步驟4:簇頭B更新與廣播.同主動離簇.
步驟5:簇頭A更新與廣播.節(jié)點n離開A簇后,未能及時向簇頭A發(fā)送離開信息.簇頭A及簇內節(jié)點發(fā)現(xiàn)節(jié)點n離開有3種方式:(1)其他節(jié)點向節(jié)點n發(fā)送消息時未收到回復,向簇頭A報告;(2)簇頭A定期廣播更新密鑰發(fā)現(xiàn)節(jié)點n不在簇內;(3)基站收到簇頭B關于節(jié)點n的加簇信息后,發(fā)送信息通知簇頭A.簇頭A在確定節(jié)點n離開當前簇后,簇頭A更新簇內節(jié)點列表,同時將節(jié)點n離開的信息廣播通知簇內所有節(jié)點.
為了保證共享密鑰的新鮮性,也為了及時發(fā)現(xiàn)簇內節(jié)點的離開,簇頭可以定期進行密鑰更新.簇頭A生成更新因子KA’,計算KAn’= KAnKA’作為與節(jié)點的新共享密鑰.簇頭用KAn加密E(KAn,(KAn’‖TA))后發(fā)送給節(jié)點,節(jié)點解密并更新共享密鑰KAn’,更新后向簇頭回復確認信息[12].這個過程一方面保證了網(wǎng)絡的安全,另一方面也可以及時發(fā)現(xiàn)離簇節(jié)點.
文獻[4]與本方案的主動離簇類似,文獻[7]與本方案的被動離簇類似.文獻[7]中新簇頭B向原有簇頭A驗證節(jié)點身份,文獻[7]直接由基站驗證節(jié)點身份后通知簇頭B.不論簇頭B找A還是節(jié)點找基站,都存在需要多跳路由,流程也更加復雜,增加了計算和通信成本.
假設節(jié)點n在加入新簇過程中被攻擊者捕獲,攻擊者沒有節(jié)點n的私鑰SKn[13],無法解密出簇頭B發(fā)送給節(jié)點n的關于信息.進一步假設攻擊者通過捕獲節(jié)點n獲取了共享密鑰并與簇頭B通信,簇頭B首先驗證攻擊者的MAC信息,即可發(fā)現(xiàn)攻擊者的非法身份.因此,方案能抵抗捕獲攻擊.
情景1:攻擊者偽造成普通加簇節(jié)點.假設攻擊者偽造成節(jié)點n向簇頭B發(fā)送加簇申請,簇頭B通過MAC驗證可驗證出攻擊者的非法身份.即便攻擊者可以通過簇頭B的MAC驗證,簇頭B將攻擊者身份發(fā)送給基站進行驗證時,基站也可以驗證出攻擊者的非法身份.
情景2:攻擊者偽造成簇頭節(jié)點.假設攻擊者偽造簇頭B與節(jié)點n進行驗證,節(jié)點n通過MAC驗證可以驗出攻擊者的非法身份.即便攻擊者與節(jié)點建立通信并接收節(jié)點n 的加簇申請,攻擊者也需要向基站發(fā)送節(jié)點n的驗證信息,基站同樣可以驗證出攻擊者的非法身份.
因此,方案能抵抗節(jié)點偽造攻擊.
情景1:攻擊者復制多個副本向同一個新簇頭申請加簇.對應的新簇頭在接收到加簇申請后,需要驗證節(jié)點的時間、地點、隨機數(shù)等信息,如果檢測到同一個節(jié)點在同一時間在不同地點發(fā)送加簇申請,即可確定節(jié)點被捕獲并展開復制攻擊,簇頭可以將攻擊者加入黑名單.
情景2:攻擊者復制多個副本向不同新簇頭申請加簇.各簇頭在接收到節(jié)點入簇申請后,需要向基站發(fā)送節(jié)點的身份、位置、時間等信息申請驗證節(jié)點身份,如果基站同時收到多個ID的申請信息,并且這些節(jié)點的位置不同,即可確定節(jié)點被捕獲并展開復制攻擊,基站通知各簇頭將攻擊者加入黑名單.
因此,方案能抵抗節(jié)點復制攻擊.
假設攻擊者捕獲節(jié)點n并試圖展開女巫攻擊,由于節(jié)點只有一個唯一的身份ID信息,攻擊者無法利用一個節(jié)點創(chuàng)建出多個ID[14].即便攻擊者創(chuàng)造出眾多身份ID,每個ID需有對應的時間T、地點L、隨機數(shù)R等眾多參數(shù),攻擊者無法同時獲取如此多的關鍵參數(shù).因此,方案能抵抗女巫攻擊.
假設攻擊者捕獲節(jié)點n并重放之前的加簇信息,簇頭B在驗證節(jié)點身份時會發(fā)現(xiàn)此節(jié)點ID已經(jīng)入簇,再次發(fā)送的加簇信息即為重放攻擊,簇頭B可以將其加入黑名單.即便簇頭B不確定此節(jié)點是否展開重放攻擊,也可以通過驗證此ID所對應的時間、地點、隨機數(shù)等參數(shù)確認.因此,方案能抵抗重放攻擊.
假設攻擊者反復高頻的發(fā)出攻擊性的重復加簇申請或大流量無用數(shù)據(jù),簇頭B在第二次驗證其身份ID時可檢出其非法身份,將其加入黑名單,從而拒絕其后續(xù)的加簇申請或者無用數(shù)據(jù).因此,方案能抵抗Dos攻擊.
WSN中用連通性來表示傳感器節(jié)點與節(jié)點之間建立通信密鑰的概率.WSN常用的E-G、q-composite方案需要預存儲很多周邊節(jié)點的密鑰,如果密鑰數(shù)量不夠,連通率就會降低.本方案中節(jié)點n與s通信有 兩 種 方 式,一 是 通 過 簇 頭 轉 發(fā):WSn→CHB:{IDn,E(Kn-B,“message s”)};CHB→WSs:{IDs,E(KB-s,“message s”)}.二是通過簇頭進行密鑰協(xié)商:WSn→CHB:{IDn,E(Kn-B,“connect s”)};簇頭生成協(xié)商密鑰Kn-s和Ks-n,CHB→WSn:{IDn,E(KB-n,Kn-s)},CHB→WSs:{IDs,E(KB-s,Ks-n)};節(jié)點n與s通信,WSn→WSs:{IDn,E(Kn-s,“message s”)}.第一種方式由簇頭中轉,節(jié)點只需與簇頭通信,不需要節(jié)點之間直接連接,節(jié)點在加簇時都必須與簇頭密鑰協(xié)商,簇頭與節(jié)點可以正常通信,因此節(jié)點n和s可以實現(xiàn)百分百連通.第二種方式所需密鑰Kn-s、Ks-n通過簇頭生成后發(fā)送給n和s,節(jié)點無需預存密鑰,不受密鑰池和節(jié)點預存密鑰的限制,可以實現(xiàn)百分百連通.表2是各種相關方案連通率對比,可看出,本方案的連通率較高.
表2 密鑰管理方案連通率對比
性能分析主要從通信成本、存儲成本、計算成本3個方面進行計算.
假設網(wǎng)絡有S個節(jié)點,C個簇,簇內P個節(jié)點.則簇頭數(shù)為C,普通節(jié)點數(shù)為S-C,每個簇內普通節(jié)點數(shù)為P-1個.性能分析主要對比文獻[4]和文獻[7],因此,部署范圍和部署方式與文獻[7]一樣,在300 m×300 m 的網(wǎng)絡區(qū)域內隨機部署節(jié)點,網(wǎng)絡節(jié)點分配情況選用文獻[4]的節(jié)點數(shù)據(jù),見表3.
表3 網(wǎng)絡節(jié)點分配情況
3.2.1 通信成本
通信成本主要考慮節(jié)點發(fā)送和接收數(shù)據(jù)的能量消耗,默認基站的能量是無限的.假設發(fā)送1位數(shù)據(jù)的通信成本為ETSE,接收1位數(shù)據(jù)的成本為ETRE,節(jié)點ID長度LTID、密文長度LTE、哈希或MAC認證碼長度LTH.
(1)主動離簇
節(jié)點與簇頭A:節(jié)點發(fā)送LTID+LTE+LTH;簇頭A接收LTID+LTE+LTH.
節(jié)點與簇頭B:節(jié)點發(fā)送LTID+LTE,接收2LTID+LTE+LTH;簇頭B發(fā)送2LTID+LTE+LTH,接收LTID+LTE[17].
簇頭B與基站:簇頭B發(fā)送LTID+LTE+LTH,接收2LTID+LTE+LTH;默認基站的能量是無限的,不考慮其通信成本.
發(fā)送成本ETS=(5LTID+4LTE+3LTH)×ETSE;接收成本ETR=(6LTID+4LTE+3LTH)×ETRE.
通信成本合計:ET=ETS+ETR.
文獻[4]過程和本部分討論的內容相似,因此選取文獻[4]進行主動離簇的對比.文獻[4]中,發(fā)送成本ETS=(7LTID+5LTE)×ETSE,接收成本ETR=(6LTID+5LTE)×ETRE,通信成本合計:ET=ETS+ETR.
筆者參考文獻[18]相關能量參數(shù)進行仿真,圖1通過對比了本方案與文獻[4]的通信成本.由圖1可知,本方案的通信成本更低.隨著簇頭和節(jié)點數(shù)不斷增加,方案的通信成本差距開始拉開,本方案的通信成本優(yōu)勢明顯.
圖1 本方案與文獻[4]的通信成本對比
(2)被動離簇
分析方法同上,此處不再贅述.
文獻[7]過程和本部分討論的內容相似,因此選取文獻[7]進行被動離簇的對比.通信成本對比見圖2.由圖2可知,本方案的通信成本優(yōu)勢明顯.
圖2 本方案與文獻[7]的通信成本對比
3.2.2 存儲成本
存儲成本主要考慮節(jié)點存儲數(shù)據(jù)的數(shù)據(jù)位數(shù),方案中的存儲成本主要考慮節(jié)點ID和密鑰的存儲成本,默認基站的能量是無限的.假設方案中的各種消息長度如下:設備ID長度為LSID,密鑰長度為LSE.
(1)主動離簇
節(jié)點:存儲IDn‖IDB共兩個身份信息,PKn‖SKn‖PKBS‖Kn-B共四個密鑰信息,所以單個節(jié)點的存儲成本為2LSID+4LSE,所有節(jié)點的存儲成本ESSN=(2LSID+4LSE)×(S-C).
簇頭A:存儲IDn‖IDA,考慮到其他節(jié)點可以加入簇頭A所在簇,所以統(tǒng)一采用新簇頭B的存儲成本作為簇頭的平均存儲成本來計算.
簇頭B:方案通過基站驗證節(jié)點身份,因此,無需保存其他簇頭ID信息,存儲IDn‖IDB共兩個身份信息,PKB‖SKB‖KB-BS‖Kn-B共四個密鑰信息,另外簇頭需要保存簇內所有節(jié)點的ID列表,單個簇頭的存儲成本為(2LSID+4LSE+(P-1)×LSID),所有簇頭的存儲成本ESCH=(2LSID+4LSE+(P-1)×LSID)×C.
存儲成本合計:ES=ESSN+ESCH.
文獻[4]中,所有節(jié)點的存儲成本ESSN=(2LSID+4LSE)×(S-C),所有簇頭的存儲成本ESCH=(3LSID+5LSE+(P-1)×LSID)×C.存儲成本合計:ES=ESSN+ESCH.
網(wǎng)絡節(jié)點分配同通信成本.兩個方案的節(jié)點存儲成本相同,不做對比,主要對比簇頭的存儲成本,仿真結果見圖3.由圖3可知,本方案的存儲成本更低.
圖3 本方案與文獻[4]的簇頭存儲成本對比
(2)被動離簇
分析方法同上,此處不再贅述.
圖4對比了本方案與文獻[7]的簇頭存儲成本.由圖4可知,本方案的存儲成本更低.
圖4 本方案與文獻[7]的簇頭存儲成本對比
3.2.3 計算成本
計算成本主要考慮節(jié)點和簇頭加解密和哈希運算所需的成本,默認基站的能量是無限的.本方案未討論具體的密鑰協(xié)商過程,因此不涉及點乘、點加等計算成本,僅考慮加解密和哈希運算的成本.假設加密1次的計算成本是EE,解密1次的計算成本是ED,哈希運算1次的計算成本是EH.
(1)主動離簇
節(jié)點:加密2次,解密1次,哈希2次.
簇頭A:解密1次,哈希1次.
簇頭B:加密2次,解密1次,哈希3次.
節(jié)點計算成本ECSN=2EE+ED+2EH,簇頭計算成本ECCH=2EE+2ED+4EH[19].
計算成本合計:EC= ECSN+ECCH=4EE+3ED+6EH.
文獻[4]中,所有節(jié)點的計算成本為ECSN=2EE+ED,簇頭計算成本為ECCH=3EE+3ED.計算成本合計:EC=ECSN+ECCH=5EE+4ED.文獻[4]沒有使用哈希函數(shù),雖然節(jié)省了部分計算成本,但是不能進行身份和完整性驗證.
筆者參考文獻[20]基于PCB庫和GMP庫相關參數(shù)進行仿真[20],計算成本對比見圖5.圖5體現(xiàn)的是極限情況下所有節(jié)點申請離簇的總耗時情況,因此總時長較大.從圖中可以看出,本方案的計算成本存在一定優(yōu)勢.
圖5 本方案與文獻[4]的計算成本對比
(2)被動離簇
分析方法同上,此處不再贅述.
圖6對比了本方案與文獻[7]的計算成本.由圖6可知,本方案的計算成本具有明顯優(yōu)勢.
圖6 本方案與文獻[7]的計算成本對比
筆者提出了一種移動場景下的分簇無線傳感器網(wǎng)絡密鑰管理方案,詳細描述了主動離簇和被動離簇兩種狀態(tài)下的密鑰管理過程[21].方案采用非對稱加解密、哈希變換、MAC驗證等技術,能有效抵抗各種常見攻擊,并提升方案的性能.非形式化分析驗證了方案的安全性,量化分析通信、存儲和計算成本,結果表明方案的性能較其他方案有明顯提升[22].未來工作中,將繼續(xù)完善密鑰協(xié)商、密鑰更新等相關內容.