王玉霞,王 華,李鳳銀,郭效泉
(曲阜師范大學,山東 日照 276826)
智能家居中的智能設備通常由用戶的手機控制,主要通過無線通信的方式進行數據傳輸。物聯網環境下,數據是純文本還是加密文本,決定了數據傳輸是否安全。一般情況下,用于數據傳輸的文本加密只使用相對簡單的加密算法。攻擊者可以通過攔截傳輸信息的數據包獲取用戶的私密信息,造成用戶隱私泄露。
針對上述問題,文章提出在智能家居環境下的客戶端與服務器間的相互認證和密鑰協商方案。該方案共包含3個實體,分別是客戶端、服務器和第三方可信機構。客戶端與服務器端通過向第三方可信機構注冊獲取私鑰,然后根據各自的公私鑰對信息簽名進行身份認證,認證成功后可獲取會話密鑰,從而實現客戶端與服務器端的安全通信。方案模型如圖1所示。

圖1 方案模型
令G1、G2是兩個q階循環群。一個雙線性對e是一個從G1×G1→G2的雙線性映射,滿足以下性質[1]。
(1)雙線性。對于任意兩個元素P,Q∈G1,且a,b∈Zq*,存在e(aP,bQ)=e(bP,aQ)=e(P,Q)ab。
(2)非退化性。存在P,Q∈G1,滿足e(P,Q)≠1。
(3)可計算性。存在有效的算法,使對任意的P,Q∈G1,均可計算e(P,Q)。
橢圓曲線密碼學(Elliptic Curve Cryptography,ECC)是基于有限域上橢圓曲線的離散對數計算困難性。換句話說,離散對數問題就是乘方過程的求逆。
橢圓曲線離散對數問題(Elliptic Curve Discrete Logarithm Problem,ECCDLP)定義如下:給定素數p和橢圓曲線E,P和Q是曲線E上的兩個點,令Q=kP,在P、Q已知的情況下,求出小于p的正整數k。可以證明:已知k和P計算Q比較容易,而由Q和P計算k則是困難的,通常比離散對數問題更難解[2]。
給定循環群G,階為素數q,P∈G為群G上的一個任意生成元,計算Diffie-Hellman問題定義為:對于隨機選擇的a,b∈Zq*,給定aP、bP,計算abP是困難的。
本方案共分為3個階段,分別為系統初始化、匿名注冊和身份認證[3]。方案中涉及的符號定義如表1所示。

表1 符號定義
可信機構選取隨機數s∈Zq*作為主密鑰,秘密保存。設G1和G2是素數q階的兩個加法循環群,P是G1的生成元。計算系統公鑰Ppub=sP,選擇3個哈希函數,即[4]:

e為G1×G1→G2的雙線性映射。由可信機構公開系統參數{G1,G2,q,P,H1,H2,H3,e,Ppub}。
2.2.1 客戶端注冊
該階段客戶端用假名向可信機構申請注冊,可信機構為客戶端生成基于假名的私鑰完成注冊。



圖2 客戶端注冊階段
注冊成功后,客戶端獲取基于其假名的私鑰,進一步計算得到基于真實身份的私鑰。該私鑰僅客戶端知道,用于后續與服務器的身份認證。
2.2.2 服務器端注冊
該階段服務器用假名向可信機構申請注冊,可信機構為服務器生成基于假名的私鑰完成注冊。

注冊成功后,服務器獲取基于其假名的私鑰,進一步計算得到基于真實身份的私鑰。該私鑰僅服務器知道,用于后續與客戶端的身份認證。

圖3 服務器注冊階段
本階段客戶端與服務器相互進行身份驗證。客戶端將計算的信息用公私鑰簽名后發送給服務器進行身份驗證。同樣的方式,服務器生成的信息經過公私鑰簽名發送給客戶端進行驗證。驗證成功后獲取會話密鑰,用于后續通信。
2.3.1 服務器端驗證用戶的身份
客戶端選取隨機數a∈Zq*,計算Mc=a·PKc,Nc=a·P,選取時間戳T1,計算h1=H3(Mc,T1,Nc)。計算簽名Sc=SKc+(a+h1)·Mc,客戶端將計算的Mc、Nc、Sc、h1以及時間戳T1發送給服務器。
服務器收到客戶端發來的消息后,檢查時間戳的有效性。若時間戳無效,拒絕請求。若時間戳有效,驗證簽名的有效性,即驗證e(P,Sc)=e(Ppub,PKc)*e(Nc,Mc)*e(h1P,Mc)是否相等。若相等,則身份驗證成功,服務器計算會話密鑰;否則,驗證失敗。
2.3.2 客戶端認證服務器的身份
服務器選擇隨機數b∈Zq*,計算Ms=b·PKs,Ns=b·P,選取時間戳T2,計算h2=H3(Ms,T2,Ns)。計算簽名Ss=SKs+(b+h2)Ms,服務器將計算的Ms、Ns、Ss、h2以及時間戳T2發送給客戶端,同時服務器計算會話密鑰SSK=b·Nc=abP。
客戶端收到服務器發來的消息后,先檢查時間戳的有效性。若時間戳無效,拒絕請求。若時間戳有效,驗證簽名的有效性,即驗證e(P,Ss)=e(Ppub,PKs)*e(Ns,Ms)*e(h2P,Ms)是否相等。若不相等,驗證失敗;若相等,則身份驗證成功,客戶端計算會話密鑰SSK=a·Ns=abP。
至此,客戶端與服務器認證了彼此身份,客戶端與服務器便可通過會話密鑰加密信息進行后續的數據傳輸。驗證如圖4所示。

圖4 客戶端-服務器身份認證階段
匿名性。客戶端與服務器向可信機構申請注冊時將自己的身份用隨機數加密。即使被攻擊者截獲,攻擊者也無法猜出客戶端與服務器的真實身份。
重放攻擊。方案引入時間戳,因此可抵抗重放攻擊。
相互認證。方案中客戶端與服務器使用其公私鑰和隨機數對信息進行簽名來驗證雙方的身份。攻擊者不知道客戶端與服務器的私鑰以及選取的隨機數。因此,只有具有正確私鑰和隨機數的合法用戶才能計算簽名。
中間人攻擊。客戶端和服務器向可信機構申請注冊時,客戶端與服務器分別與可信機構協商會話密鑰,可信機構將計算的私鑰用會話密鑰加密傳給客戶端與服務器,客戶端與服務器分別用各自的會話密鑰解密得到私鑰,因此中間人無法獲取用戶和客戶端的私鑰。
會話密鑰安全性。會話密鑰是由客戶端和服務器分別隨機選取隨機數計算得出的。要想獲取會話密鑰,必須先解決CDH困難問題。因此,該方案具有會話密鑰安全性。
在預估方案的計算成本前,先定義一些符號:PM表示橢圓曲線上的點乘法運算,PA代表橢圓曲線上的點加法運算,H代表散列運算運算。效率分析比較結果如表2所示,可見所提方案比其余方案計算成本更低,效率更高。

表2 效率分析對比
本文提出了一個在互聯網智能家庭環境中的匿名身份認證方案,并進行了高效的認證和密鑰協商,支持用戶的匿名性。經安全性分析,該方案可抵抗重放攻擊和中間人攻擊,且更具輕量級。