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