亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

可抵賴的互聯(lián)網(wǎng)密鑰交換協(xié)議的制作方法

文檔序號:7886692閱讀:387來源:國知局
專利名稱:可抵賴的互聯(lián)網(wǎng)密鑰交換協(xié)議的制作方法
技術(shù)領(lǐng)域
本發(fā)明屬于密碼協(xié)議,具體涉及一種可以抵賴的密鑰交換協(xié)議,可用于互聯(lián)網(wǎng)協(xié)議安全(Internet Protocol Security IPsec)標(biāo)準(zhǔn)中核心部分互聯(lián)網(wǎng)密鑰交換(InternetKey-Exchange IKE)的替代(兼容)協(xié)議或下一代IKE標(biāo)準(zhǔn)的部分基礎(chǔ)。提供安全,高效且可抵賴的密鑰交換服務(wù),可成為保護(hù)互聯(lián)網(wǎng)上信息安全并兼顧用戶隱私的核心密碼協(xié)議。該協(xié)議亦可用于廣義的密鑰交換,不僅僅局限于用于互聯(lián)網(wǎng)密鑰交換。
背景技術(shù)
IKE國際標(biāo)準(zhǔn)已經(jīng)經(jīng)歷了兩代標(biāo)準(zhǔn),當(dāng)前標(biāo)準(zhǔn)(即IKEv2)基于SIGMA密鑰交換協(xié)議,使用電子簽名加認(rèn)證碼(MAC)的方式提供信息的認(rèn)證和密鑰交換協(xié)議的安全。(IKEv2和SIGMA都是基于Diffie-Hellman密鑰交換的。)但是,由于電子簽名是不可抵賴的,因此IKEv2及SIGMA不能很好地保護(hù)用戶的隱私。在很多應(yīng)用中,比如互聯(lián)網(wǎng)上的電子商務(wù)中,從隱私保護(hù)的角度,用戶不希望他們的商務(wù)交易信息可以被追查到他們。另外,由于IKE運行在互聯(lián)網(wǎng)的第三層(IP層)且IP層信息的傳遞主要使用用戶的IP地址來進(jìn)行,如果密鑰交換協(xié)議對于用戶的IP地址是不可抵賴的,那么,用戶使用密鑰交換協(xié)議所產(chǎn)生的會話密鑰在網(wǎng)絡(luò)高層(比如,應(yīng)用層)的所有行為是可以追查到該用戶的IP地址,因而不利于用戶隱私的保護(hù)。
Stinson-Wu密鑰交換協(xié)議需要用戶事先知道彼此的身份信息,不能完全抵賴,且有多處安全漏洞。詳細(xì)來說,Stinson-Wu協(xié)議運行如下(協(xié)議的初始化信息及用戶的公鑰同我們的協(xié)議)第一輪(從A到B){X=gx,H(gbx)}。
第二輪(從B到A){Y=gy,H(gay×gxb)}。
第三輪(從A到B){H(gya)}。
Stinson-Wu協(xié)議存在如下不足(1).用戶需要在協(xié)議執(zhí)行之前事先知道對方的身份信息(比如公鑰)。但是,當(dāng)協(xié)議在互聯(lián)網(wǎng)IP層運行時,用戶的身份可能事先并不能知道或確定,因為IP層信息的處理是通過用戶的IP地址來進(jìn)行的。
(2).Stinson-Wu協(xié)議不能做到完全的可抵賴??紤]如下情形如果(X,gbx)或(X,H(gbx))由某個機(jī)構(gòu)給予A,或是由A在網(wǎng)上收集或從Sinson-Wu協(xié)議的以前的歷史執(zhí)行中收集而來,那么在這些情形下,B不能否認(rèn)(抵賴)第二輪信息的發(fā)送;類似地,如果(Y,gay)由某個機(jī)構(gòu)給予B,或由B在網(wǎng)上收集而來,那么在此種情形下,A不能否認(rèn)(抵賴)第三輪信息的發(fā)送。
(3).Stinson-Wu的模指數(shù)計算效率除去信息的驗證運算外,在Stinson-Wu協(xié)議中,每個用戶需要作3個模指數(shù)運算A計算gx,gbx及gya,B計算gy,gay×gxb。
(4).Stinson-Wu協(xié)議存在若干安全漏洞在Stinson-Wu協(xié)議中,用戶發(fā)送的信息并沒有與發(fā)送該信息的協(xié)議的執(zhí)行(即會話)進(jìn)行綁定。另外,A的關(guān)于其DH密鑰成分X的離散對數(shù)x的證明H(gbx)與關(guān)于其私鑰的證明H(gya)是分開進(jìn)行的,沒有綁定。這使得Stinson-WU協(xié)議存在(甚至嚴(yán)重)的安全漏洞。一方面,Sinson-Wu協(xié)議不能抵抗反射(reflection)攻擊;另一方面,Sinson-Wu協(xié)議不能有效抵抗“不知道密鑰共享(unknownkey share UKS)”攻擊具體來講,一個惡意敵手M可以向CA注冊一個與用戶A同樣的公鑰(注意,在Stinson-WU協(xié)議以及我們發(fā)明的協(xié)議中,公鑰注冊并不要求關(guān)于相應(yīng)私鑰的證明)。那么,使用UKS攻擊,M可以冒充B將所有B發(fā)送的信息發(fā)送給A從而與A完成一次協(xié)議執(zhí)行(會話),并使得A以為他與B完成了該會話;而同時M通過使用注冊的與A的公鑰相同的公鑰并將A發(fā)送的信息發(fā)送給B,又與B完成一個會話使得這兩個會話生成了相同的會話密鑰。假設(shè)A為網(wǎng)上銀行客戶,B為網(wǎng)上銀行服務(wù)器,那么所有A做出的關(guān)于金錢的交易請求都被銀行認(rèn)為是由M發(fā)出的。這顯示此類UKS攻擊在現(xiàn)實中可能導(dǎo)致危險的后果。
(5).在Stinson-Wu協(xié)議中,用戶A發(fā)送的信息不僅需要自己的公鑰參與計算,而且對方B的公鑰亦要參與計算;同樣地,用戶B發(fā)送的信息既需要自己的公鑰同時亦需要對方A的公鑰參與計算。這違背IKE的隱私保護(hù)策略,即一個用戶發(fā)送的信息不應(yīng)該包含對方用戶的身份信息(比如公鑰)。

發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種安全、高效且可抵賴的互聯(lián)網(wǎng)密鑰交換協(xié)議。
本發(fā)明提出的可抵賴的互聯(lián)網(wǎng)密鑰交換協(xié)議,可用于互聯(lián)網(wǎng)協(xié)議安全(InternetProtocol Security IPsec)標(biāo)準(zhǔn)中核心部分互聯(lián)網(wǎng)密鑰交換(Internet Key-Exchange IKE)的替代(兼容)協(xié)議或下一代IKE標(biāo)準(zhǔn)的部分基礎(chǔ)。提供安全,高效且可抵賴的密鑰交換服務(wù),可成為保護(hù)互聯(lián)網(wǎng)上信息安全并兼顧用戶隱私的核心密碼協(xié)議。該協(xié)議亦可用于廣義的密鑰交換,不僅僅局限于用于互聯(lián)網(wǎng)密鑰交換。發(fā)明協(xié)議具有如下特點(1).在密鑰交換協(xié)議運行的初始,用戶彼此可能不知道對方的身份(ID)及其公鑰。這利于協(xié)議運行在互聯(lián)網(wǎng)的IP層。注意IP層信息的傳遞可能僅僅使用用戶的IP地址來進(jìn)行,而并不知道用戶的真實ID信息及公鑰。
(2).任何一個用戶所發(fā)出的信息均不包含對方(peer)用戶的ID及公鑰信息,這便于協(xié)議運行在網(wǎng)絡(luò)的IP層,對于保護(hù)對方用戶的隱私而言是公平的。
(3).每一個用戶均可有效地抵賴他曾經(jīng)發(fā)出的信息。由用戶ID及公鑰參與計算的所有信息都可以由對方用戶的DH密鑰成分的離散對數(shù)計算出;而且用戶在發(fā)送由自己ID及公鑰參于計算的信息之前,要求對方先向其證明對方用戶的確知道對方用戶自己DH密鑰成分的離散對數(shù)。這可以提供完全的可抵賴安全性,非常有利于用戶隱私保護(hù)。比如使用我們發(fā)明協(xié)議生成的密鑰所進(jìn)行的(可能在網(wǎng)絡(luò)應(yīng)用層的)通訊及電子交易都是可以抵賴的。
(4).通過把用戶ID、公鑰、協(xié)議會話信息(比如用戶在協(xié)議每一次運行中的角色初始者或響應(yīng)者等),及關(guān)于自己私鑰及DH密鑰成分離散對數(shù)的證明用哈西函數(shù)進(jìn)行綁定;進(jìn)而將哈西函數(shù)的輸出作為信息認(rèn)證碼MAC的密鑰對用戶的身份ID進(jìn)行認(rèn)證從而進(jìn)一步綁定;我們發(fā)明的協(xié)議可以有效抵抗各種(甚至不可預(yù)期)的并發(fā)中間人攻擊。特別地,運行我們發(fā)明協(xié)議所產(chǎn)生的密鑰可用于建立安全且可抵賴的通信信道。
本發(fā)明的系統(tǒng)工作環(huán)境為(1).系統(tǒng)參數(shù)(p,q,g,H),其中p和q為大素數(shù),并且q能整除p-1,g是一個Z*p中階(order)為q的元素,使得在Z*p中由g定義的子群上離散對數(shù)(discrete logarithmDL)及計算Diffie-Hellman(computational Diffie-Hellman CDH)問題是難的。所有的指數(shù)及乘法運算是模(mod)p運算,加法為模(mod)q運算。其中,Z*p指的是所有比p小并與p互素的正整數(shù)的集合,即Z*p={1,2,…,p-1};Zq={0,1,…,q-1}。定義函數(shù)fZq→Z*p,使得y=f(w)=gwmod p。w稱為y的離散對數(shù)。我們要求給定隨機(jī)計算出的y,沒有多項式時間算法計算出y的離散對數(shù)w,這稱為離散對數(shù)問題。計算Diffie-Hellman問題指的是給定隨機(jī)的gx與gy,沒有多項式時間算法計算出gxy;一般而言,對于熟悉本領(lǐng)域的人而言,離散對數(shù)問題及計算Diffie-Hellman問題也可以定義在由橢圓曲線或雙線性對(bilineartity)定義的群上;(p,q,g,H)既可以是全局或部分全局性的公共參數(shù),亦可以由任意一對執(zhí)行該協(xié)議的用戶進(jìn)行協(xié)商。
(2).協(xié)議基于Diffie-Hellman密鑰交換協(xié)議。我們記X=gx為用戶A的DH密鑰成分(Diffie-Hellman key component),x為DH密鑰成分X的離散對書;記Y=gy為B的DH密鑰成分,y為DH密鑰成分Y的離散對數(shù)。其中,x與y從Zq={0,1,…,q-1}中隨機(jī)選取。
(3).每一個用戶,比如具有身份(identity ID)“A”的用戶A有一個公鑰ga,其中a由A在Zq中隨機(jī)選取。相應(yīng)地,具有ID“B”的用戶B的公鑰記為gb,以此類推。
(4).有一個可信的證書權(quán)威機(jī)構(gòu)(CA),頒發(fā)證書CERT,用于將用戶的身份及其相應(yīng)公鑰,比如(A,ga),進(jìn)行可公開驗證的綁定。一般而言,綁定用CA的電子簽名實現(xiàn)。
(5).協(xié)議的每一次執(zhí)行成為一個會話(session)。我們假定協(xié)議的每一次執(zhí)行(即,每一次會話)有一個標(biāo)示號(session-identifier)sid,用于標(biāo)記并發(fā)運行的協(xié)議執(zhí)行。sid的制定和協(xié)商可隨協(xié)議的運行環(huán)境不同而有所變化比如sid可以是協(xié)議運行兩方發(fā)送的兩個隨機(jī)串的合并連接;在某些環(huán)境中sid可在協(xié)議運行過程中產(chǎn)生;在某些環(huán)境中當(dāng)會話可由語境自動標(biāo)示時sid亦可省略,例如在某些密鑰交換應(yīng)用中(gx,gy)可兼當(dāng)會話標(biāo)示號。
本發(fā)明協(xié)議的實現(xiàn)方法將用戶在協(xié)議每一次執(zhí)行(會話)的相關(guān)信息(比如sid、用戶角色(協(xié)議初始者initiator或協(xié)議響應(yīng)者responder)等),用戶關(guān)于自己私鑰及其DH密鑰成分的離散對數(shù)(即x或y)的證明,用哈西函數(shù)H進(jìn)行綁定,進(jìn)而將H的輸出作為信息認(rèn)證碼(MAC)的密鑰對用戶的身份ID進(jìn)行認(rèn)證從而進(jìn)一步綁定。每一個用戶發(fā)送的信息不涉及對方用戶的ID及對方用戶的公鑰。由用戶ID及公鑰參與計算的所有信息都可以由對方用戶的DH密鑰成分的離散對數(shù)(即x或y)計算出;而且用戶在發(fā)送由自己ID及公鑰參于計算的信息之前,要求對方先向其證明對方用戶的確知道對方用戶自己的DH密鑰成分的離散對數(shù)(即通過使用輸入包含Yx或Xy的哈希函數(shù)的輸出為MAC密鑰的關(guān)于自己ID的MAC認(rèn)證來進(jìn)行證明)。這可以提供完全的可抵賴安全性。
本發(fā)明協(xié)議的具體實現(xiàn)步驟根據(jù)IPsec標(biāo)準(zhǔn)中的兩種模式主要模式和進(jìn)取模式,兩個用戶A和B之間的協(xié)議運行如下。在下述協(xié)議描述中,大括號內(nèi)的值表示發(fā)送的信息;注意A的公鑰是ga并具有CA頒發(fā)的證書CERTA,B的公鑰是gb并具有CA頒發(fā)的證書CERTB;假設(shè)A為協(xié)議運行初始者,B為協(xié)議運行響應(yīng)者;用戶在協(xié)議每一次執(zhí)行中的角色由DH密鑰成分的順序標(biāo)示,即(X,Y)標(biāo)示協(xié)議的初始者,(Y,X)標(biāo)示協(xié)議的相應(yīng)者;協(xié)議的輸出,即會話密鑰K,由一個密鑰導(dǎo)出函數(shù)KDF來定義K=KDF(H(gxy),·);·表示二元函數(shù)KDF中的一個變元;密鑰導(dǎo)出函數(shù)KDF可隨應(yīng)用的不同而不同;協(xié)議-1在IKE主要模式下的運行第一輪,從A到B{sid,X=gx(mod p)},其中x從Zq中隨機(jī)選??;X稱為A的DH密鑰成分;收到A發(fā)送的信息后,B驗證X為非1且階為q的Z*p中的元素;驗證不成功,B拒絕繼續(xù)執(zhí)行協(xié)議,否則,進(jìn)入下一輪;第二輪,從B到A{sid,B,Y=gy,C(B,y)=MACH(sid,Y,X,Xy)(B)},]]>即將H(sid,Y,X,Xy)作為MAC的密鑰對B的ID進(jìn)行認(rèn)證;具體來講,H的輸入是(sid,Y,X,Xy)的合并連接,用sid||Y||X||Xy來表示,下同;y從Zq中隨機(jī)選取且Y稱為B的DH密鑰成分;收到B發(fā)送的信息后,A驗證Y為非1且階為q的Z*p中的元素,且利用x驗證C(B,y)=MACH(sid,Y,X,Yx)(B);]]>驗證不成功,A拒絕繼續(xù)執(zhí)行協(xié)議,否則,進(jìn)入下一輪;第三輪,從A到B{sid,(A,CERTA),C(a,x)=MACH(sid,X,Y,Ya,Yx)(A)},]]>即將H(sid,X,Y,Ya,Yx)作為MAC的密鑰對A的ID進(jìn)行認(rèn)證;收到A發(fā)送的信息后,B利用CERTA驗證A的身份及其公鑰ga為非1且階q的Z*p中的元素,并利用y驗證C(a,x)=MACH(sid,X,Y,gay,gxy)(A);]]>驗證不成功,B拒絕繼續(xù)執(zhí)行協(xié)議,否則,B利用KDF計算出相應(yīng)的會話密鑰K,并進(jìn)入下一輪;第四輪,從B到A{sid,CERTB,C(b,y)=MACH(sid,Y,X,Xb,Xy)(B)},]]>即將H(sid,Y,X,Xb,Xy)作為MAC的密鑰對B的ID進(jìn)行認(rèn)證;收到B發(fā)送的信息后,A利用CERTB驗證B的身份及其公鑰gb為非1階q的Z*p中的元素,且利用x驗證C(b,y)=MACH(sid,Y.X,gbx,gyx)(B);]]>驗證不成功,A中止該次協(xié)議的運行,否則,A利用KDF計算出相應(yīng)的會話密鑰K;協(xié)議-2在IKE進(jìn)取模式下的運行第一輪,從A到B{sid,X=gx},其中x從Zq中隨機(jī)選??;收到A發(fā)送的信息后,B驗證X為非1且階為q的Z*p中的元素;驗證不成功,B拒絕繼續(xù)執(zhí)行協(xié)議,否則,進(jìn)入下一輪;第二輪,從B到A{sid,(B,CERTB),Y=gy,C(b,y)=MACH(sid,Y,X,Xb,Xy)(B)},]]>其中y從Zq中隨機(jī)選?。皇盏紹發(fā)送的信息后,A驗證B的身份,Y及公鑰gb為非1且階q的Z*p中的元素,并利用x驗證C(b,y)=MACH(sid,Y,X,gbx,gyx)(B);]]>驗證不成功,A拒絕繼續(xù)執(zhí)行協(xié)議,否則,A利用KDF計算出相應(yīng)的會話密鑰K,并進(jìn)入下一輪;第三輪,從A到B{sid,(A,CERTA),C(a,x)=MACH(sid,X,Y,Ya,Yx)(A)};]]>收到A發(fā)送的信息后,B驗證A的身份及其公鑰ga為非1且階q的Z*p中的元素,并利用y驗證C(a,x)=MACH(sid,X,Y,gay,gxy)(A);]]>驗證不成功,B中止該次協(xié)議執(zhí)行,否則,利用KDF計算出會話密鑰K;本發(fā)明中,協(xié)議-1和協(xié)議-2還可有如下變體(1).可將MAC輸入中的用戶ID同時放入生成該MAC密鑰的H的輸入中;
(2).對于不同的函數(shù)f,將(Xb,Xy)替換成f(Xb,Xy),以及將(Ya,Yx)替換成f(Ya,Yx);比如f(c,d)=cd mod p,或f(c,d)=c×d mod p,其中c與d是Z*p中的元素;(3).將H的輸入中的部分與協(xié)議執(zhí)行相關(guān)的公開信息,(sid,X,Y)和(sid,Y,X),同時分別放入由A和B計算和發(fā)送的MAC的輸入之中;(4).協(xié)議1和2與IKEv2或SIGMA協(xié)議兼容;具體來講,MACH(sid,X,Y,Y(a+x mod q))(A)或MACH(sid,Y,X,X(b+y mod q))(B)替換為IKEv2或SIGMA中利用簽名與MAC的認(rèn)證方式;(5).在將MAC的輸入同時放入H的輸入的前提下,將部分或全部MAC去掉,只用哈西函數(shù)進(jìn)行綁定;(6).在協(xié)議-1第三輪中可將CERTA放入MAC的輸入中并在第四輪將CERTB放入MAC的輸入中;在協(xié)議-2第二輪將CERTB放入MAC的輸入中并在第三輪將CERTA放入MAC的輸入中;(7).在第一輪中A將其ID發(fā)送給B,在隨后的MAC信息中,B將(B,A)作為哈西函數(shù)H的輸入一部分,A將(A,B)作為哈西函數(shù)H的輸入一部分;本發(fā)明中,協(xié)議-1及協(xié)議-2中蘊含如下子協(xié)議協(xié)議-3可抵賴消息認(rèn)證設(shè)A向B認(rèn)證某個信息m,m可以是一個文件或是用戶的身份ID,A的公鑰是ga并具有證書CERTA,B不一定有公鑰;在下述協(xié)議描述中,協(xié)議發(fā)送信息正確性的驗證同協(xié)議1和2;第一輪,從A到B{sid,X=gx};第二輪,從B到A{sid,B,Y=gy,MACH(sid,B,Y,X,Xy)(B)};]]>第三輪(從A到B){sid,(A,CERTA),m,MACH(sid,A,X,Y,Ya)(m)};]]>本發(fā)明中,可抵賴的消息認(rèn)證協(xié)議-3可以應(yīng)用于具有私鑰知識證明的網(wǎng)上公鑰注冊系統(tǒng)協(xié)議-4設(shè)用戶B向可信公鑰注冊認(rèn)證機(jī)構(gòu)CA注冊公鑰PKB=gb,CA有一個簽名公鑰PKCA及相應(yīng)私鑰SKCA;第一輪,從Ca到B{sid,X=gx};第二輪,從B到CA{sid,B,PKB=gb,C(B,b)=MACH(sid,B,CA,gb,X,Xb)(B)};]]>第三輪,從CA到B{sid,CERTB=SigSKCA(B,PKB),]]>C(CA,x)=MACH(sid,CA,B,X,gh,gbx)(CERTB)}.]]>
具體實施例方式
假設(shè),用戶A的公鑰是ga并具有證書CERTA,B的公鑰是gb并具有證書CERTB。證書CERTA指的是CA給A的證明,其余同。提示證書不一定必須與ID信息同時發(fā)送,可由具體的應(yīng)用環(huán)境調(diào)整。我們假設(shè)A為協(xié)議運行初始者(initiator),B為協(xié)議運行響應(yīng)者(responder)。用戶在協(xié)議執(zhí)行(會話)中的角色由DH密鑰成分的順序標(biāo)示,即(X,Y)標(biāo)示協(xié)議的初始者,(Y,X)標(biāo)示協(xié)議的相應(yīng)者。協(xié)議的輸出(即密鑰)由一個密鑰導(dǎo)出函數(shù)(key derivation function KDF)來定義K=KDF(H(gxy),·)。KDF是一個二元函數(shù),H(gxy)作為一元,另一元可隨應(yīng)用的不同而不同,比如另一元可以是一個數(shù)值亦可以是一個字符串,甚至是空值。KDF可隨應(yīng)用的不同而不同。若干例子為,KDF為一個偽隨機(jī)函數(shù)(pseudorandom function PRF),K=PRF(H(gxy),0)或K=PRF(H(gxy),X||Y),其中X||Y表示X與Y的順序連接,或KDF僅僅輸出H(gxy)或H(sid,X,Y,A,B,gxy),等等。
在下述協(xié)議具體實施中,偽隨機(jī)函數(shù)PRF及消息認(rèn)證碼MAC采用由IETF(InternetEngineering Task Force)所公布的第2104號互聯(lián)網(wǎng)意見征求文檔(Internet RFC 2104)中所描述的HMAC認(rèn)證碼。HMAC只需作兩個哈西運算,并被證明既是消息認(rèn)證碼又是偽隨機(jī)函數(shù)。在協(xié)議具體實施中,HMAC由SHA-1哈西函數(shù)來實現(xiàn)。在下述協(xié)議具體實施中,密鑰導(dǎo)出函數(shù)為HMAC(H(gxy),sid)。
根據(jù)IPsec標(biāo)準(zhǔn)中的兩種模式主要模式(main model)和進(jìn)取模式(aggressivemodel),兩個用戶A和B之間的協(xié)議具體運行步驟如下協(xié)議-1在IKEv2主要模式下的
具體實施例方式當(dāng)協(xié)議-1在IKEv2主要模式下具體實施時,會話標(biāo)示符sid是由協(xié)議運行兩方在協(xié)議-1運行之前發(fā)送的兩個隨機(jī)串的合并連接構(gòu)成。因此,發(fā)明協(xié)議在IKEv2主要模式下的具體實施運行六輪。注意,目前的IKEv2標(biāo)準(zhǔn)在主要模式下亦運行六輪。
第一輪,從A到B{RA},其中RA是一個32位隨機(jī)0-1串。B驗證RA的有效性(即RA是一個32位0-1串)。
第二輪,從B到A{RB},RB是與RA相同長度的隨機(jī)0-1串。B將sid設(shè)為RA||RB(即RA與RB的合并連接);A收到RB后驗證RB的有效性(即RB是一個32位0-1串),并將sid設(shè)為RA||RB。
第三輪,從A到B{RA||RB,X=gx(mod p)},其中x從Zq中隨機(jī)選取。X稱為A的DH密鑰成分。收到A發(fā)送的信息后,B驗證sid的有效性(即RA與RB的正確合并連接)、且X為非1且階為q的Z*p中的元素。驗證不成功,B拒絕繼續(xù)執(zhí)行協(xié)議,否則(即驗證成功),進(jìn)入下一輪。
第四輪,從B到A{RA||RB,B,Y=gy,C(B,y)=HMACH(RA||RB,Y,X,Xy)(B)}]]>(即將H(RA||RB,Y,X,Xy)作為HMAC的密鑰對B的ID進(jìn)行認(rèn)證,提供兩重綁定)。y從Zq中隨機(jī)選取且Y稱為B的DH密鑰成分。收到B發(fā)送的信息后,A驗證sid(即RA||RB)的有效性、Y為非1且階為q的Z*p中的元素、且利用x驗證C(B,y)=HMACH(RA||RB,Y,X,Yx)(B).]]>驗證不成功,A拒絕繼續(xù)執(zhí)行協(xié)議,否則(即驗證成功),進(jìn)入下一輪。
第五輪,從A到B{RA||RB,(A,CERTA),C(a,x)=HMACH(RA||RB,X,Y,Ya,Yx)(A)}]]>(即將H(RA||RB,X,Y,Ya,Yx)作為HMAC的密鑰對A的ID進(jìn)行認(rèn)證)。收到A發(fā)送的信息后,B驗證sid(即RA||RB)的有效性、利用CERTA驗證A的身份及其公鑰ga為非1且階q的Z*p中的元素、并利用y驗證C(a,x)=HMACH(RA||RB,X,Y,gay,gxy)(A).]]>驗證不成功,B拒絕繼續(xù)執(zhí)行協(xié)議,否則(即驗證成功),B計算出相應(yīng)的會話密鑰K=HMAC(H(gxy),RA||RB),并進(jìn)入下一輪。
第六輪,從B到A{RA||RB,CERTB,C(b,y)=HMACH(RA||RB,Y,X,Xb,Xy)(B)}]]>(即將H(RA||RB,Y,X,Xb,Xy)作為HMAC的密鑰對B的ID進(jìn)行認(rèn)證)。收到B發(fā)送的信息后,A驗證sid(即RA||RB)的有效性、利用CERTB驗證B的身份及其公鑰gb為非1階q的Z*p中的元素、且利用x驗證C(b,y)=HMACH(RA||RB,Y,X,gbx,gyx)(B).]]>驗證不成功,A中止(abort)該次協(xié)議的運行,否則(即驗證成功),A計算出相應(yīng)的會話密鑰K=HMAC(H(gxy),RA||RB)。
協(xié)議-2在IKE進(jìn)取模式下的
具體實施例方式當(dāng)協(xié)議-2在IKEv2主要模式下具體實施時,會話標(biāo)示符sid是由協(xié)議運行兩方在協(xié)議-2運行過程中發(fā)送的兩個隨機(jī)串的合并連接構(gòu)成。因此,發(fā)明協(xié)議在IKEv2進(jìn)取模式下的具體實施仍運行三輪。注意,目前的IKEv2標(biāo)準(zhǔn)在進(jìn)取模式下亦運行三輪。
第一輪,從A到B{RA,X=gx},其中x從Zq中隨機(jī)選取,RA為32-位的隨機(jī)0-1串。收到A發(fā)送的信息后,B驗證RA的有效性(即RA是一個32位0-1串)、且X為非1且階為q的Z*p中的元素。驗證不成功,B拒絕繼續(xù)執(zhí)行協(xié)議,否則(即驗證成功),進(jìn)入下一輪。
第二輪,從B到A{RA||RB,(B,CERTB),Y=gy,C(b,y)=HMACH(RA||RB,Y,X,Xb,Xy)(B)},]]>其中y從Zq中隨機(jī)選取,RB為32-位的隨機(jī)0-1串。B將sid設(shè)為RA||RB;收到B發(fā)送的信息后,A驗證sid的有效性(即sid的長度為64位且前32位為RA)、利用CERTB驗證B的身份、Y及公鑰gb為非1且階q的Z*p中的元素、并利用x驗證C(b,y)=HMACH(RA||RB,Y,X,gbx,gyx)(B).]]>驗證不成功,A拒絕繼續(xù)執(zhí)行協(xié)議,否則(即驗證成功),A計算出相應(yīng)的會話密鑰K=HMAC(H(gxy),RA||RB),并進(jìn)入下一輪。
第三輪,從A到B{RA||RB,(A,CERTA),C(a,x)=HMACH(RA||RB,X,Y,Ya,Yx)(A)}.]]>收到A發(fā)送的信息后,B驗證sid(即RA||RB)的有效性、利用CERTA驗證A的身份及其公鑰ga為非1且階q的Z*p中的元素、并利用y驗證C(a,x)=HMACH(RA||RB,X,Y,gay,gxy)(A).]]>驗證不成功,B中止該次協(xié)議執(zhí)行,否則(即驗證成功),計算出會話密鑰K=HMAC(H(gxy),RA||RB)。
協(xié)議1和2變體的具體實施在應(yīng)用中,可對協(xié)議1和2作如下一項或多項改造(1).可將MAC輸入中的用戶ID同時放入生成該MAC密鑰的H的輸入中。
(2).廣義而言,對于不同的函數(shù)f,將(Xb,Xy)替換成f(Xb,Xy),以及將(Ya,Yx)替換成f(Ya,Yx);注意,協(xié)議1和2的實現(xiàn)使用的是一個特殊的函數(shù)f(c,d)=(c,d)。特別地,我們可以使用函數(shù)f(c,d)=cd mod p,或f(c,d)=c×d mod p,其中c與d是Z*p中的元素;此時,(gxb||gxy)將被替換成gxbgxy或gxb×gxy=X(b+y mod q),(gya||gyx)亦可作同樣的替換。
(3).將H的輸入中的部分與協(xié)議執(zhí)行相關(guān)的公開信息,(sid,X,Y)和(sid,Y,X),同時分別放入由A和B計算和發(fā)送的MAC的輸入之中;即將(sid,X,Y)同時放入由A計算和發(fā)送的MAC的輸入之中,將(sid,Y,X)同時放入由B計算和發(fā)送的MAC的輸入之中。
(4).在現(xiàn)實應(yīng)用中,上述協(xié)議可與IKEv2或SIGMA協(xié)議兼容。具體來講,MACH(sid,X,Y,Y(a+x mod q))(A)或MACH(sid,Y,X,X(b+y mod q))(B)可替換為IKEv2或SIGMA中利用簽名加MAC的認(rèn)證方式。這種兼容方式主要用在用戶不具有離散對數(shù)公鑰,或僅有簽名公鑰的情形。
(5).在將MAC的輸入同時放入H的輸入的前提下,將部分或全部MAC去掉,只用哈西函數(shù)進(jìn)行綁定;(6).在協(xié)議-1第三輪中可將CERTA放入MAC的輸入中并在第四輪將CERTB放入MAC的輸入中;在協(xié)議-2第二輪將CERTB放入MAC的輸入中并在第三輪將CERTA放入MAC的輸入中;(7).在第一輪中A將其ID(可附證書CERTA)發(fā)送給B,在隨后的MAC信息中,B可將(B,A)作為哈西函數(shù)H的輸入一部分,A可將(S,B)作為哈西函數(shù)H的輸入一部分。該變體可用在用戶對隱私保護(hù)要求不高的環(huán)境中。
在具體實施中,推薦和鼓勵同時使用如下變體變體(1)+變體(3)+變體(6);如果用戶對隱私要求不高,同時使用變體(7)。
協(xié)議-3的具體實施設(shè)A向B認(rèn)證某個信息m,m可以是一個文件或是用戶的身份ID,A的公鑰是ga并具有證書CERTA,B不一定有公鑰;我們描述sid在協(xié)議-3運行過程中產(chǎn)生時的
具體實施例方式第一輪,從A到B{RA,XC=gx},其中x從Zq中隨機(jī)選取,RA為32-位的隨機(jī)0-1串。收到A發(fā)送的信息后,B驗證RA的有效性(即RA是一個32位0-1串)、且X為非1且階為q的Z*p中的元素。驗證不成功,B拒絕繼續(xù)執(zhí)行協(xié)議,否則(即驗證成功),進(jìn)入下一輪。
第二輪,從B到A{RA||RB,B,Y=gy,C(B,y)=HMACH(RA||RB,B,Y,X,Xy)(B)},]]>其中y從Zq中隨機(jī)選取,RB為32-位的隨機(jī)0-1串。B將sid設(shè)為RA||RB;收到B發(fā)送的信息后,A驗證sid的有效性(即sid的長度為64位且前32位為RA)、驗證Y為非1且階q的Z*p中的元素、并利用x驗證C(B,y)=HMACH(RA||RB,B,Y,X,Yx)(B).]]>驗證不成功,A拒絕繼續(xù)執(zhí)行協(xié)議,否則(即驗證成功),進(jìn)入下一輪。
第三輪,從A到B{sid,(A,CERTA),m,C(a,m)=HMACH(RA||RB,A,X,Y,Ya)(m)};]]>收到A發(fā)送的信息后,B驗證sid(即RA||RB)的有效性、利用CERTA驗證A的身份及其公鑰ga為非1且階q的Z*p中的元素、并利用y驗證C(a,m)=HMACH(RA||RB,A,X,Y,gay)(m).]]>驗證不成功,B中止該次協(xié)議執(zhí)行,否則(即驗證成功),B認(rèn)可m的確由A發(fā)送。
協(xié)議-4的具體實施設(shè)用戶B向可信公鑰注冊認(rèn)證機(jī)構(gòu)CA注冊公鑰PKB=gb,CA有一個簽名公鑰PKCA及相應(yīng)簽名私鑰SKCA;第一輪,從CA到B{RA,X=gx},其中x從Zq中隨機(jī)選取,RA為32-位的隨機(jī)0-1串。收到A發(fā)送的信息后,B驗證RA的有效性(即RA是一個32位0-1串)、且X為非1且階為q的Z*p中的元素。驗證不成功,B拒絕繼續(xù)執(zhí)行協(xié)議,否則(即驗證成功),進(jìn)入下一輪。
第二輪,從B到CA{RA||RB,B,PKB=gb,C(B,b)MACH(RA||RB,B,CA,gb,X,Xb)(B)},]]>其中RB為32-位的隨機(jī)0-1串。B將sid設(shè)為RA||RB;收到B發(fā)送的信息后,CA驗證sid的有效性(即sid的長度為64位且前32位為RA)、驗證gb為非1且階q的Z*p中的元素、并利用x驗證C(B,b)=HMACH(RA||RB,B,CA,gb,X,gbx)(B).]]>驗證不成功,CA拒絕繼續(xù)執(zhí)行協(xié)議,否則(即驗證成功),進(jìn)入下一輪。
第三輪,從CA到B{sid,CERTB=SigSKCA(B,PKB)]]>C(CA,x)=MACH(RA||RB,CA,B,X,gb,gbx)(CERTB)};]]>收到A發(fā)送的信息后,B驗證sid(即RA||RB)的有效性、利用CA的簽名公鑰PKCA驗證CERTB的有效性、并利用b驗證C(CA,x)=MACH(RA||RB,CA,B,X,gb,gxb)(CERTB).]]>驗證不成功,B中止該次協(xié)議執(zhí)行,否則(即驗證成功),B認(rèn)可CERTB的有效性,即CERTB的確由CA產(chǎn)生并發(fā)送。
在協(xié)議-4的具體實施中,X=gx可以作為CA公鑰的一部分,從而減少計算及通訊復(fù)雜性;在某些情況下,第三輪中的C(CA,x)=MACH(RA||RB,CA,B,X,gb,gbx)(CERTB)]]>亦可省略,以使協(xié)議運行更為高效;在具體實施中,關(guān)于協(xié)議-1與協(xié)議-2的變體亦可作用于協(xié)議-3與協(xié)議-4。
權(quán)利要求
1.一種可抵賴的互聯(lián)網(wǎng)密鑰交換協(xié)議,其特征在于系統(tǒng)工作環(huán)境為(1).系統(tǒng)參數(shù)(p,q,g,H),其中p和q為大素數(shù),并且q能整除p-1,g是一個Z*p中階為q的元素,使得在Z*p中由g定義的子群上離散對數(shù)DL及計算Diffie-Hellman CDH問題是難的;所有的指數(shù)及乘法運算是mod p運算,加法為mod q運算;這里,Z*p={1,2,…,p-1};(2).協(xié)議基于Diffie-Hellman密鑰交換協(xié)議;記X=gx為用戶A的DH密鑰成分,x為DH密鑰成分X的離散對數(shù);記Y=gy為B的DH密鑰成分,y為DH密鑰成分Y的離散對數(shù);(3).具有身份ID“A”的用戶A有一個公鑰ga,其中a由A在Zq中隨機(jī)選??;相應(yīng)地,具有ID“B”的用戶B的公鑰記為gb,以此類推;這里,Zq={0,1,2,…,q-1};(4).有一個可信的證書權(quán)威機(jī)構(gòu)CA,頒發(fā)證書CERT,用于將用戶的身份及其相應(yīng)公鑰,比如(A,ga),進(jìn)行可公開驗證的綁定;綁定用CA的電子簽名實現(xiàn);(5).假定協(xié)議的每一次執(zhí)行有一個標(biāo)示號sid,用于標(biāo)記并發(fā)運行的協(xié)議執(zhí)行;sid的制定和協(xié)商可隨協(xié)議的運行環(huán)境不同而有所變化;協(xié)議實現(xiàn)方法為將用戶關(guān)于自己私鑰及其DH密鑰成分的離散對數(shù)的證明,用戶在協(xié)議每一次執(zhí)行的相關(guān)信息,包括sid、用戶角色、DH密鑰成分等,用哈西函數(shù)H進(jìn)行綁定,進(jìn)而將H的輸出作為信息認(rèn)證碼MAC的密鑰對用戶的身份ID進(jìn)行認(rèn)證從而進(jìn)一步綁定;每一個用戶發(fā)送的信息不涉及對方用戶的ID及對方用戶的公鑰;由用戶ID及公鑰參與計算的所有信息都可由對方用戶的DH密鑰成分的離散對數(shù)計算出;而且用戶在發(fā)送由自己ID及公鑰參于計算的信息之前,要求對方先向其證明對方用戶的確知道對方用戶自己DH密鑰成分的離散對數(shù),即通過使用輸入包含Yx或Xy的哈希函數(shù)的輸出為MAC密鑰的關(guān)于自己ID的MAC認(rèn)證來進(jìn)行證明。
2.根據(jù)權(quán)利要求1所述的可抵賴的互聯(lián)網(wǎng)密鑰交換協(xié)議,其特征在于協(xié)議的實現(xiàn)步驟為在下述協(xié)議描述中,大括號內(nèi)的值表示發(fā)送的信息;注意A的公鑰是ga并具有CA頒發(fā)的證書CERTA,B的公鑰是gb并具有CA頒發(fā)的證書CERTB;假設(shè)A為協(xié)議運行初始者,B為協(xié)議運行響應(yīng)者;用戶在協(xié)議每一次執(zhí)行中的角色由DH密鑰成分的順序標(biāo)示,即(X,Y)標(biāo)示協(xié)議的初始者,(Y,X)標(biāo)示協(xié)議的相應(yīng)者;協(xié)議的輸出,即會話密鑰K,由一個密鑰導(dǎo)出函數(shù)KDF來定義K=KDF(H(gxy),·), ·表示二元函數(shù)KDF中的一個變元;密鑰導(dǎo)出函數(shù)KDF可隨應(yīng)用的不同而不同;根據(jù)IPsec標(biāo)準(zhǔn)中的兩種模式主要模式和進(jìn)取模式,兩個用戶A和B之間的協(xié)議運行如下協(xié)議-1在IKE主要模式下的運行第一輪,從A到B{sid,X=gx(mod p)},其中x從Zq中隨機(jī)選??;X稱為A的DH密鑰成分;收到A發(fā)送的信息后,B驗證X為非1且階為q的Z*p中的元素;驗證不成功,B拒絕繼續(xù)執(zhí)行協(xié)議,否則,進(jìn)入下一輪;第二輪,從B到A{sid,B,Y=gY,C(B,y)=MACH(sid,Y,X,Xy)(B)},]]>即將H(sid,Y,X,Xy)作為MAC的密鑰對B的ID進(jìn)行認(rèn)證;y從Zq中隨機(jī)選取且Y稱為B的DH成分;收到B發(fā)送的信息后,A驗證Y為非1且階為q的Z*p中的元素,且利用x驗證C(B,y)=MACH(sid,Y,X,Yx)(B);]]>驗證不成功,A拒絕繼續(xù)執(zhí)行協(xié)議,否則,進(jìn)入下一輪;第三輪,從A到B{sid,(A,CERTA),C(a,x)=MACH(sid,X,Y,Ya,Yx)(A)},]]>即將H(sid,X,Y,Ya,Yx)作為MAC的密鑰對A的ID進(jìn)行認(rèn)證;收到A發(fā)送的信息后,B利用CERTA驗證A的身份及其公鑰ga為非1且階q的Z*p中的元素,并利用y驗證C(a,x)=MACH(sid,X,Y,gay,gxy)(A);]]>驗證不成功,B拒絕繼續(xù)執(zhí)行協(xié)議,否則,B利用KDF計算出相應(yīng)的會話密鑰K,并進(jìn)入下一輪;第四輪,從B到A{sid,CERTB,C(b,y)=MACH(sid,Y,X,Xb,Xy)(B)},]]>即將H(sid,Y,X,Xb,Xy)作為MAC的密鑰對B的ID進(jìn)行認(rèn)證;收到B發(fā)送的信息后,A利用CERTB驗證B的身份及其公鑰gb為非1階q的Z*p中的元素,且利用x驗證C(b,y)=MACH(sid,Y,X,gbx,gyx)(B);]]>驗證不成功,A中止該次協(xié)議的運行,否則,A利用KDF計算出相應(yīng)的會話密鑰K;協(xié)議-2在IKE進(jìn)取模式下的運行第一輪,從A到B{sid,X=gx),其中x從Zq中隨機(jī)選取;收到A發(fā)送的信息后,B驗證X為非1且階為q的Z*p中的元素;驗證不成功,B拒絕繼續(xù)執(zhí)行協(xié)議,否則,進(jìn)入下一輪;第二輪,從B到A{sid,(B,CERTB),Y=gY,C(b,y)=MACH(sid,Y,X,Xb,Xv)(B)},]]>其中y從Zq中隨機(jī)選?。皇盏紹發(fā)送的信息后,A驗證B的身份,Y及公鑰gb為非1且階q的Z*p中的元素,并利用x驗證C(b,y)=MACH(sid,Y,X,gbx,gyx)(B);]]>驗證不成功,A拒絕繼續(xù)執(zhí)行協(xié)議,否則,A利用KDF計算出相應(yīng)的會話密鑰K,并進(jìn)入下一輪;第三輪,從A到B{sid,(A,CERTA),C(a,x)=MACH(sid,X,Y,Ya,Yx)(A)};]]>收到A發(fā)送的信息后,B驗證A的身份及其公鑰ga為非1且階q的Z*p中的元素,并利用y驗證C(a,x)=MACH(sid,X,Y,gay,gxy)(A);]]>驗證不成功,B中止該次協(xié)議執(zhí)行,否則,利用KDF計算出會話密鑰K。
3.根據(jù)權(quán)利要求2所述的可抵賴的互聯(lián)網(wǎng)密鑰交換協(xié)議,其特征在于協(xié)議-1及協(xié)議-2有如下的變體(1).可將MAC輸入中的用戶ID同時放入生成該MAC密鑰的H的輸入中;(2).對于不同的函數(shù)f,將(Xb,Xy)替換成f(Xb,Xy),以及將(Ya,Yx)替換成f(Ya,Yx);(3).將H的輸入中的部分與協(xié)議執(zhí)行相關(guān)的公開信息,(sid,X,Y)和(sid,Y,X),同時分別放入由A和B計算和發(fā)送的MAC的輸入之中;(4).協(xié)議1和2與IKEv2或SIGMA協(xié)議兼容;具體來講,MACH(sid,X,Y,Y(a+xmodq))(A)]]>或MACH(sid,Y,X,X(b+ymodq))(B)]]>替換為IKEv2或SIGMA中利用簽名與MAC的認(rèn)證方式;(5).在將MAC的輸入同時放入H的輸入的前提下,將部分或全部MAC去掉,只用哈西函數(shù)進(jìn)行綁定;(6).在協(xié)議-1第三輪中可將CERTA放入MAC的輸入中并在第四輪將CERTB放入MAC的輸入中;在協(xié)議-2第二輪將CERTB放入MAC的輸入中并在第三輪將CERTA放入MAC的輸入中;(7).在第一輪中A將其ID發(fā)送給B,在隨后的MAC信息中,B將(B,A)作為哈西函數(shù)H的輸入一部分,A將(A,B)別作為哈西函數(shù)H的輸入一部分。
4.根據(jù)權(quán)利要求2所述的可抵賴的互聯(lián)網(wǎng)密鑰交換協(xié)議,其特征在于在所述協(xié)議-1及協(xié)議-2中蘊含如下子協(xié)議協(xié)議-3可抵賴消息認(rèn)證設(shè)A向B認(rèn)證某個信息m,m可以是一個文件或是用戶的身份ID,A的公鑰是ga并具有證書CERTA,B不一定有公鑰;在下述協(xié)議描述中,協(xié)議發(fā)送信息正確性的驗證同協(xié)議1和2第一輪,從A到B{sid,X=gx}第二輪,從B到A{sid,B,Y=gY,C(B,y)=MACH(sid,B,Y,X,Xy)(B)};]]>第三輪,從A到B{sid,(A,CERTA),Bm,C(a,m)=MACH(sid,A,X,Y,Ya)(m)};]]>
5.根據(jù)權(quán)利要求4所述的可抵賴的互聯(lián)網(wǎng)密鑰交換協(xié)議,其特征在于協(xié)議-3有如下應(yīng)用協(xié)議-4具有私鑰知識證明的網(wǎng)上公鑰注冊系統(tǒng)設(shè)用戶B向可信公鑰注冊認(rèn)證機(jī)構(gòu)CA注冊公鑰PKB=gb,CA有一個簽名公鑰PKCA及相應(yīng)私鑰SKCA;第一輪,從CA到B{sid,X=gx};第二輪,從B到CA{sid,B,PKB=gb,C(B,b)=MACH(sid,B,CA,gb,X,Xb)(B)};]]>第三輪,從CA到B{sid,CERTB=SigSKCA(B,PKB)]]>C(CA,x)=MACH(sid,CA,B,X,gb,gbx)(CERTB)}.]]>
全文摘要
本發(fā)明屬于密碼協(xié)議技術(shù)領(lǐng)域,具體為一種可抵賴的互聯(lián)網(wǎng)密鑰交換協(xié)議,可提供安全、高效且可抵賴的密鑰交換服務(wù),用于保護(hù)互聯(lián)網(wǎng)上信息安全并兼顧用戶隱私。協(xié)議實現(xiàn)方法為將用戶在協(xié)議每一次執(zhí)行中的相關(guān)信息、用戶關(guān)于自己私鑰及其DH密鑰成分的離散對數(shù)的證明等,用哈西函數(shù)H進(jìn)行綁定,進(jìn)而將H的輸出作為消息認(rèn)證碼的密鑰對用戶的ID認(rèn)證。用戶發(fā)送的信息不涉及對方用戶的ID及公鑰。由用戶ID及公鑰參與計算的所有信息都可以由對方用戶的DH密鑰成分的離散對數(shù)計算出,而且用戶在發(fā)送此類信息之前要求對方證明知道其DH密鑰成分的離散對數(shù)。
文檔編號H04L12/46GK101060530SQ200710040999
公開日2007年10月24日 申請日期2007年5月22日 優(yōu)先權(quán)日2007年5月22日
發(fā)明者趙運磊 申請人:趙運磊
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1