光笑黎,張露露,劉繼增
(長安大學 信息工程學院,西安 710064)
隨著新一代蜂窩網絡通信技術(5G)的快速發(fā)展,將5G 通信技術應用于日常生活中是目前的發(fā)展趨勢[1].針對5G 車聯(lián)網環(huán)境下的終端用戶與用戶之間安全連接的需求,認證密鑰協(xié)商是建立用戶間安全連接的關鍵.雖然5G 技術可以顯著地提高消息的傳輸效率,但許多現(xiàn)有的認證方案是基于復雜的雙線性對運算,計算時間太長,不適合時延敏感的5G 網絡,為了構建適用于5G 通信環(huán)境的實時認證密鑰協(xié)商協(xié)議,需要盡可能地減少密鑰協(xié)商時間.
基于公鑰基礎設施的認證密鑰協(xié)商[2]中,用戶的公、私鑰是通過數(shù)字證書發(fā)放,通信效率低,計算量大,同時證書的存儲和管理開銷也大.為了避免公鑰證書的使用,Shamir 等人[3]引入基于身份的密碼體制概念,基于身份的密碼體制中,用已知的身份信息作為公鑰,來避免使用公鑰證書,雖然簡化了傳統(tǒng)公鑰密碼系統(tǒng)中公鑰的管理,但是存在密鑰托管問題,為了克服以上問題,Alriyami 等人[4]提出基于無證書的公鑰密碼體制,用來解決密鑰托管問題,避免公鑰證書的使用,但可信的密鑰生成中心生成的部分私鑰需要通過安全信道傳給用戶[5-7],建立安全信道開銷較大,不適用于5G 車聯(lián)網環(huán)境.基于證書的公鑰體制中[8-12],每個用戶生成一個公/私鑰對,并將公鑰發(fā)送給受信任的證書頒發(fā)機構(TA)用來請求證書,然后將證書發(fā)送給它的所有者.在基于證書的公鑰密碼體制中,因為TA 不知道用戶私鑰,解決了密鑰托管問題;因為證書不需要保持私密,也沒有密鑰分發(fā)問題,不需要建立安全信道,更適用于5G 環(huán)境.
本文給出了一個基于證書的認證密鑰協(xié)議的構造,并定義了CB-AKA 協(xié)議的安全模型,克服了通信環(huán)境中存在著數(shù)據泄露、會話密鑰泄漏、重放、中間人攻擊、公鑰替換攻擊和模擬攻擊,缺乏匿名性和不可追蹤性等安全和隱私問題.為了更好的適用于5G 通信環(huán)境,采用無雙線性對的認證方法,保證計算代價和通信代價.在密鑰協(xié)商時,用匿名[13,14]保證用戶數(shù)據的隱私,同時用輕量級的算法[15-17]保證用戶之間安全快速的傳輸數(shù)據,實現(xiàn)用戶之間的安全接入.
令 G,GT是素數(shù)階p的兩個循環(huán)群組,g為 G的生成元.假設e:G× G→GT為雙線性映射,則其滿足下列性質:
雙線性:e(ga,hb)=e(g,h)ab,g,h∈G,a,b∈Zp.
非退化性:e(g,h)≠1.
可計算性:對任意g,h∈G,存在一個有效的算法
計算e(g,h).
Millier[18]首次提出了橢圓曲線密碼體制的概念,Fp被 假設為具有大素數(shù)q的 有限域.橢圓曲線E定義為y2=x3+ax+bmodq,其中a,b∈Fp并 且Δ=4a3+27b2≠0.在點加法P+Q=R的操作下,通過橢圓曲線E生成加法群 G,并且標量乘法運算表示為kP=P+P+···+P(ktimes).
橢圓曲線離散對數(shù)問題(ECDLP):給出(P,xP)∈G,ECDL 問題要去找一個整數(shù)x.
橢圓曲線計算性Diffie-Hellman 問題(ECCDHP):給出(P,xP,yP)∈G,ECCDH 問題要計算xyP∈G.
基于證書下AKA 協(xié)議的網絡模型如圖1所示.其中,參與者有3 種類型:用戶Ui,服務器S和證書權威中心TA.
圖1 網絡模型
證書權威中心TA:TA 的任務是生成系統(tǒng)參數(shù),根據Ui和S的公鑰生成證書.
用戶Ui:Ui是一個移動用戶,從TA 獲得證書,并使用證書來對S證明自己的身份.經過S認證,可以訪問S提供的移動服務.
服務器S:S是一個移動服務提供商,也從TA 獲得它的私鑰,并使用它來顯示其身份的資格.S驗證Ui的有效性后,根據Ui的請求提供相應的移動服務.
作為一種AKA 協(xié)議,基于證書的AKA 協(xié)議應滿足以下安全特性.
(1)相互認證:方案應提供相互認證,即,服務器S對用戶Ui進 行身份驗證,用戶Ui對 服務器S進行身份驗證.
(2)會話密鑰協(xié)議:在方案的互認證階段結束時,用戶Ui與服務器S共享一個會話密鑰進行消息加密.
(3)用戶匿名性:方案不應泄露用戶身份信息,以保證用戶隱私,敵手無法從交換的消息中獲得用戶的真實身份和行為.
(4)不可追蹤性:方案應保證對手無法從交換的消息中追蹤到用戶,為用戶提供更大的安全性.
(5)前向保密:如果一個或多個參與者的私鑰被泄漏,對手在泄漏之前建立的會話密鑰時必須具有微不足道的優(yōu)勢.這種安全屬性可以擴展到以下2 種類型:(1)完全正向保密:即使對手擁有所有參與者的私鑰,也必須保持正向保密;(2)部分前向保密:即使對手擁有一些但不是所有參與者的私鑰,也必須保持前向保密.
(6)已知會話密鑰攻擊抵抗:在已知給定協(xié)議中生成的會話密鑰的情況下,對手無法計算另一個安全會話密鑰.
(7)中間人攻擊的抵抗:攻擊者不能冒充合法用戶欺騙云服務器,也不能冒充服務器欺騙合法用戶.
(8)重放攻擊抵抗:對手無法對協(xié)議發(fā)起攻擊,重放舊消息.
(9)TA 前向保密:即使對手擁有TA 的主密鑰,也必須保護前向保密.
所有系統(tǒng)參數(shù)由證書權威(TA)生成.這一階段的工作步驟如下:
(1)TA 隨機選取兩個大素數(shù)p和q,選取由方程y2=x3+ax+bmodq定義的非奇異橢圓曲線E,其中a,b∈Fp.
(2)輸入一個安全參數(shù)k,TA 選取一組素數(shù)階q和生成器P的橢圓曲線點的群G.
(3)TA 選擇隨機數(shù)s∈作為系統(tǒng)主密鑰,并對其保密,然后計算系統(tǒng)公鑰Ppub=sP.
(4)TA 選擇哈希函數(shù):H:{0,1}?→
(5)TA 公布系統(tǒng)參數(shù){p,q,G,P,Ppub,H},并對系統(tǒng)主密鑰s保密.
用戶Ui向TA 注冊以獲得證書.圖2為用戶注冊.
(1)用戶密鑰產生:隨機選擇整數(shù)xi,ki∈,xi作為秘密值,計算pki=xiP,pidi=H(IDi,ki).然后,Ui通過不安全通道將pki和靜態(tài)匿名身份pidi發(fā)送給TA.
(2)證書生成:TA 隨機選擇一個整數(shù)ri,bi∈,計算Ri=riP,Bi=biP,pidi′=pidi⊕H(Bi,biPpub),Certi=ri+sH(pidi′,pki,Ri).
圖2 用戶注冊
服務器S向TA 注冊以獲得證書.圖3為服務器注冊.
圖3 服務器注冊
(1)服務器密鑰產生:隨機選擇整數(shù)xj∈,xj作為秘密值,計算pkj=xjP.然后,S通過不安全通道將pki發(fā)送給TA.
(2)證書生成:TA 隨機選擇一個整數(shù)rj∈,計算Rj=rjP,Certj=rj+sH(IDj,pkj,Rj).
用戶Ui和服務器S分別執(zhí)行以下操作,實現(xiàn)相互認證,最終生成公共會話密鑰.圖4為Ui和S認證密鑰協(xié)商.
(1)Ui選擇ai∈RZ?q并計算Ai=aiP,Wi=Rj+H(IDj,pkj,Rj)Ppub+pkj,Authi?j=(ski+Certi+ai)Wi,PIDi=pidi′⊕H(Ai,Authi?j),Mi=H(pidi′,PIDi,Authi?j,Ai,T1),Trans1={PIDi,Ai,Mi,T1}.Ui發(fā)送Trans1 到S.
(2)收到Ui消息后,S讀取當前時間T2并檢查|T2?T1|≤ΔT.如果該值有效,則S計算Wj=pki+Ri+H(pidi′,pki,Ri)Ppub,Authj?i=(Wj+Ai)(skj+Certj),pidi′=PIDi⊕H(Ai,Authj?i),并檢查Mi?=H(pidi′,PIDi,Authj?i,Ai,Ti),如果不相等,則終止該進程.否則,選擇隨機數(shù)aj∈RZ?q,讀取當前時間T3并計算Aj=ajP,A′j=ajAi,Keyj=H(A′j,Ai,Aj),pidj=IDj⊕H(Aj,Authj?i),Mj=H(pidi′,pidj,Authj?i,Aj,T3).并設置Trans2={pidj,Mj,Aj,T3}.S發(fā)送Trans2到Ui.
(3)收到S的消息后,Ui讀取當前時間T4并檢查|T4?T3|≤ΔT.如果該值有效,則計算IDj=pidj⊕H(Aj,Authi?j),并檢查Mj?=H(pidi′,pidj,Authj?i,Aj,T3),如果不相等,則終止該值.否則,Ui計算A′i=aiAj,Keyi=H(A′i,Ai,Aj).
圖4 Ui和S 認證密鑰協(xié)商
由協(xié)議可知,要驗證Mi=Mj需要先驗證Authi=Authj.由Keyi,Keyj計算式可知,只需證明A′i=A′j=aiajP,即可得到Keyi=Keyj.
因為A′i=A′j=aiajP,所以得到Keyi=Keyj.因此,這驗證了該協(xié)議的正確性.
本文在1.5 節(jié)中,給出了認證,密鑰協(xié)商,用戶匿名等方面的安全性需求.下面將分析1.5 節(jié)的安全性需求.
(1)相互認證:沒有多項式對手有能力成功偽造合法的登錄或響應消息,參與者可以通過驗證接收到的消息是否有效來對彼此進行身份驗證,因此,該協(xié)議可以實現(xiàn)相互認證.
(2)會話密鑰協(xié)商:根據2.4 節(jié)中表示的協(xié)議,所有的參與者都可以計算出相同的值A′i=A′j=aiajP,和共同的會話密鑰Keyi=Keyj.因此,AKA 協(xié)議可以實現(xiàn)會話密鑰協(xié)商.
(3)用戶匿名性:在本方案中,用戶的身份用戶Ui不在消息<Trans1,Trans2>中傳輸.此外,根據用戶的PIDi=pidi′⊕H(Ai,Authi?j),沒有Authi?j無法確定pidi′.因此,不可能知道用戶的身份.因此,該方案提供了用戶匿名性.
(4)不可追蹤性:在本方案中,參與者Ui和S需要分別選擇隨機數(shù)ai,aj,才能計算Ai=aiP,Aj=ajP.此外,時間戳在提議的協(xié)議中是動態(tài)的.因此,該方案為用戶提供了不可跟蹤性.
(5)前向保密:假設對手竊取智能卡,截取消息Ai=aiP,Aj=ajP,為了得到的值Keyi=H(A′i,Ai,Aj),對手必須計算A′i=A′j=aiajP,即,它必須解決ECCDH問題.由于ECCDH 假設是難以解決的,該協(xié)議提供了完美的前向保密.
(6)已知會話密鑰攻擊的抵抗性:根據該方案中描述的協(xié)議,每個會話中的會話密鑰Keyi=H(A′i,Ai,Aj)(A′i=aiAj)不同,ai為隨機數(shù).因此,即使一個會話密鑰被泄露,它也不能影響其他會話密鑰的隱私.
(7)中間人攻擊的抵抗性:假設敵手知道IDi,IDj,其目標是偽造有效的消息<Trans1,Trans2>.要偽造一個有效的Trans1,隨機選擇一個數(shù)a′i∈RZ?q,計算但是,對于敵手,沒有Mi=H(pidi′,PIDi,Authi?j,Ai,T1)是很難計算Trans1的.同樣,沒有Mj就很難偽造Trans2.從上面的分析中,知道該方案提供了相互的身份驗證,并且攻擊者無法成功地模擬用戶或應用服務器.因此,該協(xié)議可以抵抗中間人攻擊.
(8)抗重放攻擊:根據方案中描述的協(xié)議,將時間戳{T1,T2,T3,T4}添 加到認證過程中.由于{T1,T2,T3,T4}的新鮮度,參與者(例如,Ui和S)可以通過驗證重放攻擊.
本節(jié)與以前基于證書的AKA 協(xié)議進行安全屬性和計算成本方面的比較.
(1)安全屬性比較
R1:相互認證,R2:會話密鑰協(xié)商,R3:用戶匿名性,R4:不可追蹤性,R5:前向保密,R6:已知會話密鑰攻擊的抵抗性,R7:中間人攻擊的抵抗性,R8:抗重放攻擊,R9:抗公鑰替換攻擊,R10:解決密鑰托管問題,R11:不建立安全信道.不同方法的安全屬性比較如表1.
(2)計算代價比較
選擇一個帶生成器p的群G,其中是一個160 位素數(shù)q,p是從超奇異橢圓曲線E(Fp):y2=x3+ax+bmodp中選取的一個點(p是一個512 位素數(shù)).
本文使用MIRACL Crypto SDK 測試了上述操作,并在2.53 GHz、i7 CPU 和4 GB 內存的64 位Windows 10操作系統(tǒng)上運行實驗.表2列出了這些操作的平均運行時間.對于計算成本分析,表2給出了一些基本操作的執(zhí)行時間.表3給出了文獻[9-12]和本文提出的方案計算代價比較.
表1 安全屬性比較
表2 基本操作的執(zhí)行時間
表3 該方案與其他方案用戶計算代價比較
對于認證密鑰協(xié)商過程中的計算代價,文獻[9]需要運行1 個模乘運算和2 個雙線性對運算,所以總的運行時間為13.1496 ms.文獻[10]需要運行1 個模乘運算和2 個雙線性對運算,總的運行時間為13.1496 ms.文獻[11] 需要運行7 個模乘運算,總的運行時間為9.9414 ms.文獻[12]需要運行8 個模乘運算和1 個雙線性對運算,所以總的運行時間為21.6708 ms.本文提出的方案需要運行4 個模乘運算,總的運行時間為5.6808 ms.
圖5清楚的展示出計算代價的比較結果,從圖中直觀得到本文方案計算代價明顯優(yōu)于其他方案.
圖5 用戶計算代價比較
為了克服注冊時密鑰托管,安全信道建立代價高等問題,幾個基于證書認證密鑰協(xié)商方案已經被提出.但是,這些方案大多采用昂貴的雙線性對運算,在計算和通信開銷方面性能不理想.本文提出了一個采用橢圓曲線的基于證書的認證密鑰協(xié)商協(xié)議.安全性分析表明,該協(xié)議在隨機預言機模型下是安全的,能夠滿足基于證書的認證密鑰協(xié)商協(xié)議下的安全需求.性能分析結果表明,該協(xié)議具有較低的計算代價.本文提出的協(xié)議對各種類型的攻擊具有強大的彈性,這也使它適合廣泛的應用程序使用,以在不同級別上維護安全性.在本文的基礎上,可進一步研究用戶、霧節(jié)點、云服務器三方認證密鑰協(xié)商方案.