劉衛紅,曾建
(廣東農工商職業技術學院,廣州 510507)
隨著云計算技術的發展,越來越多的用戶在云服務器上實現數據的計算、存儲、處理和共享,云環境中的安全問題也越來越嚴峻,因此設計一種云環境下用戶和服務器之間身份認證和密鑰交換的協議具有重要的應用價值。
口令因其簡單易記、操作方便,常被用于密鑰交換協議中(文獻[1-5]),但因其熵值較小,重復利用且易被遺忘,也常成為攻擊者的攻擊方向。生物特征具有不易遺忘、不易丟失,不易偽造且隨身攜帶等優點,它常被用來與口令一起作為密鑰交換協議中身份認證的依據(文獻[6-9])。在這些協議中,攻擊者不能僅靠口令來破解協議,還需要獲得用戶的生物特征信息。因此,基于生物特征和口令認證的協議安全性強且又便捷可行。但是目前大部分協議在用戶注冊階段都假設用戶與服務器之間存在安全的通信信道,并且服務器是安全可信的,這些假設在現實部署中是很難實現的,因此這些協議的安全性和可行性值得商榷。針對上述問題,本文提出了一種云環境下基于指紋和口令認證的密鑰交換協議,對用戶與服務器之間的通信信道以及服務器本身都沒有安全性要求,借助哈希函數、離散對數、計算性Diffie-Hellman問題、盲簽名和模糊提取技術既實現了服務器與用戶之間的雙向認證,又保證了傳輸數據的完整性和真實性,安全可靠地實現了云環境下用戶與服務器之間的密鑰協商與共享,安全性分析表明該協議具有語義安全性,密鑰保密性、前向安全性,且能對抗重放攻擊、惡意服務器攻擊、離線字典攻擊、不可檢測在線字典攻擊等常見攻擊。
盲簽名是一種數字簽名的方式,它的簽名過程為:
請求者先將消息加密(盲化),然后簽名者再對密文簽名,最后請求者對簽名進行解密(脫盲),從而獲取到簽名者對消息的簽名。
模糊提取(Fuzzy Extractor)技術是一種基于生物特征的密鑰產生技術,該技術能從生物特征中提取出重構用戶生物特征所需要的冗余信息而不用存儲生物特征模板本身,既利用生物特征進行了身份認證,又對生物特征信息進行了保密。該技術包括Gen和Rep兩種算法:
Gen(B)→R,P:輸入 B,輸出輔助數據 P(公開)和均勻隨機值R。
Rep(B,P)→R:給定 P,輸入 B,重新生成均勻隨機值R。
本協議中使用該技術的Gen算法通過輸入由生物特征和口令處理的值B,輸出一個輔助數據P和一個均勻隨機值R作為認證密鑰。然后使用Rep算法以B和P為輸入,恢復認證密鑰R。用戶和服務器使用R加密對方的驗證信息以實現雙向身份認證。
本文用到的所有符號說明如下:
U和S分別表示云環境下的用戶和服務器,ID表示用戶U的id,A→B:M表示A給B發送消息M;pw和b表示用戶U的口令和指紋信息;H表示安全的單向Hash函數;Ek(M)表示用密鑰k加密消息M;R表示用戶的認證密鑰;NU為用戶選取的隨機數,NS為服務器選取的隨機數,表示異或操作;||表示消息的級聯;p,q 表示大素數,且 p=2q+1;g表示 q 階群 GF(p)的生成元;Zq是一個模q的整數環;是Zq的乘法群;表示在中隨機選取元素 x;gx表示gx=gx(modp)。
一個云環境下基于指紋和口令認證的密鑰交換協議被稱為是安全的,如果它滿足下列5個條件:
(1)語義安全性:對外部惡意攻擊者來說,會話密鑰和隨機數不可分;
(2)密鑰保密性:密鑰具有前向安全性;
(3)用戶口令、指紋信息和驗證密鑰安全;
(4)用戶與服務器之間都能進行身份認證;
(5)對抗重放攻擊、惡意服務器攻擊、不可檢測在線字典攻擊、離線字典攻擊。
在以往的口令認證密鑰交換協議中,一般都假定用戶與服務器之間存在一個安全的通信信道,用來發送用戶口令或生物特征信息,并且假定服務器是可信的,將口令或生物特征信息存儲在服務器上。這些假設在實際的應用場景中都是難以實現的,所以這些認證方案的可用性和安全性都大大降低。針對這些認證方案的不足,我們提出了一種云環境下基于指紋和口令認證的密鑰交換協議,該協議在注冊階段將用戶口令和指紋信息通過hash函數和離散對數進行處理,然后發送至服務端存儲,用戶端和服務器端都不直接保存用戶口令和指紋信息。在會話密鑰協商階段,服務器和用戶通過盲簽名和模糊提取技術進行身份認證并交換會話密鑰,實現了云環境下用戶與服務器的雙向認證,同時也保證了會話密鑰的安全性,并能有效地抵抗在線字典攻擊、離線字典攻擊、惡意服務器攻擊。
協議分成注冊和密鑰協商兩個階段:
(1)注冊階段
U →S:W、Wb、ID
注冊階段,用戶通過電腦和指紋采集器錄入口令pw和指紋信息b,然后計算W=H(pw)[⊕]H(b)以及Wb,最后將W、Wb、ID發送給S。
服務器收到信息后,將ID、W、Wb保存起來。
(2)密鑰協商階段
用戶注冊為合法用戶之后,如果想接入云服務器使用其服務,則需先與服務器進行雙向身份認證并協商一個會話密鑰進行安全通信。
Step1:
U→S:ID,NU
用戶U選擇一個隨機數NU,然后向服務器發送用戶ID和NU;
S→U:Wc
服務器根據ID檢索到W和Wb,系統生成一個盲化因子c,計算Wc,并將Wc發送給用戶。
Step2:
U→S:Wcb
用戶收到消息后輸入口令pw和指紋信息b,然后計算Wc?b=(H(pw)⊕H(b))c?b,然后將其發送給服務器。

Step3:
U→S:A2,gy
用戶收到消息后計算Wb=(H(pw)⊕H(b))b,然后使用Wb和P恢復R,即Rep(Wb,P)→R,再用R解密A1得到NU,驗證NU,如果與之前自己選取的隨機數NU不一致,則拒絕,否則用R加密NS和ID,并隨機選取,計算gy,將,gy發送給服務器,同時計算sk=H(gxy||ID||NS||NU)。
服務器收到消息后用ER解密A2得到NS和ID,驗證如果跟自己選取的隨機數一致,則計算sk=H(gyx||ID||NS||NU|=H(gxy||ID||NS||NU)。
用戶和服務器最終以sk=H(gxy||ID||NS||NU)最為會話密鑰進行安全通信。
該協議中用戶口令和指紋信息都是通過hash和離散對數處理后進行傳輸和存儲的,因此對用戶與服務器之間的通信信道沒有安全性要求,也不要求服務器必須可信,符合實際的部署場景,保證了協議的可行性。在會話密鑰協商階段,服務器和用戶通過盲簽名和模糊提取技術實現了云環境下用戶與服務器的雙向認證,同時基于計算性Diffie-Hellman問題的困難性和哈希函數的隨機性交換會話密鑰,保證了會話密鑰的安全性,并能有效地抵抗重放攻擊、惡意服務器攻擊、不可檢測在線字典攻擊、離線字典攻擊。
(1)語義安全性
因為用戶和服務器傳遞用戶口令、指紋信息以及驗證信息時都使用了哈希、離散對數或加密處理,并且使用盲簽名和模糊提取技術對驗證數據進行處理,因此,改進協議相對于外部敵手來說是語義安全的。
(2)密鑰保密性
前向安全性:若E竊取了用戶的口令和指紋信息,基于計算性Diffie-Hellman問題的困難性,他無法從截獲的消息gx和gy計算出gxy,也就無法計算出之前的會話密鑰sk=H(gxy||ID||NS||NU),從而保證了協議的前向安全性。
(3)用戶口令、指紋信息和驗證密鑰的安全性。
用戶口令、指紋信息和驗證密鑰都不直接保存在用戶端和服務器端,而是通過hash和離散對數處理后保存在服務器端,所以不存在泄漏可能。同時驗證密鑰也是盲簽名和模糊提取技術生成,所以攻擊者不可能獲取用戶口令、指紋信息和驗證密鑰。
(4)用戶與服務器之間的雙向認證。
因為驗證用戶和服務器的過程中都加入了隨機數,并使用模糊提取技術生成的驗證密鑰進行加密,保證了只有擁有真正口令和指紋信息的用戶以及注冊時的服務器才能加密對方選取的隨機數并解密獲取和驗證自己的隨機數,因此,保證了服務器與用戶之間身份的雙向認證。
(5)對抗重放攻擊、惡意服務器攻擊、不可檢測在線字典攻擊、離線字典攻擊。
重放攻擊:因為驗證用戶和服務器的過程中都加入了隨機數并使用模糊提取技術生成的驗證密鑰進行加密,所以攻擊者不能通過對方的驗證,也就無法假冒任何一方發動重放攻擊。
惡意服務器攻擊:因為服務器并不擁有也不存儲用戶的指紋信息,因此無法偽冒自己域中用戶或其他域中用戶進行盲簽名,也就無法通過其他服務器的驗證,更無法進行后續的密鑰交換,故不存在惡意服務器攻擊。
不可檢測在線字典攻擊:敵手選擇一個pwd'和b'作為用戶的候選口令和指紋信息,然后選擇一個隨機數發送給服務器后,服務器隨機選取c向敵手發送Wc,敵手計算以及W'cb',服務器收到后計算,顯然≠,服務器馬上能檢測到敵手的攻擊。
離線字典攻擊:如果攻擊者選擇離線字典攻擊,攻擊者同樣從口令空間中選取一個候選口令和候選指紋信息b'作為用戶的真實口令和指紋信息,攻擊者通過截獲真實會話中的任意一個消息來驗證候選口令和候選指紋信息b'的正確性。因為涉及到用戶口令、指紋信息和驗證密鑰的消息都被Hash函數、離散對數或盲簽名以及模糊提取技術處理過,由于Hash函數的不可逆性和離散對數問題的困難性以及盲簽名和模糊提取技術的安全性可知攻擊者從真實消息中驗證口令和指紋正確的概率幾乎為零。
本文的云環境下基于指紋和口令認證的密鑰交換協議結合了口令認證的簡單、指紋認證的安全便攜,以及離散對數、計算性Diffie-Hellman的高可靠等特點,具有語義安全性,密鑰保密性、前向安全性,且能對抗重放攻擊、惡意服務器攻擊、離線字典攻擊、不可檢測在線字典攻擊等常見攻擊。借助哈希函數、離散對數、計算性Diffie-Hellman問題、盲簽名和模糊提取技術既實現了服務器與用戶之間的雙向認證,又保證了傳輸數據的完整性和真實性,安全可靠地實現了云環境下用戶與服務器之間的密鑰協商與共享。