CN101175076B - 在线计算高效、可抵赖、不可锻造安全的密钥交换方法 - Google Patents

在线计算高效、可抵赖、不可锻造安全的密钥交换方法 Download PDF

Info

Publication number
CN101175076B
CN101175076B CN2007100473448A CN200710047344A CN101175076B CN 101175076 B CN101175076 B CN 101175076B CN 2007100473448 A CN2007100473448 A CN 2007100473448A CN 200710047344 A CN200710047344 A CN 200710047344A CN 101175076 B CN101175076 B CN 101175076B
Authority
CN
China
Prior art keywords
key
sid
user
pub
mac
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.)
Expired - Fee Related
Application number
CN2007100473448A
Other languages
English (en)
Other versions
CN101175076A (zh
Inventor
赵运磊
姚期智
储枫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN2007100473448A priority Critical patent/CN101175076B/zh
Publication of CN101175076A publication Critical patent/CN101175076A/zh
Priority to PCT/CN2008/072794 priority patent/WO2009056048A1/en
Priority to CN2008801222327A priority patent/CN102017510B/zh
Priority to US12/766,431 priority patent/US8464060B2/en
Priority to HK11110843.5A priority patent/HK1156750A1/xx
Application granted granted Critical
Publication of CN101175076B publication Critical patent/CN101175076B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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),其中HK是一个哈希函数。其中在MQV中d=2l+(X mod 2l),c=2l+(Y mod 2l),l等于x或y长度的一半。在HMQV中d=H(X,IB),c=H(Y,IA),其中H是一个哈希函数。
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).本发明方法(比如方法实现-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可以满足更高的安全需求(并兼顾一定程度的隐私保护)。
本发明协议的系统参数和工作环境为:
(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的输出长度可以为对于字符串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,以此类推;这里,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,用于将用户的身份及其相应公钥,比如:(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+fy,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+fy,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,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-轮可抵赖、抗拒绝服务攻击、且显式身份及密钥确认的实施方法:
在第一轮用户“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), KDF ( α , β ) = PRF H K ( α , β ) ( c , 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),
Figure GA20191601200710047344801D00082
表示的是
Figure GA20191601200710047344801D00083
“‖”表示的是字符串的顺序连接。
会话密钥计算的可抵赖形式(推荐用于更好地隐私保护):在会话密钥计算的可抵赖形式中,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”:{sid,IA,A,CERTA,X=gx C ( a , x ) = MAC K M ( sid , I A , I B , A , B , X , c , d , pub ) },其中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并验证 C ( a , x ) = MAC K M ( sid , I A , I B , A , B , X , c , d , pub ) 的正确性。验证不成功,“B”拒绝继续运行,否则,进入下一轮。
第二轮,从“B”到“A”:{sid,IB,B,CERTB,Y=gy C ( b , y ) = MAC H K ( sid , I B , I A , B , A , Y , X , K B , X y , d , c , pub ) ( sid , I B , I A , B , A , Y , X , d , c ) , C K M = MAC K M ( sid , I B , Y , C ( b , y ) ) },其中y从Zq中随机选取。
收到“B”发送的信息后,“A”验证“B”的身份、公钥及证书,Y为非1且阶q的Z* p中的元素,并利用x、KA,和KM验证 C K M = MAC K M ( sid , I B , Y , C ( b , y ) ) C ( b , y ) = MAC H K ( sid , I B , I A , B , A , Y , X , K A , Y x , d , c , pub ) ( sid , I B , I A , B , A , Y , X , d , c ) . 验证不成功,“A”终止运行。
会话密钥计算:用户“A”和“B”计算会话密钥:K=KDF(gxy,(sid,IA,ga,IB,gb,X,Y,c,d,pub))。
方法实现-3:3-轮抗拒绝服务攻击、且显式密钥及身份确认的方法实现步骤:
第一轮,从“A”到“B”:{sid,IA,A,CERTA,X=gx C x = MAC K 1 ( sid , c , I A , X ) },其中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”发送完第一轮信息后,将x删除,但保留K1和c。
收到用户“A”发送的信息后,用户“B”依次计算c,K1=HK(sid,IA,ga,IB,gb,X,Xcb,c,pub),验证Cx的正确性。如果验证通过,“B”继续验证“A”的身份、公钥及证书,X为非1且阶为q的Z* q中的元素。任何验证不成功,“B”拒绝继续运行。否则,进入下一轮。
第二轮,从“B”到“A”:{sid,IB,B,CERTB,Y=gy,C(b,y)=MACK(sid,IB,c), C b = MAC K 1 ( sid , I B , B , Y , C ( b , y ) ) },其中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”:{sid,IA,A,CERTA,X=gx C x = MAC K 1 ( sid , c , I A , X ) },其中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”:{sid,IB,B,CERTB,Y=gy,C(X,b,y)=MACK2(sid,IB,c), C b = MAC K 1 ( sid , I B , B , Y , C ( X , b , y ) ) },其中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))。将所有的内部状态(包括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). C y = MAC H K ( sid , I B , I A , Y , A , A cy , c , pub ) ( c , I B , pub ) .
(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). C a = MAC H K ( sid , I B , I A , Y , A , Y ca , c , pub ) ( d , c , pub ) .
(2). C a = MAC H K ( sid , I A , I B , A , Y , Y da , d , c , pub ) ( I A , c , pub ) .
(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=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密钥成分;注意,公钥证书颁发机构CA并不需要对DH密钥成分X和Y进行认证。这导致一个非交互的、更高效、且适合抵抗拒绝服务攻击的密钥交换协议的变体。但是安全性可能会降低。
(4).方法实现-2中的会话密钥有权利要求2中所描述的3种关于会话密钥的生成方式;具体来讲,会话密钥可以直接由KA=Bcx+da=XcbAdb=KB导出,或者将KA=Bcx+da=XcbAdb=KB作为对称加密算法的密钥加密一个随机串r并由r导出会话密钥,或者r直接作为会话密钥。
(5).在方法实现-2中,将C(b,y)替换成 MAC K M ( sid , I B , I A , B , A , Y , X , H ( K B , X y ) , 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,Xcb Aeb),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)协议-3中的Cx与Cb),或者MAC的私钥同时也是会话密钥(比如协议-3)时,不可这样做。
(15).在所有具有MAC的方法实施中,仅仅将pub作为以会话密钥作为私钥的MAC的输入的一部分,而不作为H,HK及KDF的输入。
(16).在所有方法及方法实施中,将部分或全部MAC换成对称加密算法。
(17).在所有方法及方法实施中,用户的角色,即初始者和响应者,直接用0和1标示。
具体实施方式
假设,具有身份IA的用户“A”的公钥是A=ga并具有证书CERTA,具有身份IB的用户“B”的公钥是B=gb并具有证书CERTB。证书CERTA指的是CA对A的身份IA及其公钥A=ga的一个电子签名,其余同。我们假设A为方法运行初始者(initiator),B为方法运行响应者(responder)。方法运行的输出(即密钥)由一个密钥导出函数(key derivation functionKDF)来定义K=KDF(KA,·)=KDF(KB,·)。KDF是一个二元函数,KA或KB作为一元,另一元包含与发明方法运行相关的公开信息并可随应用的不同而不同。KDF可随应用的不同而不同。常用的例子为,KDF为一个伪随机函数(pseudorandom function PRF)。比如,对于α=KA,β=(sid,IA,ga,IB,gb,X,Y,c,d,pub), KDF ( α , β ) = PRF H K ( α , β ) ( c , pub ) = PRF H K ( α , β ) ( c , 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哈西函数来实现。在下述发明方法具体实施中,密钥导出函数为: KDF ( α , β ) = PRF H K ( α , β ) ( c , pub ) = HMAC H K ( α , β ) ( c , pub ) , 其中α=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计算出会话密钥: K = HMAC H K ( K A | | I A | | g a | | I B | | g b | | X | | Y | | c | | d | | pub ) ( c | | pub ) . 用户“B”计算KB=Ab+dy mod q Xcb+fy mod q mod p, K = HMAC H K ( K B | | I A | | g a | | I B | | g b | | X | | Y | | c | | d | | pub ) ( c | | pub ) .
会话密钥计算的可抵赖形式:在会话密钥计算的可抵赖形式中,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,IB,B,CertB},其中,rB是一个32位随机0-1串。“A”验证rB的有效性(即:rB是一个32位0-1串),验证用户“B”的身份、公钥及证书。任何验证失败,用户“A”终止方法运行。否则,进入下一轮。
第二轮,从“A”到“B”:{rA,IA,A,CERTA,X=gx C ( a , x ) = HMAC K M ( r B | | r A | | I A | | I B | | A | | B | | X | | c | | d | | pub ) },其中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, K M = HMAC H K ( K A | | r B | | r A | | I A | | g a | | I B | | g b | | X | | Y | | c | | d | | pub ) ( c | | pub ) . 收到“A”发送的信息后,“B”验证rA的有效性(即:rA是一个32位0-1串),验证“A”的身份、公钥及证书,X为非1且阶为q的Z* p中的元素;计算KB=Xcb mod q Adb mod q mod p和 K M = HMAC H K ( K B | | r B | | r A | | I A | | g a | | I B | | g b | | X | | Y | | c | | d | | pub ) ( c | | pub ) 并验证 C ( a , x ) = HMAC K M ( r B | | r A | | I A | | I B | | A | | B | | X | | c | | d | | pub ) 的正确性。验证不成功,“B”拒绝继续运行方法,否则,进入下一轮。
第三轮,从“B”到“A”:{Y=gy C K M = HMAC K M ( r B | | r A | | I B | | Y | | C ( b , y ) ) , C ( b , y ) = HMAC H K ( r B | | r A | | I B | | I A | | B | | A | | Y | | X | | K B | | X y | | d | | c | | pub ) ( r B | | r A | | I B | | I A | | B | | A | | Y | | X | | d | | c ) },其中y从Zq中随机选取。收到“B”发送的信息后,“A”验证Y为非1且阶q的Z* p中的元素,并利用x、KA,和KM验证 C K M = HMAC K M ( r B | | r A | | I B | | Y | | C ( b , y ) ) C ( b , y ) = HMAC H K ( r B | | r A | | I B | | I A | | B | | A | | Y | | X | | K A | | Y x | | d | | c | | pub ) ( r B | | r A | | I B | | I A | | B | | A | | Y | | X | | d | | c ) . 验证不成功,“A”终止方法运行。
会话密钥计算:用户“A”和“B”计算会话密钥: K = HMAC H K ( g xy | | r B | | r A | | I A | | g a | | I B | | g b | | X | | Y | | c | | d | | pub ) ( c | | pub ) .
方法实现-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,IA,A,CERTA,X=gx C x = HMAC K 1 ( r B | | r A | | c | | I A | | X ) },其中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”:{rB‖rA,Y=gy,C(b,y)=HMACK(rB‖rA‖IB‖c), C b = HMAC K 1 ( r B | | r A | | I B | | B | | Y | | C ( b , y ) ) },其中y从Zq中随机选取。令d=H(c‖K1‖Y),会话密钥 K = HMAC H K ( r B | | r A | | I A | | I B | | g a | | g b | | X | | Y | | c | | d | | | A dy | pub ) ( c | | pub ) . 发送完第二轮信息后,用户“B”将c,d,y,Xcb,Ady,K1删除,仅保留会话密钥K。
收到“B”发送的信息后,“A”首先利用K1验证Cb的正确性;然后,验证Y为非1且阶q的Z* p中的元素,计算 K = HMAC H K ( r B | | r A | | I A | | I B | | g a | | g b | | X | | Y | | c | | d | | | Y da | pub ) ( c | | pub ) 并验证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-1串),验证用户“B”的身份、公钥及证书。任何验证失败,用户“A”终止方法运行;否则,进入下一轮。
第二轮,从“A”到“B”:{rA,IA,A,CERTA,X=gx C x = HMAC K 1 ( r B | | r A | | c | | I A | | X ) },其中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”:{rB‖rA,Y=gy,C(X,b,y)=HMACK2(rB‖rA‖IB‖c), C b = HMAC K 1 ( r B | | r A | | I B | | B | | Y | | C ( X , b , y ) ) },其中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、并计算会话密钥 K = HMAC H K ( A eb + dy X cb + fy ) ( r B | | r A | | c | | d | | e | | f ) ; 用户“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),d=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)、 K = HMAC H K ( B ea + cx Y da + fx ) ( r B | | r A | | c | | d | | e | | f ) . 用户“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可以用作可抵赖的信息认证(deniableauthentication)协议。具体来讲,将需要认证的信息或文件作为pub的一部分。
设公共输入为(p,q,g,A=ga),其中a从Zq随机选取的;A=ga为用户“A”的公钥,用户B可以没有公钥及证书。用户“A”向用户“B”证明其知道私钥a。当方法实现-5用于可抵赖信息认证时,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). C y = HMAC H K ( r A | | r B | | I B | | I A | | Y | | A | | A cy | | c | | pub ) ( c | | I B | | pub ) .
(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). C y = HMAC H K ( r A | | r B | | I B | | I A | | Y | | A | | Y ca | | c | | pub ) ( d | | c | | pub ) .
(2). C a = MAC H K ( r A | | r B | | I A | | I B | | A | | Y | | Y da | | d | | c | | pub ) ( I A | | c | | pub ) .
(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,B,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)可以替换成
HMAC K M ( r B | | r A | | I B | | I A | | B | | A | | Y | | X | | H ( K B | | X y ) | | 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)
Figure GA20191601200710047344801D00201
,方法实现-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 (13)

1.一种在线计算高效、可抵赖、不可锻造安全的密钥交换方法,其特征在于:
发明方法的参数和工作环境为:
(1).系统参数:(p,q,g,H,HK,c,d,e,f,MAC),其中p和q为大素数,并且q能整除p-1,g是一个Z* p中阶为q的元素,使得在Z* p中由g定义的子群上离散对数DL及计算Diffie-Hellman CDH问题是难的;MAC是一个消息认证码算法;所有的指数运算及不在指数上的乘法运算是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的输出长度为对于字符串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,IA,A=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的随机种子;·是另外一元,是任意字符串的顺序连接;PRFα(c,pub)表示的是PRFα(c‖pub),其中“c||pub”表示的是字符串c与pub的顺序连接;
身份及密钥确认方法:为了进一步相互确认身份及会话密钥,用户“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);
用户角色,即发明方法运行的初始者和响应者的标示方法:
(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),
Figure FSB00000503226300051
其中,PRF是一个伪随机函数;这里,KH(KA,(sid,IA,ga,IB,gb,X,Y,c,d,pub))表示的是HK(KA‖sid‖IA‖ga‖IB‖gb‖X‖Y‖c‖d‖pub),
Figure FSB00000503226300052
表示的是“||”表示的是字符串的顺序连接;
会话密钥计算的可抵赖形式:在会话密钥计算的可抵赖形式中,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、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,d),e=H(c,d,f)。
6.根据权利要求2所述的在线计算高效、可抵赖、不可锻造安全的密钥交换方法,其特征在于所述2-轮显式身份及密钥确认的实施方式的实现步骤为:
方法实现-2:2-轮显式身份及密钥确认的方法实现步骤:
第一轮,从“A”到“B”:{sid,IA,A,CERTA,X=gx
Figure FSB00000503226300061
},其中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并验证
Figure FSB00000503226300062
的正确性;验证不成功,“B”拒绝继续运行,否则,进入下一轮;
第二轮,从“B”到“A”:{sid,IB,B,CERTB,Y=gy C ( b , y ) = MAC H k ( sid , I B , I A , B , A , Y , X , K B , X y , d , c , pub ) ( sid , I B , I A , B , A , Y , X , d , c ) , C K M = MA C K M ( sid , I B , Y , C ( b , y ) ) },其中y从Zq中随机选取;收到“B”发送的信息后,“A”验证“B”的身份、公钥及证书,Y为非1且阶q的Z* p中的元素,并利用x、KA,和KM验证
Figure FSB00000503226300065
Figure FSB00000503226300066
验证不成功,“A”终止运行;
会话密钥计算:用户“A”和“B”计算会话密钥:K=KDF(gxy,(sid,IA,ga,IB,gb,X,Y,c,d,pub))。
7.根据权利要求3所述的在线计算高效、可抵赖、不可锻造安全的密钥交换方法,其特征在于所述3-轮显式身份及密钥确认且抵抗拒绝服务攻击的实施方式的实现步骤为:
方法实现-3:3-轮显式身份及密钥确认且抵抗拒绝服务攻击的方法实现步骤:
第一轮,从“A”到“B”:{sid,IA,A,CERTA,X=gx
Figure FSB00000503226300067
},其中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”:{sid,IB,B,CERTB,Y=gy,C(b,y)=MACK(sid,IB,c),
Figure FSB00000503226300071
},其中y从Zq中随机选取;令d=H(c,K1,Y),会话密钥K由HK(sid,IA,IB,A,B,X,Y,c,d,Ady)导出;
收到“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:4-轮抗内部状态泄漏、拒绝服务攻击且显式密钥及身份确认的方法实现步骤:
第一轮,从“A”到“B”:{sid,IA,A,CERTA,X=gx
Figure FSB00000503226300072
},其中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”:{sid,IB,B,CERTB,Y=gy,C(X,b,y)=MACK2(sid,IB,c),
Figure FSB00000503226300074
},其中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.根据权利要求5、6、7、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).
Figure FSB00000503226300081
;或者
(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).
Figure FSB00000503226300083
或者
(3).Ca=HK(sid,IA,IB,A,Y,Yda,d,c,pub);或者
(4).Ca=Yda
收到“A”发送的第二轮信息后,“B”检查“A”的身份、公钥及证书,并利用Acy或者Ady检查Ca的有效性;检查通过,则接受;否则,拒绝。
10.根据权利要求5所述的在线计算高效、可抵赖、不可锻造安全的密钥交换方法,其特征在于还有如下的变体:
(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,Bcxea)=H(c,e,XcbAeb),f=(c,d,e);
(3).对于方法实现-1会话密钥计算的完整形式、在线计算高效形式及方法实现-4,为了提高效率或防范拒绝服务攻击,用户“A”在1天至1周内,重复使用相同的DH密钥成分X;同样,用户“B”在1天至1周内,重复使用相同的DH密钥成分Y;X和Y需定期进行更新,即:定期随机生成新的DH密钥成分。
11.根据权利要求6所述的在线计算高效、可抵赖、不可锻造安全的密钥交换方法,其特征在于还有如下的变体:
(1).方法实现-2中的会话密钥有权利要求2中所描述的3种关于会话密钥的生成方式;具体来讲,会话密钥直接由KA=Bcx+da=XcbAdb=KB导出,或者将KA=Bcx+da=XcbAdb=KB作为对称加密算法的密钥加密一个随机串r并由r导出会话密钥,或者r直接作为会话密钥;
(2).在方法实现-2中,将C(b,y)替换成
Figure FSB00000503226300091
12.根据权利要求7所述的在线计算高效、可抵赖、不可锻造安全的密钥交换方法,其特征在于还有如下的变体:
(1).将方法实现-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);
(2).方法实现-3有如下变体:将第二轮的MAC密钥K换为HK(Xcb,Xy),将第三轮的MAC密钥K换为HK(Ya,Yx),会话密钥由gxy导出。
13.根据权利要求8所述的在线计算高效、可抵赖、不可锻造安全的密钥交换方法,其特征在于还有如下的变体:
(1).方法实现-4中,K2换为K2=HK(K1,Xfy)=HK(K1,Yfx)或者K2=HK(XcbXfy)=HK(BcxYfx);
(2).方法实现-4有如下变体:将Y作为用户“B”的定期更换的短期公钥;或者,用户“B”作为协议初始者先发送Y,然后用户“A”再发送X;此时,MAC密钥K1换为K1=HK(sid,IA,ga,IB,gb,X,Ycx,c,pub)。
CN2007100473448A 2007-10-23 2007-10-23 在线计算高效、可抵赖、不可锻造安全的密钥交换方法 Expired - Fee Related CN101175076B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN2007100473448A CN101175076B (zh) 2007-10-23 2007-10-23 在线计算高效、可抵赖、不可锻造安全的密钥交换方法
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
CN2008801222327A CN102017510B (zh) 2007-10-23 2008-10-23 自封闭联合知识证明和Diffie-Hellman密钥交换方法与结构
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 CN101175076A (zh) 2008-05-07
CN101175076B true 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)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102017510B (zh) 2007-10-23 2013-06-12 赵运磊 自封闭联合知识证明和Diffie-Hellman密钥交换方法与结构
CN101645870B (zh) * 2008-08-07 2013-04-17 赵运磊 一类高效、公平的密钥交换方法
US8971851B2 (en) 2012-06-28 2015-03-03 Certicom Corp. Key agreement for wireless communication
CN103259650B (zh) * 2013-04-25 2015-12-09 河海大学 一种对诚实参与者公平的理性多秘密分享方法
CN104079408B (zh) * 2014-05-30 2018-01-19 国家电网公司 一种工业控制系统中增强通信安全性的方法
CN105577370A (zh) * 2016-02-29 2016-05-11 赵运磊 一种应用于客户-服务器环境的认证密钥协商方法
CN109245897B (zh) * 2018-08-23 2020-06-19 北京邮电大学 一种基于非交互的零知识证明的节点认证方法和装置
WO2021022406A1 (zh) * 2019-08-02 2021-02-11 华为技术有限公司 一种身份验证方法及装置
CN111090842B (zh) * 2019-12-23 2022-04-26 上海源庐加佳信息科技有限公司 一种基于零知识证明的供应链金融客户贷款信息保护方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1662867A (zh) * 2002-06-18 2005-08-31 英特尔公司 确认安全密钥交换的方法
WO2006084896A1 (en) * 2005-02-10 2006-08-17 International Business Machines Corporation Challenge-response signatures and secure diffie-hellman protocols
EP1793525A1 (de) * 2005-12-01 2007-06-06 Brandenburgische Technische Universität Cottbus Verfahren zum Ändern eines Gruppenschlüssels in einer Gruppe von Netzelementen in einem Netz

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1662867A (zh) * 2002-06-18 2005-08-31 英特尔公司 确认安全密钥交换的方法
WO2006084896A1 (en) * 2005-02-10 2006-08-17 International Business Machines Corporation Challenge-response signatures and secure diffie-hellman protocols
EP1793525A1 (de) * 2005-12-01 2007-06-06 Brandenburgische Technische Universität Cottbus Verfahren zum Ändern eines Gruppenschlüssels in einer Gruppe von Netzelementen in einem Netz

Also Published As

Publication number Publication date
CN101175076A (zh) 2008-05-07

Similar Documents

Publication Publication Date Title
CN101175076B (zh) 在线计算高效、可抵赖、不可锻造安全的密钥交换方法
EP3862956B1 (en) Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system
US8464060B2 (en) Method and structure for self-sealed joint proof-of-knowledge and diffie-hellman key-exchange protocols
JP5171991B2 (ja) 鍵合意および移送プロトコル
CN104821880B (zh) 一种无证书广义代理签密方法
CN104270249A (zh) 一种从无证书环境到基于身份环境的签密方法
CN101626364A (zh) 一类可基于口令、抗秘密数据泄露的认证和密钥交换方法
CN111277412B (zh) 基于区块链密钥分发的数据安全共享系统及方法
CN104301108A (zh) 一种从基于身份环境到无证书环境的签密方法
CN104079412B (zh) 基于智能电网身份安全的无可信pkg的门限代理签名方法
CN103444128B (zh) 密钥pv签名
CN103988466A (zh) 群加密方法及设备
CN102970144A (zh) 基于身份的认证方法
CN101977380A (zh) 一种无线Mesh网络认证方法
CN103414559A (zh) 一种云计算环境下的基于类ibe系统的身份认证方法
CN101247394A (zh) 一种改进的密钥交换协议
Abouelkheir et al. Pairing free identity based aggregate signcryption scheme
CN111447065A (zh) 一种主动安全的sm2数字签名两方生成方法
CN101282216A (zh) 带隐私保护的基于口令认证的三方密钥交换方法
Boneh et al. Threshold signatures with private accountability
Hwang et al. Confidential deniable authentication using promised signcryption
CN113132104A (zh) 一种主动安全的ecdsa数字签名两方生成方法
Shao Certificate-based verifiably encrypted signatures from pairings
CN101217549A (zh) 高效、不可锻造、不需数字签名的ssh运输层认证协议
Belkaaloul et al. Anonymous authentication protocol for efficient communications in vehicle to grid networks

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