楊鵬飛,李雅斌,嚴翌瑄
(長安大學 信息工程學院,西安 710064)
物聯網[1]技術的發展,極大地便利了人們的生活,人們足不出戶就可以獲取千里之外的傳感器收集的實時數據,然而,由于數據在公開信道中傳輸的自然特性,使得信息被截獲,篡改等事件時常發生,為了保證在公開信道中傳輸數據的安全性,研究人員將認證和密鑰協商技術應用于物聯網環境中.
1976 年,D iffie-Hellman 第一次提出密鑰協商的概念[2],隨后,研究人員在其思想影響下,提出了大量的密鑰協商方案[3–9];然而,現有的大多數方案存在以下兩個問題:(1)很多方案在傳感器端采用昂貴的雙線性對或橢圓曲線密碼學技術,這不太適合于資源受限的傳感器;(2)大多數方案為一個用戶和一個傳感器密鑰協商方案,當用戶想要訪問n個傳感器數據時,需要將協議運行n次,這樣極大地增加了用戶端的負擔,浪費了計算和通信資源.
基于以上存在問題,本文提出了一個一對多認證和密鑰協商方案,其中傳感器端使用了異或,哈希等計算代價較小的操作,并且實現了一個用戶和n個傳感器同時進行密鑰協商.
令q是一個大素數,Fq表示階數為q的有限域,Fq上的橢圓曲線E定義為滿足等式y2=x3+ax+bmodp的點 (x,y)的集合,其中,a,b滿足 4a3+27b2≠0 modq,無窮遠點O和E上點形成循環加法群 G,階數是q,生成元是P.
橢圓曲線計算性 D iffie-Hellman 問題(E CCDHP)假設:給定任意P,aP,bP∈G,(a,b∈Zq*),在多項式時間算法內很難算出abP∈G.
哈希 (Hash) 函數是一個確定的函數,它可以將任意長度的消息映射為固定長度.
哈希函數特點:
(1)輸入可變:輸入可以是任意位數的數據.
(2)輸出定長:輸出的長度是固定位數.
(3)單向性:對于任意消息M,在多項式時間內計算H(M)是可行的;相反,已有任意h=H(M),在多項式時間內計算M是不可行的.
所提方案的網絡模型如圖1所示,模型中包含3 個實體,分別是網關GWN,用戶Ui,傳感器S j(j=1,2,···,n).

圖1 網絡模型圖
(1)GWN:表示一個可信實體,主要負責用戶Ui和傳感器Sj(j=1,2,···,n)的注冊,同時協助用戶Ui和傳感器S j完成相互認證.
(2)Ui:表示第i個用戶,在GWN處注冊獲得認證信息,通過認證信息證明自己的合法身份,經過GWN認證后,可以訪問傳感器數據.
(3)Sj:表示第j個傳感器,向GWN注冊獲得認證信息,利用認證信息證明身份的合法性,經過GWN認證后,可以向用戶提供相應數據.
匿名性:方案應該保證攻擊者不能通過在公開信道中傳輸的消息揭露用戶或傳感器的真實身份.
不可追蹤性:方案應該滿足不可追蹤性,即攻擊者無法將同一實體在公開信道中傳輸的消息關聯在一起.
用戶仿冒攻擊:攻擊者不能偽造用戶的登錄信息,成功通過網關驗證,并與傳感器建立會話密鑰.
網關仿冒攻擊:攻擊者不能偽造網關信息,完成與用戶或傳感器的雙向認證.
傳感器仿冒攻擊:攻擊者不能偽造傳感器秘密信息,成功通過網關驗證,并與用戶建立會話密鑰.
重放攻擊:攻擊者不能將之前在公開信道中傳輸的消息重新傳輸,從而誤導其他實體認為該消息為合法實體所發.
中間人攻擊:攻擊者不能在用戶和網關,網關和傳感器之間發送消息,讓通信雙方誤以為在與合法實體通信.
拒絕服務攻擊:攻擊者不能向網關發送大量的無用消息來造成網關癱瘓.
智能卡被盜攻擊:敵手即使獲得合法用戶的智能卡,也無法仿冒用戶發起認證和密鑰協商請求.
網關GWN選擇一個階數為q的群 G,生成元是P,選擇s∈Zq*作為自己的私鑰,計算相對應公鑰S=s·P.
GWN選擇哈希函數h(·):{0,1}*→Zq*,公開系統參數:(P,G,q,S,h(·)).
用戶Ui要想成為合法授權用戶,必須要和網關GWN注冊.具體過程如圖2所示.

圖2 用戶注冊
(1)Ui選擇自己的身份UIDi,密碼PWi和隨機數t∈Zq*,計算BPWi=h(PWi||t),將(UIDi,BPWi) 通過安全信道發送給GWN.
(2)GWN收到后,計算a=h(UIDi||s),EPWi=BPWi⊕a,在智能卡中存儲 (EPWi,P,h(·)),最后,將智能卡安全地發送給Ui.
(3)Ui收到后,輸入身份UIDi和密碼PWi,計算A=h(UIDi||PWi)⊕t,B=h(UIDi||BPWi||t),存儲 (A,B),此時,智能卡中包含 (A,B,EPWi,P,h(·)) 信息.
所有傳感器需要和網關GWN注冊.具體過程如圖3所示.

圖3 傳感器注冊
(1)傳感器Sj(j=1,2,···,n) 選擇自己的身份S IDj,通過安全信道發送給網關GWN.
(2)GWN收到后,選擇一個隨機數rgwn-s∈Zq*作為所有傳感器的共同密鑰,同時計算傳感器私鑰skj=h(S IDj||s),將 (rgwn-s,skj) 安全地發送給Sj.
(3)Sj收到后,將 (rgwn-s,skj) 存儲在自己的內存中.
當用戶Ui想要訪問傳感器Sj(j=1,2,···,n)的數據時,必須與所有傳感器協商出會話密鑰.具體過程如圖4所示.

圖4 相互認證和密鑰協商
(1)Ui輸 入身份UIDi,密碼PWi,計算t=A⊕h(UIDi||PWi),BPWi=h(PWi||t),B′=h(UIDi||BPWi||t),驗證等式B′=B是否成立,若不成立,說明輸入的身份或密碼有錯誤;提示用戶輸入正確的身份和密碼;否則,Ui選擇隨機數b∈Zq*,時間戳TS1,計算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),通過公開信道發送消息 (M1,M2,M3,TS1) 到網關GWN.(2)GWN收 到消息后,檢查是否|TS1-TS′1|≤ΔTS,成立則繼續計算pk=h(sM1),UID′i=M2⊕h(M1||pk||TS1),a′=h(UID′i||s),M3′=h(UID′i||GID||a′||TS1),驗證等式M3′=M3是否成立,若成立則選擇時間戳TS2,計算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,計 算c′=M4⊕rgwn-s,UID′i=M5⊕h(rgwn-s),M6′=h(UID′i||c′||TS2),驗證等式M6′=M6是否成立,若成立則選擇時間戳TS3,計算M7=rgwn-s⊕S IDj,M8=h(rgwn-s||S IDj||skj||TS3),傳感器將消息(M7,M8,TS3) 發送給GWN.
(4)GWN收到消息后,檢查是否|TS3-TS′3|≤ΔTS,計算S ID′j=M7⊕rgwn-s,接著驗證傳感器的合法性,計算skj=h(S IDj||s)(j=1,2···n),M8′=h(rgwn-s||S IDj||skj||TS3),驗證是否M8′=M8;若成立,則說明傳感器是合法的.GWN選擇時間戳TS4,TS5,計算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) 給所有傳感器,發送消息 (M12,M13,TS5) 給Ui.
(5)Sj收到消息后,檢查是否|TS4-TS4′|≤ΔTS,成立則計算M9′=M10⊕rgwn-s,會話密鑰S K=h(UID′i||c′||GID||M9′),驗證等式M1′1=h(S K||M9′||rgwn-s||TS4)是否成立.
(6)Ui收到消息后,檢查是否|TS5-TS5′|≤ΔTS,成立則繼續計算M9′=M12⊕h(pk||TS5),S K=h(UIDi||c||GID||M9′),驗證M1′3=h(S K||M9′||TS5).
通過上述過程,用戶Ui和所有傳感器之間協商出共同的會話密鑰S K.此時,用戶Ui就可以訪問所有傳感器數據了.
本小節將分析第1.5 節中所給的安全性需求.
用戶匿名性:方案中,用戶身份被pk=bsP和h(rgwn-s) 保護,只有知道主私鑰s,隨機數b或rgwn-s才能計算出用戶身份UIDi,因此,攻擊者不可能知道用戶身份,所以,該方案提供了用戶匿名性.
用戶不可追蹤性:方案中,用戶身份被pk=bsP和時間戳TS1保護,隨機數b和TS1在每次認證和密鑰協商過程中都是變化的,因此不能將消息關聯起來,所以,方案提供了用戶不可追蹤性.
傳感器匿名性:傳感器S j的身份被共同密鑰rgwn-s保護,只有網關GWN和合法傳感器才擁有rgwn-s,因此,方案提供了傳感器匿名性.
用戶仿冒攻擊:方案中,只有正確輸入用戶的身份和密碼才能通過智能卡認證,因此,除授權用戶外,其他實體不能通過認證.
網關仿冒攻擊:只有擁有主私鑰s才能仿冒網關,然而s只有網關知道,所以,其他實體無法仿冒網關.
傳感器仿冒攻擊:(1)傳感器外部仿冒攻擊:未授權傳感器想要仿冒授權傳感器,必須知道共同密鑰rgwn-s和想要仿冒傳感器的私鑰skj;(2)傳感器內部仿冒攻擊:當授權傳感器想要仿冒網絡模型中的其他傳感器,必須知道想要仿冒傳感器的私鑰skj;顯然,其他實體是無法得到這些秘密值,因此方案可以抵抗傳感器仿冒攻擊.
重放攻擊:方案中傳輸的消息中都包含了時間戳TSi,因此所提方案可以抵抗重放攻擊.
中間人攻擊:要發起中間人攻擊需要知道實體的秘密信息,但攻擊者無法獲得這些信息,因此,方案可以抵抗中間人攻擊.
拒絕服務攻擊:當攻擊者發來大量消息時,實體首先會檢查其中包含的時間戳TSi,當時間戳無效時,就會丟棄消息,因此可以抵抗拒絕服務攻擊.
智能卡被盜攻擊:方案中,智能卡中含有信息(A,B,EPWi,P,h(·)),攻擊者需要得到a來發起協商請求,然而a被UIDi,PWi保護,攻擊者無法獲得UIDi和PWi,所以方案可以抵抗智能卡被盜攻擊.
本小節將所提方案與文獻[12–15]進行功能比較.如表1,其中,R1:相互認證;R2:用戶匿名性;R3:用戶不可追蹤性;R4:傳感器匿名性;R5:用戶仿冒攻擊;R6:網關仿冒攻擊;R7:傳感器外部仿冒攻擊;R8:傳感器內部仿冒攻擊;R9:重放攻擊;R10:中間人攻擊;R11:拒絕服務攻擊;R12:一對多方案.從表1中可以看出,文獻[12–14]均為一個用戶和一個傳感器密鑰協商方案,且文獻[12]不滿足用戶匿名性,文獻[14]不能抵抗拒絕服務攻擊,文獻[15]雖然為一個用戶和多個傳感器密鑰協商方案,但不能抵抗傳感器內部仿冒攻擊.

表1 功能比較
表2列出了所提方案與文獻[12–15]所使用的密碼學操作運行的平均時間,本文使用MIRACL Crypto SDK[16]得到上述數據,運行環境為2.53 GHz,i7CPU和4 GB 內存的6 4 位W indows 10 操作系統.表3給出了所提方案和文獻[12–15]計算代價比較,圖5給出了計算代價與傳感器數量關系圖,從圖中可以看出:文獻[13,14]訪問一個傳感器時,計算代價已經超過了所提方案,雖然文獻[12,15]在訪問少量傳感器時,計算代價小于所提方案,但當傳感器數量分別超過30和91 時,計算代價將會超過所提方案,因此,所提方案更適合于多傳感器場景.

圖5 計算代價比較

表2 密碼運算運行時間

表3 具體方案計算代價對比 (ms)
為了更好地比較通信代價,本文做了如下假定:假定ECC中|G|的長度為160 bits;身份,哈希函數的輸出,隨機數的長度均為160 bits;對稱加密的密文長度為128 bits;時間戳的長度為32 bits;表4給出了所提方案與文獻[12–15]通信代價比較,圖6給出了通信代價與傳感器數量關系圖;從圖中可以看出:隨著傳感器數量的增加,所提方案的通信代價低于文獻[12–14],雖然所提方案的通信代價高于文獻[15],但在功能和計算代價優于文獻[15].

圖6 通信代價比較

表4 具體方案通信代價對比 (bits)
本文利用橢圓曲線密碼學技術,異或等操作提出了一個輕量級的一對多認證和密鑰協商方案,在網關的幫助下,用戶和多個傳感器之間實現了相互認證并且協商出對稱加密會話密鑰,減少了用戶端的計算代價和通信代價;預共享共同密鑰方法的使用使得所提方案具有擴展性,更符合現代物聯網場景,性能比較表明,所提方案在計算和通信代價方面更為高效.接下來的研究工作是如何實現用戶端是多個用戶的認證和密鑰協商方案,這樣可以進一步減少傳感器端的計算和通信代價.