楊鵬飛,李雅斌,嚴(yán)翌瑄
(長(zhǎng)安大學(xué) 信息工程學(xué)院,西安 710064)
物聯(lián)網(wǎng)[1]技術(shù)的發(fā)展,極大地便利了人們的生活,人們足不出戶就可以獲取千里之外的傳感器收集的實(shí)時(shí)數(shù)據(jù),然而,由于數(shù)據(jù)在公開信道中傳輸?shù)淖匀惶匦?使得信息被截獲,篡改等事件時(shí)常發(fā)生,為了保證在公開信道中傳輸數(shù)據(jù)的安全性,研究人員將認(rèn)證和密鑰協(xié)商技術(shù)應(yīng)用于物聯(lián)網(wǎng)環(huán)境中.
1976 年,D iffie-Hellman 第一次提出密鑰協(xié)商的概念[2],隨后,研究人員在其思想影響下,提出了大量的密鑰協(xié)商方案[3–9];然而,現(xiàn)有的大多數(shù)方案存在以下兩個(gè)問題:(1)很多方案在傳感器端采用昂貴的雙線性對(duì)或橢圓曲線密碼學(xué)技術(shù),這不太適合于資源受限的傳感器;(2)大多數(shù)方案為一個(gè)用戶和一個(gè)傳感器密鑰協(xié)商方案,當(dāng)用戶想要訪問n個(gè)傳感器數(shù)據(jù)時(shí),需要將協(xié)議運(yùn)行n次,這樣極大地增加了用戶端的負(fù)擔(dān),浪費(fèi)了計(jì)算和通信資源.
基于以上存在問題,本文提出了一個(gè)一對(duì)多認(rèn)證和密鑰協(xié)商方案,其中傳感器端使用了異或,哈希等計(jì)算代價(jià)較小的操作,并且實(shí)現(xiàn)了一個(gè)用戶和n個(gè)傳感器同時(shí)進(jìn)行密鑰協(xié)商.
令q是一個(gè)大素?cái)?shù),Fq表示階數(shù)為q的有限域,Fq上的橢圓曲線E定義為滿足等式y(tǒng)2=x3+ax+bmodp的點(diǎn) (x,y)的集合,其中,a,b滿足 4a3+27b2≠0 modq,無窮遠(yuǎn)點(diǎn)O和E上點(diǎn)形成循環(huán)加法群 G,階數(shù)是q,生成元是P.
橢圓曲線計(jì)算性 D iffie-Hellman 問題(E CCDHP)假設(shè):給定任意P,aP,bP∈G,(a,b∈Zq*),在多項(xiàng)式時(shí)間算法內(nèi)很難算出abP∈G.
哈希 (Hash) 函數(shù)是一個(gè)確定的函數(shù),它可以將任意長(zhǎng)度的消息映射為固定長(zhǎng)度.
哈希函數(shù)特點(diǎn):
(1)輸入可變:輸入可以是任意位數(shù)的數(shù)據(jù).
(2)輸出定長(zhǎng):輸出的長(zhǎng)度是固定位數(shù).
(3)單向性:對(duì)于任意消息M,在多項(xiàng)式時(shí)間內(nèi)計(jì)算H(M)是可行的;相反,已有任意h=H(M),在多項(xiàng)式時(shí)間內(nèi)計(jì)算M是不可行的.
所提方案的網(wǎng)絡(luò)模型如圖1所示,模型中包含3 個(gè)實(shí)體,分別是網(wǎng)關(guān)GWN,用戶Ui,傳感器S j(j=1,2,···,n).
圖1 網(wǎng)絡(luò)模型圖
(1)GWN:表示一個(gè)可信實(shí)體,主要負(fù)責(zé)用戶Ui和傳感器Sj(j=1,2,···,n)的注冊(cè),同時(shí)協(xié)助用戶Ui和傳感器S j完成相互認(rèn)證.
(2)Ui:表示第i個(gè)用戶,在GWN處注冊(cè)獲得認(rèn)證信息,通過認(rèn)證信息證明自己的合法身份,經(jīng)過GWN認(rèn)證后,可以訪問傳感器數(shù)據(jù).
(3)Sj:表示第j個(gè)傳感器,向GWN注冊(cè)獲得認(rèn)證信息,利用認(rèn)證信息證明身份的合法性,經(jīng)過GWN認(rèn)證后,可以向用戶提供相應(yīng)數(shù)據(jù).
匿名性:方案應(yīng)該保證攻擊者不能通過在公開信道中傳輸?shù)南⒔衣队脩艋騻鞲衅鞯恼鎸?shí)身份.
不可追蹤性:方案應(yīng)該滿足不可追蹤性,即攻擊者無法將同一實(shí)體在公開信道中傳輸?shù)南㈥P(guān)聯(lián)在一起.
用戶仿冒攻擊:攻擊者不能偽造用戶的登錄信息,成功通過網(wǎng)關(guān)驗(yàn)證,并與傳感器建立會(huì)話密鑰.
網(wǎng)關(guān)仿冒攻擊:攻擊者不能偽造網(wǎng)關(guān)信息,完成與用戶或傳感器的雙向認(rèn)證.
傳感器仿冒攻擊:攻擊者不能偽造傳感器秘密信息,成功通過網(wǎng)關(guān)驗(yàn)證,并與用戶建立會(huì)話密鑰.
重放攻擊:攻擊者不能將之前在公開信道中傳輸?shù)南⒅匦聜鬏?從而誤導(dǎo)其他實(shí)體認(rèn)為該消息為合法實(shí)體所發(fā).
中間人攻擊:攻擊者不能在用戶和網(wǎng)關(guān),網(wǎng)關(guān)和傳感器之間發(fā)送消息,讓通信雙方誤以為在與合法實(shí)體通信.
拒絕服務(wù)攻擊:攻擊者不能向網(wǎng)關(guān)發(fā)送大量的無用消息來造成網(wǎng)關(guān)癱瘓.
智能卡被盜攻擊:敵手即使獲得合法用戶的智能卡,也無法仿冒用戶發(fā)起認(rèn)證和密鑰協(xié)商請(qǐng)求.
網(wǎng)關(guān)GWN選擇一個(gè)階數(shù)為q的群 G,生成元是P,選擇s∈Zq*作為自己的私鑰,計(jì)算相對(duì)應(yīng)公鑰S=s·P.
GWN選擇哈希函數(shù)h(·):{0,1}*→Zq*,公開系統(tǒng)參數(shù):(P,G,q,S,h(·)).
用戶Ui要想成為合法授權(quán)用戶,必須要和網(wǎng)關(guān)GWN注冊(cè).具體過程如圖2所示.
圖2 用戶注冊(cè)
(1)Ui選擇自己的身份UIDi,密碼PWi和隨機(jī)數(shù)t∈Zq*,計(jì)算BPWi=h(PWi||t),將(UIDi,BPWi) 通過安全信道發(fā)送給GWN.
(2)GWN收到后,計(jì)算a=h(UIDi||s),EPWi=BPWi⊕a,在智能卡中存儲(chǔ) (EPWi,P,h(·)),最后,將智能卡安全地發(fā)送給Ui.
(3)Ui收到后,輸入身份UIDi和密碼PWi,計(jì)算A=h(UIDi||PWi)⊕t,B=h(UIDi||BPWi||t),存儲(chǔ) (A,B),此時(shí),智能卡中包含 (A,B,EPWi,P,h(·)) 信息.
所有傳感器需要和網(wǎng)關(guān)GWN注冊(cè).具體過程如圖3所示.
圖3 傳感器注冊(cè)
(1)傳感器Sj(j=1,2,···,n) 選擇自己的身份S IDj,通過安全信道發(fā)送給網(wǎng)關(guān)GWN.
(2)GWN收到后,選擇一個(gè)隨機(jī)數(shù)rgwn-s∈Zq*作為所有傳感器的共同密鑰,同時(shí)計(jì)算傳感器私鑰skj=h(S IDj||s),將 (rgwn-s,skj) 安全地發(fā)送給Sj.
(3)Sj收到后,將 (rgwn-s,skj) 存儲(chǔ)在自己的內(nèi)存中.
當(dāng)用戶Ui想要訪問傳感器Sj(j=1,2,···,n)的數(shù)據(jù)時(shí),必須與所有傳感器協(xié)商出會(huì)話密鑰.具體過程如圖4所示.
圖4 相互認(rèn)證和密鑰協(xié)商
(1)Ui輸 入身份UIDi,密碼PWi,計(jì)算t=A⊕h(UIDi||PWi),BPWi=h(PWi||t),B′=h(UIDi||BPWi||t),驗(yàn)證等式B′=B是否成立,若不成立,說明輸入的身份或密碼有錯(cuò)誤;提示用戶輸入正確的身份和密碼;否則,Ui選擇隨機(jī)數(shù)b∈Zq*,時(shí)間戳TS1,計(jì)算a=EPWi⊕BPWi,M1=b·P,pk=h(b·S),c=h(a||TS1) ,M2=UIDi⊕h(M1||pk||TS1),M3=h(UIDi||GID||a||TS1),通過公開信道發(fā)送消息 (M1,M2,M3,TS1) 到網(wǎng)關(guān)GWN.(2)GWN收 到消息后,檢查是否|TS1-TS′1|≤ΔTS,成立則繼續(xù)計(jì)算pk=h(sM1),UID′i=M2⊕h(M1||pk||TS1),a′=h(UID′i||s),M3′=h(UID′i||GID||a′||TS1),驗(yàn)證等式M3′=M3是否成立,若成立則選擇時(shí)間戳TS2,計(jì)算c=h(a′||TS1),M4=rgwn-s⊕c,M5=UID′i⊕h(rgwn-s),M6=h(UID′i||c||TS2),最后,GWN將消息(M4,M5,M6,TS2)廣播給所有傳感器.
(3)傳感器S j收到消息后,檢查是否|TS2-TS′2|≤ΔTS,計(jì) 算c′=M4⊕rgwn-s,UID′i=M5⊕h(rgwn-s),M6′=h(UID′i||c′||TS2),驗(yàn)證等式M6′=M6是否成立,若成立則選擇時(shí)間戳TS3,計(jì)算M7=rgwn-s⊕S IDj,M8=h(rgwn-s||S IDj||skj||TS3),傳感器將消息(M7,M8,TS3) 發(fā)送給GWN.
(4)GWN收到消息后,檢查是否|TS3-TS′3|≤ΔTS,計(jì)算S ID′j=M7⊕rgwn-s,接著驗(yàn)證傳感器的合法性,計(jì)算skj=h(S IDj||s)(j=1,2···n),M8′=h(rgwn-s||S IDj||skj||TS3),驗(yàn)證是否M8′=M8;若成立,則說明傳感器是合法的.GWN選擇時(shí)間戳TS4,TS5,計(jì)算M9=h(K||rgwn-s||TS4),M10=M9⊕rgwn-s,S K=h(UID′i||c||GID||M9),M11=h(S K||M9||rgwn-s||TS4),M12=M9⊕h(pk||TS5),M13=h(S K||M9||TS5),廣播消息(M10,M11,TS4) 給所有傳感器,發(fā)送消息 (M12,M13,TS5) 給Ui.
(5)Sj收到消息后,檢查是否|TS4-TS4′|≤ΔTS,成立則計(jì)算M9′=M10⊕rgwn-s,會(huì)話密鑰S K=h(UID′i||c′||GID||M9′),驗(yàn)證等式M1′1=h(S K||M9′||rgwn-s||TS4)是否成立.
(6)Ui收到消息后,檢查是否|TS5-TS5′|≤ΔTS,成立則繼續(xù)計(jì)算M9′=M12⊕h(pk||TS5),S K=h(UIDi||c||GID||M9′),驗(yàn)證M1′3=h(S K||M9′||TS5).
通過上述過程,用戶Ui和所有傳感器之間協(xié)商出共同的會(huì)話密鑰S K.此時(shí),用戶Ui就可以訪問所有傳感器數(shù)據(jù)了.
本小節(jié)將分析第1.5 節(jié)中所給的安全性需求.
用戶匿名性:方案中,用戶身份被pk=bsP和h(rgwn-s) 保護(hù),只有知道主私鑰s,隨機(jī)數(shù)b或rgwn-s才能計(jì)算出用戶身份UIDi,因此,攻擊者不可能知道用戶身份,所以,該方案提供了用戶匿名性.
用戶不可追蹤性:方案中,用戶身份被pk=bsP和時(shí)間戳TS1保護(hù),隨機(jī)數(shù)b和TS1在每次認(rèn)證和密鑰協(xié)商過程中都是變化的,因此不能將消息關(guān)聯(lián)起來,所以,方案提供了用戶不可追蹤性.
傳感器匿名性:傳感器S j的身份被共同密鑰rgwn-s保護(hù),只有網(wǎng)關(guān)GWN和合法傳感器才擁有rgwn-s,因此,方案提供了傳感器匿名性.
用戶仿冒攻擊:方案中,只有正確輸入用戶的身份和密碼才能通過智能卡認(rèn)證,因此,除授權(quán)用戶外,其他實(shí)體不能通過認(rèn)證.
網(wǎng)關(guān)仿冒攻擊:只有擁有主私鑰s才能仿冒網(wǎng)關(guān),然而s只有網(wǎng)關(guān)知道,所以,其他實(shí)體無法仿冒網(wǎng)關(guān).
傳感器仿冒攻擊:(1)傳感器外部仿冒攻擊:未授權(quán)傳感器想要仿冒授權(quán)傳感器,必須知道共同密鑰rgwn-s和想要仿冒傳感器的私鑰skj;(2)傳感器內(nèi)部仿冒攻擊:當(dāng)授權(quán)傳感器想要仿冒網(wǎng)絡(luò)模型中的其他傳感器,必須知道想要仿冒傳感器的私鑰skj;顯然,其他實(shí)體是無法得到這些秘密值,因此方案可以抵抗傳感器仿冒攻擊.
重放攻擊:方案中傳輸?shù)南⒅卸及藭r(shí)間戳TSi,因此所提方案可以抵抗重放攻擊.
中間人攻擊:要發(fā)起中間人攻擊需要知道實(shí)體的秘密信息,但攻擊者無法獲得這些信息,因此,方案可以抵抗中間人攻擊.
拒絕服務(wù)攻擊:當(dāng)攻擊者發(fā)來大量消息時(shí),實(shí)體首先會(huì)檢查其中包含的時(shí)間戳TSi,當(dāng)時(shí)間戳無效時(shí),就會(huì)丟棄消息,因此可以抵抗拒絕服務(wù)攻擊.
智能卡被盜攻擊:方案中,智能卡中含有信息(A,B,EPWi,P,h(·)),攻擊者需要得到a來發(fā)起協(xié)商請(qǐng)求,然而a被UIDi,PWi保護(hù),攻擊者無法獲得UIDi和PWi,所以方案可以抵抗智能卡被盜攻擊.
本小節(jié)將所提方案與文獻(xiàn)[12–15]進(jìn)行功能比較.如表1,其中,R1:相互認(rèn)證;R2:用戶匿名性;R3:用戶不可追蹤性;R4:傳感器匿名性;R5:用戶仿冒攻擊;R6:網(wǎng)關(guān)仿冒攻擊;R7:傳感器外部仿冒攻擊;R8:傳感器內(nèi)部仿冒攻擊;R9:重放攻擊;R10:中間人攻擊;R11:拒絕服務(wù)攻擊;R12:一對(duì)多方案.從表1中可以看出,文獻(xiàn)[12–14]均為一個(gè)用戶和一個(gè)傳感器密鑰協(xié)商方案,且文獻(xiàn)[12]不滿足用戶匿名性,文獻(xiàn)[14]不能抵抗拒絕服務(wù)攻擊,文獻(xiàn)[15]雖然為一個(gè)用戶和多個(gè)傳感器密鑰協(xié)商方案,但不能抵抗傳感器內(nèi)部仿冒攻擊.
表1 功能比較
表2列出了所提方案與文獻(xiàn)[12–15]所使用的密碼學(xué)操作運(yùn)行的平均時(shí)間,本文使用MIRACL Crypto SDK[16]得到上述數(shù)據(jù),運(yùn)行環(huán)境為2.53 GHz,i7CPU和4 GB 內(nèi)存的6 4 位W indows 10 操作系統(tǒng).表3給出了所提方案和文獻(xiàn)[12–15]計(jì)算代價(jià)比較,圖5給出了計(jì)算代價(jià)與傳感器數(shù)量關(guān)系圖,從圖中可以看出:文獻(xiàn)[13,14]訪問一個(gè)傳感器時(shí),計(jì)算代價(jià)已經(jīng)超過了所提方案,雖然文獻(xiàn)[12,15]在訪問少量傳感器時(shí),計(jì)算代價(jià)小于所提方案,但當(dāng)傳感器數(shù)量分別超過30和91 時(shí),計(jì)算代價(jià)將會(huì)超過所提方案,因此,所提方案更適合于多傳感器場(chǎng)景.
圖5 計(jì)算代價(jià)比較
表2 密碼運(yùn)算運(yùn)行時(shí)間
表3 具體方案計(jì)算代價(jià)對(duì)比 (ms)
為了更好地比較通信代價(jià),本文做了如下假定:假定ECC中|G|的長(zhǎng)度為160 bits;身份,哈希函數(shù)的輸出,隨機(jī)數(shù)的長(zhǎng)度均為160 bits;對(duì)稱加密的密文長(zhǎng)度為128 bits;時(shí)間戳的長(zhǎng)度為32 bits;表4給出了所提方案與文獻(xiàn)[12–15]通信代價(jià)比較,圖6給出了通信代價(jià)與傳感器數(shù)量關(guān)系圖;從圖中可以看出:隨著傳感器數(shù)量的增加,所提方案的通信代價(jià)低于文獻(xiàn)[12–14],雖然所提方案的通信代價(jià)高于文獻(xiàn)[15],但在功能和計(jì)算代價(jià)優(yōu)于文獻(xiàn)[15].
圖6 通信代價(jià)比較
表4 具體方案通信代價(jià)對(duì)比 (bits)
本文利用橢圓曲線密碼學(xué)技術(shù),異或等操作提出了一個(gè)輕量級(jí)的一對(duì)多認(rèn)證和密鑰協(xié)商方案,在網(wǎng)關(guān)的幫助下,用戶和多個(gè)傳感器之間實(shí)現(xiàn)了相互認(rèn)證并且協(xié)商出對(duì)稱加密會(huì)話密鑰,減少了用戶端的計(jì)算代價(jià)和通信代價(jià);預(yù)共享共同密鑰方法的使用使得所提方案具有擴(kuò)展性,更符合現(xiàn)代物聯(lián)網(wǎng)場(chǎng)景,性能比較表明,所提方案在計(jì)算和通信代價(jià)方面更為高效.接下來的研究工作是如何實(shí)現(xiàn)用戶端是多個(gè)用戶的認(rèn)證和密鑰協(xié)商方案,這樣可以進(jìn)一步減少傳感器端的計(jì)算和通信代價(jià).