李祉岐,孫 磊,聞 凱
(1.北京國電通網絡技術有限公司,北京 100070;2.南京航空航天大學 自動化學院,江蘇 南京 210016)
隨著信息技術的快速發展,各種高效網絡服務機制為人們提供方便,也帶來了一些安全問題,如云存儲免除了遠程用戶對存儲空間的擔憂,但要求較高的網絡安全性和資源保護性,而身份驗證協議可對遠程用戶進行身份驗證,防御試圖破壞網絡安全的惡意攻擊[1,2]。由于身份驗證協議的緊迫性和重要性,其研究具有重要的商業價值和社會意義。
迄今為止,研究人員已經提出了很多身份驗證協議。常見的有“單因子”身份驗證協議[3],即服務器將用戶密碼的散列數值存儲在數據庫中,在用戶登錄時驗證身份信息。該方法簡單高效,但易于受校驗值丟失攻擊。為抵御校驗值丟失攻擊,研究人員通過智能卡,刪除服務器上的用戶表,使用密碼和智能卡的“雙因子”身份驗證協議[4,5]。該類協議一定程度上提高了網絡安全性,但在面對冒名攻擊時并不安全。Wang等[6]證明了上述協議不能抵御口令猜測攻擊、已知密鑰攻擊等。Cui等[7]和Rong等[8]也對協議進行了改進,但存在可追蹤性,因為用戶ID在所有登陸請求消息中不變。Shi等[9]提出了一種基于動態身份的驗證協議,以解決之前的問題,并提供不可追蹤性。近期,Kaul等[10]對易受冒名、拒絕服務攻擊,且沒有提供密鑰協商和不可追蹤性的協議問題進行改進,提出了一個身份驗證協議。本文對該協議進行分析,證明其存在的安全性問題;同時,為克服這些缺陷,提出一種高效安全的輕量級身份驗證協議。本文的主要工作總結如下:①對已有協議進行分析,證明其不能抵御離線密碼猜測攻擊,且沒有提供用戶匿名性;②提出一種輕量級身份驗證協議,提高協議安全性和執行效率。
本小節主要對文獻[10]協議的缺陷進行分析。該協議包括4個階段:注冊、登錄、身份驗證和密碼更改。由于篇幅較大,具體步驟詳見文獻[10]。
本文所使用的符號說明見表1。

表1 符號說明
在Kaul等[10]提出的協議中,如果攻擊者竊取了用戶的智能卡,則其能夠以離線的方式猜測該智能卡的密碼。在得到智能卡及其密碼后,攻擊者可以冒充合法用戶竊取相關服務。假定攻擊者已經竊取用戶的智能卡,猜測該智能卡密碼的步驟如下。
步驟1 攻擊者從智能卡的內存中對Ai、Mi、Yi、Di、Ei和h(·)進行檢索[11,12]。

在Kaul等[10]提出的協議中,每個合法用戶都可以通過竊聽通信信道,并對其他用戶的登錄請求消息進行分析,得到其他用戶的真實身份標識,并不能提供用戶匿名性。用戶Ui可以通過下列步驟,得到用戶Uj的真實身份標識。


針對目前協議存在的問題,本文提出一種安全身份驗證協議,該協議包括3個階段:注冊、登錄和身份驗證、密碼更改。
在注冊階段中,根據如下步驟向用戶Ui分配智能卡。如圖1所示。

圖1 協議注冊階段


步驟3 當用戶端接收到智能卡時,其將步驟1中隨機選擇的數值r存儲到該智能卡中。
該階段中,用戶端和服務器相互認證,就會話密鑰達成一致。在身份驗證后,用戶和服務器能夠使用商定的會話密鑰對消息進行加密和認證。其主要流程如圖2所示。下面介紹具體步驟。

圖2 登錄和身份驗證階段




該階段中,用戶可以進行密碼更改。將智能卡插入讀卡器,并輸入身份標識和當前密碼。之后,智能卡進行如下步驟。
步驟1 該步驟與2.2節中步驟1相同。
步驟2 該步驟與2.2節中步驟2相同。

本節首先證明協議的正確性;然后分析提出協議在抵御已知攻擊時的性能表現;接著分析其時間復雜度,并與其它安全協議進行比較。
本節將使用BAN邏輯[14]證明提出協議的正確性。BAN邏輯是對身份驗證協議進行分析的一種形式化方法。該邏輯存在一些規則,定義如下。BAN邏輯分析中使用的符號見表2。

表2 BAN邏輯分析中使用的符號
根據BAN邏輯的程序,提出的協議必須實現以下目標:
(1)目標1:Ui|≡(Ui?SKS)。
(2)目標2:S|≡(Ui?SKS)。
為使用BAN邏輯,提出的協議被轉換為如下的理想化形式。
(1)Message 1:Ui→S:({IDi,N}x,{IDi,RNi,Ti,{IDi,N}x}Ai)。
為了對提出的協議進行分析,本文做出以下關于提出的協議的初始狀態的假設:
(1)A1:Ui|≡(Ui?AiS);
(2)A2:S|≡?AiUi;
(3)A3:Ui|≡#(RNi);
(4)A4:S|≡#(RNS);
(5)A5:Ui|≡S?(Ui?SKS);
(6)A6:S|≡Ui?(Ui?SKS);
基于BAN邏輯規則和假設,本文對提出的協議的理想化形式進行了分析。
根據Message 1,可以得到:R1)S?({IDi,N}x,{IDi,RNi,Ti,{IDi,N}x}Ai)。
基于假設A7,在將消息含義規則應用到R1后,可以得到:R2)S|≡Ui|~(IDi,RNi,Ti,{IDi,N}x)。




基于假設A5,在將管轄權規則應用到R6后,可以實現第一個目標:R7)Ui|≡(Ui?SKS)(目標1)。

基于假設A7,在將消息含義規則引用到R8后,可以得出:R9)S|≡Ui|~(RNS,RNi)。
基于假設A4,在將臨時值驗證規則引用到R9后,可以得出:R10)S|≡Ui|≡(RNS,RNi)。
根據假設A6,在將管轄權規則應用到R11后,可以實現最后一個目標:R12)S|≡(Ui?SKS)(目標2)。
3.2.1 重放攻擊

3.2.2 離線密碼猜測攻擊

3.2.3 用戶冒名攻擊

3.2.4 服務器冒名攻擊

3.2.5 提供用戶匿名性

3.2.6 會話密鑰的安全性
本節對本文協議的時間復雜度和執行時間進行分析。操作系統為32位Ubuntu操作系統,2.2 GHz CPU、2.0 GB RAM。為了更方便地對協議復雜度進行分析,定義不同操作的標識符:fEN/DE表示進行一次對稱加密/解密操作;fHash表示進行一次散列操作;fXOR表示進行一次異或操作。
本文提出協議的注冊階段需要進行1次對稱加密操作、2次散列化操作和1次異或操作。因此,提出的協議在注冊階段的時間復雜度為fEN/DE+2fHash+fXOR。在身份驗證和密鑰協商階段,需要進行6次加密/解密操作,6次散列化操作和1次異或操作。因此,身份驗證階段的時間復雜度為6fEN/DE+6fHash+fXOR。時間復雜度總計為7fEN/DE+8fHash+2fXOR,執行時間為49.8 μs。
為了說明本文提出協議的良好性能,將其安全性功能和時間復雜度與其它3種協議進行比較。
表3給出本文協議與其它協議之間的安全性比較。表4給出不同協議的時間復雜度和具體執行時間。可以看出本文協議能夠抵御各種攻擊,且提供用戶匿名性。文獻[8]協議的執行時間最短,但不能抵御離線密碼猜測攻擊,且未提供用戶匿名性和會話密鑰安全性。文獻[10]協議不能抵御離線密碼猜測攻擊,且沒有提供用戶匿名性。文獻[9]協議提供了用戶匿名性,但執行時間要高于本文和其它協議,且不能抵御離線密碼猜測攻擊。可以看出,本文提出的協議能夠抵御各種安全性攻擊,提供會話密鑰的安全性和用戶匿名性,且執行時間適中,因此更適用于真實應用。

表3 各協議的安全性

表4 各協議的時間復雜度和執行時間
本文對已有的身份驗證協議不能抵御離線密碼猜測攻擊,且沒有提供用戶匿名性的問題進行分析。針對存在的缺陷,提出一種改進的身份驗證協議。所有發送信息中均不包含密碼,且設置服務器私人密鑰,抵御離線密碼猜測攻擊。同時提出的協議中,用戶身份標識在每個會話中存在差異,攻擊者無法對用戶的行為進行跟蹤。通過與其它協議比較,本文協議能夠抵御已知的安全性攻擊,且提供了用戶匿名性。同時執行時間適中,是一種輕量級身份驗證和密鑰協商協議,適用于資源受限環境。