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