(青島理工大學(xué) 計算機(jī)工程學(xué)院,山東 青島 266033)
摘要:在對Yoon方案分析的基礎(chǔ)上,針對該方案存在的兩個缺陷,即攻擊者易偽裝成合法用戶或偽裝成服務(wù)器,提出了一種改進(jìn)的基于智能卡的身份認(rèn)證方案。改進(jìn)后的方案利用了單向安全Hash函數(shù)和對稱加解密機(jī)制,與Yoon方案相比,該方案具有較高的安全性和較低的計算成本,可以廣泛應(yīng)用于現(xiàn)實生活中。
關(guān)鍵詞:身份認(rèn)證;智能卡;密碼分析;隨機(jī)數(shù)
中圖分類號:TP393文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2009)28-7893-03
An Improved Authentication Scheme Using Smart Cards
GAN Xin-dan, JIANG Mei, ZHAO Mei
(School of Computer Engineering, Qingdao Technological University, Qingdao 266033, China)
Abstract: Analysis of the classical Yoon scheme, which has two defects: an intruder could masquerade as a legal user or server, this paper presents an improved authentication scheme using smart cards. Comparing with Yoon scheme, this scheme is more secure and has less computer cost because it is using one-way secure hash function and the symmetric encryption and decryption mechanism. The improved scheme can be widely used in the real word.
Key words: authentication; smart cards; cryptography analysis; random
身份認(rèn)證是識別和證實主體(一般指用戶)身份的過程,對于保障信息被合法授權(quán)用戶訪問起到至關(guān)重要的作用。1981年Lamport提出了第一個非常著名的智能卡遠(yuǎn)程用戶認(rèn)證方案。在這個方案中,AS(認(rèn)證服務(wù)器)產(chǎn)生用戶口令,并驗證用戶的登錄信息是否有效。但是該方案是不完善的,有不少攻擊弱點。2000年,Hwang和Li提出了一個新的基于EIGamal密碼體制的遠(yuǎn)程用戶認(rèn)證方案。隨后Chan和Cheng對Hwang-Li方案進(jìn)行了密碼分析,并指出一個合法的用戶在不知道系統(tǒng)密鑰xs的前提下可以很容易地創(chuàng)造出一對有效的數(shù)據(jù)(IDj,PWj)。后來Shen,Lin和Hwang指出在Hwang-Li方案中一個合法的用戶可以計算出其他用戶的用戶口令。2004年,Yoon等人針對Hwang-Li方案的安全缺陷又提出了一種新的改進(jìn)方案,此方案基于ElGamal密碼體制并且使用指數(shù)操作。
該文在分析Yoon方案的基礎(chǔ)上,利用單向安全Hash函數(shù)和對稱加密解密函數(shù),提出了一種新的方案,該方案能夠允許用戶自由地選擇和更改密碼;提供相互認(rèn)證;服務(wù)器不需要保存口令表或驗證表;能夠抵擋重放攻擊、服務(wù)器偽裝攻擊、密碼竊取攻擊以及更改時間戳等攻擊且具有較低的計算負(fù)荷,能夠?qū)崿F(xiàn)更好的安全性。
1 Yoon方案
1.1 注冊階段
1)用戶Ui (1≤i≤n)通過安全的通道向服務(wù)器S提交其身份UIDi和密碼PWi;
2)服務(wù)器S計算VPWi = gxsmod p,Ri=h(UIDi,xs),Xi=Ri⊕h(UIDi,PWi)。這里xs是服務(wù)器的私有密鑰,p是一個大素數(shù),q是一個與p-1互素的160位的數(shù),g是q在有限域GF(p)上的一個元素,⊕表示異或,h()是單項哈希函數(shù);
3)S通過安全的通道向用戶Ui發(fā)送包含信息{UIDi,VPWi,Ri,Xi,h(),p,q,g}的智能卡。
1.2 登錄和認(rèn)證階段
1)Ui將智能卡插入讀卡器并輸入其密碼PWi*,智能卡生成一個隨機(jī)數(shù)r,計算K=(VPWi)r mod p,t=h(K,T1),Vi=Xi⊕h(UIDi,PWi*),s=r-Vit mod q。這里T1是當(dāng)前時間;
2)發(fā)送登錄請求到S:M1={UIDi,t,s,T1}。
3)S在T1'時收到登錄請求,判斷是否滿足T1'-T1≤△T,這里△T是允許的最大時延,如否,則拒絕用戶的登錄請求;
4)S計算Vi'=h(UIDi,xs),K'=g(s+Vi't)xs mod p,隨后比較t和h(K',T1),如果它們相等,則服務(wù)器接受登錄請求并進(jìn)行下一步,否則拒絕登錄請求;
5)S得到當(dāng)前時間T2并計算M2=h(K',Vi',T2),將消息{M2,T2}發(fā)給用戶;
6)用戶收到消息{M2,T2},首先驗證T2的新鮮度,然后計算M2'=h(K,Vi,T2)并比較M2和M2',如相等,用戶就可以接受服務(wù)器的身份認(rèn)證,否則中斷連接;
7)雙向認(rèn)證完成以后,用戶和服務(wù)器就可以使用會話密鑰K=K'=gxs r mod p進(jìn)行通信。
2 Yoon方案的安全性分析
在Yoon等人的方案中,攻擊者不需要知道用戶的密碼就可以偽裝合法用戶向服務(wù)器發(fā)送一個合法的登錄請求,或者說是偽裝服務(wù)器發(fā)送一個有效的回應(yīng)信息,沒有實現(xiàn)雙因素認(rèn)證的安全。
2.1 偽裝成合法用戶
在登錄階段,如果PWi*=PWi那么Vi應(yīng)該等于Ri,這就意味著攻擊者如果已經(jīng)從智能卡得到了Ri那么在計算Vi時就不需要知道PWi,攻擊者就可以成功的偽造登錄請求了。
2.2 偽裝成服務(wù)器
假設(shè)攻擊者截獲了一條有效的登錄請求信息:M1={UIDi,t,s,T1},因為Vi'=Vi=Ri,所以攻擊者就可以計算t = s+Vit mod q = s+Rit mod q,K'=K=(VPWi)r mod p。然后攻擊者獲取當(dāng)前時間T2并計算M2=h(K',Vi',T2),消息{M2,T2}顯然是一個有效的回應(yīng)信息。因此雙向認(rèn)證就無法實現(xiàn),會話密鑰K就暴露給攻擊者了。
3 改進(jìn)的認(rèn)證方案
相對與基于ElGamal密碼體制的Yoon方案來說,該改進(jìn)方案具有較高的安全性和較低的計算成本。主要包括五個階段:注冊階段、登錄階段、認(rèn)證階段、會話密鑰協(xié)商階段和密碼更改階段。
3.1 注冊階段
1)用戶Ui通過安全的通道向服務(wù)器S提交其身份UIDi和密碼PWi;
2)服務(wù)器選擇四個單項哈希函數(shù)h(),h1(),h2(),h3();
3)S計算Ri=h(UIDi,xs),Hi=h(Ri)和Xi=Ri⊕h(UIDi,PWi);
4)S通過安全的通道向用戶Ui發(fā)送包含信息{UIDi,Hi,Xi,h(),h1(),h2(),h3()}的智能卡(注流程見圖1)。
3.2 登錄階段
用戶Ui將智能卡插入智能卡讀卡系統(tǒng),并輸入用戶身份IDi和密碼PWi*,然后智能卡將執(zhí)行如下操作:
1)比較用戶輸入的UIDi與智能卡中現(xiàn)存的UIDi是否相同,如果不相同,則返回錯誤,出錯超過一定次數(shù)(一般為三次)就會自動鎖卡;
2)計算Ri'= Xi⊕h(UIDi,PWi*),Hi'=h(Ri')。然后比較Hi'和Hi,如果相等,智能卡計算PWi* = PWi,Ri=Ri',并進(jìn)行下一步,否則拒絕請求;
3)向遠(yuǎn)程服務(wù)器發(fā)送請求信息M1={UIDi,T1,ERi(N1,h1(N1||UIDi))}。這里T1是當(dāng)前時間,N1是用戶生成的一個隨機(jī)數(shù),用于惟一標(biāo)識這一業(yè)務(wù)。
3.3 認(rèn)證階段
當(dāng)遠(yuǎn)程服務(wù)器S收到用戶Ui的登錄請求后,服務(wù)器和用戶將執(zhí)行下面的步驟以實現(xiàn)雙向認(rèn)證。
1)當(dāng)遠(yuǎn)程服務(wù)器S在時間T1'處收到用戶Ui的請求信息后,首先檢查是否滿足T1'-T1≤△T(△T是允許的最大時延),如果不滿足,連接將被終止,否則計算出h(xs,UIDi)得到密鑰Ri,然后計算DRi(ERi(N1,h1(N1||UIDi)))得到N1和h1(N1||UIDi),檢查N1是否包含在新鮮度允許的范圍內(nèi),如否,連接將就此終止。隨后S將計算h1(N1||UIDi)并與解密后的已知哈希值做比較,如不等,S將拒絕請求,否則,S向請求用戶發(fā)送回應(yīng)消息M2={SID,ERi(N2,N1+1,h2(N2||SID))},這里N2是服務(wù)器生成的一個隨機(jī)數(shù),用于惟一標(biāo)識這一業(yè)務(wù);
2)當(dāng)用戶收到該消息后,首先檢查SID的合法性,是不是就是自己要請求的服務(wù)器,隨后計算DRi(ERi(N2,N1+1,h2(N2||SID)))得到N2、N1+1和h2(N2||UIDi),驗證隨機(jī)數(shù)N1+1是否包含在新鮮度的檢驗范圍內(nèi),如不滿足,連接將被終止,若滿足,計算h2(N2||SID)并與解密后的已知哈希值做比較,若相等,則用戶Ui可以確信正在跟合法的服務(wù)器通信。
3.4 會話密鑰協(xié)商階段
1)用戶Ui計算會話密鑰KS=h3(N1,N2,Ri,IDi,SID)和EKS(N2+1),發(fā)送消息M3={UIDi,T2, EKS(N2+1)}到服務(wù)器;
2)服務(wù)器S在T2'時收到M3,首先判斷是否滿足T2'-T2≤△T(△T是允許的最大時延),隨后計算會話密鑰KS=h3(N1,N2,Ri,UIDi,SID),同時計算DKS(EKS(N2+1)),驗證N2+1是否在新鮮度的檢驗范圍內(nèi),若滿足則用戶Ui就通過了認(rèn)證,然后服務(wù)器S和用戶Ui就可以使用會話密鑰進(jìn)行通信了(具體流程見圖2)。
3.5 密碼更改階段
合法用戶拿到智能卡以后,可以自由修改口令,增強(qiáng)了口令認(rèn)證系統(tǒng)的安全性。修改口令時,在智能卡內(nèi)部就可以處理。具體的操作是:
1)用戶輸入原密碼PWi*,智能卡計算Ri'=Xi⊕h(UIDi,PWi*)和H'=h(Ri');
2)比較Hi和Hi',如果它們相等,則智能卡計算:PWi* = PWi,Ri=Ri',同時允許用戶選擇一個新密碼NEW_PWi,否則將拒絕用戶更改密碼的請求;
3)計算NEW_Xi=Ri⊕h(UIDi, NEW_PWi),用NEW_Xi代替智能卡中原有的Xi,以后用戶就可以使用新密碼訪問合法服務(wù)器。
4 改進(jìn)方案的安全性分析
此方案具有以下優(yōu)點:
1)用戶可以自由地選擇和更改密碼:在此方案中用戶的口令是由用戶自己任意選取的,更具有人性化的特征,此外,在拿到智能卡以后,用戶還可以自由修改口令,增強(qiáng)了口令認(rèn)證系統(tǒng)的安全性。
2)較低的計算載荷:
在其它的各種認(rèn)證方案中,智能卡的計算量都要比此方案大。另外,在實際應(yīng)用中,智能卡僅僅需要存儲單項哈希函數(shù)h(),其他的三項函數(shù),可以從哈希函數(shù)h()中推導(dǎo)出來,例如h1=(''11''||h()),h2=(''22''||h()),h3=(''33''||h()),因此智能卡中就不要太大的存儲空間。
3)安全:毫無疑問,對于任何認(rèn)證方案大家最關(guān)心的是其安全性,此方案也不例外。它可以抵御各種攻擊。
① 重放攻擊,這是因為使用了系統(tǒng)時間戳的隨機(jī)函數(shù)R(T)來獲得隨機(jī)數(shù),T每次的值不同,而且很難精確預(yù)料,所以可以抵抗在通訊線路上的入侵者的重放攻擊,且要求認(rèn)證請求信息在網(wǎng)絡(luò)中的傳播時延小。這樣信息的合法性將與隨機(jī)數(shù)N1、N2一起接受檢驗,所以無論是轉(zhuǎn)發(fā)登錄階段的登錄信息{UIDi, T1,ERi(N1, h1(N1||UIDi))},還是認(rèn)證階段的回應(yīng)信息{SID, ERi(N2,N1+1,h2(N2||SIDi))},都將不會獲得成功。
② 服務(wù)器偽裝攻擊,偽裝的服務(wù)器不知道密鑰Ri,將不能取得用來組成會話密鑰的秘密信息,并且合法用戶將會檢測到自己正和一個冒牌服務(wù)器進(jìn)行通信,從而將終止連接。
③ 密碼竊取攻擊,合法用戶的口令不需要通過公眾網(wǎng)絡(luò)傳輸給服務(wù)器端,另一方面,服務(wù)器端每次在驗證客戶端請求時,不需要查詢、匹配龐大的密碼表,即服務(wù)器不需要保存口令表或驗證表,從而降低了密碼竊取攻擊。
④ 智能卡丟失問題,假如入侵者竊取了合法用戶Ui的智能卡,并想利用該卡訪問遠(yuǎn)程服務(wù)器S所提供的資源,他將不會成功。這是因為入侵者不知道密碼PWi無法通過計算h(UIDi,PWi) ⊕Xi求出Ri,同樣,使用者不小心泄漏了身份UIDi和口令PWi,入侵者如果沒有此智能卡,則將無法假冒認(rèn)證信息。
⑤這個方案中不包含復(fù)雜的密碼學(xué)算法,簡單易懂,UIDi和PWi之間不再存在關(guān)系PWi=IDixs mod P,而Chan-Cheng攻擊、Shen-Lin-Hwang攻擊和Chang-Hwang攻擊都是針對這個關(guān)系的,所以此認(rèn)證方案可以抵抗以上的各種攻擊。
4)相互認(rèn)證:在新方案中,服務(wù)器S由用戶通過核實h2(N2||SID)的有效性給予授權(quán)。同樣,用戶Ui由服務(wù)器通過核實DKS(EKS(N2+1)) 的有效性而加以認(rèn)證。因此,只有合法用戶和合法服務(wù)器才可以互相認(rèn)證。
5)會話密鑰協(xié)商:用戶Ui和服務(wù)器S通過對方的相互認(rèn)證后,將協(xié)商生成會話密鑰KS,使用KS進(jìn)行安全的通信。
5 結(jié)束語
安全性與計算成本始終是認(rèn)證協(xié)議中比較重要的因素,從以上分析中可以看出,該文提出的改進(jìn)方案可以有效的抵抗重放攻擊、服務(wù)器偽裝攻擊、密碼竊取攻擊以及更改時間戳等攻擊,從而較可靠的實現(xiàn)了通信雙方的身份認(rèn)證問題;同時該方案還提出了口令更改算法,使得用戶可方便的更改自己的口令而不用通知認(rèn)證服務(wù)器。另外,該方案主要是基于單向散列哈希函數(shù)與對稱加密解密函數(shù),計算成本低。概括起來,此改進(jìn)方案能夠顯著提高認(rèn)證效率,可以廣泛應(yīng)用于現(xiàn)實生活中。
參考文獻(xiàn):
[1] Lamport L, Password authentication with insecure communication[J]. Communication of ACM, 1981, 24(11): 770-772.
[2] Hang M S, Li L H. A new remote authentication scheme using smart cards[J]. IEEE Transactions on Consumer Electronics, 2000, 46(1):28-30.
[3] Shen J J, Lin C W, Hwang M S. A modified remote user authentication scheme using smart cards[J]. IEEE Transactions on Consumer Electronics, 2003, 49(2):414-416.
[4] Chan C K, Cheng L H, Cryptanalysis of a remote user authentication scheme using smart card[J]. IEEE Transactions on Consumer Electronics, 2000,43(4):992-993.
[5] Yoon E J, Ryu E K, Yoo K Y, Efficient remote user authentication scheme based on generalized ElGamal signature scheme [J]. IEEE Transactions on Consumer Electronics, 2004, 50(2): 568-570.
[6] 王猛,盧建朱,李曉峰.基于智能卡的遠(yuǎn)程口令認(rèn)證方案[J].計算機(jī)應(yīng)用,2005,25(10):2289-2290.
[7] 沈忠華,于秀源.一個改進(jìn)的使用智能卡的遠(yuǎn)程用戶認(rèn)證方案[J].科技通報,2008,24(01):69-73.