可抵赖的互联网密钥交换协议的制作方法

文档序号:7886692阅读:311来源:国知局
专利名称:可抵赖的互联网密钥交换协议的制作方法
技术领域
本发明属于密码协议,具体涉及一种可以抵赖的密钥交换协议,可用于互联网协议安全(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)=cd 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)=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的输入中的部分与协议执行相关的公开信息,(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日
发明者赵运磊 申请人:赵运磊
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1