王月嬌,孫達(dá)志,2
(1.天津大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,天津300072;2.中國(guó)科學(xué)院 信息工程研究所 信息安全國(guó)家重點(diǎn)實(shí)驗(yàn)室,北京100093)
無(wú)線傳感器網(wǎng)絡(luò) (wireless sensor networks,WSN)是由傳感器節(jié)點(diǎn)以Ad Hoc方式構(gòu)成的無(wú)線網(wǎng)絡(luò),由于傳感器節(jié)點(diǎn)大多部署在惡劣環(huán)境,所以很容易遭到攻擊破壞。為了保障無(wú)線傳感器網(wǎng)絡(luò)的安全,需要設(shè)計(jì)一套完善的身份認(rèn)證方案[1-5]。Zhou在2007年提出了基于橢圓曲線密碼(elliptic curve cryptography,ECC)的認(rèn)證協(xié)議[6],比基于RSA 的認(rèn)證方法更高效,但由于時(shí)間戳的引用使其很難獲得推廣 應(yīng) 用。Huang 在2009 年 提 出NACP 協(xié) 議[7],在ECC的基礎(chǔ)上使用hash鏈進(jìn)行認(rèn)證,但不能實(shí)現(xiàn)雙向認(rèn)證且存在重放攻擊和假冒攻擊等問(wèn)題。隨后Kim 等人對(duì)NACP協(xié)議進(jìn)行改進(jìn)并提出ENACP 協(xié)議[8],實(shí)現(xiàn)了雙向認(rèn)證但仍不能抵抗假冒攻擊。最近Lee等人提出了基于hash值的認(rèn)證方法—PACPs協(xié)議[9],安全性有所提高卻不能解決新節(jié)點(diǎn)加入網(wǎng)絡(luò)等問(wèn)題。
本文重點(diǎn)分析了無(wú)線傳感器網(wǎng)絡(luò)中基于密碼hash函數(shù)的兩類認(rèn)證協(xié)議:基于hash鏈的認(rèn)證協(xié)議ENACP 和基于hash值的認(rèn)證協(xié)議PACPs。針對(duì)這兩類協(xié)議的不足,提出新的改進(jìn)雙向認(rèn)證協(xié)議,新協(xié)議在解決安全認(rèn)證問(wèn)題的同時(shí)增加了舊節(jié)點(diǎn)撤銷機(jī)制,滿足了無(wú)線傳感器網(wǎng)絡(luò)的實(shí)際需求。
hash鏈:產(chǎn)生hash鏈?zhǔn)沁B續(xù)使用哈希函數(shù)h 計(jì)算一系列hash值的過(guò)程。例如要產(chǎn)生長(zhǎng)度為N 的hash鏈,先選擇一個(gè)隨機(jī)數(shù)r,然后計(jì)算h(r)、h2(r)…h(huán)N(r)。由于哈希函數(shù)的單向性,已知h(r)求r在計(jì)算上是不可能的。
橢圓曲線離散問(wèn)題:令E 為階是n 的有限域Fq上的橢圓曲線,P 為橢圓曲線上一點(diǎn)。已知Q =rP 求r 在計(jì)算上是不可能的。
無(wú)線傳感器網(wǎng)絡(luò)的安全通信主要指?jìng)鞲衅鞴?jié)點(diǎn)之間的安全通信以及傳感器節(jié)點(diǎn)與基站 (base station,BS)之間的安全通信?;镜哪芰亢痛鎯?chǔ)能力是不受限制的,它負(fù)責(zé)整個(gè)網(wǎng)絡(luò)的運(yùn)行,并且假設(shè)基站是絕對(duì)安全的。但由于傳感器節(jié)點(diǎn)的配置環(huán)境一般比較惡劣,加之無(wú)線網(wǎng)絡(luò)本身固有的脆弱性,因而極易受到各種攻擊。
為了保證信息的安全傳遞,需要有一種機(jī)制來(lái)驗(yàn)證通信各方身份的合法性。因此必須建立一套綜合考慮安全、效率和性能的傳感器網(wǎng)絡(luò)身份認(rèn)證方案。為了防止攻擊者注入非法信息或篡改數(shù)據(jù),在節(jié)點(diǎn)認(rèn)證身份的同時(shí)必須建立會(huì)話密鑰。此外,安全認(rèn)證還需要考慮不可信節(jié)點(diǎn)的被發(fā)現(xiàn)、舊節(jié)點(diǎn)的能量耗盡以及新節(jié)點(diǎn)的加入等情況。
下面是文中協(xié)議所用的一些符號(hào)。
Ni:第i個(gè)傳感器節(jié)點(diǎn);
IDX:節(jié)點(diǎn)X 的標(biāo)識(shí);
ki/ai:節(jié)點(diǎn)Ni的密鑰/隨機(jī)數(shù);
ks/as:BS的密鑰/隨機(jī)數(shù);
h:哈希函數(shù);
z:哈希鏈的長(zhǎng)度;
Kij:節(jié)點(diǎn)Ni和Nj的會(huì)話密鑰;
kAB:節(jié)點(diǎn)A 和B 的共享密鑰;
AS:認(rèn)證集;
HID:AS 中的一個(gè)索引;
R_D/R_A:舊節(jié)點(diǎn)撤銷/新節(jié)點(diǎn)加入的標(biāo)志。
對(duì)于ENACP 協(xié)議重點(diǎn)介紹初始化和認(rèn)證與建立密鑰階段,細(xì)節(jié)可參照文獻(xiàn) [8]。
(1)初始化
假設(shè)在指定區(qū)域有r 個(gè)傳感器節(jié)點(diǎn)。BS首先產(chǎn)生ks、as、z、h并計(jì)算hz(ks‖as)。然后為傳感器節(jié)點(diǎn)產(chǎn)生r個(gè)密鑰k1,k2…kr,r 個(gè)隨機(jī)數(shù)a1、a2…as,并將ki、ai、z、h、hz(ks‖as)加載到節(jié)點(diǎn)Ni(1≦i≦r)中。最后BS計(jì)算并廣播所有的hz(ki‖ai)以及與橢圓曲線相關(guān)的信息Eq、P、n。
(2)認(rèn)證與建立密鑰
傳感器節(jié)點(diǎn)每次認(rèn)證成功之后更新自己的hash鏈,假設(shè)Ni和Nj分別完成了u 次和v 次認(rèn)證,則此時(shí)認(rèn)證Ni和Nj的hash鏈的值分別為hz-u(ki‖ai)和hz-v(kj‖aj)。Ni和Nj之間認(rèn)證與建立密鑰過(guò)程如圖1所示。
圖1 ENACP協(xié)議證與建立密鑰階段
(3)新節(jié)點(diǎn)加入
當(dāng)新節(jié)點(diǎn)Nr+1加入網(wǎng)絡(luò)時(shí),BS首先對(duì)Nr+1進(jìn)行初始化,然后廣播與Nr+1有關(guān)的hash鏈信息,最后廣播自己的hash鏈。各節(jié)點(diǎn)收到廣播檢驗(yàn)消息無(wú)誤后確認(rèn)新節(jié)點(diǎn)并更新BS的hash鏈。
(4)hash鏈重定義
在認(rèn)證過(guò)程中傳感器節(jié)點(diǎn)的hash鏈長(zhǎng)度會(huì)越來(lái)越短,如果Ni需要重新定義hash鏈則先向BS發(fā)出請(qǐng)求,BS確認(rèn)請(qǐng)求后重置ai、hz(ki‖ai)并把相關(guān)信息廣播給各節(jié)點(diǎn)。各節(jié)點(diǎn)收到廣播確認(rèn)BS身份后更新Ni和BS的hash鏈。
secPACP協(xié)議和ePACP協(xié)議共同組成PACPs協(xié)議,其中ePACP協(xié)議只是對(duì)secPACP的存儲(chǔ)進(jìn)行了優(yōu)化。下面以secPACP協(xié)議為例進(jìn)行分析,具體內(nèi)容可參照文獻(xiàn)[9]。
(1)初始化
假設(shè)系統(tǒng)最初有N 個(gè)傳感器節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都有自己的密鑰和認(rèn)證集。BS首先為N 個(gè)傳感器節(jié)點(diǎn)產(chǎn)生N 個(gè)密鑰k1,k2…kN,然后為每個(gè)節(jié)點(diǎn)隨機(jī)選擇其它m (m<N)個(gè)節(jié)點(diǎn)組成認(rèn)證集。例如對(duì)于節(jié)點(diǎn)X,BS 為它產(chǎn)生密鑰kX,隨機(jī)選擇m 個(gè)節(jié)點(diǎn)的密鑰為 {kYi},i∈{1,2…m}。則ASX= {(HIDi,h(IDX‖kYi)},其中HIDi代表kYi的所有者。最后BS將kX、ASX等信息加載到節(jié)點(diǎn)X 中。
(2)認(rèn)證與建立密鑰
假設(shè)傳感器節(jié)點(diǎn)A 與B 是鄰居,且ASA中含有(HIDB、h(IDA‖kB)),則A 可以向B 發(fā)起認(rèn)證與建立會(huì)話密鑰的通信,交互過(guò)程如圖2所示。
(3)新節(jié)點(diǎn)加入
新節(jié)點(diǎn)NN+1加入到網(wǎng)絡(luò)時(shí),BS將h、kN+1、ASN+1等信息加載到NN+1中,對(duì)已存在的節(jié)點(diǎn)沒(méi)有多余步驟。
圖2 secPACP協(xié)議與建立密鑰階段
(1)ENACP協(xié)議分析
文獻(xiàn) [9]指出ENACP協(xié)議對(duì)hash鏈的更新造成極大的通信量,而且協(xié)議是有狀態(tài)的,這會(huì)產(chǎn)生數(shù)據(jù)不同步問(wèn)題。文獻(xiàn) [10]指出ENACP協(xié)議在新節(jié)點(diǎn)加入與hash鏈重定義階段存在假冒攻擊。除了假冒攻擊,攻擊者在這兩個(gè)階段修改BS發(fā)出的Nr+1、Ni會(huì)造成新節(jié)點(diǎn)Nr+1、合法節(jié)點(diǎn)Ni不能被認(rèn)證,所以協(xié)議也不能抵抗消息篡改攻擊。
ENACP協(xié)議最嚴(yán)重的安全問(wèn)題是在認(rèn)證與建立密鑰階段仍存在假冒攻擊。由于認(rèn)證身份的hash值明文傳輸,使得攻擊者能假冒通信的任何一方。攻擊者先進(jìn)行竊聽(tīng),攔截hz-u-1(ki‖ai)中斷當(dāng)前認(rèn)證。然后 冒充節(jié)點(diǎn)Ni產(chǎn)生隨機(jī)數(shù)ti’并計(jì)算相應(yīng)的Ai’、si’、zi’,重放消息hz-u-1(ki‖ai),這樣節(jié)點(diǎn)Nj檢驗(yàn)hz-u-1(ki‖ai)、zi’、si’都是正確的。最后Nj會(huì)錯(cuò)誤的認(rèn)為攻擊者是節(jié)點(diǎn)Ni,并和攻擊者共享會(huì)話密鑰Kij’。
(2)secPACP協(xié)議分析
secPACP協(xié)議主要在效率和功能上存在問(wèn)題。在認(rèn)證與建立密鑰階段,協(xié)議一共使用4 條消息存在消息冗余。而數(shù)據(jù)發(fā)送所需電量占總電量很大比重,所以減少通信量對(duì)節(jié)省傳感器節(jié)點(diǎn)的資源有很大意義。
在功能上,secPACP協(xié)議不能保障網(wǎng)絡(luò)的連通性。協(xié)議要求節(jié)點(diǎn)之間進(jìn)行通信的前提是認(rèn)證集中包含對(duì)方的信息,但是在初始化階段認(rèn)證集中節(jié)點(diǎn)的隨機(jī)選擇會(huì)造成個(gè)別節(jié)點(diǎn)不能與任何節(jié)點(diǎn)進(jìn)行通信。此外,協(xié)議的新節(jié)點(diǎn)加入階段是無(wú)效的。作者指出在新節(jié)點(diǎn)加入階段對(duì)已存在節(jié)點(diǎn)沒(méi)有任何多余步驟,這樣已存在節(jié)點(diǎn)的認(rèn)證集中沒(méi)有新節(jié)點(diǎn)的信息,新節(jié)點(diǎn)便不能與網(wǎng)絡(luò)中原來(lái)的節(jié)點(diǎn)進(jìn)行通信。
(1)初始化
假設(shè)系統(tǒng)最初有N 個(gè)傳感器節(jié)點(diǎn),BS首先產(chǎn)生傳感器節(jié)點(diǎn)X 與BS的共享密鑰kXS(1≦X ≦N),然后為X 產(chǎn)生與其它m (m<N)個(gè)節(jié)點(diǎn)的共享密鑰kXYi,并與對(duì)應(yīng)的IDYi一起 組 成 認(rèn) 證 集ASX。即ASX= {(IDYi,kXYi),(BS,kXS)},其中i∈ {1,2…m}。最后BS 將ASX、h、橢圓曲線參數(shù)Eq、P、n 加載到X 中,并將 (IDX,kXYi)添加到ASYi中,保證共享密鑰出現(xiàn)在成對(duì)的節(jié)點(diǎn)中。
(2)認(rèn)證與建立密鑰
圖3所示為節(jié)點(diǎn)A 和B 的交互過(guò)程,具體步驟如下。
圖3 新協(xié)議認(rèn)證與建立密鑰階段
步驟1 A 產(chǎn)生隨機(jī)數(shù)tA,計(jì)算TA,然后廣播 {IDA,TA}。
步驟2 B 收到消息后產(chǎn)生隨機(jī)數(shù)tB,計(jì)算TB、KAB、ZB并廣播 {IDB,TB,ZB}。
步驟3 A 收到消息后計(jì)算KAB,檢查ZB是否等于h (IDB‖TB‖KAB‖kAB)。如果ZB正確則確認(rèn)B 的身份和會(huì)話密鑰KAB,最后計(jì)算并廣播ZA。否則丟棄消息,認(rèn)證失敗。
步驟4 節(jié)點(diǎn)B 收到消息后檢查ZA是否等于h(IDA‖TA‖KAB‖kAB)。如果ZA正確則確認(rèn)A 的身份及會(huì)話密鑰KAB。否則丟棄消息,認(rèn)證失敗。
傳感器節(jié)點(diǎn)與BS的認(rèn)證與建立會(huì)話密鑰過(guò)程與上述過(guò)程類似。將圖3 中的B、IDB、kAB分別改為BS、BS、kAS即變成A 與BS的認(rèn)證與建立密鑰過(guò)程。
(3)舊節(jié)點(diǎn)撤銷
傳感器節(jié)點(diǎn)由于能量耗盡或被攻擊者俘獲等原因會(huì)變成無(wú)效甚至惡意的節(jié)點(diǎn),撤銷這些節(jié)點(diǎn)是實(shí)現(xiàn)安全認(rèn)證必須要考慮的問(wèn)題。當(dāng)節(jié)點(diǎn)X 需要退出網(wǎng)絡(luò)時(shí),BS將撤銷X的消息發(fā)送給所有與X 有共享密鑰的節(jié)點(diǎn)Ni,然后再撤銷X 在BS中的記錄。圖4所示為BS與節(jié)點(diǎn)Ni的交互過(guò)程。
步驟1 BS產(chǎn)生隨機(jī)數(shù)tS,廣播 {R_D,IDNi,tS}。
步驟2 Ni收到消息后產(chǎn)生隨機(jī)數(shù)ti,用共享密鑰kis加密 (R_D‖IDNi‖tS‖ti)得到Zi。然后發(fā)送 {IDNi,ti,Zi}。
步驟3 BS用kis對(duì)Zi解密并檢查Zi的正確性,如果正確則計(jì)算并發(fā)送ZS。
圖4 新協(xié)議舊節(jié)點(diǎn)撤銷階段
步驟4 Ni收到消息后用kis對(duì)ZS解密并檢查其正確性。如果正確則認(rèn)證BS并從ASi中刪除 (IDX、kiX)。
(4)新節(jié)點(diǎn)加入
當(dāng)新節(jié)點(diǎn)NN+1加入網(wǎng)絡(luò)時(shí),BS首先對(duì)它進(jìn)行初始化,將ASN+1、h、Eq、P、n 等 信 息 加 載 到NN+1中。假 設(shè)(IDNi、ki(N+1))在ASN+1中,則BS與節(jié)點(diǎn)Ni的通信過(guò)程如圖5所示。
圖5 新協(xié)議新節(jié)點(diǎn)加入階段
步驟1 BS產(chǎn)生隨機(jī)數(shù)tS,廣播 {R_A,IDNi,tS}。
步驟2 Ni收到消息后產(chǎn)生隨機(jī)數(shù)ti,用共享密鑰kis加密 (R_A‖IDNi‖tS‖ti)得到Zi,然后發(fā)送 {IDNi,ti,Zi}。
步驟3 BS用kis對(duì)Zi解密檢查Zi的正確性,如果正確則計(jì)算并發(fā)送ZS。
步驟4 Ni收到消息后用kis對(duì)ZS解密并檢查其正確性。如果正確則認(rèn)證BS,添加(IDN+1、ki(N+1))到ASi中。
新協(xié)議實(shí)現(xiàn)了雙向認(rèn)證,利用隨機(jī)數(shù)保證了消息的新鮮性;ZA、ZB等值的構(gòu)造體現(xiàn)了消息的完整性;橢圓曲線離散問(wèn)題保證了會(huì)話密鑰的前向安全性;認(rèn)證協(xié)議的實(shí)施過(guò)程為安全有效的訪問(wèn)控制提供了基礎(chǔ),下面具體說(shuō)明新協(xié)議可以抵抗各種攻擊。
抵抗被動(dòng)攻擊:在認(rèn)證與建立密鑰階段,橢圓曲線離散問(wèn)題使攻擊者通過(guò)竊聽(tīng)不能獲得tA、tB,hash函數(shù)的單向性使攻擊者不能獲取有關(guān)共享密鑰和會(huì)話密鑰的信息。在舊節(jié)點(diǎn)撤銷和新節(jié)點(diǎn)加入階段,認(rèn)證消息通過(guò)密文傳輸也可以抵抗被動(dòng)攻擊。
抵抗重放攻擊:協(xié)議的各階段都產(chǎn)生隨機(jī)數(shù)保證消息的新鮮性,認(rèn)證信息包含在hash函數(shù)中沒(méi)有以明文形式傳送。因此攻擊者重放之前的消息不能通過(guò)認(rèn)證。
抵抗消息篡改攻擊:協(xié)議中ZA、ZB等值的構(gòu)造保證了消息的完整性,可以有效的防止攻擊者對(duì)消息進(jìn)行篡改。
抵抗假冒攻擊:在認(rèn)證與建立密鑰階段,協(xié)議使用含有共享密鑰的hash值作為認(rèn)證信息;在舊節(jié)點(diǎn)撤銷和新節(jié)點(diǎn)加入階段,認(rèn)證消息經(jīng)過(guò)共享密鑰加密后傳輸。攻擊者在不知道共享密鑰的情況下不能進(jìn)行假冒。
下面主要從安全、效率、功能3個(gè)方面對(duì)協(xié)議進(jìn)行比較,結(jié)果如表1、表2、表3所示。表1中×表示不存在此類攻擊,○表示存在此類攻擊。結(jié)果表明新協(xié)議和secPACP協(xié)議的安全性高于ENACP協(xié)議。
表1 安全性比較
效率比較的是存儲(chǔ)量、計(jì)算量和通信量。以認(rèn)證與建立密鑰階段為例,由表2 可知新協(xié)議只需2 次點(diǎn)乘、2 次hash計(jì)算、3條消息,效率明顯優(yōu)于其它兩種協(xié)議。
表2 效率性比較
表3中√表示能夠?qū)崿F(xiàn)此功能,×表示不能實(shí)現(xiàn)此功能。結(jié)果表明新協(xié)議在保證網(wǎng)絡(luò)連通性的同時(shí)能夠有效實(shí)現(xiàn)認(rèn)證與建立會(huì)話密鑰,并且可以適應(yīng)無(wú)線傳感器網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)變化。
實(shí)現(xiàn)認(rèn)證是保證無(wú)線傳感器網(wǎng)絡(luò)安全的關(guān)鍵。本文從無(wú)線傳感器網(wǎng)絡(luò)的實(shí)際需求出發(fā),提出了一個(gè)安全、高效、實(shí)用的基于hash運(yùn)算的認(rèn)證協(xié)議。該協(xié)議解決了已有協(xié)議在安全、效率以及功能上的不足,具有很高的應(yīng)用價(jià)值。但是由于對(duì)稱加密的局限性,當(dāng)節(jié)點(diǎn)被攻擊者俘獲且沒(méi)有退出網(wǎng)絡(luò)時(shí),攻擊者不但可以假冒被俘獲的節(jié)點(diǎn)欺騙其它節(jié)點(diǎn),還可以假冒其它節(jié)點(diǎn)欺騙被俘獲的節(jié)點(diǎn)。如何解決節(jié)點(diǎn)俘獲之后的假冒攻擊,設(shè)計(jì)一個(gè)具有強(qiáng)安全的公鑰認(rèn)證協(xié)議是今后的研究方向。
表3 功能性比較
[1]Dwoskin J,Xu D,Huang J,et al.Secure key management architecture against sensor-node fabrication attacks [C]//Global Telecommunications Conference. IEEE, 2007:166-171.
[2]Karl H,Willig A.Protocols and architectures for wireless sensor networks[M].Wiley,2007.
[3]Du X,Xiao Y,Guizani M,et al.An effective key management scheme for heterogeneous sensor networks[J].Ad Hoc Networks,2007,5 (1):24-34.
[4]Xiao Y,Rayi V K,Sun B,et al.A survey of key management schemes in wireless sensor networks [J].Computer Communications,2007,30 (11):2314-2341.
[5]Liu A,Ning P.TinyECC:A configurable library for elliptic curve cryptography in wireless sensor networks[C]//International Conference on Information Processing in Sensor Networks.IEEE,2008:245-256.
[6]Zhou Y,Zhang Y,F(xiàn)ang Y.Access control in wireless sensor networks[J].Ad Hoc Networks,2007,5 (1):3-13.
[7]Huang H F.A novel access control protocol for secure sensor networks[J].Computer Standard and Interfaces,2009,31(2):272-276.
[8]Kim H S,Lee S W.Enhanced novel access control protocol over wireless sensor networks[J].IEEE Transactions on Consumer Electronics,2009,55 (2):492-498.
[9]Lee H,Shin K,Lee D H.PACPs:Practical access control protocols for wireless sensor networks[J].IEEE Transactions on Consumer Electronics,2012,58 (2):491-499.
[10]Zeng P,Choo K K R,Sun D Z.On the security of an enhanced novel access control protocol for wireless sensor networks [J].IEEE Transactions on Consumer Electronics,2010,56 (2):566-569.