嚴(yán) 星
(新疆財(cái)經(jīng)大學(xué) 信息管理學(xué)院,新疆 烏魯木齊 830012)
由于電池電量、存儲(chǔ)空間、數(shù)據(jù)速率和帶寬等限制,有必須對(duì)無線傳感器網(wǎng)絡(luò)中資源受限的節(jié)點(diǎn)有效利用,從而提高無線傳感器網(wǎng)絡(luò)的整體性能[1]。此外,無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)易受物理篡改及其它遠(yuǎn)程攻擊[2,3],所以安全高效的網(wǎng)絡(luò)協(xié)議是無線傳感器網(wǎng)絡(luò)的關(guān)鍵組成部分。
近年來,許多研究人員對(duì)無線傳感器網(wǎng)絡(luò)協(xié)議的安全性均進(jìn)行了研究。文獻(xiàn)[4]提出的低功耗自適應(yīng)集簇分層型協(xié)議(low energy adaptive clustering hierarchical pro-tocol, LEACH)是一種開創(chuàng)性的協(xié)議,該協(xié)議將整個(gè)傳感器場劃分為較小的地理區(qū)域——簇,但該協(xié)議采用概率性選擇簇頭的方法存在潛在風(fēng)險(xiǎn),即在后續(xù)輪次的簇頭選舉中一些低能量的節(jié)點(diǎn)有很大可能會(huì)被選舉為簇頭。文獻(xiàn)[5]提出一種sec-LEACH協(xié)議,該協(xié)議先使用隨機(jī)密鑰預(yù)分配方法生成密鑰池,然后向每個(gè)節(jié)點(diǎn)分配這些密鑰的子集,同時(shí)結(jié)合分簇路由協(xié)議以及數(shù)據(jù)匯聚協(xié)議,提高了基于簇的分層式無線傳感器網(wǎng)絡(luò)協(xié)議的安全性和效率。文獻(xiàn)[6]提出一種基于LEACH協(xié)議的改進(jìn)簇間多跳路由協(xié)議(imp-LEACH),該協(xié)議通過引入能量因子和距離因子來修正LEACH協(xié)議的閾值函數(shù),以在簇頭之間形成一個(gè)優(yōu)化路徑。
所給協(xié)議也是一種LEACH協(xié)議,是一種基于有效負(fù)載握手的雙向身份驗(yàn)證協(xié)議(ah-LEACH),使用了集中式基于簇的分層無線傳感器網(wǎng)絡(luò)。通過選舉出最優(yōu)百分比的簇頭,通過最小化節(jié)點(diǎn)的能量消耗實(shí)現(xiàn)網(wǎng)絡(luò)負(fù)載平衡。每個(gè)被選舉出的簇頭使用4次握手消息,其中握手消息使用高級(jí)加密標(biāo)準(zhǔn)(AES)進(jìn)行加密。所給協(xié)議與現(xiàn)有經(jīng)典協(xié)議相比,在安全性、抵御各種攻擊、握手持續(xù)時(shí)間等方面較優(yōu)。
采用的網(wǎng)絡(luò)模型由隨機(jī)部署的異構(gòu)傳感器節(jié)點(diǎn)[7]組成。網(wǎng)絡(luò)中共有100個(gè)普通節(jié)點(diǎn)和5個(gè)高能量節(jié)點(diǎn)。為減低操作成本,每個(gè)普通節(jié)點(diǎn)的初始能量為1 J,每個(gè)高能量節(jié)點(diǎn)的初始能量為5 J。所有節(jié)點(diǎn)在一個(gè)100m×100m的地理區(qū)域中。
在網(wǎng)絡(luò)部署后,向每個(gè)普通節(jié)點(diǎn)分配一個(gè)令牌和一個(gè)預(yù)共享密鑰λi。 令牌被用于基站和簇頭之間提名包和確認(rèn)消息的安全交換,而λi用于網(wǎng)絡(luò)內(nèi)鄰近節(jié)點(diǎn)與其可能簇頭之間的雙向身份驗(yàn)證。
起始時(shí),每個(gè)普通節(jié)點(diǎn)i創(chuàng)建一個(gè)控制包并將其發(fā)送到距離最近的高能量節(jié)點(diǎn)。每個(gè)普通節(jié)點(diǎn)i創(chuàng)建一個(gè)控制包并將其發(fā)送到距離最近的高能量節(jié)點(diǎn)。該控制包中包含節(jié)點(diǎn)i的剩余能量Ei以及標(biāo)識(shí)IDi信息。通過下式計(jì)算出距離節(jié)點(diǎn)i最近的高能量節(jié)點(diǎn)的位置
(1)
每個(gè)高能量節(jié)點(diǎn)在其鄰近節(jié)點(diǎn)中收集這些數(shù)據(jù)包,并檢索數(shù)據(jù)包中的Ei和IDi, 將單個(gè)包含了這些數(shù)值的控制包向一個(gè)基站廣播。隨后,高能量節(jié)點(diǎn)進(jìn)入睡眠模式,并將在下一輪開始時(shí)喚醒,啟動(dòng)上文所述的任務(wù)。在接收后,基站從每個(gè)控制包中對(duì)Ei和IDi進(jìn)行檢索。計(jì)算平均能量閾值
(2)

對(duì)于總數(shù)為N個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò),所給ah-LEACH協(xié)議的kbest為5%。由于簇頭的能量會(huì)由于資源密集型的任務(wù)迅速耗盡,所以若kbest的數(shù)值過小,將會(huì)使得基于簇的分層式網(wǎng)絡(luò)的性能下降,若kbest的數(shù)值過大,則將會(huì)因較低的數(shù)據(jù)聚合率和數(shù)據(jù)融合率而造成基于簇的分層式網(wǎng)絡(luò)效率較低[8]。
在每個(gè)輪次中,基站向當(dāng)選的簇頭廣播候選包。候選包主要包括簇頭的標(biāo)識(shí)IDcls和鄰近節(jié)點(diǎn)的標(biāo)識(shí)IDNB, 它們均在候選包的有效負(fù)載內(nèi)傳輸。為保證IDcls和IDNB的傳輸安全性,每個(gè)候選包的報(bào)頭中均有一個(gè)16位的令牌。基站生成一個(gè)與當(dāng)選簇頭擁有的令牌相似的令牌,即對(duì)每個(gè)簇頭生成一個(gè)令牌。接收后,每個(gè)簇頭(用S表示)檢查候選包中附加的令牌。若該令牌與簇頭擁有的令牌相匹配,則簇頭檢索其鄰近節(jié)點(diǎn)的附加標(biāo)識(shí)IDadd。 每個(gè)簇頭必須確認(rèn)收到了一個(gè)候選包。簇頭創(chuàng)建一個(gè)確認(rèn)消息(ACK),然后將其令牌附加到ACK上發(fā)送到基站。攻擊者可能攔截一個(gè)或多個(gè)候選包,但其無法重新生成檢索附加標(biāo)識(shí)所需的令牌。
在成功接收到廣播消息后,每個(gè)鄰近節(jié)點(diǎn)就發(fā)起簇的形成。所給ah-LEACH協(xié)議采用128位的AES加密算法完成身份驗(yàn)證。這個(gè)加密模式要求的資源較少,對(duì)于節(jié)點(diǎn)生成的數(shù)據(jù)極為有利,而且能夠讓節(jié)點(diǎn)在受到攻擊前有足夠的時(shí)間對(duì)數(shù)據(jù)進(jìn)行卸載,缺點(diǎn)是需要復(fù)雜的硬件和軟件平臺(tái)。
為滿足上述要求,所給協(xié)議使用基于有效負(fù)載的輕量級(jí)雙向身份驗(yàn)證技術(shù),實(shí)現(xiàn)在每條信息的有效負(fù)載內(nèi)進(jìn)行身份驗(yàn)證。如圖1所示,每個(gè)鄰近節(jié)點(diǎn)與一個(gè)服務(wù)器節(jié)點(diǎn)交換多個(gè)握手信息。在4條超輕量級(jí)的握手消息中完成身份驗(yàn)證。一旦得到認(rèn)證,每個(gè)鄰近節(jié)點(diǎn)被允許發(fā)送數(shù)據(jù)到相應(yīng)的簇頭。通過以下4個(gè)階段完成身份驗(yàn)證:①會(huì)話發(fā)起;②服務(wù)器節(jié)點(diǎn)質(zhì)詢;③客戶端節(jié)點(diǎn)響應(yīng)和質(zhì)詢;④服務(wù)器節(jié)點(diǎn)響應(yīng)。
在會(huì)話發(fā)起階段,每個(gè)鄰近節(jié)點(diǎn)i創(chuàng)建出一個(gè)包含了IDi和IDs的加入請(qǐng)求消息。IDi表示源節(jié)點(diǎn)的標(biāo)識(shí),IDs為簇頭S的目標(biāo)節(jié)點(diǎn)標(biāo)識(shí)。源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的標(biāo)識(shí)均為8位。無論是合法節(jié)點(diǎn)還是惡意節(jié)點(diǎn),每個(gè)鄰近節(jié)點(diǎn)最多可以與服務(wù)器節(jié)點(diǎn)協(xié)商4次會(huì)話發(fā)起請(qǐng)求。IDi在有效負(fù)載內(nèi)傳輸,IDs在每個(gè)加入請(qǐng)求消息的報(bào)頭內(nèi)傳輸。有效負(fù)載之后是一個(gè)可選的幀校驗(yàn)序列[9](frame check sequence, FCS),作為尾部附加,用于錯(cuò)誤檢測和校正。

圖1 所給協(xié)議的雙向身份驗(yàn)證
在服務(wù)器質(zhì)詢階段,每個(gè)服務(wù)器節(jié)點(diǎn)在接收到的加入請(qǐng)求消息的報(bào)頭中檢索IDs,在該消息的有效負(fù)載中檢索IDi。 若接收到的IDs與服務(wù)器節(jié)點(diǎn)的標(biāo)識(shí)相匹配,則表明這個(gè)加入請(qǐng)求消息正是傳送給該服務(wù)器節(jié)點(diǎn)的。若找不到匹配,則加入請(qǐng)求消息將被丟棄。為了進(jìn)行會(huì)話協(xié)商,IDi必須與提供給該服務(wù)器節(jié)點(diǎn)的標(biāo)識(shí)池內(nèi)的一個(gè)標(biāo)識(shí)相匹配,而只有在IDi∈IDadd的情況下,才會(huì)出現(xiàn)匹配。每個(gè)服務(wù)器節(jié)點(diǎn)從有效負(fù)載中檢索IDi, 并搜索一個(gè)匹配的預(yù)共享密鑰λi。 為了身份驗(yàn)證的目的,在IDadd內(nèi)的每個(gè)標(biāo)識(shí)IDi都與一個(gè)λi相關(guān)聯(lián)。若發(fā)現(xiàn)匹配,服務(wù)器節(jié)點(diǎn)將使用AES算法,發(fā)送加密后的有效負(fù)載作為回應(yīng)。為創(chuàng)建一條質(zhì)詢消息,服務(wù)器節(jié)點(diǎn)創(chuàng)建一個(gè)128位的偽隨機(jī)臨時(shí)數(shù)ηserve和一個(gè)128位的潛在公共會(huì)話密鑰μkey。 臨時(shí)數(shù)nonce是在整個(gè)加密通信過程中僅被客戶端節(jié)點(diǎn)或服務(wù)器節(jié)點(diǎn)使用一次的一個(gè)臨時(shí)數(shù)字。使用μkey和ηserve生成一個(gè)加密的有效負(fù)載。首先,使用在λi和μkey上執(zhí)行異或運(yùn)算,如式(3)所示
ψsyn=λi⊕μkey
(3)
然后,128位的ψsyn被附加于ηserve, 并采用λi加密,如式(4)所示,生成一個(gè)256位的有效負(fù)載。該有效負(fù)載為γser-load, 被作為質(zhì)詢發(fā)送到客戶端節(jié)點(diǎn)
γser-load={λi,(ψsyn|ηserve)}AES128
(4)
在客戶端節(jié)點(diǎn)響應(yīng)和質(zhì)詢階段,客戶端節(jié)點(diǎn)需要對(duì)加密的有效負(fù)載γser-load解密,以檢索潛在的會(huì)話密鑰μkey。 若客戶端節(jié)點(diǎn)成功解密,其將得到正確的ηserve和μkey。 根據(jù)物聯(lián)網(wǎng)威脅模型[10],入侵者僅能對(duì)ηserve和μkey進(jìn)行竊聽,但不能竊聽λi。 客戶端節(jié)點(diǎn)使用自己的λi對(duì)有效負(fù)載解碼,該客戶端節(jié)點(diǎn)解碼成功后即完成了對(duì)自己的身份驗(yàn)證。由于雙向身份驗(yàn)證要求兩方都要得到驗(yàn)證,所以服務(wù)器節(jié)點(diǎn)也需要對(duì)自己進(jìn)行身份驗(yàn)證。與服務(wù)器節(jié)點(diǎn)相似,客戶端節(jié)點(diǎn)生成一個(gè)新的加密有效負(fù)載,先在ηserve和λi上執(zhí)行異或運(yùn)算,如式(5)所示
ψsyn=ηserve⊕λi
(5)
然后,將128位的ψsyn被附加于ηserve, 使用μkey進(jìn)行加密以生成一個(gè)有效負(fù)載,如式(6)所示。將得到的256位加密有效負(fù)載γser-load作為一個(gè)質(zhì)詢發(fā)送到服務(wù)器節(jié)點(diǎn)
γser-load={μkey,(ψsyn|ηcli)}AES128
(6)
最后,在服務(wù)器節(jié)點(diǎn)響應(yīng)階段,服務(wù)器節(jié)點(diǎn)對(duì)客戶端節(jié)點(diǎn)的質(zhì)詢,即對(duì)加密有效負(fù)載γcli-load進(jìn)行解密,并在其中尋找ηserve。 如果存在,則對(duì)服務(wù)器節(jié)點(diǎn)來說,該客戶端節(jié)點(diǎn)已經(jīng)成功完成了身份驗(yàn)證。如式(7)所示,服務(wù)器節(jié)點(diǎn)檢索ηserve, 然后將ηserve附加到μkey上并以λi進(jìn)行加密,以創(chuàng)建出一個(gè)自己的加密有效負(fù)載γser-load。 接著,將這個(gè)256位加密的有效負(fù)載γser-load作為對(duì)客戶端節(jié)點(diǎn)質(zhì)詢的響應(yīng)傳送回客戶端節(jié)點(diǎn)
γser-load={λi,(ηcli|μkey)}AES128
(7)
此時(shí)正在進(jìn)行的會(huì)話從會(huì)話協(xié)商階段變?yōu)閷?duì)服務(wù)器節(jié)點(diǎn)的驗(yàn)證階段,這是因?yàn)榭蛻舳斯?jié)點(diǎn)i已經(jīng)成功通過了身份驗(yàn)證,有資格將數(shù)據(jù)發(fā)送到服務(wù)器節(jié)點(diǎn)。但是客戶端節(jié)點(diǎn)還需要對(duì)服務(wù)器節(jié)點(diǎn)的真實(shí)性進(jìn)行驗(yàn)證。其對(duì)服務(wù)器節(jié)點(diǎn)發(fā)送的有效負(fù)載γser-load解密,并在其中尋找ηcli。 最終客戶端節(jié)點(diǎn)和服務(wù)器節(jié)點(diǎn)都完成了雙向身份驗(yàn)證,并在一個(gè)公用會(huì)話密鑰μkey上進(jìn)行數(shù)據(jù)包交換。在這個(gè)階段,節(jié)點(diǎn)i和服務(wù)器節(jié)點(diǎn)相互進(jìn)行身份驗(yàn)證。服務(wù)器節(jié)點(diǎn)為其簇內(nèi)每個(gè)成員節(jié)點(diǎn)i創(chuàng)建一個(gè)排程表,并為簇內(nèi)向每個(gè)成員節(jié)點(diǎn)分配TDMA時(shí)隙[11],以實(shí)現(xiàn)無爭用通信,并對(duì)每個(gè)節(jié)點(diǎn)的占空比進(jìn)行排程。
一旦客戶端節(jié)點(diǎn)和服務(wù)器節(jié)點(diǎn)都通過了身份驗(yàn)證,則完成了簇建立階段,并啟動(dòng)穩(wěn)態(tài)階段。在穩(wěn)態(tài)階段,每個(gè)簇頭從其成員節(jié)點(diǎn)中采集數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行聚合,并發(fā)送到傳感器場內(nèi)部或外部的一個(gè)基站。圖2給出了所給協(xié)議完整的流程。

圖2 所給協(xié)議的流程
下面將對(duì)所給協(xié)議進(jìn)行仿真性能分析。仿真測試采用Matlab2011a平臺(tái)。網(wǎng)絡(luò)模型是將100個(gè)普通節(jié)點(diǎn)和5個(gè)高能量節(jié)點(diǎn)部署在一個(gè)100m×100m的區(qū)域內(nèi)。
為了進(jìn)行安全性分析,首先確保節(jié)點(diǎn)到節(jié)點(diǎn)的通信數(shù)據(jù)是真實(shí)、保密和新鮮[12]。表1給出了各方法在安全性上的比較。

表1 安全性分析
ah-LEACH使用兩步程序進(jìn)行身份驗(yàn)證。而imp-LEACH沒有進(jìn)行任何身份驗(yàn)證,僅將網(wǎng)絡(luò)劃分為簇。sec-LEACH使用消息驗(yàn)證碼(MAC碼)進(jìn)行身份驗(yàn)證,利用密鑰池對(duì)每條消息使用密鑰進(jìn)行加密。在成功解密消息后,接收方即可知道該消息是來自于傳感器場中的一個(gè)合法節(jié)點(diǎn)。
ah-LEACH使用基于有效負(fù)載的方法確保消息的保密性。imp-LEACH未提供數(shù)據(jù)的保密性,而sec-LEACH同樣采用MAC保密數(shù)據(jù)。ah-LEACH和sec-LEACH方案都使用臨時(shí)數(shù)nonce來確保數(shù)據(jù)的新鮮性。因此,所給ah-LEACH協(xié)議更優(yōu)。
表2給出了ah-LEACH協(xié)議抵御各種攻擊和惡意活動(dòng)的魯棒性。所給ah-LEACH協(xié)議通過偽隨機(jī)數(shù)Ri生成ηcli和ηserve, 并附加到一個(gè)定時(shí)器Ti上。Ti和Ri的結(jié)合確保了攻擊者難以對(duì)過期的數(shù)據(jù)包進(jìn)行重放。Ri的偽隨機(jī)性質(zhì)確保了ηcli和ηserve是不可重現(xiàn)的,而定時(shí)器Ti則確保了ηcli和ηserve的不可預(yù)測性。sec-LEACH使用散列函數(shù)H和密鑰環(huán)kr來抵御重放攻擊,而imp-LEACH沒有提供任何抵御攻擊的防護(hù)手段。

表2 抵御網(wǎng)絡(luò)攻擊的魯棒性
在重放攻擊之外,ah-LEACH在抵御資源耗竭攻擊和DoS(拒絕服務(wù))攻擊時(shí)也具備較好的魯棒性。所給 ah-LEACH 協(xié)議用λi對(duì)來自任何一個(gè)鄰近節(jié)點(diǎn)的會(huì)話發(fā)起的請(qǐng)求進(jìn)行認(rèn)證。λi不存在于服務(wù)器表中,這確保了任何未驗(yàn)證的鄰近節(jié)點(diǎn)不能與某個(gè)已知服務(wù)器節(jié)點(diǎn)建立一個(gè)或多個(gè)連接。因此,服務(wù)器的資源不會(huì)受到損耗,節(jié)點(diǎn)具有防纂改性。相反,sec-LEACH和imp-LEACH沒有提供任何應(yīng)對(duì)資源耗竭攻擊和Sybil攻擊的防御手段。
表3給出了對(duì)于各種不同的簇規(guī)模下,各協(xié)議的平均握手持續(xù)時(shí)間比較。對(duì)于各種不同簇的規(guī)模,sec-LEACH的平均握手時(shí)間(ms)遠(yuǎn)高于ah-LEACH。這是由于sec-LEACH使用LEACH協(xié)議的隨機(jī)分布式的底層簇分層方法,使用一個(gè)概率閾值進(jìn)行簇頭選舉。但由于沒有鄰近節(jié)點(diǎn)的局部知識(shí),簇頭需要耗費(fèi)更長的時(shí)間對(duì)其鄰近節(jié)點(diǎn)進(jìn)行身份驗(yàn)證。在ah-LEACH中,簇頭則使用其鄰近節(jié)點(diǎn)的局部知識(shí)來完成身份驗(yàn)證。每個(gè)簇頭只需要在自己的表中查找,即可驗(yàn)證一個(gè)會(huì)話發(fā)起請(qǐng)求是否有效。λi的存在使得每個(gè)簇頭可以進(jìn)入一個(gè)4步握手協(xié)商過程,以進(jìn)行雙向身份驗(yàn)證。

表3 握手持續(xù)時(shí)間/ms
ah-LEACH協(xié)議使用的簇形成的集中式方法與imp-LEACH協(xié)議的有些類似。但是imp-LEACH沒有提供安全的數(shù)據(jù)傳輸方法,易于受到很多惡意攻擊。圖3給出了 ah-LEACH 協(xié)議與imp-LEACH在平均能量消耗方面的比較。

圖3 平均能量消耗
從圖3可看出,ah-LEACH在大部分輪次中的平均能量消耗都略高于imp-LEACH。但ah-LEACH在能量消耗方面的增加是可以忽略的,因?yàn)槠涮峁┝诉M(jìn)行身份驗(yàn)證和數(shù)據(jù)保護(hù)的一整套操作。但imp-LEACH沒有提供安全特性,且簇頭的選舉過程過于復(fù)雜。imp-LEACH使用模擬退火算法進(jìn)行簇頭選舉并形成簇,這個(gè)簇形成和簇頭選舉方法會(huì)造成過高的延時(shí)和較多的能量消耗。ah-LEACH則使用的簇頭選舉方法,消耗的能量較少,同時(shí)能抵御各種惡意攻擊。
網(wǎng)絡(luò)平均吞吐量一般定義為:在基站處成功接收的數(shù)據(jù)包總數(shù)與所發(fā)送數(shù)據(jù)包總數(shù)的比率。圖4給出了ah-LEACH協(xié)議的網(wǎng)絡(luò)平均吞吐量。如果不進(jìn)行身份驗(yàn)證,傳送到基站的數(shù)據(jù)包數(shù)量將會(huì)高得多,而進(jìn)行身份驗(yàn)證則會(huì)造成數(shù)據(jù)包處理延遲、數(shù)據(jù)包丟失、排隊(duì)延遲、增加重傳次數(shù)等。ah-LEACH在簇頭選舉階段和簇形成的過程中,都提供了身份驗(yàn)證。即使ah-LEACH協(xié)議進(jìn)行兩級(jí)身份驗(yàn)證,但是在大多數(shù)的輪次中數(shù)據(jù)包成功接收的百分比依然高得多。雖然ah-LEACH協(xié)議提供了一個(gè)具有魯棒性和防御性的底層網(wǎng)絡(luò)解決方法,但部署區(qū)域的性質(zhì)和通信鏈路的質(zhì)量在一定程度上也造成了數(shù)據(jù)包丟失和服務(wù)質(zhì)量降低。

圖4 平均網(wǎng)絡(luò)吞吐量
通過基于簇的分層式無線傳感器網(wǎng)絡(luò)給出了一個(gè)輕量級(jí)的雙向身份驗(yàn)證協(xié)議,所給協(xié)議利用基于簇的分層式體系結(jié)構(gòu)的高能效性實(shí)現(xiàn)能耗最小化,并利用雙向身份驗(yàn)證方案的輕量級(jí)特性確保了安全性。所給協(xié)議在抵御攻擊的魯棒性、握手持續(xù)時(shí)間、平均能量消耗和等網(wǎng)絡(luò)平均吞吐量等多個(gè)性能指標(biāo)上對(duì)ah-LEACH和現(xiàn)有其它經(jīng)典協(xié)議進(jìn)行了比較。實(shí)驗(yàn)結(jié)果表明,ah-LEACH能夠很好地抵御重放、拒絕服務(wù)、Sybil和資源耗竭等多種攻擊,其平均握手持續(xù)時(shí)間比sec-LEACH要短得多,能夠以sec-LEACH所需時(shí)間大約一半的時(shí)間建立起通過了身份驗(yàn)證會(huì)話。