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