王 超,劉黎明
(南陽理工學院 軟件學院,河南 南陽 473004)
遠程用戶身份驗證[1]可分為兩種環(huán)境,即單服務器環(huán)境[2,3]和多服務器環(huán)境[4,5]。單服務器環(huán)境中,用戶必須注冊到每個應用服務器。因此,單服務器環(huán)境的主要問題是用戶必須記住許多私有信息(如身份標識和密碼),以訪問多個應用服務器。多服務器的身份驗證方案可解決上述問題,其允許用戶通過單次注冊就可以訪問多個應用服務器。
身份驗證方案使用的密碼函數(shù)眾多,如單向散列函數(shù)、雙線性對、ECC密碼[6]、RSA密碼[7],以及一些其它運算,如模糊驗證、生物-散列函數(shù)、異或運算等。目前很多身份驗證方案基于上述函數(shù)和運算,如Pippal等[8]使用模指數(shù)運算的雙因子身份驗證方案,在計算成本上具備高效性,但該方案不能抵御密碼猜測攻擊和冒充攻擊。Liao等[9]提出了一個用于移動應用的多服務器遠程用戶身份驗證方案,使用雙線性配對運算。Hsieh等[10]對文獻[9]的方案進行了分析,發(fā)現(xiàn)其不能抵御跟蹤攻擊,為此,提出了一個改進方案,但其通信成本和智能卡儲存成本更高。崔維等[11]提出一種輕量級的動態(tài)化密鑰協(xié)商的身份認證協(xié)議。該協(xié)議在用戶進行登錄驗證時使用時間戳值,可防范重放攻擊以及拒絕服務攻擊。屈娟等[12]指出文獻[13]易受智能卡丟失攻擊、服務器模仿攻擊,且不能保護用戶的匿名性。為此,提出了一種基于生物特征和擴展混沌映射的多服務器認證方案。
當前,很多研究者利用ECC和雙線性配對方法進行多服務器身份驗證。值得一提,雙線性配對的執(zhí)行時間要大于點乘運算,其復雜度要高于點乘運算。因此,本文提出了一個用于多服務器環(huán)境的三因子遠程用戶身份驗證協(xié)議,使用了ECC點乘運算和散列函數(shù)。與其它相關方案相比,所提協(xié)議更加安全和高效。
本文的遠程用戶認證方案使用了3個因子:密碼、智能卡和生物統(tǒng)計信息。該方案包含以下5個階段:初始、注冊、登錄、身份驗證和密碼更改階段。三方實體分別為:用戶Ui,服務器Sj,以及注冊中心RC。表1給出了本文使用的符號。
表1 本文使用的符號
該階段執(zhí)行以下步驟:
(1)RC在素域Fp上選擇一個橢圓曲線Ep(a,b),并在曲線上選擇一個點e1;
(2)RC選擇一個整數(shù)d,并計算e2=d×e1;
(3)RC選擇一對(x,y)并宣布{x,y,d}為其私有密鑰,且{E,e1,e2}為公開已知參數(shù)。
通過注冊中心注冊到一個服務器Sj上,需要執(zhí)行以下步驟:
(1)服務器Sj自由選擇其標識SIDj,并通過一個可靠信道將其發(fā)送到注冊中心RC;
(3)在收到來自RC的{KSR1}后,Sj將其保留為保密參數(shù)。
注冊一個新用戶到系統(tǒng)需要執(zhí)行以下步驟。
(1)用戶Ui將其生物信息bi和密鑰輸入其標識IDi和密碼PWi中;
(6)RC將參數(shù){P1,P2,Li,Vi,h(·),H(·)}存儲在智能卡中,并通過一個可靠信道將其發(fā)送給Ui;
當Ui希望登錄到遠程服務器Sj時,需要執(zhí)行以下步驟:
(1)用戶Ui將智能卡插入終端,并輸入其生物統(tǒng)計信息bi和密鑰IDi、PWi;
(4)智能卡生成一個隨機的臨時值Ni,并計算
式中:T1為當前時間戳。
(5)最后,Ui通過一個不可靠信道,將登錄請求消息{M1,M2,M3,M4,T1}發(fā)送至RC。
本階段執(zhí)行以下步驟:
(1)RC在時間T2接收到用戶Ui的登錄請求消息{M1,M2,M3,M4,T1},首先RC檢查T2-T1≤ΔT是否成立,式中ΔT為預期時間間隔。若不成立,則RC終止會話;
(5)在時間T4接收到來自RC消息后,Sj計算T4-T3≤ΔT是否成立。若不成立,則終止會話;
(8)在收到來自Sj的消息后,Ui檢查T6-T5≤ΔT是否成立。若不成立,則終止會話。
當用戶Ui希望對其密碼進行更新時,需要執(zhí)行以下步驟。
(1)用戶Ui將智能卡插入終端,并輸入其生物統(tǒng)計信息bi和密鑰IDi、PWi;
為了驗證所提協(xié)議的正確性,本文參考了BAN邏輯證明的基本規(guī)則和符號說明[14]?;谶@些規(guī)則,做如下操作。
步驟1 為證明提出的協(xié)議的準確性,其需要實現(xiàn)以下6個目標。
步驟2 提出的方案轉化為理想形式如下:
消息1:M1,M2,M3,T1,M4:
消息2:M5,M6,M7,M8,T3,M9:
消息3:T5,Ci,M10:
步驟3 為進一步分析,考慮9個假設如下:
假設1:Ui|≡#{Ni,Nr,Ns};
假設2:Si|≡#{Ni,Nr,Ns};
假設3:RC|≡#{Ni,Nr,Ns};
假設7:RC|≡Ui?Ni;
假設8:Sj|≡RC?Nr;
假設9:Ui|≡Sj?Ns。
步驟4 本文證明提出的協(xié)議的準確性如下:
通過“消息1”,可知:S1:RC?{M1,M2,M3,T1,M4:
通過“假設4”,消息含義規(guī)則和S1,可知:S2:RC|≡Ui|~{Ni};
通過S2,臨時值驗證規(guī)則和“假設3”,可知:S3:RC|≡Ui|≡{Ni};
通過權限規(guī)則,S3和“假設7”,可知:S4:RC|≡{Ni},其中Ni為會話密鑰中的重要參數(shù);
目標2:根據(jù)“消息2”,可知:S7:Sj?{M5,M6,M7,M8,T3,M9:
根據(jù)消息含義規(guī)則,S7和“假設5”,可以得到:S8:Sj|≡RC|~{Nr};
根據(jù)S8,驗證規(guī)則和“假設2”,可以得到:S9:Sj|≡RC|≡Nr;
根據(jù)權限規(guī)則,“假設8”和S9,可以得到:S10:Sj|≡Nr;
上述討論證明,提出的方案能夠實現(xiàn)安全的雙向身份驗證和會話密鑰協(xié)商。
攻擊者試圖使用分離參數(shù)P1、P2、Li、Vi和RN,從智能卡的內(nèi)存和通信消息{M2,M3,M4,M6,M7,M8,M9,M10,M11}中對IDi和PWi進行猜解。然而攻擊者無法得到用戶的IDi和PWi,原因如下:
(2)參數(shù)Li取決于Di,PWi,x,y,R和Fi,其中Fi為用戶的生物統(tǒng)計信息,{x,y}為加密密鑰,R為隨機數(shù)。如果攻擊者試圖從Li中得到IDi和PWi,其必須同時知曉所有這些參數(shù),因為用戶生物信息非常難以猜解,因此攻擊者無法猜解Fi。因此A無法從Li中得到IDi和PWi。
(3)參數(shù)Vi和RN受散列函數(shù)的保護,因此攻擊者無法從Vi和RN中檢索到IDi和PWi。此外,如果A試圖猜解IDi和PWi,其必須同時猜解出{IDi,PWi,R}。猜解概率等于1/212n+160,無法在多項式時間內(nèi)完成。
假設攻擊者A竊聽到消息,并試圖利用從智能卡和截獲的通信消息中檢索到的參數(shù),創(chuàng)建另一個假冒的登錄或回復消息。則A依然無法假冒Ui或Sj,主要原因如下:
上述討論證明,提出的方案能夠抵御用戶和服務器假冒攻擊。
假定攻擊者得到了用戶的智能卡,并從中檢索到所有加密信息{P1,P2,Li,Vi,h(·),H(·),RN,e1,e2}。所提方案能夠抵御智能卡丟失攻擊,原因如下:
(1)攻擊者試圖利用智能卡中提取出的數(shù)值{P1,P2,Li,Vi,h(·),H(·),RN,e1,e2},推導或猜解出IDi和PWi。但上文已經(jīng)證明,A無法使用智能卡數(shù)值檢索或猜解{IDi,PWi}。
(2)攻擊者A希望利用得到的智能卡參數(shù)表現(xiàn)為Ui或Sj。但上文節(jié)已經(jīng)證明了A無法使用智能卡信息假冒為Ui或Sj。
上述討論證明了所提協(xié)議能夠抵御智能卡丟失攻擊。
在重放攻擊中,攻擊者首先截獲通信消息,并在一定時間后重新發(fā)送消息,以假冒為合法實體。本文方案中,如果攻擊者截獲了登陸請求消息{M1,M2,M3,M4,T1},并在一定時間后重新將該消息發(fā)送到注冊中心以假冒為合法用戶。那么,在接收到攻擊者發(fā)送的消息后,注冊中心首先檢查時間戳T1的新鮮度,即T2-T2≤ΔT,式中T2為當前時間戳,ΔT為最大傳輸延遲。由此,注冊中心會因為無效的傳輸延遲,而拒絕攻擊者的登錄請求。此外,提出的方案還能夠抵御并行會話攻擊,因為在不同會話中的登陸請求消息采用了不同的新鮮時間戳。從其它會話截獲的消息一定會被發(fā)現(xiàn)是無效的。
本節(jié)將從安全性、計算成本和估計時間方面,對所提協(xié)議與其它協(xié)議[9,10,11,12]進行比較。
表2給出了所提協(xié)議與其它相關協(xié)議的安全特征比較,其中,A1:抵御密碼猜測攻擊;A2:提供用戶匿名性;A3:抵御用戶假冒攻擊;A4:抵御服務器假冒攻擊;A5:抵御重放攻擊;A6:提供前向保密性;A7:抵御會話密鑰臨時信息攻擊;A8:抵御特權內(nèi)部者攻擊;A9:登錄和密碼更改階段的準確性;A10:身份認證階段的準確性;A11:提供會話密鑰驗證。由表2可知,文獻[9,10]易于受到密碼猜測攻擊,且沒有提供用戶匿名性。文獻[10]不能抵御服務器假冒攻擊。文獻[11,12]不能抵御內(nèi)部攻擊,除了文獻[12]和本文協(xié)議,其它協(xié)議都不能提供會話密鑰驗證。因此,本文協(xié)議可以提供多種安全保障,抵御多種攻擊,具有良好的安全性特征。
表3給出了所提協(xié)議與其它協(xié)議在計算成本和估計時間方面的比較。在成本計算中,首先定義一些符號如下:
TH:散列函數(shù)
TBP:雙線性配對運算
TBH:生物-散列函數(shù)
TS:對稱密鑰加密/解密運算
TE:模指數(shù)運算
表2 安全特性比較
TPM:橢圓曲線點乘運算
TMM:模乘
本文協(xié)議中,在執(zhí)行注冊階段時,用戶需要2TH+1TBH,服務器需要1TH,注冊中心需要6TH+2TPM的運算。在登錄階段,用戶、服務器和注冊中心分別需要進行10TH+3TPM+1TBH、6TH+2TPM和7TH+4TPM的運算。在執(zhí)行密碼更改階段時,用戶需要完成11TH+2TPM+1TBH的運算。總計43TH+13TPM+3TBH。為了計算執(zhí)行時間,本文假定散列函數(shù)耗時0.0005 s,模乘耗時0.001 25 s,對稱密鑰加密/解密運算耗時0.0087 s,模指數(shù)運算耗時0.522 s,生物-散列函數(shù)耗時0.021 02 s,點乘運算耗時0.0503 s,雙線性配對運算耗時0.0621 s,本文協(xié)議的估計執(zhí)行時間為0.738 s。
各協(xié)議的計算成本和估計執(zhí)行時間比較見表3。從中可以看出,所提協(xié)議的計算成本優(yōu)于現(xiàn)有協(xié)議。雖然文獻[10]的總體計算成本更低。但該協(xié)議不能抵御服務器假冒攻擊,且不具備前向保密性,登錄和密碼更改階段效率較低。
表3 計算成本和估計執(zhí)行時間比較
本文提出了一個用于多服務器環(huán)境的三因子遠程用戶身份驗證和會話密鑰協(xié)商方案,所用的因子分別是密碼、智能卡和生物統(tǒng)計信息,在登陸階段的時間戳信息保證了數(shù)據(jù)的新鮮性。密鑰和時間戳保證了雙向驗證的順利完成。BAN邏輯驗證了所提方案準確可靠,能提供安全的雙向身份驗證和會話密鑰協(xié)商。安全性分析證明所提方案能夠抵御各種類型的攻擊。性能評價給出了所提方案在安全性、計算成本和估計執(zhí)行時間方面的優(yōu)越性。在多服務器環(huán)境中的實用價值較高。