嚴 星
(新疆財經大學 信息管理學院,新疆 烏魯木齊 830012)
由于電池電量、存儲空間、數據速率和帶寬等限制,有必須對無線傳感器網絡中資源受限的節(jié)點有效利用,從而提高無線傳感器網絡的整體性能[1]。此外,無線傳感器網絡節(jié)點易受物理篡改及其它遠程攻擊[2,3],所以安全高效的網絡協議是無線傳感器網絡的關鍵組成部分。
近年來,許多研究人員對無線傳感器網絡協議的安全性均進行了研究。文獻[4]提出的低功耗自適應集簇分層型協議(low energy adaptive clustering hierarchical pro-tocol, LEACH)是一種開創(chuàng)性的協議,該協議將整個傳感器場劃分為較小的地理區(qū)域——簇,但該協議采用概率性選擇簇頭的方法存在潛在風險,即在后續(xù)輪次的簇頭選舉中一些低能量的節(jié)點有很大可能會被選舉為簇頭。文獻[5]提出一種sec-LEACH協議,該協議先使用隨機密鑰預分配方法生成密鑰池,然后向每個節(jié)點分配這些密鑰的子集,同時結合分簇路由協議以及數據匯聚協議,提高了基于簇的分層式無線傳感器網絡協議的安全性和效率。文獻[6]提出一種基于LEACH協議的改進簇間多跳路由協議(imp-LEACH),該協議通過引入能量因子和距離因子來修正LEACH協議的閾值函數,以在簇頭之間形成一個優(yōu)化路徑。
所給協議也是一種LEACH協議,是一種基于有效負載握手的雙向身份驗證協議(ah-LEACH),使用了集中式基于簇的分層無線傳感器網絡。通過選舉出最優(yōu)百分比的簇頭,通過最小化節(jié)點的能量消耗實現網絡負載平衡。每個被選舉出的簇頭使用4次握手消息,其中握手消息使用高級加密標準(AES)進行加密。所給協議與現有經典協議相比,在安全性、抵御各種攻擊、握手持續(xù)時間等方面較優(yōu)。
采用的網絡模型由隨機部署的異構傳感器節(jié)點[7]組成。網絡中共有100個普通節(jié)點和5個高能量節(jié)點。為減低操作成本,每個普通節(jié)點的初始能量為1 J,每個高能量節(jié)點的初始能量為5 J。所有節(jié)點在一個100m×100m的地理區(qū)域中。
在網絡部署后,向每個普通節(jié)點分配一個令牌和一個預共享密鑰λi。 令牌被用于基站和簇頭之間提名包和確認消息的安全交換,而λi用于網絡內鄰近節(jié)點與其可能簇頭之間的雙向身份驗證。
起始時,每個普通節(jié)點i創(chuàng)建一個控制包并將其發(fā)送到距離最近的高能量節(jié)點。每個普通節(jié)點i創(chuàng)建一個控制包并將其發(fā)送到距離最近的高能量節(jié)點。該控制包中包含節(jié)點i的剩余能量Ei以及標識IDi信息。通過下式計算出距離節(jié)點i最近的高能量節(jié)點的位置
(1)
每個高能量節(jié)點在其鄰近節(jié)點中收集這些數據包,并檢索數據包中的Ei和IDi, 將單個包含了這些數值的控制包向一個基站廣播。隨后,高能量節(jié)點進入睡眠模式,并將在下一輪開始時喚醒,啟動上文所述的任務。在接收后,基站從每個控制包中對Ei和IDi進行檢索。計算平均能量閾值
(2)
對于總數為N個節(jié)點的網絡,所給ah-LEACH協議的kbest為5%。由于簇頭的能量會由于資源密集型的任務迅速耗盡,所以若kbest的數值過小,將會使得基于簇的分層式網絡的性能下降,若kbest的數值過大,則將會因較低的數據聚合率和數據融合率而造成基于簇的分層式網絡效率較低[8]。
在每個輪次中,基站向當選的簇頭廣播候選包。候選包主要包括簇頭的標識IDcls和鄰近節(jié)點的標識IDNB, 它們均在候選包的有效負載內傳輸。為保證IDcls和IDNB的傳輸安全性,每個候選包的報頭中均有一個16位的令牌。基站生成一個與當選簇頭擁有的令牌相似的令牌,即對每個簇頭生成一個令牌。接收后,每個簇頭(用S表示)檢查候選包中附加的令牌。若該令牌與簇頭擁有的令牌相匹配,則簇頭檢索其鄰近節(jié)點的附加標識IDadd。 每個簇頭必須確認收到了一個候選包。簇頭創(chuàng)建一個確認消息(ACK),然后將其令牌附加到ACK上發(fā)送到基站。攻擊者可能攔截一個或多個候選包,但其無法重新生成檢索附加標識所需的令牌。
在成功接收到廣播消息后,每個鄰近節(jié)點就發(fā)起簇的形成。所給ah-LEACH協議采用128位的AES加密算法完成身份驗證。這個加密模式要求的資源較少,對于節(jié)點生成的數據極為有利,而且能夠讓節(jié)點在受到攻擊前有足夠的時間對數據進行卸載,缺點是需要復雜的硬件和軟件平臺。
為滿足上述要求,所給協議使用基于有效負載的輕量級雙向身份驗證技術,實現在每條信息的有效負載內進行身份驗證。如圖1所示,每個鄰近節(jié)點與一個服務器節(jié)點交換多個握手信息。在4條超輕量級的握手消息中完成身份驗證。一旦得到認證,每個鄰近節(jié)點被允許發(fā)送數據到相應的簇頭。通過以下4個階段完成身份驗證:①會話發(fā)起;②服務器節(jié)點質詢;③客戶端節(jié)點響應和質詢;④服務器節(jié)點響應。
在會話發(fā)起階段,每個鄰近節(jié)點i創(chuàng)建出一個包含了IDi和IDs的加入請求消息。IDi表示源節(jié)點的標識,IDs為簇頭S的目標節(jié)點標識。源節(jié)點和目標節(jié)點的標識均為8位。無論是合法節(jié)點還是惡意節(jié)點,每個鄰近節(jié)點最多可以與服務器節(jié)點協商4次會話發(fā)起請求。IDi在有效負載內傳輸,IDs在每個加入請求消息的報頭內傳輸。有效負載之后是一個可選的幀校驗序列[9](frame check sequence, FCS),作為尾部附加,用于錯誤檢測和校正。
圖1 所給協議的雙向身份驗證
在服務器質詢階段,每個服務器節(jié)點在接收到的加入請求消息的報頭中檢索IDs,在該消息的有效負載中檢索IDi。 若接收到的IDs與服務器節(jié)點的標識相匹配,則表明這個加入請求消息正是傳送給該服務器節(jié)點的。若找不到匹配,則加入請求消息將被丟棄。為了進行會話協商,IDi必須與提供給該服務器節(jié)點的標識池內的一個標識相匹配,而只有在IDi∈IDadd的情況下,才會出現匹配。每個服務器節(jié)點從有效負載中檢索IDi, 并搜索一個匹配的預共享密鑰λi。 為了身份驗證的目的,在IDadd內的每個標識IDi都與一個λi相關聯。若發(fā)現匹配,服務器節(jié)點將使用AES算法,發(fā)送加密后的有效負載作為回應。為創(chuàng)建一條質詢消息,服務器節(jié)點創(chuàng)建一個128位的偽隨機臨時數ηserve和一個128位的潛在公共會話密鑰μkey。 臨時數nonce是在整個加密通信過程中僅被客戶端節(jié)點或服務器節(jié)點使用一次的一個臨時數字。使用μkey和ηserve生成一個加密的有效負載。首先,使用在λi和μkey上執(zhí)行異或運算,如式(3)所示
ψsyn=λi⊕μkey
(3)
然后,128位的ψsyn被附加于ηserve, 并采用λi加密,如式(4)所示,生成一個256位的有效負載。該有效負載為γser-load, 被作為質詢發(fā)送到客戶端節(jié)點
γser-load={λi,(ψsyn|ηserve)}AES128
(4)
在客戶端節(jié)點響應和質詢階段,客戶端節(jié)點需要對加密的有效負載γser-load解密,以檢索潛在的會話密鑰μkey。 若客戶端節(jié)點成功解密,其將得到正確的ηserve和μkey。 根據物聯網威脅模型[10],入侵者僅能對ηserve和μkey進行竊聽,但不能竊聽λi。 客戶端節(jié)點使用自己的λi對有效負載解碼,該客戶端節(jié)點解碼成功后即完成了對自己的身份驗證。由于雙向身份驗證要求兩方都要得到驗證,所以服務器節(jié)點也需要對自己進行身份驗證。與服務器節(jié)點相似,客戶端節(jié)點生成一個新的加密有效負載,先在ηserve和λi上執(zhí)行異或運算,如式(5)所示
ψsyn=ηserve⊕λi
(5)
然后,將128位的ψsyn被附加于ηserve, 使用μkey進行加密以生成一個有效負載,如式(6)所示。將得到的256位加密有效負載γser-load作為一個質詢發(fā)送到服務器節(jié)點
γser-load={μkey,(ψsyn|ηcli)}AES128
(6)
最后,在服務器節(jié)點響應階段,服務器節(jié)點對客戶端節(jié)點的質詢,即對加密有效負載γcli-load進行解密,并在其中尋找ηserve。 如果存在,則對服務器節(jié)點來說,該客戶端節(jié)點已經成功完成了身份驗證。如式(7)所示,服務器節(jié)點檢索ηserve, 然后將ηserve附加到μkey上并以λi進行加密,以創(chuàng)建出一個自己的加密有效負載γser-load。 接著,將這個256位加密的有效負載γser-load作為對客戶端節(jié)點質詢的響應傳送回客戶端節(jié)點
γser-load={λi,(ηcli|μkey)}AES128
(7)
此時正在進行的會話從會話協商階段變?yōu)閷Ψ掌鞴?jié)點的驗證階段,這是因為客戶端節(jié)點i已經成功通過了身份驗證,有資格將數據發(fā)送到服務器節(jié)點。但是客戶端節(jié)點還需要對服務器節(jié)點的真實性進行驗證。其對服務器節(jié)點發(fā)送的有效負載γser-load解密,并在其中尋找ηcli。 最終客戶端節(jié)點和服務器節(jié)點都完成了雙向身份驗證,并在一個公用會話密鑰μkey上進行數據包交換。在這個階段,節(jié)點i和服務器節(jié)點相互進行身份驗證。服務器節(jié)點為其簇內每個成員節(jié)點i創(chuàng)建一個排程表,并為簇內向每個成員節(jié)點分配TDMA時隙[11],以實現無爭用通信,并對每個節(jié)點的占空比進行排程。
一旦客戶端節(jié)點和服務器節(jié)點都通過了身份驗證,則完成了簇建立階段,并啟動穩(wěn)態(tài)階段。在穩(wěn)態(tài)階段,每個簇頭從其成員節(jié)點中采集數據,對數據進行聚合,并發(fā)送到傳感器場內部或外部的一個基站。圖2給出了所給協議完整的流程。
圖2 所給協議的流程
下面將對所給協議進行仿真性能分析。仿真測試采用Matlab2011a平臺。網絡模型是將100個普通節(jié)點和5個高能量節(jié)點部署在一個100m×100m的區(qū)域內。
為了進行安全性分析,首先確保節(jié)點到節(jié)點的通信數據是真實、保密和新鮮[12]。表1給出了各方法在安全性上的比較。
表1 安全性分析
ah-LEACH使用兩步程序進行身份驗證。而imp-LEACH沒有進行任何身份驗證,僅將網絡劃分為簇。sec-LEACH使用消息驗證碼(MAC碼)進行身份驗證,利用密鑰池對每條消息使用密鑰進行加密。在成功解密消息后,接收方即可知道該消息是來自于傳感器場中的一個合法節(jié)點。
ah-LEACH使用基于有效負載的方法確保消息的保密性。imp-LEACH未提供數據的保密性,而sec-LEACH同樣采用MAC保密數據。ah-LEACH和sec-LEACH方案都使用臨時數nonce來確保數據的新鮮性。因此,所給ah-LEACH協議更優(yōu)。
表2給出了ah-LEACH協議抵御各種攻擊和惡意活動的魯棒性。所給ah-LEACH協議通過偽隨機數Ri生成ηcli和ηserve, 并附加到一個定時器Ti上。Ti和Ri的結合確保了攻擊者難以對過期的數據包進行重放。Ri的偽隨機性質確保了ηcli和ηserve是不可重現的,而定時器Ti則確保了ηcli和ηserve的不可預測性。sec-LEACH使用散列函數H和密鑰環(huán)kr來抵御重放攻擊,而imp-LEACH沒有提供任何抵御攻擊的防護手段。
表2 抵御網絡攻擊的魯棒性
在重放攻擊之外,ah-LEACH在抵御資源耗竭攻擊和DoS(拒絕服務)攻擊時也具備較好的魯棒性。所給 ah-LEACH 協議用λi對來自任何一個鄰近節(jié)點的會話發(fā)起的請求進行認證。λi不存在于服務器表中,這確保了任何未驗證的鄰近節(jié)點不能與某個已知服務器節(jié)點建立一個或多個連接。因此,服務器的資源不會受到損耗,節(jié)點具有防纂改性。相反,sec-LEACH和imp-LEACH沒有提供任何應對資源耗竭攻擊和Sybil攻擊的防御手段。
表3給出了對于各種不同的簇規(guī)模下,各協議的平均握手持續(xù)時間比較。對于各種不同簇的規(guī)模,sec-LEACH的平均握手時間(ms)遠高于ah-LEACH。這是由于sec-LEACH使用LEACH協議的隨機分布式的底層簇分層方法,使用一個概率閾值進行簇頭選舉。但由于沒有鄰近節(jié)點的局部知識,簇頭需要耗費更長的時間對其鄰近節(jié)點進行身份驗證。在ah-LEACH中,簇頭則使用其鄰近節(jié)點的局部知識來完成身份驗證。每個簇頭只需要在自己的表中查找,即可驗證一個會話發(fā)起請求是否有效。λi的存在使得每個簇頭可以進入一個4步握手協商過程,以進行雙向身份驗證。
表3 握手持續(xù)時間/ms
ah-LEACH協議使用的簇形成的集中式方法與imp-LEACH協議的有些類似。但是imp-LEACH沒有提供安全的數據傳輸方法,易于受到很多惡意攻擊。圖3給出了 ah-LEACH 協議與imp-LEACH在平均能量消耗方面的比較。
圖3 平均能量消耗
從圖3可看出,ah-LEACH在大部分輪次中的平均能量消耗都略高于imp-LEACH。但ah-LEACH在能量消耗方面的增加是可以忽略的,因為其提供了進行身份驗證和數據保護的一整套操作。但imp-LEACH沒有提供安全特性,且簇頭的選舉過程過于復雜。imp-LEACH使用模擬退火算法進行簇頭選舉并形成簇,這個簇形成和簇頭選舉方法會造成過高的延時和較多的能量消耗。ah-LEACH則使用的簇頭選舉方法,消耗的能量較少,同時能抵御各種惡意攻擊。
網絡平均吞吐量一般定義為:在基站處成功接收的數據包總數與所發(fā)送數據包總數的比率。圖4給出了ah-LEACH協議的網絡平均吞吐量。如果不進行身份驗證,傳送到基站的數據包數量將會高得多,而進行身份驗證則會造成數據包處理延遲、數據包丟失、排隊延遲、增加重傳次數等。ah-LEACH在簇頭選舉階段和簇形成的過程中,都提供了身份驗證。即使ah-LEACH協議進行兩級身份驗證,但是在大多數的輪次中數據包成功接收的百分比依然高得多。雖然ah-LEACH協議提供了一個具有魯棒性和防御性的底層網絡解決方法,但部署區(qū)域的性質和通信鏈路的質量在一定程度上也造成了數據包丟失和服務質量降低。
圖4 平均網絡吞吐量
通過基于簇的分層式無線傳感器網絡給出了一個輕量級的雙向身份驗證協議,所給協議利用基于簇的分層式體系結構的高能效性實現能耗最小化,并利用雙向身份驗證方案的輕量級特性確保了安全性。所給協議在抵御攻擊的魯棒性、握手持續(xù)時間、平均能量消耗和等網絡平均吞吐量等多個性能指標上對ah-LEACH和現有其它經典協議進行了比較。實驗結果表明,ah-LEACH能夠很好地抵御重放、拒絕服務、Sybil和資源耗竭等多種攻擊,其平均握手持續(xù)時間比sec-LEACH要短得多,能夠以sec-LEACH所需時間大約一半的時間建立起通過了身份驗證會話。