一種應(yīng)用于客戶-服務(wù)器環(huán)境的認(rèn)證密鑰協(xié)商方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及密碼技術(shù)領(lǐng)域,具體地說,設(shè)及一種應(yīng)用于客戶-服務(wù)器環(huán)境的的認(rèn)證 密鑰協(xié)商方法。
【背景技術(shù)】
[0002] 認(rèn)證密鑰協(xié)商是密碼理論及應(yīng)用的核屯、內(nèi)容,其中化S協(xié)議(傳輸層協(xié)議)是目前 應(yīng)用最廣泛的認(rèn)證密鑰協(xié)商協(xié)議的國際標(biāo)準(zhǔn)。TLS目前的最新版本是化Sl. 2,已經(jīng)標(biāo)準(zhǔn)化和 應(yīng)用多年。為了適應(yīng)網(wǎng)絡(luò)安全的新挑戰(zhàn)和新需求,目前IETF國際標(biāo)準(zhǔn)化組織正在制訂最新 的化S 1.3標(biāo)準(zhǔn)。
[0003] 目前的化Sl. 3鑰協(xié)商協(xié)議大致運(yùn)行過程如下:
[0004] 第一輪:第一用戶(客戶端)發(fā)送參數(shù)X = gx至第二用戶,其中,g表示有限群護(hù)的循 環(huán)子群G的生成元,X表示第一用于的DH-指數(shù);
[000引第二輪:第二用戶(服務(wù)器)發(fā)送參數(shù)Y = gy至第一用戶,第二用戶還計(jì)算參數(shù)K = XY 和參數(shù)Cb=AE化,(Ib,B,C邸TB,F(xiàn)inishB)),其中B = gb,F(xiàn)inishB =邸尸口6,化乂,¥)),第二用戶 將(Y,Cb)發(fā)送至第一用戶。
[0006] 第S輪:第一用戶計(jì)算參數(shù)K = YX和參數(shù)Ca = AE化,(lA,A,CERTA,SigA,F(xiàn)inishA)), 其中SigA是第一用戶利用其私鑰對(X,Y,Cb)的數(shù)字簽名,F(xiàn)inishB = KDF(BX,H(X,Y,CB))。第 一用戶將Cb發(fā)送至用戶B,并運(yùn)行邸F(Xy,Xb),第二用戶檢查SigA簽名的有效性并運(yùn)行邸F (xy,xb)導(dǎo)出會(huì)話密鑰。
[0007] 密碼算法的主要計(jì)算單元是模指數(shù)運(yùn)算。國際數(shù)字簽名標(biāo)準(zhǔn)DSA算法需要1個(gè)模指 數(shù)運(yùn)算進(jìn)行簽名生成,簽名驗(yàn)證需要2個(gè)模指數(shù)運(yùn)算。而對于上述基于DSA數(shù)字簽名的 化SI.3協(xié)議,第二用戶(服務(wù)器)共計(jì)需運(yùn)行4.5個(gè)模指數(shù)運(yùn)算,第一用戶(客戶端)共計(jì)需運(yùn) 行4個(gè)模指數(shù)運(yùn)算。運(yùn)使得化SI.3難W在計(jì)算受限的設(shè)備(例如手機(jī)、智能卡等移動(dòng)設(shè)備)上 的配置和應(yīng)用。
[0008] 因此,在移動(dòng)互聯(lián)大規(guī)模普及和應(yīng)用的背景下,亟需一種更為高效的應(yīng)用于客戶 端-服務(wù)器環(huán)境的新型的高效認(rèn)證密鑰協(xié)商方法。
【發(fā)明內(nèi)容】
[0009] 為解決上述問題,本發(fā)明提供了一種應(yīng)用于客戶-服務(wù)器環(huán)境的的認(rèn)證密鑰協(xié)商 方法,所述方法包括:
[0010] 第一設(shè)備根據(jù)其生成的DH-指數(shù)X和第一設(shè)備的公鑰A = ga,確定第一參數(shù)^=AgX EG或公=AXEG,并將所述第一參數(shù)公W及第一輔助信息auxA發(fā)送給第二設(shè)備,其中,g表示 有限群護(hù)的循環(huán)子群G的階為q的生成元,xeZq,AeG,aeZq是第一設(shè)備的私鑰,auxA是可為 空的數(shù)據(jù)集合;
[0011] 第二設(shè)備根據(jù)其生成的DH-指數(shù)yeZq和第二設(shè)備的公鑰B = gbeGW及第二輔助信 息auxB其是可為空的數(shù)據(jù)集合,其中beZq是第二設(shè)備的私鑰,W及接受到所述第一參數(shù)r 及第一輔助信息auXA確定第二參數(shù)r =ByeeG或r =B叮EG,其中Y = gyeG,yeZq,e = h(Y =gY,auxh),片:{〇,1}' ~^化護(hù)I是一個(gè)哈希函數(shù),l<Lh< |q|,|q|表示q的二進(jìn)制長度 口 "而^^??,11顯:6 11{乂'^。,公,(:飾7;,/,,4〔巧?7;}11公加^,所述第二設(shè)備根據(jù)化,7)^及 第二輔助信息auxBW及接收到的所述第一參數(shù)公及所述第一輔助信息auxA,確定預(yù)先共享 密鑰S,根據(jù)SW及村/,r,auxA,auxB}的一個(gè)子集利用密鑰導(dǎo)出函數(shù)KDF確定第一設(shè)備和第 二設(shè)備的認(rèn)證加密密鑰Ka和Kb,其中Ka和Kb相等或不等,第二設(shè)備利用一個(gè)對稱加密算法AE 計(jì)算Cb = AE化B,( Ib,B,C邸Tb,Y,DataB)),其中C邸Tb是第二設(shè)備的公鑰證書,Ib表示第二設(shè) 備的身份,DataB是第二設(shè)備其它需加密傳輸?shù)目蔀榭盏臄?shù)據(jù)集合,CERTa是第一設(shè)備的公鑰 證書,Ia表示第一設(shè)備的身份;所述第二設(shè)備將第二參數(shù)和Cb和auxB發(fā)送給所述第一設(shè) 備,并導(dǎo)出會(huì)話密鑰;
[0012] 所述第一設(shè)備根據(jù)(a, X) W及所述第一輔助信息auxAW及接受到的所述第二參數(shù) Y' W及第二輔助信息auxB確定S,根據(jù)SW及{X',Y',曰11別,曰11祉}的一個(gè)子集利用密鑰導(dǎo)出函 數(shù)KDF確定第一設(shè)備和第二設(shè)備的認(rèn)證加密密鑰Ka和Kb,然后利用Kb解密接收到的所述Cb得 到(Ib,B,CERTb,Y);所述第一設(shè)備驗(yàn)證公鑰證書CECTb和第二參數(shù)r的有效性,若驗(yàn)證結(jié)果 不正確則終止運(yùn)行,若驗(yàn)證結(jié)果正確則計(jì)算Ca=AE化A,( Ia, A,CERTa,X,DataA)),其中Ia表示 第一設(shè)備的身份,CERTa是第一設(shè)備的公鑰證書,DataA是第一設(shè)備其它需加密傳輸?shù)目蔀榭?的數(shù)據(jù)集合;第一設(shè)備將Ca發(fā)送給第二設(shè)備,并導(dǎo)出會(huì)話密鑰;
[0013] 所述第二設(shè)備利用Ka解密接收到的所述Ca得到(Ia, A,CERTa,x),驗(yàn)證公鑰證書 CERTa和第一參數(shù)r的有效性,若驗(yàn)證結(jié)果不正確則終止運(yùn)行,若驗(yàn)證結(jié)果正確則導(dǎo)出會(huì)話 密鑰;
[0014]具體實(shí)施中,推薦X' =AgXEG且Y' =ByeeG,或,X' =AXEG且Y' =ByeeG,或,X'= AgX^G 且 Y' =BeyeG,或,X' =AX^G 且 Y' =BeyeG;
[0015] 要求第一設(shè)備和第二設(shè)備應(yīng)計(jì)算出相同的預(yù)先共享密鑰S,并導(dǎo)出相同的會(huì)話密 鑰。
[0016] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,
[0017] e = h(IB,B,Y = gy,X',auxe)或e = h(IB,B,Y = gy,auxe),口!aeea似:^Ua^^?且可為 空,一般而言函數(shù)輸入中的(Ib,B)可W用CECTb或CECTb的哈希來替代,同理函數(shù)輸入中的 (Ia,A)可W用CERTa或CERTa的哈希來替代,建議auxe為空或包含一個(gè)時(shí)間戳和/或一個(gè)第二 設(shè)備選取的隨機(jī)數(shù)n,其中n E auxB或n邱at加,在本發(fā)明中為了描述的方便,我們假設(shè)哈 希函數(shù)的輸出與輸入的順序無關(guān),具體而言,對于e = h(lB,B,Y = gy,X/,auxe)=h(Y = gy, auxh)而言,auxh = auxeU {Ib,B,X' };
[0018] 和/或,auxA包含第一設(shè)備生成的隨機(jī)數(shù)和/或時(shí)間戳和/或第一設(shè)備的身份信息 和/或第一設(shè)備的IP地址信息,或auxA為空;auxB包含第二設(shè)備生成的隨機(jī)數(shù)和/或時(shí)間戳 和/或第二設(shè)備的身份信息和/或第二設(shè)備的IP地址信息,或auxB為空;
[0019] 和/或,根據(jù)所需達(dá)到的安全強(qiáng)度需要,X的長度I X I W及y的長度I y I可變,即:0< x| 引 q|,0<|y| 引 q|,其中 |q|表示的是q 的長度,或x = hx(x',auxx),其中hx: {0,1}*一 {0, 1} Ixl是一個(gè)哈希函數(shù),e {0,1 r是第一設(shè)備選取的保密的隨機(jī)數(shù)且的長度I I與I q 是多項(xiàng)式關(guān)系,《?^^^?!1〇:,11{/,,4<::£^?7;},在發(fā)明方法的實(shí)際應(yīng)用中,推薦^ =心^/,14, A)或x = hx(x',lA,A,tA),其中tA是一個(gè)時(shí)間戳信息,或X和y均直接從Zq的一個(gè)子集中隨機(jī)選 ??;
[0020] 和/或,所述第二設(shè)備確定出S后,還判斷S是否為護(hù)中的單位元,如果S為單位元, 則停止執(zhí)行后續(xù)步驟,否則繼續(xù)后續(xù)步驟;和/或,所述第一設(shè)備確定出S后,還判斷S是否為 護(hù)中的單位元,如果S為單位元,則停止執(zhí)行后續(xù)步驟,否則繼續(xù)后續(xù)步驟;
[0021] 和/或,AE是一個(gè)對稱認(rèn)證加密算法,AE可W是確定待狀態(tài)或隨機(jī)的算法,并可是 帶有聯(lián)合信息的認(rèn)證加密函數(shù)(authenticated encryption with associated data, AEAD)并可W提供消息長度隱藏功能。
[0022] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,
[002引 |x| = [ |q|/2]或 |x| = [ |q|/4]或 |x| = |q| ;和/或 |y| = [ |q|/2]或 |y| = [ |q|/4] 或I y I = I q I ;和/或Lh < [ I q I/2]或Lh < [ I q I/4]或U引q I,其中對于一個(gè)實(shí)數(shù)a,若a是小數(shù) 則|[0]表示的是〇的向上或向下取整。具體實(shí)施中,推薦山=[|9|/2]。
[0024] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,
[0025] 所述第一設(shè)備和/或第二設(shè)備所述根據(jù)如下表達(dá)式確定第一設(shè)備和第二設(shè)備的認(rèn) 證加密密鑰Ka和Kb,
[0026] 化a,Kb,K'邸F(S,aux)
[0027] 幻10:引義',7|,。似_^,幻似:。}
[002引其中,KDF是密鑰導(dǎo)出函數(shù),表示額外的導(dǎo)出密鑰,可為空;
[0029] 所述第一設(shè)備和第二設(shè)備將會(huì)話密鑰設(shè)定為化a,Kb,KM或化a,Kb}或,或者,會(huì) 話密鑰由K'或擬及auXf r,A公,??冢???趖og,,0??}導(dǎo)出。比如,會(huì)話密鑰 由邸F化',TA I I re)或邸F化',TaI I Y),其中rA是第一設(shè)備選取的隨機(jī)數(shù)且化taA或 auxA(推薦TAE DataA) JB是第二設(shè)備選取的隨機(jī)數(shù)且TB E DataB或TB EaiiXB(推薦TB E DataB),或KDF化',x I IY)。
[0030] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,
[0031 ]所述第二設(shè)備根據(jù)如下表達(dá)式確定S:
[0032] S=X'化+ye)t或S = X'化e+y)t
[0033] 所述第一設(shè)備根據(jù)如下表達(dá)式確定S:
[0034] S = Y'(a+x)t或S = Y'(axt)
[0035] 其中,t表示伴隨因子,即