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