CN101175076A - 在线计算高效、可抵赖、不可锻造安全的密钥交换协议 - Google Patents
在线计算高效、可抵赖、不可锻造安全的密钥交换协议 Download PDFInfo
- Publication number
- CN101175076A CN101175076A CNA2007100473448A CN200710047344A CN101175076A CN 101175076 A CN101175076 A CN 101175076A CN A2007100473448 A CNA2007100473448 A CN A2007100473448A CN 200710047344 A CN200710047344 A CN 200710047344A CN 101175076 A CN101175076 A CN 101175076A
- Authority
- CN
- China
- Prior art keywords
- sid
- user
- key
- pub
- agreement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明属于密码协议技术领域,具体为一种在线计算高效、可抵赖、不可锻造安全的密钥交换协议。协议实现环境和方法为:用户“A”的公钥为A=ga,DH密钥成分为X=gx;用户“B”的公钥为B=gb,DH密钥成分为Y=gy。用户“A”通过Bcx+eaYda+fx证明其同时知道a及x;用户“B”通过Aeb+dyXcb+fy证明其同时知道b及y。哈西函数c,d,e,f的输入包含协议每一次执行的所有相关公开信息,且输入输出相互嵌套和影响。为了提高在线计算效率,c的输入不包含Y,d的输入不包含X,e为1或0。本协议可满足用户对密钥交换的在线计算效率、可抵赖性、不可锻造安全性、抗拒绝服务攻击、抗内部状态泄漏、以及显式或隐式身份及密钥确认的不同需求和优先级。
Description
技术领域
本发明属于密码协议,具体涉及一种在线计算高效、可抵赖、不可锻造安全的密钥交换协议。
背景技术
目前,国际上最常用(同时被广泛标准化)的2-轮Diffie-Hellman密钥交换协议是MQV和HMQV。MQV和HMQV的运行方式如下:
具有身份IA的用户“A”具有公钥A=ga,具有身份IB的用户“B”具有公钥B=gb。用户“A”在协议第一轮发送X=gx。用户“B”在协议第二轮发送Y=gy。这是基本的Diffie-Hellman密钥交换协议。用户“A”检查Y的阶为q并计算会话密钥K=HK((YBc)x+da),用户“B”检查X的阶为q并计算K=HK((XAd)y+cb)。其中在MQV中d=2l+(Xmod 2l),c=2l+(Ymod 2l),l等于x或y长度的一半。在HMQV中d=H(X,IB),c=H(Y,IA)。
MQV和HMQV协议存在如下不足:
(1).MQV和HMQV的在线计算效率不够好。MQV和HMQV的会话密钥生成方式不允许用户对会话密钥进行部分离线计算以提高在线计算的效率。具体来讲,用户“A”不得不再受到Y之后再计算会话密钥,用户“B”不得不在受到X之后再计算会话密钥。
(2).MQV和HMQV协议不能做到完全的可抵赖性。在MQV和HMQV中,用户“A”可以抵赖会话密钥是由用户“B”的私钥b及y产生。同样,用户“B”可以抵赖会话密钥是由用户“A”的私钥a及x产生。但是,用户A和B不能够同时否认会话密钥不是由他们产生的。这时因为,会话密钥的产生使用了gab,而gab只能由他们两个人之一产生。也即是说,MQV和HMQV所生成的会话密钥可以确定地被追踪到产生会话密钥的这两个用户。
(3).MQV和HMQV没有做到完全的不可锻造安全性。在MQV和HMQV中,在计算c和d时候,哈西函数的输入仅包含部分与协议相关的信息。在MQV中,c的输入仅包含Y,d的输入仅包含X。在HMQV中,d的输入仅包含(X,IB),c的输入仅包含(Y,IA)。特别地,c和d的输入中没有包含任何公钥和证书信息。另外,在会话密钥计算中,在2-轮MQV和HMQV中没有对DH密钥成分X和Y的离散对数x和y利用哈西函数进行掩盖保护。这些不足给潜在的并发中间人攻击留下了空间或潜在的后门。另外,在MQV和HMQV中用户的角色,即初始者或响应者,是由0和1标示。
(4).MQV和HMQV没有考虑抵抗拒绝服务攻击。
发明内容
本发明的目的在于提供一类在线计算高效、可抵赖、不可锻造、抗拒绝服务攻击且抗内部状态泄漏的密钥交换协议。
本发明协议的系统工作环境为:
(1).系统参数:系统参数:(p,q,g,H,HK,c,d,e,f),其中p和q为大素数,并且q能整除p-1,g是一个Z* p中阶(order)为q的元素,使得在Z* p中由g定义的子群上离散对数(discrete logarithm DL)及计算Diffie-Hellman(computationalDiffie-Hellman CDH)问题是难的。所有的指数运算及(不在指数上的)乘法运算是模(mod)p运算,加法及指数上的乘法为模(mod)q运算(比如:gcw表示gcw mod q mod p)。这里,Z* p指的是所有比p小并与p互素的正整数的集合,即Z* p={1,2,…,p-1}。定义函数DL:Zq→Z* p,使得h=DL(w)=gw mod p。w称为h的离散对数。我们要求给定随机计算出的h,没有多项式时间算法计算出h的离散对数w,这称为离散对数问题。计算Diffie-Hellman问题指的是:给定随机的gx与gy,没有多项式时间算法计算出gxy。一般而言,对于熟悉本领域的人而言,离散对数问题及计算Diffie-Hellman问题也可以定义在由椭圆曲线或双线性对(bilineartity)定义的群上。H和HK是从{0,1}*→{0,1,2,…, q-1}的哈西函数。c,d,e,f为{0,1}*→{0,1,2,…, q-1}的函数。为增加计算速度,H,c,d,e,f的输出长度可以为l=(log2 q+1)/2。对于字符串s1,…,sk,k>1,H(s1,s2,…,sk)表示的是:将s1,…,sk用二进制0-1串来表示,然后将所有的0-1串顺序连接(即,串联)起来,最后将串联后得到的串作为H的输入。(p,q,g,H,HK,c,d,e,f)既可以是全局或部分全局性的公共参数,亦可以由任意一对执行该协议的用户进行协商。
(2).除非有特别说明,具有身份ID IA的用户“A”有一个公钥A=ga,其中a由用户“A”在Zq中随机选取。相应地,具有ID IB的用户“B”的公钥记为B=gb,以此类推;这里,Za={0,1,2,…,q-1}。
(3).协议基于Diffie-Hellman密钥交换协议。记X=gx为用户“A”的DH密钥成分,x为DH密钥成分X的离散对数。记Y=gy为用户“B”的DH密钥成分,y为DH密钥成分Y的离散对数。
(4).有一个可信的证书权威机构CA,颁发证书CERT,用于将用户的身份及其相应公钥,比如:(IA,A=ga),进行可公开验证的绑定。绑定用CA的电子签名实现。绑定时CA验证公钥为Z* p中阶为q且非1的元素。用户“A”的证书记为CERTA,包括用户“A”的公钥及CA对(IA,A=ga)的电子签名。
(5).协议的每一次执行称为一个会话(session)。我们假定协议的每一次执行(即,每一次会话)有一个标示号(session-identifier):sid,用于标记并发运行的协议执行。sid的制定和协商可随协议的运行环境不同而有所变化:比如sid可以是协议运行两方发送的两个随机串的合并连接。一般而言,sid包含在协议运行之前用户交换的信息或交换信息的哈西值。在某些环境中sid可在协议运行过程中产生。在某些环境中当会话可由语境自动标示时sid亦可省略;例如在某些密钥交换应用中(gx,gy)可兼当会话标示号。
(6).与协议执行相关的其它信息pub:除了(sid,IA,A=ga,IB,B=gb,X=gx,Y=gy)外,其它与协议执行相关的信息用pub来表示。pub是一个字符串,一般是用户的IP地址,公钥证书,其它需要认证的信息,时间戳等的串联。pub可以为空。在所有具有MAC的协议实现中,为了提高计算效率,可仅仅将pub作为(以会话密钥作为私钥的)MAC的输入一部分,而不作为H,HK及KDF的输入。
协议实现方法:
用户“A”及“B”相互交换它们各自的DH密钥成分X=gx和Y=gy。假设用户“A”为协议的发起者,用户“B”为协议的响应者。即:用户“A”在第一轮发送X,在收到X后用户“B”在第二轮发送Y。
将协议每一次执行的所有相关信息,包括:sid,IA,A=ga,IB,B=gb,X=gx,Y=gy,以及其它与该次协议执行相关的信息pub(一般包含用户的IP地址,公钥证书,其它需要认证的信息,时间戳等),用哈西函数H和函数c,d,e,f进行承诺绑定。一般而言,先用哈西函数H进行绑定,然后将H的输出作为c,d,e,f输入的一部分;并且对于输出不是常数的函数c,d,e,f,其输入和输出可以相互嵌套和影响,从而提供更强的绑定。比如:c=H(sid,IA,ga,IB,gb,X,Y,pub),d=H(c),f=H(c,d),e=H(c,d,f)。对于用户“A”和“B”的私钥a和b,以及它们DH密钥成分X和Y的离散对数x和y,利用哈西函数及c,d,e,f进行掩盖保护,从而提供相对于每一次协议执行的新鲜性和不可锻造安全性。
会话密钥计算方法:会话密钥K由如下值之一导出,其中KA为用户“A”计算的值,KB为用户“B”计算的值,KA等于KB:
(1).在线计算高效形式:KA=Bea+cxYda+fx,KB=Aeb+dyXcb+fy。其中,c=H(sid,IA,A,X,IB,B,pub);,d=H(sid,IA,A,IB,B,Y,pub)或d=H(c,Y);e=1或e=H(sid,IA,A,IB,B,pub);f=H(c,d)。当d=H(sid,IA,A,IB,B,Y,pub)及e=1时,此时c的输入不包含Y,d的输入不包含X,用户“A”事先离线计算c、X和Ba+cx,用户“B”事先离线计算d、Y和Ab+dy,从而提高在线计算的效率。
(2).可抵赖形式:KA=BcxYda+fx,KB=AdyXcb+fy;或KA=BcxYda,KB=AdyXcb。其中c=H(sid,IA,A,X,IB,B,pub)或c=H(sid,IA,A,X,IB,B,Y,pub);d=H(sid,IA,A,IB,B,Y,pub)或d=H(c,Y);f=H(c,d)。在这种情况,函数e=0,会话密钥可仅仅由DH密钥成分的离散对数,即x和y,计算出,因此每一个用户均可以抵赖会话密钥的产生,从而更好地保护用户的隐私。当c=H(sid,IA,A,X,IB,B,pub)及d=H(sid,IA,A,IB,B,Y,pub)时,此时c的输入不包含Y,d的输入不包含X,用户“A”可以事先离线计算c、X和Bcx,用户“B”可以事先离线计算d、Y和Ady,从而在保持可抵赖性的基础上进一步提高在线计算的效率。
(3).完整形式:KA=Bea+cxYda+fx,KB=Aeb+dyXcb+fy。其中函数c,d,e,f的输入和输出相互嵌套和影响,比如:c=H(sid,IA,ga,IB,gb,X,Y,pub),d=H(c),f=H(c,d),e=H(c,d,f)。
(4).基本形式:KA=Ba+cxYda+x,KB=Ab+dyXcb+y,或KA=Bca+xYa+dx,KB=Acb+yXb+dy。其中c=H(sid,IA,A,X,IB,B,Y,pub),d=H(c)。
(5).简单形式:KA=Bcx+da,KB=AdbXcb。对于这种情形,因为用户“A”计算KA时候可以不知道Y,Y不被包含在c,d以及H的输入中。函数c和d的设置有如下情况:c=H(sid,IA,A,X,IB,B,pub),d=H(c)或d=1;或者,d=H(sid,IA,A,X,IB,B,pub),c=H(d)或c=1。
(6).其他形式:KA=Bcx+eaYda,KB=Ady+ebXcb。其中e=1或e=H(sid,IA,A,IB,B,pub);c=H(sid,IA,A,X,IB,B,pub);d=H(sid,IA,A,IB,B,Y,pub)。
会话密钥K是由HK和一个密钥导出函数KDF(key derivation function KDF)导出。一般方法是将HK(KA,(sid,A,B,IA,IB,X,Y,c,d,e,f,pub))作为一个伪随机函数PRF(pseudorandom function PRF)的随机种子来导出。一个伪随机函数是一个二元函数PRFα(·):第一元α是一个随机数,一般称为PRF的随机种子;·是另外一元,可以是任意字符串的顺序连接。比如,PRFα(c,pub)表示的是PRFα(c‖pub),其中“c‖pub”表示的是字符串c与pub的顺序连接(即,串联)。为了提高计算效率,会话密钥K也可以直接由哈西函数HK导出,比如K=HK(KA,c,d,e,f)=HK(KB,c,d,e,f)。
身份及密钥确认方法:为了进一步相互确认身份及会话密钥,用户“B”和“A”用导出的会话密钥作为消息认证码MAC的私钥对协议公开信息,sid,IA,IB,A,B,X,Y,c,d以及用户角色标示,进行认证。具体来讲,协议响应者B在第二轮认证(sid,IB,IA,B,A,Y,X,d,c,pub),协议初始者A在另加的第三轮进行认证(sid,IA,IB,A,B,X,Y,c,d,pub)。此时,会话标示符sid可以是用户“B”和“A”交换的两个随机串rB与rA的合并连接,即:rB‖rA。
用户角色,即协议初始者和响应者的标示方法:
(1).由c,d,e,f的顺序来标示:(c,d)标示协议初始者角色,(d,c)标示协议响应者角色。这种角色标示方法要求函数c,d的输出不为常数且可相互嵌套。
(2).由c与用户ID的顺序来标示:(c,IA)标示协议初始者;(IB,c)标示响应者。
针对不同需求或优先级的实现方法:
基于发明协议会话密钥计算的不同形式,发明协议允许用户协商以满足用户对在线计算效率、可抵赖性、安全性、抵抗拒绝服务攻击,以及显式或隐式身份及密钥确认的不同需求以及优先级。
基于会话密钥计算简单形式的2-轮显式身份及密钥确认的协议实现方法:为了得到2-轮显式身份及密钥确认的密钥交换协议,基于会话密钥计算简单形式,有如下三种方法(其中函数c和d输出不同且不可同时为常数):
(1).在第一轮,用户“A”发送X,并利用由KA=Bcx+da(以及协议公开信息)导出的密钥作为消息认证码MAC的私钥对协议公开信息,sid,IA,IB,A,B,X,c,d,以及用户角色标示等,进行认证。用户“B”利用由KB=AdbXcb导出的私钥验证MAC的正确性。在第二轮,用户“B”发送Y,并利用由Xy和KB共同导出的MAC的私钥,比如HK(Xy,KB,sid,IA,IB A,B,X,Y,c,d),对协议公开信息,sid,IB,IA,Y,d,c以及用户角色标示等,进行认证。为了抵抗拒绝服务攻击,用户“B”可以再使用由KB=AdbXcb导出的MAC的私钥对第二轮发送的全部(或部分)信息进行二次MAC认证。最后,会话密钥最终由gxy导出。
(2).在第一轮,用户“A”发送X,并利用由KA=Bcx+da导出的密钥作为消息认证码MAC的私钥对协议公开信息,sid,IA,IB,c,d等,进行认证。用户“B”利用由KB=AdbXcb导出的私钥验证MAC的正确性。在第二轮,用户“B”利用由KB导出的MAC的私钥对协议公开信息,sid,IB,IA,Y,X,d,c等,进行认证。会话密钥由KA=KB导出。
(3).在第一轮,用户“A”发送X,并利用由KA=Bcx+da导出的密钥作为对称加密算法E的私钥加密一个随机数r。在第二轮,B利用由KB=AdbXcb导出的私钥解密出r,并利用r作为MAC的私钥对协议公开信息,sid,IB,IA,X,d,c等,进行认证。会话密钥由r导出。
基于会话密钥计算可抵赖形式的3-轮可抵赖、抗拒绝服务攻击、且显式身份及密钥确认的协议实现方法:
在第一轮用户“A”发送X=gx,计算c=H(sid,IA,ga,IB,gb,X,pub),并通过由Bcx导出的密钥作为MAC的私钥对(c,IA)进行认证。这里,(c,IA)标示协议初始者角色。
在第二轮,用户“B”首先利用Xcb验证第一轮MAC值的正确性(这有利于及早发现和防范拒绝服务攻击)。计算并发送Y=gy;计算d=H(c,Xcb,Y),并利用由(Ady,Xcb)共同导出的会话密钥K对(IB,c)进行认证。这里,(IB,c)标示协议响应者角色。最后,“B”再用由Xcb导出的MAC的私钥对第二轮发送的信息进行二次认证。
在第三轮,用户“A”首先通过Bcx验证第二轮信息的二次认证MAC值的有效性(这有利于及早发现和防范拒绝服务攻击)。然后,用户“A”利用由(Bcx,Yda)共同导出的会话密钥K作为MAC的私钥对(c,IA)进行认证。
基于会话密钥计算完整形式的4-轮抗内部状态泄漏和拒绝服务攻击、且显式密钥及身份确认的协议实现方法:
在第一轮,用户“A”发送X=gx,计算c=H(sid,IA,ga,IB,gb,X,pub),并通过由Bcx导出的密钥K1作为MAC的私钥对(c,IA)进行认证;这里,(c,IA)标示协议初始者角色。
在第二轮,用户“B”首先由Xcb计算出K1来验证第一轮MAC值的正确性(这有利于及早发现和防范拒绝服务攻击);然后,“B”计算并发送Y=gy,计算f=H(c,Y),并利用由(Xcb,Xfy)共同导出的密钥K2对(IB,c)进行MAC认证。这儿,(IB,c)标示协议响应者角色。最后,“B”再用K1对第二轮发送的信息进行二次认证。
在第三轮,用户“A”首先通过使用K1验证第二轮信息的二次认证MAC值的有效性(这有利于及早发现和防范拒绝服务攻击)。然后,用户“A”计算d=H(c,f,K1),e=H(c,d,f,K1,K2),由Bea+cxYda+fx导出会话密钥K,并用K作为MAC的私钥对(c,IA)进行认证。
在第四轮,用户“B”计算d=H(c,f,K1),e=H(c,d,f,K1,K2),Aeb+dy,由Aeb+dyXcb+fy导出会话密钥K并验证第三轮MAC值的正确性。然后,用户“B”再用会话密钥K对(IB,c)进行MAC认证。
本发明协议的具体实现步骤:
在下述协议描述中,大括号内的值表示发送的信息。注意用户“A”的公钥是A=ga并具有CA颁发的证书CERTA;用户“B”的公钥是B=gb并具有CA颁发的证书CERTB。假设用户“A”为协议运行初始者,用户“B”为协议运行响应者。协议的输出,即会话密钥K,由一个密钥导出函数KDF来定义K=KDF(KA,·)=KDF(KB,·),·表示二元函数KDF中的一个变元。密钥导出函数KDF可随应用的不同而不同。
协议-1:2-轮隐式身份及密钥确认的协议实现步骤:
第一轮,从“A”到“B”:{sid,IA,A,CERTA,X=gx(mod p)},其中x从Zq中随机选取;X称为“A”的DH密钥成分。
收到“A”发送的信息后,“B”验证“A”的身份、公钥及证书,X为非1且阶为q的Z* p中的元素。验证不成功,“B”拒绝继续执行协议,否则,进入下一轮。
第二轮,从“B”到“A”:{sid,IB,B,CERTB,Y=gy},其中,y从Zq中随机选取且Y称为“B”的DH成分。 收到“B”发送的信息后,“A”验证“B”的身份、公钥及证书,Y为非1且阶为q的Z* p中的元素。验证不成功,“A”终止协议。
会话密钥计算的在线计算高效形式:用户“A”和“B”计算:c=H(sid,IA,A,X,IB,B,pub),d=H(sid,IA,A,IB,B,Y,pub),f=H(c,d)。其中pub包含与协议运行相关的其它公开信息,比如:用户“A”和“B”的证书、IP地址等。为了提高计算效率,用户“A”可以事先离线计算Ba+cx,用户“B”可以事先离线计算Ab+dy,从而提高在线计算的效率。最后,用户“A”计算KA=Ba+cxYda+fx,并利用密钥导出函数KDF计算出会话密钥:K=KDF(KA,(sid,IA,ga,IB,gb,X,Y,c,d,pub))。用户“B”计算KB=Ab+dyXcb+fy,K=KDF(KB,(sid,IA,ga,IB,gb,X,Y,c,d,pub))。比如,对于α=KA,β=(sid,IA,ga,IB,gb,X,Y,c,d,pub), 其中,PRF是一个伪随机函数。这里,HK(KA,(sid,IA,ga,IB,gb,X,Y,c,d,pub))表示的是HK(KA‖sid‖IA‖ga‖IB‖gb‖X‖Y‖c‖d‖pub),PRFHK(α,β)(c,pub)表示的是PRFHK(α,β)(c‖pub),“‖”表示的是字符串的顺序连接。
会话密钥计算的可抵赖形式(推荐用于更好地隐私保护):在会话密钥计算的可抵赖形式中,KA与KB如下计算:KA=BcxYda+fx,KB=AdyXcb+fy。其中c=H(sid,IA,A,X,IB,B,pub),d=H(sid,IA,A,IB,B,Y,pub),f=H(c,d)。用户“A”事先离线计算X和Bcx,用户“B”事先离线计算Y和Ady,从而可进一步提高在线计算的效率。
会话密钥计算的完整形式(推荐用于更强的安全性):在会话密钥计算的完整形式中,KA与KB如下计算:KA=Bea+cxYda+fx,KB=Aeb+dyXcb+fy,其中c=H(sid,IA,ga,IB,gb,X,Y,pub),d=H(c),f=H(c,d),e=H(c,d,f)。
协议-2:2-轮显式身份及密钥确认的协议实现步骤:
第一轮,从“A”到“B”: 其中A=ga,B=gb,x从Zq中随机选取,c=H(sid,IA,ga,IB,gb,X,pub),d=H(c)。MAC私钥KM的计算如下:KA=Bcx+da,KM=KDF(KA,(sid,IA,ga,IB,gb,X,Y,c,d,pub))。
收到“A”发送的信息后,“B”验证“A”的身份、公钥及证书,X为非1且阶为q的Z* p中的元素。计算Kb=XcbAdb和KM并验证 的正确性。验证不成功,“B”拒绝继续执行协议,否则,进入下一轮。
第二轮,从“B”到“A”: 其中y从Zq中随机选取。
收到“B”发送的信息后,“A”验证“B”的身份、公钥及证书,Y为非1且阶q的Z* p中的元素,并利用x、KA,和KM验证 且 验证不成功,“A”终止协议。
会话密钥计算:用户“A”和“B”计算会话密钥:K=KDF(gxy,(sid,IA,ga,IB,gb,X,Y,c,d,pub))。
协议-3:3-轮抗拒绝服务攻击、且显式密钥及身份确认的协议实现步骤:
第一轮,从“A”到“B”: 其中A=ga,B=gb,从Zq中随机选取。MAC私钥K1的计算如下:c=h(sid,IA,ga,IB,gb,X,pub),K1=HK(sid,IA,ga,IB,gb,X,Bcx,c,pub)。“A”发送完第一轮信息后,将x删除,但保留k1和c。
收到用户“A”发送的信息后,用户“B”依次计算c,K1=HK(sid,IA,ga,IB,gb,X,Xcb,c,pub),验证Cx的正确性。如果验证通过,“B”继续验证“A”的身份、公钥及证书,X为非1且阶为q的Z* p中的元素。任何验证不成功,“B”拒绝继续执行协议。否则,进入下一轮。
第二轮,从“B”到“A”: 其中y从Zq中随机选取;令d=h(c,k1,Y),会话密钥K由HK(sid,IA,IB,A,B,X,Y,c,d,Ady)导出。发送完第二轮信息后,用户“B”将c,d,y,Xcb,Ady,K1删除,仅保留会话密钥K。
收到“B”发送的信息后,“A”首先利用K1验证Cb的正确性。然后,验证“B”的身份、公钥及证书,Y为非1且阶q的Z* p中的元素,由Hk(sid,IA,IB,A,B,X,Y,c,d,Yda)导出会话密钥K并验证C(b,y)的正确性。任何验证不成功,“A”终止协议。否则,删除c,d,K1,Yda,仅保留会话密钥K,并进入下一轮。
第三轮,从“A”到“B”:{sid,Ca=MACK(sid,c,IA)};收到“A”发送的信息后,“B”验证Ca的正确性。验证不成功,“B”终止协议。
协议-4:4-轮抗内部状态泄漏和拒绝服务攻击、且显式密钥及身份确认的协议实现步骤:
第一轮,从“A”到“B”: 其中A=ga,B=gb,x从Zq中随机选取。MAC私钥K1的计算如下:c=H(sid,IA,ga,IB,gb,X,pub),K1=HK(sid,IA,ga,IB,gb,X,Bcx,c,pub)。
收到用户“A”发送的信息后,用户“B”依次计算c,K1=HK(sid,IA,ga,IB,gb,X,Xcb,c,pub),验证Cx的正确性;如果验证通过,“B”继续验证“A”的身份、公钥及证书,X为非1且阶为q的Z* p中的元素。任何验证不成功,“B”拒绝继续执行协议;否则,进入下一轮。
第二轮,从“B”到“A”: 其中y从Zq中随机选取。令f=H(c,Y),MAC私钥K2=HK(sid,IB,IA,B,A,Y,X,Xcb,Xfy,f,c,pub)。
收到“B”发送的信息后,“A”首先利用K1验证Cb的正确性。然后,验证“B”的身份、公钥及证书,y为非1且阶q的Z* p中的元素;计算f=H(c,Y),d=H(c,f,K1),Yfx,Yda及K2=HK(sid,IB,IA,B,A,Y,X,Bcx,Yfx,f,c,pub)并验证C(X,b,y)的正确性。任何验证不成功,“A”终止协议。否则,计算e=H(c,d,f,K1,K2)及会话密钥K=KDF(Bea+cxYda+fx,(sid,IA,ga,IB,gb,X,Y,c,d,e,pub))。将所有的内部状态(包括x,c,d,e,f,K1,K2,Bcx,Yfx,Yda等)删去,仅保留会话密钥K,并进入下一轮。
第三轮,从“A”到“B”:{sid,C(K,a,x)=MACK(sid,c,IA)}。收到“A”发送的信息后,“B”计算d=H(c,f,K1),e=H(c,d,f,K1,K2),Aeb+dy,计算会话密钥K=KDF(Aeb+dyXcb+fy,(sid,IA,ga,IB,gb,X,Y,c,d,e,f,pub))并验证C(K,a,x)的正确性。验证不成功,“B”终止协议;否则,将所有的内部状态(包括y,c,d,e,f,K1,K2,Xcb,Xfy,Aeb+dy等)删去,仅保留会话密钥K,并进入下一轮。
第四轮,从“B”到“A”:{sid,C(K,b,y)=MACK(sid,c,IA)}。收到“B”发送的信息后,“A”利用会话密钥K验证C(K,b,y)的正确性;验证不成功,“B”终止协议。
本发明中,协议-1、协议-2、协议-3及协议-4中蕴含如下子协议:
协议-5:基于离散对数的不可锻造安全的2-轮零知识身份验证协议:设公共输入为(p,q,g,A=ga),其中a从Zq随机选取的;A=ga为用户“A”的公钥,用户“A”向用户“B”证明其知道私钥a。
第一轮,从“B”到“A”:{sid,IB,Y=gy,Cy},其中,y从Zq中随机选取。令c=H(sid,IB,IA,Y,A,pub),Cy有如下计算方法:
(1).
(2).Cy=HK(sid,IB,IA,Y,A,Acy,c,pub)。
(3).Cy=Acy(不推荐使用)。
第二轮,从“A”到“B”:用户“A”检查Y为非1阶q的Z* p中的元素,利用Yca检查Cy的正确性。发送{sid,IA,A,Ca}。令d=H(sid,IA,IB,A,Y,c,pub),Ca有如下计算方法:
(1).
(2).
(3).Ca=HK(sid,IA,IB,A,Y,Yda,d,c,pub)。
(4).Ca=Yda(不推荐使用)。
收到“A”发送的第二轮信息后,“B”检查“A”的身份、公钥及证书,并利用y(即:Acy或Ady)检查Ca的有效性。检查通过,则接受;否则,拒绝。
本发明中,协议-1、协议-2、协议-3及协议-4可以有如下变体:
(1).协议-1中KA及KB的生成方式有权利要求1中所描述的6种关于会话密钥的生成方式。
(2).对于协议-1会话密钥计算的完整形式,将KA=Bea+cxYda+fx换成KA=HK(Bea+cx,Yda+fx);将KB=Aeb+dyXcb+fy换成KB=HK(XcbAeb,XfyAdy)。其中,c=H(sid,IA,ga,IB,gb,X,Y,pub),e=H(c),d=H(c,e,Bcx+ea)=H(c,e,XcbAeb),f=(c,d,e)。
(3).对于协议-1会话密钥计算的完整形式、在线计算高效形式及协议-4,为了提高效率或防范拒绝服务攻击,用户“A”可以在一个较短的时间段内,比如1天或1周内,重复使用相同的DH密钥成分X。同样,用户“B”可以在一个较短的时间段内,比如1天或1周内,重复使用相同的DH密钥成分Y。X和Y需定期(不超过1周)进行更新,即:定期随机生成新的DH密钥成分。注意,公钥证书颁发机构CA并不需要对DH密钥成分X和Y进行认证。这导致一个非交互的、更高效、且适合抵抗拒绝服务攻击的密钥交换协议的变体。但是安全性可能会降低。
(4).协议-2中的会话密钥可以有权利要求2中所描述的3种关于会话密钥的生成方式。具体来讲,会话密钥可以直接由KA=Bcx+da=XcbAdb=KB导出,或者将KA=Bcx+da=XcbAdb=KB作为对称加密算法的密钥加密一个随机串r并由r导出(或直接作为)会话密钥。
(5).在协议-2中,C(b,y)可以替换成
(6).将协议-3中的K1换成K1=HK(Bcx+ea)=HK(XcbAeb),将会话密钥K换为K=HK(Bcx+eaYda+fx)=HK(Aeb+dyXcb+fy)。其中,c=H(sid,IA,ga,IB,gb,X,pub),e=H(c),d=H(c,e,Bcx+ea)=H(c,e,XcbAeb),f=H(c,d,e)。
(7).协议-3有如下变体:将第二轮的MAC密钥K换为HK(Xcb,Xy),将第三轮的MAC密钥K换为HK(Ya,Yx),会话密钥由gxy导出。
(8).协议-4中,K2也可以换为K2=HK(K1,Xfy)=HK(K1,Yfx)或者K2=HK(XcbXfy)=HK(BcxYfx)。
(9).协议-4有如下变体:将Y作为用户“B”的定期更换的短期公钥(或,用户“B”作为协议初始者先发送Y,然后用户“A”再发送X)。此时,MAC密钥K1换为K1=HK(sid,IA,ga,IB,gb,X,Ycx,c,pub)。
(10).当不需考虑抵抗拒绝服务攻击时,协议-3和协议-4中的Cb可省去。
(11).会话密钥扩展方法:对于不同的函数F,KA=F(Bcx,Yda,Bea,Yfx),KB=F(Xcb,Ady,Aeb,Xfy)。此时,c,d,e,f的输入可以包含F输入的部分甚至全部。比如:KA=HK(Bcx,Yda),KB=HK(Xcb,Ady),d=H(c,Bcx)。
(12).在所有协议中,为了提高计算效率,可令c=H(sid,IA,A,IB,B,X,pub),d=H(sid,IB,B,IA,A,Y,pub),e=H(c)或e=H(d),f=1。
(13).在所有的协议中,用户“A”在第一轮额外发送一个随机数rA,用户“B”在第二轮额外发送一个随机数rB,并将rA和rB作为哈西函数H与HK输入的一部分。这时,(rA,rB)起到sid的作用。
(14).在所有的协议中,将部分或全部MAC去掉,只用哈西函数进行绑定。或者,MAC的输入只保留用户角色标示。但是,如果用户“A”和“B”使用相同的MAC私钥时候(比如,协议-2中的C(a,x)与CKM,协议-3中的CX与Cb),或者MAC的私钥同时也是会话密钥(比如协议-3)时,不可这样做。
(15).在所有具有MAC的协议实现中,为了提高计算效率,可仅仅将pub作为(以会话密钥作为私钥的)MAC的输入一部分,而不作为H,HK及KDF的输入。
(16).在所有的协议中,将部分或全部MAC换成对称加密算法。
(17).在所有的协议中,用户的角色,即初始者或响应者,也可直接用0,1标示。
本发明协议具有如下特点:
(1).本发明协议(比如协议-1的在线计算高效形式)可提供几乎最优的在线计算效率。对于协议-1的会话密钥的在线高效生成形式,每个用户只需在线计算大约1.5个指数运算。具体来讲:用户“A”只需在线计算Yq(即检查Y的阶为q)和Yda+fx,而Yq和Yda+fx的同时计算相当于1.5个指数运算(而不是两个独立的指数运算);用户“B”只需在线计算Xq(即检查X的阶为q)和Xcb+fy,同样,Xq和Xcb+fy而Yq和Yda+fx的同时计算相当于1.5个指数运算。在MQV和HMQV协议中,用户“A”需在线计算Yq和(YBc)x+da,这需要2.5个指数运算;用户“B”需在线计算Xq和(XAd)y+cb,这同样需要2.5个指数运算。因此,本发明协议相对于MQV和HMQV节省了2个指数运算,大大提高了在线计算的效率。这对于本发明协议基于智能卡的实现是非常重要的。
(2).本发明协议(比如,协议-1的会话密钥计算的可抵赖形式和协议-3)可提供完全的可抵赖性。用户“A”和“B”可同时地抵赖他们没有参与协议的执行。这是因为会话密钥可仅由DH密钥成分的离散对数x和y计算出来。MQV和HMQV不能提供完全的可抵赖性。因此,本发明协议相对于MQV和HMQV可以更好地保护用户的隐私。
(3).本发明协议(比如,协议-1会话密钥计算的完整形式及协议-4)可提供完全的不可锻造安全性。即:无论一个敌手(比如冒充用户“B”的敌手)采取什么样的策略、具有什么样的辅助输入、甚至即便他可能偷取了诚实用户“A”的私钥a或者DH密钥成分的离散对数x,如果他能够计算出会话密钥那么他一定同时道私钥b和DH密钥成分Y的离散对数y(这表明敌手没有造成任何安全危害)。
(4).本发明协议(比如协议-3和协议-4)提供抵抗拒绝服务攻击性能;MQV和HMQV没有考虑抵抗拒绝服务攻击性能。
(5).本发明协议的指导思想和核心工具是高效实用的基于离散对数的不可锻造安全的2-轮零知识身份验证协议(即,协议-5)。而MQV和HMQV的指导思想和核心工具是指数挑战-响应签名(Exponential Challenge-Response XCR signature)。协议设计的指导思想和基本工具不同。
(6).本发明协议允许用户协商以满足用户对效率、可抵赖性、安全性、抵抗拒绝服务攻击、抵抗内部状态泄漏、以及显式或隐式身份及密钥确认的不同需求和优先级。比如,如用户对效率和隐私保护具有优先的需求,他可以选择使用协议-1的在线高效形式、可抵赖形式及协议-3;而协议-1的完整形式和协议-4可以满足更高的安全需求(并兼顾一定程度的隐私保护)。
具体实施方式
假设,具有身份IA的用户“A”的公钥是A=ga并具有证书CERTA,具有身份IB的用户“B”的公钥是B=gb并具有证书CERTB。证书CERTA指的是CA对A的身份IA及其公钥A=ga的一个电子签名,其余同。我们假设A为协议运行初始者(initiator),B为协议运行响应者(responder)。协议的输出(即密钥)由一个密钥导出函数(key derivation function KDF)来定义K=KDF(KA,·)=KDF(KB,·)。KDF是一个二元函数,KA或KB作为一元,另一元包含与协议执行相关的公开信息并可随应用的不同而不同。KDF可随应用的不同而不同。常用的例子为,KDF为一个伪随机函数(pseudorandom function PRF)。比如,对于α=KA,β=(sid,IA,ga,IB,gb,X,Y,c,d,pub), 注意,根据关于哈西函数表示方法的约定,这里HK(KA,(sid,IA,ga,IB,gb,X,Y,c,d,pub))表示的是HK(KA‖sid‖IA‖ga‖IB‖gb‖X‖Y‖c‖d‖pub),其中,“‖”表示的是字符串的顺序连接(即,串联)。
在下述协议具体实施中,密钥导出函数所用的伪随机函数PRF及消息认证码MAC均采用由IETF(Internet Engineering Task Force)所公布的第2104号互联网意见征求文档(Internet RFC 2104)中所描述的HMAC认证码。HMAC只需作两个哈西运算,并被证明既是消息认证码又是伪随机函数。在协议具体实施中,HMAC由SHA-1哈西函数来实现。在下述协议具体实施中,密钥导出函数为: 其中α=KA=KB,β=(sid,IA,ga,IB,gb,X,Y,c,d,pub)。会话标示符sid可省去(由DH密钥成分(X,Y)担当),或由用户“A”和“B”发送的两个随机串的串联担当。一般而言,对于隐式密钥和身份确认的密钥交换协议,会话标示符sid可省去,而由DH密钥成分(X,Y)担当sid的作用;对于显式密钥及身份确认的密钥交换协议,会话标示符sid用户“A”和“B”发送的两个随机串的串联担当。
在协议的具体实施中,可以有如下提高计算效率的方法:DH密钥成分X和Y可以在协议执行之前离线计算;因为用户的公钥固定,关于用户公钥A和B的指数运算仅相当于约0.2个指数运算;对于任何一个阶为q的Z* p中的元素(比如A,B,X,Y),关于同一个元素的两个不同的指数运算(比如Xcb,Xfy)相当于1.5个指数运算;我们注意到抵抗拒绝服务攻击和这些提高计算效率的方法在某些环境和应用中可能会冲突。具体选择哪种计算方式要根据用户对抵抗拒绝服务攻击和计算效率的不同优先级来决定。
协议-1的具体实施方式:
协议-1在具体实施时,会话标示符sid可省去,而由DH密钥成分(X,Y)担当sid的作用。
第一轮,从“A”到“B”:{IA,A,CERTA,X=gx(mod p)},其中x从Zq中随机选取。X称为“A”的DH密钥成分。
收到“A”发送的信息后,“B”验证“A”的身份、公钥及证书,X为非1且阶为q的Z* p中的元素。验证不成功,“B”拒绝继续执行协议,否则,进入下一轮。
第二轮,从“B”到“A”:{IB,B,CERTB,Y=gy},其中,y从Zq中随机选取且Y称为“B”的DH成分。
收到“B”发送的信息后,“A”验证“B”的身份、公钥及证书,Y为非1且阶为q的Z* p中的元素。验证不成功,“A”终止协议。
会话密钥计算的在线计算高效形式:用户“A”和“B”计算:c=H(IA‖A‖X‖IB‖B‖pub),d=H(IA‖A‖IB‖B‖Y‖pub),f=H(c‖d)。其中pub包含与协议运行相关的其它公开信息,比如:用户“A”和“B”的证书、IP地址等。为了提高计算效率,用户“A”可以事先离线计算c、X=gx和Ba+cx mod q mod p,用户“B”可以事先离线计算d、Y=gy和Ab+dy mod q mod p,从而提高在线计算的效率。最后,用户“A”计算KA=Ba+cx mod qYda+fx mod q mod p,并利用密钥导出函数KDF计算出会话密钥: 用户“B”计算KB=Ab+dy mod qXcb+fy mod q mod p,
会话密钥计算的可抵赖形式:在会话密钥计算的可抵赖形式中,KA与KB如下计算:KA=Bcx mod qYda+fx mod q,KB=Ady mod qXcb+fy mod q。其中c=H(IA‖A‖X‖IB‖B‖pub),d=H(IA‖A‖IB‖B‖Y‖pub),f=H(c‖d)。用户“A”事先离线计算c、X=gx和Bcx mod q,用户“B”事先离线计算d、Y=gy和Ady mod q,从而可进一步提高在线计算的效率。
会话密钥计算的完整形式:在会话密钥计算的完整形式中,KA与KB如下计算:KA=Bea+cx mod qYda+fx mod q mod p,KB=Aeb+dy mod qXcb+fy mod q mod p,其中c=H(IA‖ga‖IB‖gb‖X‖Y‖pub),d=H(c),f=H(c‖d),e=H(c‖d‖f)。
协议-2的具体实施方式:
协议-2在具体实施时,会话标示符sid是由协议运行两方发送的两个随机串rB与rA的合并连接(即:串联)构成。这意味着,协议-2在具体实施中需要3轮的交互。
第一轮,从“B”到“A”:{rB,YB,B,CertB},其中,rB是一个32位随机0-1串。“A”验证rB的有效性(即:rB是一个32位0-1串),验证用户“B”的身份、公钥及证书。任何验证失败,用户“A”终止协议执行。否则,进入下一轮。
第二轮,从“A”到“B”: 其中rA是一个32位随机0-1串,A=ga,B=gb,x从Zq中随机选取,c=H(rB‖rA‖IA‖ga‖IB‖gb‖X‖pub),d=H(c)。MAC私钥KM的计算如下:KA=Bcx+da mod q mod p, 收到“A”发送的信息后,“B”验证rA的有效性(即:rA是一个32位0-1串),验证“A”的身份、公钥及证书,X为非1且阶为q的Z* p中的元素;计算KB=Xcb mod qAdb mod q mod p和 并验证 的正确性。验证不成功,“B”拒绝继续执行协议,否则,进入下一轮。
第三轮,从“B”到“A”: 其中y从Zq中随机选取。收到“B”发送的信息后,“A”验证尸为非1且阶q的Z* p中的元素,并利用x、KA,和KM验证 且 验证不成功,“A”终止协议。
会话密钥计算:用户“A”和“B”计算会话密钥:
协议-3的具体实施方式:
协议-3在具体实施时,会话标示符sid是由协议运行两方发送的两个随机串rB与rA的合并连接构成。这意味着,协议-3在具体实施中需要4轮的交互。
第一轮,从“B”到“A”:{rB,IB,B,CertB},其中rB是一个32位随机0-1串,B=gb为用户“B”的公钥。“A”验证rB的有效性(即:rB是一个32位0-1串),验证用户“B”的身份、公钥及证书。任何验证失败,用户“A”终止协议执行;否则,进入下一轮。
第二轮,从“A”到“B”: 其中rA是一个32位随机0-1串,A=ga,B=gb,x从Zq中随机选取。HMAC私钥K1的计算如下:c=H(rB‖rA‖IA‖ga‖IB‖gb‖X‖pub),K1=HK(rB‖rA‖IA‖ga‖IB‖gb‖X‖Bcx‖c‖pub)。“A”发送完第一轮信息后,将x删除,但保留K1和c。
收到用户“A”发送的信息后,用户“B”验证rA的有效性(即:rA是一个32位0-1串)。依次计算c,K1=HK(rB‖rA‖IA‖ga‖IB‖gb‖X‖Bcx‖c‖pub),验证Cx的正确性。如果验证通过,“B”继续验证“A”的身份、公钥及证书,X为非1且阶为q的Z* p中的元素。任何验证不成功,“B”拒绝继续执行协议;否则,进入下一轮。
第三轮,从“B”到“A”: 其中y从Zq中随机选取。令d=H(c‖K1‖Y),会话密钥 发送完第二轮信息后,用户“B”将c,d,y,Xcb,Ady,K1删除,仅保留会话密钥K。
收到“B”发送的信息后,“A”首先利用K1验证Cb的正确性;然后,验证Y为非1且阶q的Z* p中的元素,计算 并验证C(b,y)的正确性。任何验证不成功,“A”终止协议;否则,删除c,d,K1,Yda,仅保留会话密钥K,并进入下一轮。
第四轮,从“A”到“B”:{rB‖rA,Ca=HMACK(rB‖rA‖c‖IA)}。收到“A”发送的信息后,“B”利用K验证Ca的确性;验证不成功,“B”终止协议。
协议-4的具体实施方式:
协议-4在具体实施时,会话标示符sid是由协议运行两方发送的两个随机串rB与rA的合并连接构成。这意味着,协议-4在具体实施可进行5轮的交互。下述协议-4的具体实施是针对用户对计算效率有优先需求时的情形。
第一轮,从“B”到“A”:{rB,IB,B,CertB},其中rB是一个32位随机0-1串,B=gb是用户“B”的公钥。“A”验证rB的有效性(即:rB是一个32位0-l串),验证用户“B”的身份、公钥及证书。任何验证失败,用户“A”终止协议执行;否则,进入下一轮。
第二轮,从“A”到“B”: 其中A=ga,B=gb,x从Zq中随机选取。MAC私钥K1如下计算:c=H(rB‖rA‖IA‖ga‖IB‖gb‖x‖pub),K1=HK(rB‖rA‖IA‖ga‖IB‖gb‖X‖Bcx‖c‖pub)。
收到用户“A”发送的信息后,用户“B”计算c,Y=gy(y从Zq中随机选取),f=H(c‖Y),(Xcb,Xfy),K1=HK(rB‖rA‖IA‖ga‖IB‖gb‖X‖Xcb‖c‖pub)并验证Cx的正确性。如果验证通过,“B”继续验证“A”的身份、公钥及证书,X为非1且阶为q的Z* p中的元素。任何验证不成功,“B”拒绝继续执行协议;否则,进入下一轮。
第三轮,从“B”到“A”: 其中y从Zq中随机选取,MAC私钥K2=HK(rB‖rA‖K1‖Xfy‖f‖c)。发送完第三轮信息后,用户“B”计算d=H(c‖f‖K1),e=H(c‖d‖f‖K1‖K2)、Aeb+dy、并计算会话密钥 用户“B”将所有内部状态,包括(y,K1,K2,c,d,e,f,(Xcb,Xfy),Aeb+dy,Aeb+dyXcb+fy等),删除,仅保留会话密钥K。
收到“B”发送的信息后,“A”首先利用K1验证Cb的正确性;然后,“B”验证Y为非1且阶q的Z* p中的元素,计算f=H(c‖Y),f=H(c‖f‖K1),Yfx,Yda,计算K2=HK(rB‖rA‖K1‖Yfx‖f‖c)并验证C(X,b,y)的正确性。任何验证不成功,“A”终止协议;否则,计算e=H(c‖d‖f‖K1‖K2)、 用户“A”将所有内部状态,包括(x,K1,K2,c,d,e,f,Bcx,Yfx,Yda,Aeb+dy,Bea+cxYda+fx等),删除,仅保留会话密钥K,并进入下一轮。
第四轮,从“A”到“B”:{rB‖rA,C(K,a,x)=HMACK(rB‖rA‖c‖IA)}。收到“A”发送的信息后,“B”利用会话密钥K验证C(K,a,x)的正确性。验证不成功,“B”终止协议;否则,进入下一轮。
第五轮,从“B”到“A”:{sid,C(K,b,y)=MACK(sid,c,IA)}。收到“B”发送的信息后,“A”利用会话密钥K验证C(K,b,y)的正确性;验证不成功,“B”终止协议。
协议-5的具体实施方式:
协议-5在具体实施时,会话标示符sid是由协议运行两方发送的两个随机串rA与rB的合并连接构成。在具体实施中,协议-5可以用作可抵赖的信息认证(dehiableauthentication)协议。具体来讲,将需要认证的信息或文件作为pub的一部分。
设公共输入为(p,q,g,A=ga),其中a从Zq随机选取的;A=ga为用户“A”的公钥,用户B可以没有公钥及证书。用户“A”向用户“B”证明其知道私钥a。当协议-4用于可抵赖信息认证时,pub包含需认证的信息或文件。
第一轮,从“A”到“B”:{rA,IA,A,CERTA},其中rA是一个32位随机0-1串,A=ga,CERTA是用户“A”的公钥证书。
收到用户“A”发送的信息后,用户“B”验证rA的有效性(即:rA是一个32位0-1串),验证“A”的身份、公钥及证书。任何验证不成功,“B”拒绝继续执行协议;否则,进入下一轮。
第二轮,从“B”到“A”:{rB,IB,Y=gy,Cy},其中,rB是一个32位随机0-1串,y从Zq中随机选取。令c=H(rA‖rB‖IB‖IA‖Y‖A‖pub),Cy有如下计算方法:
(1).
(2).Cy=HK(rA‖rB‖IB‖IA‖Y‖A‖Acy‖c‖pub)。
(3).Cy=Acy mod q mod p(不推荐使用)。
收到用户“B”发送的信息后,用户“A”验证rB的有效性(即:rB是一个32位0-1串),检查Y为非1阶q的Z* p中的元素,并利用Yca检查Cy的正确性。任何验证不成功,“B”拒绝继续执行协议;否则,进入下一轮。
第三轮,从“A”到“B”:{rA‖rB,Ca};令d=H(rA‖rB‖IA‖IB‖A‖Y‖c‖pub),Ca有如下计算方法:
(1).
(2).
(3).Ca=HK(rA‖rB‖IA‖IB‖A‖Y‖Yda‖d‖c‖pub)。
(4).Ca=Yda mod q mod p(不推荐使用);。
收到“A”发送的信息后,“B”计算d,并利用y(即:Acy或Ady)检查Ca的有效性。检查通过,则接受;否则,拒绝。
协议变体的具体实施方式:
在具体实施和应用中,可对协议1、协议-2、协议-3及协议-4作如下一项或多项改造:
(1).协议-1中KA及KB的生成方式可以有权利要求1中所描述的6种关于会话密钥的生成方式。
(2).对于协议-1会话密钥计算的完整形式,将KA=Bea+cxYda+fx换成KA=HK(Bea+cx‖Yda+fx);将KB=Aeb+dyXcb+fy换成KB=HK(XcbAeb‖XfyAdy)。其中c=H(IA‖ga‖IB‖gb‖X‖Y‖pub),e=H(c),d=H(c‖e‖Bcx+ea)=H(c‖e‖XcbAeb),f=(c‖d‖e)。这可增强协议的安全性。
(3).对于协议-1会话密钥计算的完整形式、在线计算高效形式及协议-4,为了提高效率或防范拒绝服务攻击,用户“A”可以在一个较短的时间段内,比如1天或1周内,重复使用相同的DH密钥成分X。同样,用户“B”可以在一个较短的时间段内,比如1天或1周内,重复使用相同的DH密钥成分Y。但需注意,X和Y需定期(不超过1周)进行更新,即:定期随机生成新的DH密钥成分,以保证安全性。此时,公钥证书颁发机构CA并不需要对DH密钥成分X和Y进行认证。这导致一个非交互的、更高效、且适合抵抗拒绝服务攻击的密钥交换协议的变体。但是安全性可能会降低。
(4).协议-1隐式身份及密钥确认的2-轮协议可以转化为3轮的显式身份及密钥确认协议。为了进行身份及密钥确认,用户“B”和“A”可以用导出的会话密钥K作为消息认证码HMAC的密钥对协议公开信息,sid,IA,IB,A,X,Y,c,d,pub等,进行认证。具体来讲,协议响应者B在第二轮认证(sid,IB,IA,B,A,Y,X,d,c,pub);协议初始者A在另加的第三轮进行认证(sid,IA,IB,A,B,X,Y,c,d,pub)。这导致一个3-轮的协议变体。此时,会话标示符sid可以是用户“B”和“A”交换的两个随机串rB与rA的合并连接,即:rB‖rA。
(5).协议-2中的会话密钥可以有权利要求2中所描述的3种关于会话密钥的生成方式。具体来讲,会话密钥可以直接由KA=HK(Bcx+da)=HK(XcbAdb)=KB导出;或者将KA=HK(Bcx+da)=HK(XcbAdb)=KB作为对称加密算法的密钥加密一个随机串r,并由r导出(或直接作为)会话密钥。
(6).在协议-2中,C(b,y)可以替换成HMACKM(rB‖rA‖IB‖IA‖B‖A‖Y‖X‖H(KB‖Xy)‖d‖c‖pub)。
(7).将协议-3中的K1换成K1=HK(Bcx+ea)=HK(XcbAeb),将会话密钥K换为K=HK(Bcx+eaYda+fx)=HK(Aeb+dyXcb+fy)。其中,c=H(rB‖rA‖IA‖ga‖IB‖gb‖X‖pub),e=H(c),d=H(c‖e‖Bcx+ea)=H(c‖e‖XcbAeb),f=H(c‖d‖e)。
(8).协议-3有如下变体:将第二轮的MAC密钥K换为HK(Xcb‖Xy),将第三轮的MAC密钥K换为HK(Ya‖Yx),会话密钥由gxy导出。
(9).协议-4中,K2也可以换为K2=HK(K1‖Xfy)=HK(K1‖Yfx)或者K2=HK(XcbXfy)=HK(BcxYfx)。
(10).协议-4有如下变体:将Y作为用户“B”的定期更换的短期公钥(或,用户“B”作为协议初始者先发送Y,然后用户“A”再发送X)。此时,MAC密钥K1换为K1=HK(sid‖IA‖ga‖IB‖gb‖X‖Ycx‖c‖pub)。
(11).当不需考虑抵抗拒绝服务攻击时,协议-3和协议-4中的Cb可省去。
(12).会话密钥扩展方法:对于不同的(四元)函数F,KA=F(Bcx,Yda,Bea,Yfx),KB=F(Xcb,Ady,Aeb,Xfy)。此时,c,d,e,f的输入可以包含F输入的部分甚至全部。比如:KA=HK(Bcx‖Yda),KB=HK(Xcb‖Ady),d=H(c‖Bcx)。(协议-1、协议-2与协议-3采用的会话密钥生成算法相当于函数F是关于其全部或部分输入的乘法函数。)
(13).在所有协议中,为了提高计算效率,可令c=H(sid‖IA‖A‖IB‖B‖X‖pub),d=H(sid‖IB‖B‖IA‖A‖Y‖pub),e=H(c)或e=H(d),f=1。
(14).在所有的协议中,用户“A”在第一轮额外发送一个随机数rA,用户“B”在第二轮额外发送一个随机数rB,并将rA和rB作为哈西函数H与HK输入的一部分。这时,rA‖rB或rB‖rA起到会话标示符sid的作用。
(15).在所有的协议中,将部分或全部HMAC去掉,只用哈西函数进行绑定;或者,HMAC的输入只保留用户角色标示。但是,如果用户“A”和“B”使用相同的HMAC私钥时候(比如,协议-2中的C(a,x)与CKM,协议-3及协议-4中的Cx与Cb),或者HMAC的私钥同时也是会话密钥(比如协议-3)时,不可这样做。
(16).在所有具有MAC的协议实现中,为了提高计算效率,可仅仅将pub作为(以会话密钥作为私钥的)MAC的输入一部分,而不作为H,HK及KDF的输入。
(17).在所有的协议中,将部分或全部HMAC换成对称加密算法;
(18).在所有的协议中,用户的角色,即初始者或响应者,也可直接用0,1标示;
在协议的具体实施和应用中,用户可以根据对效率、安全、隐私保护、及抵抗拒绝服务攻击等的不同需求和优先级来选择相应的协议及变体。具体来讲,协议-1的会话密钥在线高效生成形式可提供几乎最优的在线计算效率。协议-1的会话密钥生成完整方式及变体(2)和(4),以及协议-4适合于提供更强的安全性;而变体(3)适合于满足用户对高效率及抵抗拒绝服务攻击的需求。协议-2主要满足用户对更高效率的要求。协议-3适合于保护用户隐私及抵抗拒绝服务攻击。变体(8)、(9)、(10)、(11)和(13)可一定程度上提高协议-3和协议-4的效率。
Claims (10)
1.一种在线计算高效、可抵赖、不可锻造安全的密钥交换协议,其特征在于:
系统工作环境为:
(1).系统参数:(p,q,g,H,HK,c,d,e,f,),其中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};H和HK是从{0,1}*→{0,1,2,…,q-1}的哈西函数;c,d,e,f为{0,1}*→{0,1,2,…, q-1}的函数;为增加计算速度,H,c,d,e,f的输出长度可以为l=(log2q+1)/2;对于字符串s1,…,sk,k>1,H(s1,s2,…,sk)表示的是:将s1,…,sk用二进制0-1串来表示,然后将所有的0-1串顺序连接串联起来,最后将串联后得到的0-1串作为H的输入;
(2).除非有特别说明,具有身份ID IA的用户“A”有一个公钥A=ga,其中a由用户“A”在Zq中随机选取;相应地,具有ID IB的用户“B”的公钥记为B=gb,以此类推;这里,Zq={0,1,2,Λ,q-1};
(3).协议基于Diffie-Hellman密钥交换协议;记X=gx为用户“A”的DH密钥成分,x为DH密钥成分X的离散对数;记Y=gy为用户“B”的DH密钥成分,y为DH密钥成分Y的离散对数;
(4).有一个可信的证书权威机构CA,颁发证书CERT,用于将用户的身份及其相应公钥进行可公开验证的绑定;绑定用CA的电子签名实现;绑定时CA验证公钥为Z* p中阶为q且非1的元素;用户“A”的证书记为CERTA;
(5).假定协议的每一次执行有一个标示号:sid;sid是一个字符串,用于标记并发运行的协议执行;sid的制定和协商可随协议的运行环境不同而有所变化;一般而言,sid包含在协议运行之前用户交换的信息或交换信息的哈西值;
(6).与协议执行相关的其它信息pub:除了sid,IAA=ga,IB,B=gb,X=gx,Y=gy外,其它与协议执行相关的信息用pub来表示; pub是一个字符串,是用户的IP地址、公钥证书、其它需要认证的信息、时间戳的串联;
协议实现方法为:用户“A”及“B”相互交换它们各自的DH密钥成分X=gx和Y=gy;假设用户“A”为协议的发起者,用户“B”为协议的响应者;即:用户“A”在第一轮发送x,在收到X后用户“B”在第二轮发送Y;
将协议每一次执行的所有相关信息,包括:sid,IA,A=ga,IB,B=gb,X=gx,Y=gy,以及其它与该次协议执行相关的信息pub,包含:用户的IP地址、公钥证书、其它需要认证的信息、时间戳,用哈西函数H和函数c,d,e,f进行承诺绑定;一般而言,先用哈西函数H进行绑定,然后将H的输出作为c,d,e,f输入的一部分;并且对于输出不是常数的函数c,d,e,f,其输入和输出可以相互嵌套和影响,从而提供更强的绑定;对于用户“A”和“B”的私钥a和b,以及它们DH密钥成分X和Y的离散对数x和y,利用哈西函数及c,d,e,f进行掩盖保护,从而提供相对于每一次协议执行的新鲜性和不可锻造安全性;
会话密钥计算方法:会话密钥K由如下值之一导出,其中KA为用户“A”计算的值,KB为用户“B”计算的值,KA等于KB:
(1).在线计算高效形式:KA=Bea+cxYda+fx,KB=Aeb+dyXcb+fy;其中,c=H(sid,IA,A,X,IB,B,pub),d=H(sid,IA,A,IB,B,Y,pub)或d=H(c,Y),e=1或e=H(sid,IA,A,IB,B,pub),f=H(c,d);当d=H(sid,IA,A,IB,B,Y,pub)及e=1时,此时c的输入不包含Y,d的输入不包含X,用户“A”事先离线计算X、c和Ba+cx,用户“B”事先离线计算Y、d和Ab+dy,从而提高在线计算的效率;
(2).可抵赖形式:KA=BcxYda+fx,KB=AdyXcb+fy;或KA=BcxYda,KB=AdyXcb;其中c=H(sid,IA,A,X,IB,B,pub)或c=H(sid,IA,A,X,IB,B,Y,pub);d=H(sid,IA,A,IB,B,Y,pub)或d=H(c,Y);f=H(c,d);在这种情况,函数e=0,会话密钥可仅仅由DH密钥成分的离散对数,即x和y,计算出,因此每一个用户均可以抵赖会话密钥的产生,从而更好地保护用户的隐私;当c=H(sid,IA,A,X,IB,B,pub)及d=H(sid,IA,A,IB,B,Y,pub)时,此时c的输入不包含Y,d的输入不包含X,用户“A”事先离线计算X、c和Bcx,用户“B”事先离线计算Y、d和Ady,从而在保持可抵赖性的基础上进一步提高在线计算的效率;
(3).完整形式:KA=Bea+cxYda+fx,KB=Aeb+dyXcb+fy;其中函数c,d,e,f的输入和输出相互嵌套和影响:c=H(sid,IA,ga,IB,gb,X,Y,pub),d=H(c),f=H(c,d),e=H(c,d,f);
(4).基本形式:KA=Ba+cxYda+x,KB=Ab+dyXcb+y,或KA=Bca+xYa+dx,KB=Acb+yXb+dy;其中c=H(sid,IA,A,X,IB,B,Y,pub),d=H(c);
(5).简单形式:KA=Bcx+da,KB=AdbXcb;对于这种情形,因为用户“A”计算KA时候可以不知道Y,Y不被包含在c, d以及H的输入中;函数c和d的设置有如下情况:c=H(sid,IA,A,X,IB,B,pub),d=H(c)或d=1;或者,d=H(sid,IA,A,X,IB,B,pub),c=H(d)或c=1;
(6).其他形式:KA=Bcx+eaYda,KB=Ady+ebXcb;其中e=1或e=H(sid,IA,A,IB,B,pub);c=H(sid,IA,A,X,IB,B,pub);d=H(sid,IA,A,IB,B,Y,pub);
会话密钥K是由HK和一个密钥导出函数KDF导出;其方法是将HK(KA,(sid,A,B,IA,IB,X,Y,c,d,e,f,pub))作为一个伪随机函数PRF的随机种子来导出;一个伪随机函数是一个二元函数PRFα(·):第一元α是一个随机数,称为PRF的随机种子;·是另外一元,可以是任意字符串的顺序连接;或者,会话密钥直接由哈西函数HK导出:K=HK(KA,c,d,e,f)=HK(KB,c,d,e,f);
身份及密钥确认方法:为了进一步相互确认身份及会话密钥,用户“B”和“A”用导出的会话密钥作为消息认证码MAC的私钥对协议公开信息,sid,IA,IB,A,X,Y,c,d以及用户角色标示,进行认证;具体来讲,协议响应者B在第二轮认证(sid,IB,IA,B,A,Y,X,d,c,pub),协议初始者A在另加的第三轮进行认证(sid,IA,IB,A,B,X,Y,c,d,pub);
用户角色,即协议初始者和响应者的标示方法:
(1).由c,d,e,f的顺序来标示;(c,d)标示协议初始者角色,(d,c)标示协议响应者角色;这种角色标示方法要求函数c,d的输出不为常数;
(2).由c与用户ID的顺序来标示;(c,IA)标示协议初始者;(IB,c)标示响应者;
基于发明协议会话密钥计算的不同形式,发明协议允许用户协商以满足用户对在线计算效率、可抵赖性、安全性、抵抗拒绝服务攻击,以及显式或隐式身份及密钥确认的不同需求以及优先级。
2.根据权利要求1所述的在线计算高效、可抵赖、不可锻造安全的密钥交换协议,其特征在于协议具有基于会话密钥计算简单形式的2-轮显式身份及密钥确认的实现方式,2-轮显式身份及密钥确认的协议实现方法为:
为了得到2-轮显式身份及密钥确认的密钥交换协议,基于会话密钥计算简单形式,有如下三种方法:
(1).在第一轮,用户“A”发送X,并利用由KA=Bcx+da以及协议公开信息导出的密钥作为消息认证码MAC的私钥对协议公开信息,sid,IA,IB,A,B,X,c,d以及用户角色标示,进行认证;用户“B”利用由KB=AdbXcb导出的私钥验证MAC的正确性;在第二轮,用户“B”发送Y,并利用由Xy和KB共同导出的MAC的私钥,HK(Xy,KB,sid,IA,IB,A,B,X,Y,c,d),对协议公开信息,sid,IB,IA,Y,X,d,c以及用户角色标示,进行认证;为了抵抗拒绝服务攻击,用户“B”再使用由KB=AdbXcb导出的MAC的私钥对第二轮发送的全部或部分信息进行二次MAC认证;最后,会话密钥最终由gxy导出;
(2).在第一轮,用户“A”发送X,并利用由KA=Bcx+da导出的密钥作为消息认证码MAC的私钥对协议公开信息,sid,IA,IB,X,c,d,进行认证;用户“B”利用由KB=AdbXcb导出的私钥验证MAC的正确性;在第二轮,用户“B”利用由KB导出的MAC的私钥对协议公开信息,sid,IB,IA,Y,X,d,c,进行认证;会话密钥由KA=KB导出;
(3).在第一轮,用户“A”发送X,并利用由KA=Bcx+da导出的密钥作为对称加密算法E的私钥加密一个随机数r;在第二轮,B利用由KB=AdbXcb导出的私钥解密出r,并利用r作为MAC的私钥对协议公开信息,sid,IB,IA,X,d,c,进行认证;会话密钥由r导出。
3.根据权利要求1所述的在线计算高效、可抵赖、不可锻造安全的密钥交换协议,其特征在于协议具有基于会话密钥计算可抵赖形式的3-轮显式身份及密钥确认且抵抗拒绝服务攻击的实现方式,3-轮可抵赖、抗拒绝服务攻击、且显式身份及密钥确认的协议实现方法为:
在第一轮用户“A”发送X=gx,计算c=H(sid,IA,ga,IB,gb,X,pub),并通过由Bcx导出的密钥作为MAC的私钥对(c,IA)进行认证;这里,(c,IA)标示协议初始者角色;
在第二轮,用户“B”首先利用Xcb验证第一轮MAC值的正确性;然后,“B”计算并发送Y=gy,计算d=H(c,Xcb,Y),并利用由(Ady,Xcb)共同导出的会话密钥K对(IB,c)进行认证;这里,(IB,c)标示协议响应者角色;最后,“B”再用由Xcb导出的MAC的私钥对第二轮发送的信息进行二次认证;
在第三轮,用户“A”首先通过Bcx验证第二轮信息的二次认证MAC值的有效性;然后,用户“A”利用由(Bcx,Yda)共同导出的会话密钥K作为MAC的私钥对(c,IA)进行认证。
4.根据权利要求1所述的在线计算高效、可抵赖、不可锻造安全的密钥交换协议,其特征在于协议具有基于会话密钥计算完整形式的4-轮抗内部状态泄漏、拒绝服务攻击且显式密钥及身份确认的实现方式,4-轮抗内部状态泄漏和拒绝服务攻击、且显式密钥及身份确认的协议实现方法为:
在第一轮,用户“A”发送X=gx,计算c=H(sid,IA,ga,IB,gb,X,pub),并通过由Bcx导出的密钥K1作为MAC的私钥对(c,IA)进行认证;这里,(c,IA)标示协议初始者角色;
在第二轮,用户“B”首先由Xcb计算出K1来验证第一轮MAC值的正确性;然后,“B”计算并发送Y=gy,计算f=H(c,Y),并利用由(Xcb,Xfy)共同导出的密钥K2对(IB,c)进行MAC认证;这里,(IB,c)标示协议响应者角色;最后,“B”再用K1对第二轮发送的信息进行二次认证;
在第三轮,用户“A”首先通过使用K1验证第二轮信息的二次认证MAC值的有效性;然后,用户“A”计算d=H(c,f,K1),e=H(c,d,f,K1,K2),由Bea+cxYda+fx导出会话密钥K,并用K作为MAC的私钥对(c,IA)进行认证;
在第四轮,用户“B”计算d=H(c,f,K1),e=H(c,d,f,K1,K2),Aeb+dy,由Aeb+dyXcb+fy导出会话密钥K并验证第三轮MAC值的正确性;然后,用户“B”再用会话密钥K对(IB,c)进行MAC认证。
5.根据权利要求1所述的在线计算高效、可抵赖、不可锻造安全的密钥交换协议,其特征在于协议的实现步骤为:
在下述协议描述中,大括号内的值表示发送的信息;用户“A”的公钥是A=ga并具有CA颁发的证书CERTA,用户“B”的公钥是B=gb并具有CA颁发的证书CERTB;假设用户“A”为协议运行初始者,用户“B”为协议运行响应者;协议的输出,即会话密钥K,由一个密钥导出函数KDF来定义K=KDF(KA,·)=KDF(KB,·),·表示二元函数KDF中的一个变元;密钥导出函数KDF可随应用的不同而不同;
协议-1:2-轮隐式身份及密钥确认的协议实现步骤:
第一轮,从“A”到“B”:{sid,IA,A,CERTA,X=gx(mod p)},其中x从Zq中随机选取;X称为“A”的DH密钥成分;收到“A”发送的信息后,“B”验证“A”的身份、公钥及证书,X为非1且阶为q的Z* p中的元素;验证不成功,“B”拒绝继续执行协议,否则,进入下一轮;
第二轮,从“B”到“A”:{sid,IB,B,CERTB,Y=gy};y从Zq中随机选取且Y称为“B”的DH成分;收到“B”发送的信息后,“A”验证“B”的身份、公钥及证书,Y为非1且阶为q的Z* p中的元素;验证不成功,“A”终止协议;
会话密钥计算的在线计算高效形式:用户“A”和“B”计算:c=H(sid,IA,A,X,IB,B,pub),d=H(sid,IA,A,IB,B,Y,pub),f=H(c,d);其中pub包含与协议运行相关的其它公开信息;用户“A”事先离线计算X、c和Ba+cx,用户“B”事先离线计算Y、d和Ab+dy,从而提高在线计算的效率;最后,用户“A”计算KA=Ba+cxYda+fx,并利用密钥导出函数KDF计算出会话密钥:K=KDF(KA,(sid,IA,ga,IB,gb,X,Y,c,d,pub));用户“B”计算KB=Ab+dyXcb+fy,K=KDF(KB,(sid,IA,ga,IB,gb,X,Y,c,d,pub));对于α=KA,β=(sid,IA,ga,IB,gb,X,Y,c,d,pub), 其中,PRF是一个伪随机函数;这里,HK(KA,(sid,IA,ga,IB,gb,X,Y,c,d,pub))表示的是HK(KA‖sid‖IA‖ga‖IB‖gb‖X‖Y‖c‖d‖pub),PRFHK(α,β)(c,pub)表示的是PRFHK(α,β)(c‖pub),“‖”表示的是字符串的顺序连接;
会话密钥计算的可抵赖形式:在会话密钥计算的可抵赖形式中,KA与KB如下计算:KA=BcxYda+fx,KB=AdyXcb+fy;其中c=H(sid,IA,A,X,IB,B,pub),d=H(sid,IA,A,IB,B,Y,pub),f=H(c,J);用户“A”事先离线计算X、c和Bcx,用户“B”事先离线计算Y、D和Ady;
会话密钥计算的完整形式:在会话密钥计算的完整形式中,KA与KB如下计算:KA=Bea+cxYda+fx,KB=Aeb+dyXcb+fy;其中c=H(sid,IA,ga,IB,gb,X,Y,pub),d=H(c),f=H(c,J),E=H(c,d,f)。
6.根据权利要求2所述的在线计算高效、可抵赖、不可锻造安全的密钥交换协议,其特征在于所述协议-2:2-轮显式身份及密钥确认的协议实现步骤如下:
第一轮,从“A”到“B”: 其中A=ga,B=gb,x从Zq中随机选取,c=H(sid,IA,ga,IB,gb,X,pub),d=H(c);MAC私钥KM的计算如下:KA=Bcx+da,KM=KDF(KA,(sid,IA,ga,IB,gb,X,Y,c,d,pub)):收到“A”发送的信息后,“B”验证“A”的身份、公钥及证书,X为非1且阶为q的Z* p中的元素;计算KB=XCbAdb和KM并验证 的正确性;验证不成功,“B”拒绝继续执行协议,否则,进入下一轮;
第二轮,从“B”到“A”: 其中y从Zq中随机选取;收到“B”发送的信息后,“A”验证“B”的身份、公钥及证书,Y为非1且阶g的Z* p中的元素,并利用x、KA,和KM验证 且 验证不成功,“A”终止协议;
会话密钥计算:用户“A”和“B”计算会话密钥:K=KDF(gxy,(sid,IA,ga,IB,gb,X,Y,c,d,pub))。
7.根据权利要求3所述的在线计算高效、可抵赖、不可锻造安全的密钥交换协议,其特征在于协议-3:3-轮显式身份及密钥确认且抵抗拒绝服务攻击的协议实现步骤如下:
第一轮,从“A”到“B”: 其中A=ga,B=gb,x从Zq中随机选取;MAC私钥K1的计算如下:c=H(sid,IA,ga,IB,gb,X,pub),K1=Hk(sid,IA,ga,IB,gb,X,Bcx,c,pub):
收到用户“A”发送的信息后,用户“B”依次计算c,K1=HK(sid,IA,ga,IB,gb,X,Xcb,c,pub),验证Cx的正确性;如果验证通过,“B”继续验证“A”的身份、公钥及证书,X为非1且阶为g的Z* p中的元素;任何验证不成功,“B”拒绝继续执行协议;否则,进入下一轮;
第二轮,从“B”到“A”: 其中y从Zq中随机选取;令d=H(c,K1,Y),会话密钥K由HK(sid,IA,IB,A,B,X,Y,c,d,Aay)导出:
收到“B”发送的信息后,“A”首先利用K1验证Cb的正确性;然后,验证“B”的身份、公钥及证书,Y为非1且阶q的Z* p中的元素,由HK(sid,IA,IB,A,b,X,y,c,d,yda)导出会话密钥K并验证C(b,y)的正确性;任何验证不成功,“A”终止协议;否则,进入下一轮;
第三轮,从“A”到“B”:{sid,CA=MACK(sid,c,IA)};收到“A”发送的信息后,“B”验证Ca的正确性;验证不成功,“B”终止协议。
8.根据权利要求4所述的在线计算高效、可抵赖、不可锻造安全的密钥交换协议,其特征在于协议-4:4-轮抗内部状态泄漏、拒绝服务攻击且显式密钥及身份确认的协议实现步骤如下:
第一轮,从“A”到“B”: 其中A=ga,B=gb,x从Zq中随机选取;MAC私钥K1的计算如下:c=H(sid,IA,ga,IB,gb,X,pub),K1=Hk(sid,IA,ga,IB,gb,X,Bcx,c,pub);
收到用户“A”发送的信息后,用户“B”依次计算c,K1=HK(sid,IA,ga,IB,gb,X,Xcb,c,pub),验证Cx的正确性;如果验证通过,“B”继续验证“A”的身份、公钥及证书,X为非1且阶为q的Z* p中的元素;任何验证不成功,“B”拒绝继续执行协议;否则,进入下一轮;
第二轮,从“B”到“A”: 其中y从Zq中随机选取;令f=H(c,Y),MAC私钥K2=HK(sid,IB,IA,B,A,Y,X,XCb,Xfy,f,c,pub);
收到“B”发送的信息后,“A”首先利用k1验证Cb的正确性;然后,验证“B”的身份、公钥及证书,Y为非1且阶q的Z* p中的元素;计算f=H(c,Y),d=H(c,f,K1),Yfx,Yda及K2=HK(sid,IB,IA,B,A,Y,X,Bcx,Yfx,f,c,pub)并验证C(X,b,y)的正确性;任何验证不成功,“A”终止协议;否则,计算e=H(c,d,f,K1,K2)及会话密钥K=KDF(Bea+cxYda+fx,(sid,IA,ga,IB,gb,X,Y,c,d,e,f,pub)),并进入下一轮;
第三轮,从“A”到“B”:{sid,C(K,a,x)=MACK(sid,c,IA)};收到“A”发送的信息后,“B”计算d=H(c,f,K1),e=H(c,d,f,K1,K2),Aeb+dy,计算会话密钥K=KDF(Aeb+dyXcb+fy,(sid,IA,ga,IB,gb,X,Y,c,d,e,f,pub))并验证C(K,a,x)的正确性;验证不成功,“B”终止协议;否则,进入下一轮;
第四轮,从“B”到“A”:{sid,C(K,b,y)=MACK(sid,c,IA)};收到“B”发送的信息后,“A”利用会话密钥K验证C(K,b,y)的正确性;验证不成功,“B”终止协议;
9.根据权利要求1-8之一所述的在线计算高效、可抵赖、不可锻造安全的密钥交换协议,其特征在于包含如下子协议:
协议-5:基于离散对数的不可锻造安全的2-轮零知识身份验证协议:设公共输入为(p,q,g,A=ga),其中a从Zq随机选取的;A=ga为用户“A”的公钥,用户“A”向用户“B”证明其知道私钥a;
第一轮,从“B”到“A”:{sid,IB,Y=gy,Cy};其中,y从Zq中随机选取;令c=H(sid,IB,IA,Y,A,pub),Cy有如下计算方法:
(1). ;或者
(2).Cy=HK(sid,IB,IA,Y,A,Acy,c,pub);或者
(3).Cy=Acy;
第二轮,从“A”到“B”:用户“A”检查Y为非1阶q的Z* p中的元素,利用Yca检查Cy的正确性;发送{sid,IA,A,Ca};令d=H(sid,IA,IB,A,Y,c,pub),Ca有如下计算方法:
(1). ;或者
(2). ;或者
(3).Ca=HK(sid,IA,IB,A,Y,Yda,d,c,pub);或者
(4).Ca=Yda;
收到“A”发送的第二轮信息后,“B”检查“A”的身份、公钥及证书,并利用Acy或者Ady检查Ca的有效性;检查通过,则接受;否则,拒绝。
10.根据权利要求1-8之一所述的在线计算高效、可抵赖、不可锻造安全的密钥交换协议,其特征在于具有如下的变体:
(1).协议-1中KA及KB的生成方式有权利要求1中所描述的6种会话密钥的生成方式;
(2).对于协议-1会话密钥计算的完整形式,将KA=Bea+cxYda+fx换成KA=HK(Bea+cx,Yda+fx);将KB=Ady+ebXcb+fy换成KB=HK(XcbAeb,XfyAdy);其中,c=H(sid,IA,ga,IB,gb,X,Y,pub),e=H(c),d=H(c,e,Bcx+ea)=H(c,e,XcbAeb),f=(c,d,e);
(3).对于协议-1会话密钥计算的完整形式、在线计算高效形式及协议-4,为了提高效率或防范拒绝服务攻击,用户“A”在1天至1周内,重复使用相同的DH密钥成分X;同样,用户“B”在1天至1周内,重复使用相同的DH密钥成分Y;X和Y需定期进行更新,即:定期随机生成新的DH密钥成分;
(4).协议-2中的会话密钥有权利要求2中所描述的3种关于会话密钥的生成方式,即会话密钥直接由KA=Bcx+da=XcbAdb=KB导出,或者将KA=Bcx+da=XcbAdb=KB作为对称加密算法的密钥加密一个随机串r并由r导出会话密钥,或者r直接作为会话密钥;
(5).在协议-2中,将C(b,y)替换成MACKM(sid,IB,IA,B,A,Y,X,H(KB,Xy),d,c,pub);
(6).将协议-3中的K1换成K1=HK(Bcx+ea)=HK(XcbAeb),将会话密钥K换为K=HK(Bea+cxYda+fx)=HK(Aeb+dyXcb+fy);其中,c=H(sid,IA,ga,IB,gb,X,pub),e=H(c),d=H(c,e,Bcx+ea)=H(c,e,XcbAeb),f=H(c,d,e);
(7).协议-3有如下变体:将第二轮的MAC密钥K换为HK(Xcb,Xy),将第三轮的MAC密钥K换为HK(Ya,Yx),会话密钥由gxy导出;
(8).协议-4中,K2换为K2=HK(K1,Xfy)=HK(K1,Yfx)或者K2=HK(XcbXfy)=HK(BcxYfx);
(9).协议-4有如下变体:将Y作为用户“B”的定期更换的短期公钥;或者,用户“B”作为协议初始者先发送Y,然后用户“A”再发送X;此时,MAC密钥K1换为K1=HK(sid,IA,ga,IB,gb,X,Ycx,c,pub);
(10).当不需考虑抵抗拒绝服务攻击时,协议-3和协议-4中的Cb省去;
(11).会话密钥扩展方法:对于不同的函数F,KA=F(Bcx,Yda,Bea,Yfx),KB=F(Xcb,Ady,Aeb,Xfy);此时,c,d,e,f的输入包含F输入的部分甚至全部:KA=HK(Bcx,Yda),KB=HK(Xcb,Ady),d=H(c,Bcx);
(12).在所有协议中,令c=H(sid,IA,A,IB,B,X,pub),d=H(sid,IB,B,IA,A,Y,pub),e=H(c)或e=H(d),f=1;
(13).在所有的协议中,用户“A”在第一轮额外发送一个随机数rA,用户“B”在第二轮额外发送一个随机数rB,并将rA和rB作为哈西函数H与HK输入的一部分;这时,(rA,rB)起到sid的作用;
(14).在所有的协议中,将部分或全部MAC去掉,只用哈西函数进行绑定;或者,MAC的输入只保留用户角色标示;用户“A”和“B”使用相同的MAC私钥时候,或者MAC的私钥同时也是会话密钥时候,除外;
(15).在所有具有MAC的协议中,仅仅将pub作为以会话密钥作为私钥的MAC的输入的一部分,而不作为H,HK及KDF的输入;
(16).在所有的协议中,将部分或全部MAC换成对称加密算法;
(17).在所有的协议中,用户的角色,即初始者和响应者,直接用0和1标示。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100473448A CN101175076B (zh) | 2007-10-23 | 2007-10-23 | 在线计算高效、可抵赖、不可锻造安全的密钥交换方法 |
CN2008801222327A CN102017510B (zh) | 2007-10-23 | 2008-10-23 | 自封闭联合知识证明和Diffie-Hellman密钥交换方法与结构 |
PCT/CN2008/072794 WO2009056048A1 (en) | 2007-10-23 | 2008-10-23 | Method and structure for self-sealed joint proof-of-knowledge and diffie-hellman key-exchange protocols |
US12/766,431 US8464060B2 (en) | 2007-10-23 | 2010-04-23 | Method and structure for self-sealed joint proof-of-knowledge and diffie-hellman key-exchange protocols |
HK11110843.5A HK1156750A1 (en) | 2007-10-23 | 2011-10-12 | Method and structure for self-sealed joint proof-of-knowledge and diffie- hellman key-exchange protocols |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100473448A CN101175076B (zh) | 2007-10-23 | 2007-10-23 | 在线计算高效、可抵赖、不可锻造安全的密钥交换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101175076A true CN101175076A (zh) | 2008-05-07 |
CN101175076B CN101175076B (zh) | 2012-01-11 |
Family
ID=39423334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100473448A Expired - Fee Related CN101175076B (zh) | 2007-10-23 | 2007-10-23 | 在线计算高效、可抵赖、不可锻造安全的密钥交换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101175076B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009056048A1 (en) * | 2007-10-23 | 2009-05-07 | Yao Andrew C | Method and structure for self-sealed joint proof-of-knowledge and diffie-hellman key-exchange protocols |
CN101645870B (zh) * | 2008-08-07 | 2013-04-17 | 赵运磊 | 一类高效、公平的密钥交换方法 |
CN103259650A (zh) * | 2013-04-25 | 2013-08-21 | 河海大学 | 一种对诚实参与者公平的理性多秘密分享方法 |
CN104079408A (zh) * | 2014-05-30 | 2014-10-01 | 国家电网公司 | 一种工业控制系统中增强通信安全性的方法 |
CN104604181A (zh) * | 2012-06-28 | 2015-05-06 | 塞尔蒂卡姆公司 | 无线通信的密钥协定 |
CN105577370A (zh) * | 2016-02-29 | 2016-05-11 | 赵运磊 | 一种应用于客户-服务器环境的认证密钥协商方法 |
CN109245897A (zh) * | 2018-08-23 | 2019-01-18 | 北京邮电大学 | 一种基于非交互的零知识证明的节点认证方法和装置 |
CN111090842A (zh) * | 2019-12-23 | 2020-05-01 | 上海源庐加佳信息科技有限公司 | 一种基于零知识证明的供应链金融客户贷款信息保护方法 |
WO2021022406A1 (zh) * | 2019-08-02 | 2021-02-11 | 华为技术有限公司 | 一种身份验证方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7142674B2 (en) * | 2002-06-18 | 2006-11-28 | Intel Corporation | Method of confirming a secure key exchange |
US7747865B2 (en) * | 2005-02-10 | 2010-06-29 | International Business Machines Corporation | Method and structure for challenge-response signatures and high-performance secure Diffie-Hellman protocols |
DE502005005713D1 (de) * | 2005-12-01 | 2008-11-27 | Bravis Gmbh | Verfahren zum Ändern eines Gruppenschlüssels in einer Gruppe von Netzelementen in einem Netz |
-
2007
- 2007-10-23 CN CN2007100473448A patent/CN101175076B/zh not_active Expired - Fee Related
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8464060B2 (en) | 2007-10-23 | 2013-06-11 | Andrew C. Yao | Method and structure for self-sealed joint proof-of-knowledge and diffie-hellman key-exchange protocols |
WO2009056048A1 (en) * | 2007-10-23 | 2009-05-07 | Yao Andrew C | Method and structure for self-sealed joint proof-of-knowledge and diffie-hellman key-exchange protocols |
CN101645870B (zh) * | 2008-08-07 | 2013-04-17 | 赵运磊 | 一类高效、公平的密钥交换方法 |
CN104604181B (zh) * | 2012-06-28 | 2018-04-27 | 塞尔蒂卡姆公司 | 无线通信的密钥协定 |
CN104604181A (zh) * | 2012-06-28 | 2015-05-06 | 塞尔蒂卡姆公司 | 无线通信的密钥协定 |
US10187202B2 (en) | 2012-06-28 | 2019-01-22 | Certicom Corp. | Key agreement for wireless communication |
US10057053B2 (en) | 2012-06-28 | 2018-08-21 | Certicom Corp. | Key agreement for wireless communication |
CN103259650A (zh) * | 2013-04-25 | 2013-08-21 | 河海大学 | 一种对诚实参与者公平的理性多秘密分享方法 |
CN103259650B (zh) * | 2013-04-25 | 2015-12-09 | 河海大学 | 一种对诚实参与者公平的理性多秘密分享方法 |
CN104079408A (zh) * | 2014-05-30 | 2014-10-01 | 国家电网公司 | 一种工业控制系统中增强通信安全性的方法 |
CN104079408B (zh) * | 2014-05-30 | 2018-01-19 | 国家电网公司 | 一种工业控制系统中增强通信安全性的方法 |
CN105577370A (zh) * | 2016-02-29 | 2016-05-11 | 赵运磊 | 一种应用于客户-服务器环境的认证密钥协商方法 |
CN109245897A (zh) * | 2018-08-23 | 2019-01-18 | 北京邮电大学 | 一种基于非交互的零知识证明的节点认证方法和装置 |
CN109245897B (zh) * | 2018-08-23 | 2020-06-19 | 北京邮电大学 | 一种基于非交互的零知识证明的节点认证方法和装置 |
WO2021022406A1 (zh) * | 2019-08-02 | 2021-02-11 | 华为技术有限公司 | 一种身份验证方法及装置 |
CN111090842A (zh) * | 2019-12-23 | 2020-05-01 | 上海源庐加佳信息科技有限公司 | 一种基于零知识证明的供应链金融客户贷款信息保护方法 |
CN111090842B (zh) * | 2019-12-23 | 2022-04-26 | 上海源庐加佳信息科技有限公司 | 一种基于零知识证明的供应链金融客户贷款信息保护方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101175076B (zh) | 2012-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101175076B (zh) | 在线计算高效、可抵赖、不可锻造安全的密钥交换方法 | |
US8464060B2 (en) | Method and structure for self-sealed joint proof-of-knowledge and diffie-hellman key-exchange protocols | |
CN104821880B (zh) | 一种无证书广义代理签密方法 | |
Ma et al. | Redactable blockchain in decentralized setting | |
CN103297241B (zh) | 一种一次性公钥匿名签密的构造方法 | |
CN101626364A (zh) | 一类可基于口令、抗秘密数据泄露的认证和密钥交换方法 | |
CN105959269A (zh) | 一种基于身份的可认证动态群组密钥协商方法 | |
CN106059747A (zh) | 基于公钥基础设施的可重用公钥证书方案 | |
CN104270249A (zh) | 一种从无证书环境到基于身份环境的签密方法 | |
CN104301108A (zh) | 一种从基于身份环境到无证书环境的签密方法 | |
Shim | Security models for certificateless signature schemes revisited | |
CN101977380A (zh) | 一种无线Mesh网络认证方法 | |
CN102970144A (zh) | 基于身份的认证方法 | |
CN101247394A (zh) | 一种改进的密钥交换协议 | |
CN101060530A (zh) | 可抵赖的互联网密钥交换协议 | |
CN103414559A (zh) | 一种云计算环境下的基于类ibe系统的身份认证方法 | |
Abouelkheir et al. | Pairing free identity based aggregate signcryption scheme | |
Luo et al. | A security communication model based on certificateless online/offline signcryption for Internet of Things | |
Damgård et al. | Stronger security and constructions of multi-designated verifier signatures | |
Hwang et al. | Confidential deniable authentication using promised signcryption | |
CN101702807B (zh) | 一种无线安全接入认证方法 | |
Shao | Certificate-based verifiably encrypted signatures from pairings | |
Belkaaloul et al. | Anonymous authentication protocol for efficient communications in vehicle to grid networks | |
CN101217549A (zh) | 高效、不可锻造、不需数字签名的ssh运输层认证协议 | |
CN101645870B (zh) | 一类高效、公平的密钥交换方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120111 Termination date: 20141023 |
|
EXPY | Termination of patent right or utility model |