基于智能卡的動態(tài)身份認(rèn)證協(xié)議
0 引言
1981年Lamport等[1]首次提出基于口令的認(rèn)證方案,這種方案實(shí)用性雖強(qiáng),但這類方案存在致命的缺陷——離線口令猜測攻擊。1993年 Chang等[2]提出結(jié)合口令和智能卡來提高認(rèn)證協(xié)議的安全性和有效性,從此產(chǎn)生了一系列的認(rèn)證方案[3-7]。2012年唐宏斌等[8]提出一種利用橢圓曲線加密機(jī)制和時間戳的認(rèn)證協(xié)議,2013年皮蘭等[9]指出在不安全信道中引入時間戳是存在嚴(yán)重的時鐘同步問題,并提出一種的異步認(rèn)證協(xié)議。本文指出皮蘭等方案因不能保護(hù)用戶的匿名性而缺乏實(shí)用性,因引入停止協(xié)議執(zhí)行閾值很容易造成一個嚴(yán)重的安全問題——DoS攻擊,并提出一種采用動態(tài)身份和三次握手技術(shù)的遠(yuǎn)程用戶認(rèn)證方案。新協(xié)議不僅能夠保護(hù)用戶的匿名性,而且有效的抵抗DoS攻擊,充分保證了協(xié)議性能的高效性。
1 皮蘭等方案回顧
文中的符號定義如下:U為用戶;S為服務(wù)器;SC為智能卡;PW為用戶的口令;k為服務(wù)器的高熵秘鑰;h(·)為單項(xiàng)哈希函數(shù);||為字符串連接操作;?堠為異或運(yùn)算;?圯為安全信道;→為普通信道。
1.1 皮蘭等方案
皮蘭等方案由五個階段組成,本文把登錄和認(rèn)證放在一起,省略口令修改階段。
1.1.1 系統(tǒng)設(shè)置階段
服務(wù)器選取有限域GF(q)上的橢圓曲線E,由E上點(diǎn)形成一個點(diǎn)加法群Ea,b(GFq),設(shè)P是階為n的生成元。服務(wù)器選取私鑰k和計(jì)算對應(yīng)的公鑰Q=kP。服務(wù)器保密k,公布其系統(tǒng)參數(shù){q,a,b,n,P,Q}。
1.1.2 注冊階段
(1)用戶選取身份ID、口令PW和新鮮數(shù)N,通過安全信道把消息{ID,y=h(PW||N)}發(fā)給服務(wù)器。
U?圯S:{ID,y}
(2)收到{ID,y},服務(wù)器計(jì)算s=h(ID||k),v=s?堠y,通過安全信道把存有v,h(·)和系統(tǒng)參數(shù)的智能卡發(fā)給用戶。
S?圯U:SC
(3)用戶收到智能卡后,把N輸入智能卡,最后智能卡中含有v,h(·)和系統(tǒng)參數(shù)。
1.1.3 登錄和認(rèn)證階段
(1)用戶插入智能卡并輸入ID和PW。智能卡向服務(wù)器發(fā)送登錄請求{ID}。
SC→S:登錄請求{ID}
(2)服務(wù)器收到ID后,驗(yàn)證ID格式有效性,若無效,停止本次協(xié)議;否則任選隨機(jī)數(shù){r1}發(fā)給智能卡。
S→SC:{r1}
(3)收到r1后,智能卡計(jì)算y=h(PW||N)和s=v?堠y=h(ID||k),然后任選隨機(jī)數(shù)r2,再計(jì)算R1=r2P,R2=r2Q以及C1=h(ID,S,s,R2,r1)。最后智能卡發(fā)送登錄消息{R1,C1}給服務(wù)器。
SC→S:{R1,C1}
(4)服務(wù)器收到{R1,C1}后,計(jì)算s′=h(ID||k),R’2=kR1以及C’2=h(ID,S,s′,R’2,r1),比較C’2是否等于C1;若二者不等,停止本次協(xié)議;否則服務(wù)器認(rèn)證用戶成功,計(jì)算C2=h(S,ID,s′,R’2)發(fā)送給智能卡。
S→U:{C2}
(5)收到C2后,智能卡計(jì)算C’2=h(S,ID,s,r1,R2),并比較C’2是否等于C2,若二者不等,服務(wù)器停止本次協(xié)議;否則用戶認(rèn)證服務(wù)器成功。用戶在登錄和認(rèn)證階段中的停止執(zhí)行協(xié)議次數(shù)超過某個閾值h將被鎖定帳號,必須親自到認(rèn)證中心解開。
1.2 皮蘭等方案存在的問題
(1)缺乏匿名性
在皮蘭等方案中,用戶登錄使用真實(shí)的身份ID在不安全信道中傳輸容易被攻擊者截獲而泄露用戶的個人信息,便于攻擊者對特定用戶做出一系列攻擊,如常見于協(xié)議中的拒絕服務(wù)(DoS)攻擊,冒充攻擊等。另外,面對網(wǎng)絡(luò)信息安全的嚴(yán)峻形勢,用戶也意識到個人信息的重要性,特別是在一些特殊的應(yīng)用中,例如網(wǎng)上匿名投票,保密電子商務(wù)等,用戶的信息是不便泄露的。因此,皮蘭等方案缺乏很大的實(shí)用性。
(2)對DoS攻擊是脆弱的
為阻止在線口令猜測,皮蘭等方案設(shè)計(jì)用戶在登錄和認(rèn)證中停止執(zhí)行協(xié)議次數(shù)超過某個閾值h,將鎖定該帳號,用戶必須親自到認(rèn)證中心解開帳號,這種方案極容易造成DoS攻擊。因?yàn)榈卿浐驼J(rèn)證階段是通過不安全信道通信,一方面容易受到各種不確定因素(如環(huán)境,其他設(shè)備等)的干擾;另一方面,皮蘭等方案缺乏匿名性,用戶每次登錄與服務(wù)器通信頻繁(四次),攻擊者易鎖定特定用戶后任意偽造、篡改、中斷通信消息{ID},{r1},{R1,C1}或{C2},都能造成停止執(zhí)行協(xié)議造成DoS攻擊。如果此情況常發(fā)生,可能造成整個系統(tǒng)崩潰,皮蘭等方案具有嚴(yán)重的不合理性。
2 新的認(rèn)證方案
新方案包括系統(tǒng)初始化、注冊、登錄認(rèn)證和口令修改等四個階段,具體如下。
2.1 系統(tǒng)初始化階段
該階段與皮蘭等方案的系統(tǒng)設(shè)置類似,但注意:(1)服務(wù)器選擇自己的密鑰k,以及用戶在登錄時選擇的隨機(jī)數(shù)r1,滿足k,r1∈[1,n-1],這是保證kP,r1P∈Ea,b[GFq]。(2)橢圓曲線上的離散對數(shù)問題(ECDLP):給定P,Q∈Ea,b[GFq],求一個k滿足Q=kP是相對困難的[10]。
2.2 注冊階段
(1)用戶選取自己的身份ID、口令PW和高熵隨機(jī)數(shù)N,通過安全信道發(fā)送消息{ID,y=h(PW||N)}給服務(wù)器。
U?圯S:{ID,y}
(2)收到{ID,y},服務(wù)器為用戶分配初次動態(tài)登錄身份TID0,計(jì)算s=h(ID||k),v=s?堠y,把{TID0,ID}保存到校驗(yàn)表中,把{TID0,v,h(·)}以及系統(tǒng)參數(shù)存入智能卡中,最后服務(wù)器通過安全信道把智能卡分發(fā)給用戶。
S?圯U:SC
(3)用戶收到智能卡后把N輸入智能卡,最后智能卡中含有TID0,v,h(·)和系統(tǒng)參數(shù){q,a,b,n,P,Q}。
2.3 登錄認(rèn)證階段
用戶先將智能卡插入讀卡器,并輸入身份ID和口令PW,然后執(zhí)行以下操作:
(1)智能卡計(jì)算y=h(PW||N)和s=v?堠y,并選擇一個隨機(jī)數(shù)r1∈[1,n-1],計(jì)算R1=r1P,R2=r1Q,C1=h(TID0,ID,s,R2)后向服務(wù)器發(fā)送請求消息。
SC→S:登錄請求{TID0,R1,C1}
(2)收到消息后,服務(wù)器用TID0從校驗(yàn)表找對應(yīng)的ID,若找不到停止本次會話;否則,計(jì)算s′ =h(ID||k),R’2=kR1,C’2=h(TID0,ID,s′,R’2),并檢驗(yàn)C’2=?C1。若不相等,停止本次會話;否則服務(wù)器為用戶分配下一次動態(tài)登錄身份TID1,并計(jì)算C2=h(TID1,s′,R’2)后發(fā)送消息{TID1,C2}給用戶。
S→SC:{TID1,C2}
(3)收到{TID1,C2}后,用戶計(jì)算C’2=h(TID1,s,R2)并檢驗(yàn)C’2=?C2。若不相等,停止本次會話;否則用戶認(rèn)證服務(wù)器成功,把動態(tài)身份TID1保存到智能卡,直到下一次成功登錄并收到動態(tài)身份TID2,再用TID2更新TID0。最后計(jì)算 C3=h(TID0,TID1,s,R2),智能卡發(fā)送{C3}給服務(wù)器。[!--empirenews.page--]
SC→S:{C3}
(4)收到{C3}后,服務(wù)器計(jì)算C’2=h(TID0,TID1,s′,R’2)并檢驗(yàn)C’2=?C3。若相等,服務(wù)器認(rèn)證用戶成功,并更新TID0為TID1;否則,拒絕用戶的本次登錄請求。
2.4 口令修改階段
當(dāng)用戶想修改口令時,可以如下更新口令:用戶插入智能卡,輸入舊的口令PW后提示兩次輸入新的口令PWnew,確保新口令的正確。智能卡計(jì)算 y=h(PW||N),ynew=h(PWnew||N)和vnew=v?堠y?堠ynew=synew后用vnew替換原有的v,這樣口令修改階段完成。
3 新認(rèn)證方案的安全性證明和性能分析
3.1 安全性證明
新協(xié)議給每個用戶分配動態(tài)登錄身份保護(hù)用戶的匿名性,攻擊者想進(jìn)行攻擊必須鎖定目標(biāo)用戶,否則由于每次登錄身份不同,攻擊者的攻擊都是無效的。故假設(shè)攻擊者已鎖定目標(biāo)用戶,并能成功截獲目標(biāo)用戶與服務(wù)器通信信息。
命題1 新協(xié)議能抵抗DoS攻擊
證明:一般地,用戶用動態(tài)身份TIDi登錄,并收到下一次動態(tài)身份TIDi+1。但在用戶登錄過程中遭到DoS攻擊,用戶可以再次利用動態(tài)身份 TIDi登錄,因?yàn)樾聟f(xié)議采用三次握手技術(shù),為確保用戶的動態(tài)登錄身份和服務(wù)器儲存的同步,每次只有當(dāng)用戶登錄成功時,用戶和服務(wù)器才更新動態(tài)登錄身份。這樣只要DoS攻擊不是持續(xù)的,用戶一定能登錄到服務(wù)器,而不必每次都要到認(rèn)證中心解開賬號,這種設(shè)計(jì)不會產(chǎn)生其他的安全問題,主要是重放攻擊和冒充攻擊。
命題2 新協(xié)議能抵抗重放攻擊和冒充攻擊
證明:這里有兩種重放攻擊:攻擊者當(dāng)用戶正常登錄時進(jìn)行重放攻擊;攻擊者根據(jù)鎖定的用戶,先進(jìn)行DoS攻擊迫使用戶重新登錄后進(jìn)行重放攻擊。新協(xié)議采用動態(tài)登錄身份,、攻擊者直接重放以前的登錄信息很容易被識破,假設(shè)攻擊者試著構(gòu)造正確的通信消息進(jìn)行重放攻擊,冒充合法用戶欺騙服務(wù)器,或者冒充服務(wù)器欺騙用戶,也即身份冒充攻擊。
(1)攻擊者在用戶正常登錄時進(jìn)行重放攻擊。首先假設(shè)攻擊者冒充用戶,試著構(gòu)造{TIDi,R1,C1}和{C3}。
①重放TIDi,R1,構(gòu)造C1,C3。假設(shè)攻擊者根據(jù)鎖定的用戶,在用戶登錄服務(wù)器時截獲登錄消息{TIDi,R1,C1},直接從中獲取TIDi 和R1用于隨后重放攻擊,試著構(gòu)造C1,C3。但構(gòu)造C1=h(TIDi,ID,s,R2),C3=h(TIDi,TIDi+1,s,R2),攻擊者必須計(jì)算R2=r1Q。攻擊者可能從R1=r1P中計(jì)算隨機(jī)數(shù)r1,但這相當(dāng)于解決ECDLP難題,是很難實(shí)現(xiàn)的;攻擊者可能自己選一個隨機(jī)數(shù)r計(jì)算出R,進(jìn)而計(jì)算
但要計(jì)算C1,C3,攻擊者還必須計(jì)算s。而s的計(jì)算與用戶的口令PW和服務(wù)器的秘鑰k有關(guān),是很難獲得的,所以此種攻擊是無法成功的。
②重放TIDi,R1,C1,構(gòu)造C3。假設(shè)攻擊者在用戶登錄時截獲第三輪消息{C3},試著構(gòu)造C3。但是由上面分析,C3中含有s和R2是很難得到的,而且在新協(xié)議中用戶只有通過與服務(wù)器的第三輪握手后才能被認(rèn)證成功,所以此種攻擊仍無法實(shí)現(xiàn)。
攻擊者冒充服務(wù)器,重放消息{TIDi+1,C2}。
重放TIDi+1,構(gòu)造C2。假設(shè)攻擊者在服務(wù)器向用戶發(fā)送消息時截獲并{TIDi+1,C2},重放TIDi+1,構(gòu)造C2。攻擊者構(gòu)造正確的 C2=h(TIDi+1,s′),必須獲得s′,但是這些值都與服務(wù)器的秘鑰k有關(guān),攻擊者是很難得到的,所以此種攻擊也是不可能的。
(2)先DoS攻擊后重放攻擊。此種情況由于用戶重新輸入身份和口令,只是發(fā)送同樣的動態(tài)身份,根據(jù)上面的分析,與直接進(jìn)行重放攻擊類似,所以此攻擊仍是無法實(shí)現(xiàn)。此外,通過上面分析,只有合法用戶才能計(jì)算正確的信息讓服務(wù)器認(rèn)證,只有真正的服務(wù)器才能計(jì)算正確的消息通過用戶的認(rèn)證,所以新協(xié)議提供雙向認(rèn)證性。
命題3 新協(xié)議能抵抗口令猜測攻擊
證明:下面分別從用戶端和服務(wù)器端來證明。
(2)假設(shè)此處的攻擊者是特權(quán)內(nèi)部攻擊者,即來自系統(tǒng)管理人員,并且從用戶開始注冊就鎖定目標(biāo)用戶,記錄用戶遞交信息ID,y=h(PW||N)接下來進(jìn)行口令猜測攻擊。但是由于y中含有高熵隨機(jī)數(shù)N,攻擊者仍無法實(shí)行口令猜測攻擊。另外,新協(xié)議在服務(wù)器端保存用戶的動態(tài)登身份TIDi和真實(shí)身份 ID,而TIDi只是用戶身份的一個代表,由系統(tǒng)隨機(jī)分配;用戶的真實(shí)身份ID,主要是為了服務(wù)器辨別不同的用戶,這兩個值在協(xié)議中都不是敏感的數(shù)據(jù),所以新協(xié)議也能抵抗被盜校驗(yàn)子攻擊。
3.2 性能分析
各種方案計(jì)算代價和安全性比較分別如表1和表2所示。從表1看,與Chen等方案比較,新方案需要橢圓曲線上點(diǎn)乘運(yùn)算并不占優(yōu);但從表2看,Chen 等方案的安全性明顯低,而且新方案建立在橢圓曲線密碼機(jī)制上,與傳統(tǒng)的公鑰密碼體制(如RSA)比較具有很多優(yōu)勢,例如256位的ECC與1024位的 RSA具有相同的安全性[10],所以在同安全條件下,新方案在總的性能上占優(yōu)。從表1看,與唐-皮等方案(唐宏斌等方案和皮蘭等方案)比較,新方案在登錄認(rèn)證階段多2個哈希運(yùn)算。但是唐宏斌等方案在用戶登錄前需要一個預(yù)計(jì)算階段,皮蘭等方案在登錄認(rèn)證階段需要與服務(wù)器進(jìn)行四次握手通信,而本方案不需要預(yù)計(jì)算階段,登錄認(rèn)證只需三次握手通信;而且唐-皮等方案進(jìn)行口令修改時,還要與服務(wù)器進(jìn)行四次通信,而新協(xié)議用戶自己就能完成,計(jì)算代價明顯減小。從表2 看,新協(xié)議不僅不需要協(xié)調(diào)時鐘,降低成本代價,而且具有匿名性以及抵抗強(qiáng)安全性問題——DoS攻擊,充分確保了認(rèn)證協(xié)議的有效性。所以新協(xié)議總的性能仍占優(yōu)。
4 結(jié)論
本文提出一種基于智能卡和動態(tài)身份的遠(yuǎn)程用戶認(rèn)證協(xié)議,采用動態(tài)登錄身份來保護(hù)用戶的匿名性,避免重放攻擊,通過延長用戶存儲動態(tài)身份和三次握手技術(shù)抗擊DoS攻擊,同時保證協(xié)議性能的高效性,擴(kuò)大了協(xié)議的使用范圍,例如移動設(shè)備云環(huán)境下的用戶登錄認(rèn)證。