濮光寧,殷鳳梅,侯整風(fēng)
(1.安徽財貿(mào)職業(yè)學(xué)院,安徽 合肥 230601;2. 合肥師范學(xué)院 計算機學(xué)院,安徽 合肥 230601;3.合肥工業(yè)大學(xué) 計算機與信息學(xué)院,安徽 合肥 230009)
傳統(tǒng)的身份認證是基于口令的認證,用戶輸入口令即可完成身份認證。但由于口令很容易被攻擊者竊取,基于口令的認證方案的安全性會受到很大威脅。智能卡易于便攜且成本較低,常常應(yīng)用到身份認證系統(tǒng)中。Huang等人[1]使用了智能卡實現(xiàn)了遠程認證。Das等人[2]將智能卡和口令兩種認證方式組合在一起,提出一種新的身份認證協(xié)議,但He 等人[3]指出方案[2]中的智能卡可能會被第三方攻擊。Yoon和Yoo[4]基于生物特征和智能卡提出多服務(wù)器認證方案,基于生物特征的很多認證方案[5-6]也相繼被提出。He和Wang[7]指出方案[4]容易受智能卡丟失攻擊。2016年,Jung等人[8]提出匿名認證協(xié)議,但Xiong等人[9]指出方案[8]易受智能卡丟失攻擊,且不具備前向安全性。Lei[10]將匿名認證方案應(yīng)用到電子病歷隱私保護中。該方案可以抵抗智能卡丟失攻擊,但不能抵抗內(nèi)部攻擊。
在分析以上方案的基礎(chǔ)上,在單向散列函數(shù)、隨機數(shù)和時間戳基礎(chǔ)上,提出一種基于智能卡的匿名認證方案。該方案在滿足系統(tǒng)安全性的前提下,可以實現(xiàn)用戶和服務(wù)器之間的相互認證,并且可以抵抗智能卡丟失攻擊和內(nèi)部攻擊。
本文方案基于無碰撞的單向散列函數(shù),如SHA-512。對于單向散列函數(shù)H(·)滿足三個特點:
(1)給定x,很容易計算H(x);
(2)知道H(x),很難計算出x;
(3)任意的x1≠x2,可得出H(x1)≠H(x2)。
本文提出的匿名認證方案由用戶、注冊中心和服務(wù)器三方組成,包括四個階段:注冊、登錄、認證和更改口令。
每個用戶Ui都需要先向注冊中心RC注冊。注冊的步驟如下:
①Ui→RC:{IDi,Ai}
Ui選擇自己的身份標識IDi、口令PWi和密鑰Ki,計算Ai=H(IDi||Ki)和Bi=H(IDi||PWi),通過安全信道將注冊信息{IDi,Ai}發(fā)送給注冊中心RC。
②RC→智能卡:{Ci}→Ui
RC收到信息{IDi,Ai}后,計算Ui的認證參數(shù)。RC使用服務(wù)器與注冊中心的共享秘鑰Ksj,計算Ci=H(Ai||Ksj),并將{Ci}存入智能卡,通過安全信道發(fā)送給用戶Ui。
③Ui→智能卡:{Ai,Bi,Ci′,Di}
Ui收到智能卡后,計算Di=H(Ai)⊕Ki和Ci′=Ci⊕H(Ai||Ki),用Ci′代替Ci存入智能卡,并將Ai、Bi和Di也存入智能卡,智能卡中現(xiàn)有存儲信息{Ai,Bi,Ci′,Di}。
方案中使用的符號含義如表1所示。
表1 符號含義
用戶完成注冊并收到RC發(fā)來的智能卡,才能進行登錄操作。登錄的步驟如下:
①Ui→智能卡:{IDi,PWi}
Ui將智能卡插入讀卡器,輸入自己的IDi和PWi。
② 智能卡:返回“登錄成功”或“登錄失敗”
Ui登錄成功后,智能卡使用Ui的匿名身份AIDi申請訪問服務(wù)器Sj,Ui和Sj相互認證成功后,生成共享的會話密鑰。認證的步驟如下:
① 智能卡→Sj:{AIDi,Ai,M2,M3,T1}
智能卡產(chǎn)生隨機數(shù)N1和時間戳T1,計算
和M3=H(AIDi||SIDj||Ai||M1||N1||T1),并將{AIDi,Ai,M2,M3,T1}發(fā)送給Sj。
②Sj驗證Ui身份
Sj收到信息后,檢查T1有效性。若T1無效,Sj中斷認證。若T1有效,Sj計算M4=H(Ai||Ksj)、M5=M2⊕M4和M6=H(AIDi||SIDj||Ai||M4||M5||T1)。
判斷M6與M3是否相等。若不等,Sj中斷認證。若相等,認為Ui是合法用戶,Sj繼續(xù)進行下面的認證步驟。
③Sj→智能卡:{SIDj,M7,M8,M9,T2}
Sj產(chǎn)生隨機數(shù)N2和時間戳T2,計算M7=N2⊕M5⊕AIDi、M8=H(AIDi||SIDj||N2)、SKij=H(N1||N2||T1||T2)和M9=H(SKij),將SKij作為Sj和Ui的會話密鑰保密存儲,將{SIDj,M7,M8,M9,T2}發(fā)送給智能卡。
④ 智能卡驗證信息,生成會話密鑰
智能卡收到信息后,檢查T2有效性。若T2無效,智能卡中斷認證。若T2有效,智能卡計算M10=M7⊕N1⊕AIDi和M11=H(AIDi||SIDj||M10)。
判斷M11與M8是否相等。若不等,智能卡停止認證。若相等,智能卡繼續(xù)下面的認證。
本文方案支持用戶隨時更改口令,且更改口令僅通過智能卡即可完成,操作簡單。
①Ui將智能卡插入讀卡器,輸入IDi和舊的PWi,按照“2.2 登錄”階段的步驟驗證用戶身份。通過身份驗證,Ui才可以繼續(xù)更改口令的下一步操作。
②Ui向智能卡輸入IDi和新的PWi′,智能卡計算Bi′=H(IDi||PWi′),用Bi′代替Bi存入智能卡。
從正確性和安全性兩個方面對本文方案進行分析。
(1)Sj驗證Ui合法性
在認證階段,服務(wù)器Sj可以通過M6與M3是否相等,判斷Ui是否是合法用戶。證明如下:
=H(Ai)⊕Ki⊕H(Ai)
=Ki
=Ci
∵M4=H(Ai||Ksj)=Ci=M1
M5=M2⊕M4=M1⊕N1⊕M1=N1
∴M6=H(AIDi||SIDj||Ai||M4||M5||T1)
=H(AIDi||SIDj||Ai||M1||N1||T1)
=M3
(2)智能卡驗證Sj正確性
智能卡可以通過M11與M8是否相等,判斷服務(wù)器Sj是否發(fā)送了正確的信息。證明如下:
∵M10=M7⊕N1⊕AIDi
=N2⊕M5⊕AIDi⊕N1⊕AIDi
=N2⊕N1⊕AIDi⊕N1⊕AIDi
=N2
∴M11=H(AIDi||SIDj||M10)
=H(AIDi||SIDj||N2)
=M8
(3)Ui和Sj生成相同的會話密鑰
用戶和服務(wù)器通過雙方認證后,雙方各自生成相同的會話密鑰SKij。證明如下:
由“3.1 正確性分析”可知M10=N2
=H(N1||N2||T1||T2)
=SKij
通過M12與M9是否相等,智能卡可以驗證會話密鑰的正確性。
(1)用戶匿名性
在本文方案的認證過程中,智能卡使用Ui的匿名身份AIDi,實現(xiàn)用戶身份的匿名化。假設(shè)攻擊者竊取了智能卡中的信息{Ai,Bi,Ci′,Di},在認證通信中截取了{AIDi,Ai,M2,M3,T1}和{SIDj,M7,M8,M9,T2}。由于單向散列函數(shù)H(·)的防碰撞特性和隨機數(shù)Ni的隨機性,攻擊者無法從這些信息中求出Ui的真實身份IDi。因此,本文方案實現(xiàn)用戶的匿名性。
(2)相互認證性
為了保護用戶和服務(wù)器雙方的安全性,在認證通信過程中,本文方案增加了雙方對消息進行相互認證的環(huán)節(jié)。第一次認證:智能卡將{AIDi,Ai,M2,M3,T1}發(fā)送給Sj,Sj通過M6與M3是否相等,認證Ui的合法性。第二次認證:Sj將{SIDj,M7,M8,M9,T2}發(fā)送給智能卡,智能卡通過M11與M8是否相等,認定Sj的正確性。
(3)會話密鑰安全性
會話密鑰SKij的計算需要使用用戶和服務(wù)器雙方產(chǎn)生的隨機數(shù)N1和N2,且添加了單向散列函數(shù)H(·)。單向散列函數(shù)的防碰撞特性可以有效阻止攻擊者或其他用戶獲得SKij,從而保證了會話密鑰的安全性。
(4)抵抗內(nèi)部攻擊
假設(shè)攻擊者是RC內(nèi)部特權(quán)人員。Ui向RC申請注冊時,發(fā)送的是Ai=H(IDi||Ki),其并不包含口令PWi。因而,攻擊者并不能獲得PWi。另外,根據(jù)單向散列函數(shù)的防碰撞特性,攻擊者也不能從中求出密鑰Ki。
假設(shè)攻擊者是合法的用戶Ui。根據(jù)單向散列函數(shù)的防碰撞特性,攻擊者無法從智能卡的Ci=H(Ai||Ksj)中獲取服務(wù)器與注冊中心的共享秘鑰Ksj。
綜上所述,本文方案可以抗內(nèi)部攻擊。
(5)抵抗外部攻擊
假設(shè)攻擊者竊聽到認證通信過程中的信息{AIDi,Ai,M2,M3,T1},欲偽裝成用戶Ui,與服務(wù)器Sj相互認證后生成會話密鑰SKij=H(N1||N2||T1||T2)。為了通過認證,并計算SKij,需要產(chǎn)生新的隨機數(shù)N1′和時間戳T1′,改變M2′=M1⊕N1′和M3′=H(AIDi||SIDj||Ai||M1||N1′||T1′)。由于單向散列函數(shù)的防碰撞特性,攻擊者無法改變M2和M3,即無法改變認證請求信息。因此,本文方案可以抵抗外部攻擊。
(6)抵御重放攻擊
(7)抗智能卡丟失攻擊
假設(shè)用戶Ui的智能卡丟失。由于智能卡中存儲的信息是{Ai,Bi,Ci′,Di},沒有存儲Ui的身份信息IDi、口令PWi和密鑰Ki,即使智能卡丟失,用戶的隱私信息也是安全的。另外,根據(jù)單向散列函數(shù)的防碰撞特性,攻擊者不能從{Ai,Bi,Ci′,Di}獲取Ui的隱私信息,因此,本文方案可以抗智能卡丟失攻擊。
本文提出的匿名認證方案與其他同類方案的計算成本對比如表2所示。其中,n表示用戶數(shù)量,Ch表示單向散列函數(shù)計算成本,CECC表示橢圓曲線加密/解密計算成本。通常情況下,CECC>Ch。
表2 計算成本對比
從表2可以看出,在注冊階段,當(dāng)n=1時,本文方案的計算成本相對較大。但隨著用戶數(shù)n的增加,本文方案的計算成本會變得相對較小。在登錄和更改口令階段,本文方案的計算成本與方案[10]相同,但比方案[4]小。在認證階段,本文方案的計算成本相對較小。
仿真實驗硬件環(huán)境i3-8100T CPU、8GB RAM,軟件環(huán)境Windows 10 64bit OS,codeblocks-17.12軟件。通過仿真實驗將本文方案與方案[4]、方案[10]在處理時間上作對比,如圖1所示。
圖1 處理時間對比
從圖1的曲線可以看出,隨著成員數(shù)量n的增加,三個方案的處理時間成線性增加。與其余兩個方案相比,本文方案的處理時間相對較小。
本文基于智能卡提出了一種匿名認證方案。通過性能分析可知,本文方案不僅正確可行,還具備匿名性、用戶與服務(wù)器的相互認證性,同時可以抵抗內(nèi)部攻擊和外部攻擊,抵御重放攻擊和智能卡丟失攻擊。與同類方案相比,本文方案的計算成本相對較小。方案可以應(yīng)用到電子醫(yī)療等需要匿名認證的應(yīng)用場景中。