[摘 要] 一次性口令身份認證方案在信息安全認證過程有廣泛的應用。本文分析了文獻中一次性口令身份認證方案,發現方案中均存在計算過大,服務器負擔過重的問題;同時存在不安全的設計,針對以上問題提出新的基于時間的挑戰/應答模式一次性口令身份認證方案,該方案具有較強的安全性、較小的計算量,最后對該方案的安全性和效率進行了分析。
[關鍵詞] 一次性口令 挑戰/應答模式 身份認證方案重放攻擊
傳統靜態口令的用戶身份認證機制,在網絡環境下,容易受到竊聽、重放攻擊、字典攻擊、差分密碼分析和線性密碼分析等分析手段的攻擊,靜態口令有諸多安全問題。一次性口令OTP(One-tiMe Password)認證,可以解決上述問題。常用的OTP有如下3種:Lamport方案:即哈希鏈算法;時間同步方案;挑戰/應答方案。
本文在分析文獻中所給出的基于挑戰/應答的一次性口令身份認證方案基礎上,解決了兩個方案計算量過大的、且存在安全漏洞的問題,將兩個方案的優點相結合,進行了優化與改進,改進后不僅保留了原方案所有的安全特性,并且比原方案有更小的計算量,更高的安全性。
一、現有方案概述與分析
1.方案1概述
文獻給出了一種新型的一次性口令身份認證方案1。方案1分兩個階段實現:初始注冊階段和認證階段。
(1)注冊階段:當用戶向服務器提出注冊請求時,要求輸入身份標識符uid和口令pwd,用戶生成一個隨機數R1,計算A=H(uid,pwdR1)(H單項的散列函數)。用戶將uid、A、R1及與服務器共享密鑰K通過安全通道傳送到服務器。
(2)認證過程:第i次身份認證過程(E代表加密,D代表解密,K代表密鑰)。
步驟1:用戶輸入計算EK(uid),并傳送給服務器提出認證請求。步驟2:服務器解密DK(uid)得到uid,判斷uid是否合法。步驟3:用戶計算H(uid,K),將它與傳過來的M相比較,如果是合法的,繼續執行步驟4。步驟4:用戶根據收到的Ri,作如下處理:①計算A=H(uid,pwdRi);②生成隨機數Ri+1,并計算B=H(uid,pwdRi+1),B就是下一次的身份驗證的校驗符;③分別計算出H(B)、X和Y,使得H(B)=H(uid,K,B)、X=A(B+uid)、Y=H(B)B;④將X、Y、Ri+1傳送到服務器。步驟5:服務器根據已存儲的校驗符A和接收的X、Y、Ri+1對用戶進行身份驗證。①計算(XA)-uid的結果得到B;②根據B,計算H(B)=YB;③計算H(uid,K,B),驗證H(uid,K,B)是否與②中的H(B)相同,相同更新服務器端存儲的校驗符A和隨機數R(使A←B,Ri←Ri+1),以便被下一次身份認證過程使用。方案1協議的形式化描述如下:
C→S:{uid}K; C←S:{ Ri,M=H(uid,K)};
C→S:{X=A(B+uid),Y=H(B)B ,Ri+1};其中,C為用戶,S為服務器。
2.方案2概述
文獻中分析了方案的安全性,指出其由于單向認證不能抵御中間人攻擊,并對其改進,改進如下:
Mes1.C→S:{uid,Ri+1}K;
Mes2. C←S:{Ri,M=H(uid,K) }K;
Mes3. C→S:{X=A(B+uid),Y=H(B)};
3.原方案分析
(1)計算量分析:①確定登錄者:假設用戶共有M個,有N個用戶同時登錄,服務器要則要搜索(M/2)*N次密鑰列表,近似搜索個數為N*(M/2)2個,解密運算N*(M/2)次,搜索用戶列表(M/2)*N次,計算量非常大。②在一次身份認證過程中:方案1服務器需執行3次Hash運算,客戶端需執行4次Hash運算;方案2服務器需執行3次Hash運算,客戶端需執行3次Hash運算。
(2)安全性分析:方案2中對方案1的安全性進行了分析指出方案1不能抵御中間人攻擊,并對此進行了改進,但兩個方案都不能抵御重放攻擊,攻擊過程如下:(C’為攻擊者)
方案1:C→S:{uid}K; 方案2: C→S:{uid,Ri+1}K
C’→S:{uid}K; C’→S:{uid,Ri+1}K
C’→S:{uid}K; …… C’→S:{uid,Ri+1}K ……
二、基于時間的挑戰/應答模式認證方案分析
1.基于時間挑戰/應答模式認證方案
鑒于原方案計算量過大且存在的安全問題,提出基于時間的挑戰/應答模式認證方案,形式化描述如下:
Mes1. C→S:{uid,(Ri+1,T1)K}; Mes2. C←S:{Ri,T1}K;
Mes3. C→S:{X=A(B+uid),Y=H(B),T2}K;
方案描述:Step1:用戶隨機生成一個隨機數Ri+1與時間T1,用與服務器共享的密鑰K加密后,與用戶標識符一起發送給服務器;Step2:服務器收到Mes1后,通過uid,在密鑰庫中取出共享密鑰K,解密信息解密時間,比較上一次通信所記錄時間,如不同(非重放攻擊),替換上一次通信所記錄時間T1,并保存本隨機數,并取出上一次的認證中所保存的Ri,并將信息{Ri,T1}用共享密鑰K加密后發送給用戶;Step3:用戶收到Mes2后,解密信息,得到Ri、T1,比較發出時間,一致則用戶通過對服務器的驗證,并計算X=A(B+uid)、B=H(uid,pwdRi+1),B就是下一次的身份驗證的校驗符;接著分別計算出H(B)、X和Y,使得H(B)=H(uid,K,B)、X=A(B+uid)、Y=H(B)B;最后將X、Y、Ri+1,T2傳送到服務器。
2.基于時間挑戰/應答模式認證方案分析
(1)安全性:通過形式化分析對改進后的協議進行分析,可以證明該協議是一個安全的協議,并實現了以下安全性:
①本方案中口令不在網絡中傳輸,符合一次性口令的初衷。
②在協議的每一步均有一個歷史時間,保證了協議可以有效的抵抗重放攻擊;
③方案是雙向認證,通過共享密鑰加密,保證信息的機密性;
④具有更高的可靠性,較小的計算量,同時可以防止來自服務器的欺騙。
(2)計算量分析:在一次身份認證過程中,各方案計算量對比分析如表1所示:
三、結束語
本文提出了基于時間的挑戰/應答模式一次性口令認證方案,相對于文獻中一次性口令的身份認證方案,新方案使認證過程的計算量達到最小,并對認證過程進行了改進,使得改進后的方案克服了原方案的安全漏洞,并且具有更高的安全性。
參考文獻:
[1]張宏等:一種新型一次性口令認證方案的設計與分析[J].計算機工程,2004,30(17):112~113
[2]王濱等:一次性口令身份認證方案的分析與改進[J].計算機工程,2006,32(14):149~150
[3]Raihi D M . Internet Draft,VeriSign [EB/OL] . htpp://www.openauthentication.org /pdfs /draft-mraihi-nutual-oath-hotp-variants200.pdf, 2005~10~10