发明名称 在线计算高效、可抵赖、不可锻造安全的密钥交换方法
摘要 本发明属于密码协议技术领域,具体为一种在线计算高效、可抵赖、不可锻造安全的密钥交换协议。协议实现环境和方法为:用户“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。本协议可满足用户对密钥交换的在线计算效率、可抵赖性、不可锻造安全性、抗拒绝服务攻击、抗内部状态泄漏、以及显式或隐式身份及密钥确认的不同需求和优先级。
申请公布号 CN101175076B 申请公布日期 2012.01.11
申请号 CN200710047344.8 申请日期 2007.10.23
申请人 赵运磊;姚期智;储枫 发明人 赵运磊;姚期智;储枫
分类号 H04L29/06(2006.01)I;H04L9/32(2006.01)I;H04L9/30(2006.01)I 主分类号 H04L29/06(2006.01)I
代理机构 上海正旦专利代理有限公司 31200 代理人 陆飞;盛志范
主权项 1.一种在线计算高效、可抵赖、不可锻造安全的密钥交换方法,其特征在于:发明方法的参数和工作环境为:(1).系统参数:(p,q,g,H,H<sub>K</sub>,c,d,e,f,MAC),其中p和q为大素数,并且q能整除p-1,g是一个Z<sup>*</sup><sub>p</sub>中阶为q的元素,使得在Z<sup>*</sup><sub>p</sub>中由g定义的子群上离散对数DL及计算Diffie-Hellman CDH问题是难的;MAC是一个消息认证码算法;所有的指数运算及不在指数上的乘法运算是mod p运算,加法及指数上的乘法为mod q运算;这里,Z<sup>*</sup><sub>p</sub>={1,2,…,p-1};H和H<sub>K</sub>是从{0,1}<sup>*</sup>→{0,1,2,…,q-1}的哈西函数;c,d,e,f为{0,1}<sup>*</sup>→{0,1,2,…,q-1}的函数;为增加计算速度,H,c,d,e,f的输出长度为<img file="FSB00000503226300011.GIF" wi="393" he="64" />对于字符串s<sub>1</sub>,…,s<sub>k</sub>,k>1,H(s<sub>1</sub>,s<sub>2</sub>,…,s<sub>k</sub>)表示的是:将s<sub>1</sub>,…,s<sub>k</sub>用二进制0-1串来表示,然后将所有的0-1串顺序连接串联起来,最后将串联后得到的0-1串作为H的输入;(2).除非有特别说明,具有身份ID I<sub>A</sub>的用户“A”有一个公钥A=g<sup>a</sup>,其中a由用户“A”在Z<sub>q</sub>中随机选取;相应地,具有ID I<sub>B</sub>的用户“B”的公钥记为B=g<sup>b</sup>,以此类推;这里,Z<sub>q</sub>={0,1,2,…,q-1};(3).发明方法基于Diffie-Hellman密钥交换协议;记X=g<sup>x</sup>为用户“A”的DH密钥成分,x为DH密钥成分X的离散对数;记Y=g<sup>y</sup>为用户“B”的DH密钥成分,y为DH密钥成分Y的离散对数;(4).有一个可信的证书权威机构CA,颁发证书CERT,用于将用户的身份及其相应公钥进行可公开验证的绑定;绑定用CA的电子签名实现;绑定时,CA验证公钥为Z<sup>*</sup><sub>p</sub>中阶为q且非1的元素;用户“A”的证书记为CERT<sub>A</sub>;(5).发明方法的每一次运行记为一个会话;假定发明方法的每一次运行有一个会话标示号:sid;sid是一个字符串,用于标记发明方法的并发运行;sid的制定和协商随协议的运行环境不同而有所变化;sid包含在发明方法运行之前用户交换的信息或交换信息的哈西值;(6).与发明方法运行相关的其它信息pub:除了sid,I<sub>A</sub>,A=g<sup>a</sup>,I<sub>B</sub>,B=g<sup>b</sup>,X=g<sup>x</sup>,Y=g<sup>y</sup>外,其它与发明方法运行相关的信息用pub来表示;pub是一个字符串,是用户的IP地址、公钥证书、其它需要认证的信息、时间戳的串联;发明方法运行如下:用户“A”及“B”相互交换它们各自的DH密钥成分X=g<sup>x</sup>和Y=g<sup>y</sup>;假设用户“A”为发明方法运行的发起者,用户“B”为发明方法运行的响应者;即:用户“A”在第一轮发送X,在收到X后用户“B”在第二轮发送Y;将发明方法每一次运行的所有相关信息,包括:sid,I<sub>A</sub>,A=g<sup>a</sup>,I<sub>B</sub>,B=g<sup>b</sup>,X=g<sup>x</sup>,Y=g<sup>y</sup>,以及其它与该次发明方法运行相关的信息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由如下值之一导出,其中K<sub>A</sub>为用户“A”计算的值,K<sub>B</sub>为用户“B”计算的值,K<sub>A</sub>等于K<sub>B</sub>:(1).在线计算高效形式:K<sub>A</sub>=B<sup>ea+cx</sup>Y<sup>da+fx</sup>,K<sub>B</sub>=A<sup>eb+dy</sup>X<sup>cb+fy</sup>;其中,c=H(sid,I<sub>A</sub>,A,X,I<sub>B</sub>,B,pub),d=H(sid,I<sub>A</sub>,A,I<sub>B</sub>,B,Y,pub)或d=H(c,Y),e=1或e=H(sid,I<sub>A</sub>,A,I<sub>B</sub>,B,pub),f=H(c,d);当d=H(sid,I<sub>A</sub>,A,I<sub>B</sub>,B,Y,pub)及e=1时,此时c的输入不包含Y,d的输入不包含X,用户“A”事先离线计算X、c和B<sup>a+cx</sup>,用户“B”事先离线计算Y、d和A<sup>b+dy</sup>,从而提高在线计算的效率;(2).可抵赖形式:K<sub>A</sub>=B<sup>cx</sup>Y<sup>da+fx</sup>,K<sub>B</sub>=A<sup>dy</sup>X<sup>cb+fy</sup>;或K<sub>A</sub>=B<sup>cx</sup>Y<sup>da</sup>,K<sub>B</sub>=A<sup>dy</sup>X<sup>cb</sup>;其中c=H(sid,I<sub>A</sub>,A,X,I<sub>B</sub>,B,pub)或c=H(sid,I<sub>A</sub>,A,X,I<sub>B</sub>,B,Y,pub);d=H(sid,I<sub>A</sub>,A,I<sub>B</sub>,B,Y,pub)或d=H(c,Y);f=H(c,d);这种情况,函数e=0,会话密钥仅仅由DH密钥成分的离散对数,即x和y,计算出,因此每一个用户均抵赖会话密钥的产生,从而更好地保护用户的隐私;当c=H(sid,I<sub>A</sub>,A,X,I<sub>B</sub>,B,pub)及d=H(sid,I<sub>A</sub>,A,I<sub>B</sub>,B,Y,pub)时,此时c的输入不包含Y,d的输入不包含X,用户“A”事先离线计算X、c和B<sup>cx</sup>,用户“B”事先离线计算Y、d和A<sup>dy</sup>,从而在保持可抵赖性的基础上进一步提高在线计算的效率;(3).完整形式:K<sub>A</sub>=B<sup>ea+cx</sup>Y<sup>da+fx</sup>,K<sub>B</sub>=A<sup>eb+dy</sup>X<sup>cb+fy</sup>;其中函数c,d,e,f的输入和输出相互嵌套和影响:c=H(sid,I<sub>A</sub>,g<sup>a</sup>,I<sub>B</sub>,g<sup>b</sup>,X,Y,pub),d=H(c),f=H(c,d),e=H(c,d,f);(4).基本形式:K<sub>A</sub>=B<sup>a+cx</sup>Y<sup>da+x</sup>,K<sub>B</sub>=A<sup>b+dy</sup>X<sup>cb+y</sup>,或K<sub>A</sub>=B<sup>ca+x</sup>Y<sup>a+dx</sup>,K<sub>B</sub>=A<sup>cb+y</sup>X<sup>b+dy</sup>;其中c=H(sid,I<sub>A</sub>,A,X,I<sub>B</sub>,B,Y,pub),d=H(c);(5).简单形式:K<sub>A</sub>=B<sup>cx+da</sup>,K<sub>B</sub>=A<sup>db</sup>X<sup>cb</sup>;对于这种情形,因为用户“A”计算K<sub>A</sub>时候不知道Y,Y不被包含在c,d以及H的输入中;函数c和d的设置有如下情况:c=H(sid,I<sub>A</sub>,A,X,I<sub>B</sub>,B,pub),d=H(c)或d=1;或者,d=H(sid,I<sub>A</sub>,A,X,I<sub>B</sub>,B,pub),c=H(d)或c=1;(6).其他形式:K<sub>A</sub>=B<sup>cx+ea</sup>Y<sup>da</sup>,K<sub>B</sub>=A<sup>dy+eb</sup>X<sup>cb</sup>;其中e=1或e=H(sid,I<sub>A</sub>,A,I<sub>B</sub>,B,pub);c=H(sid,I<sub>A</sub>,A,X,I<sub>B</sub>,B,pub);d=H(sid,I<sub>A</sub>,A,I<sub>B</sub>,B,Y,pub);会话密钥K是由H<sub>K</sub>和一个密钥导出函数KDF导出;其方法是将H<sub>K</sub>(K<sub>A</sub>,(sid,A,B,I<sub>A</sub>,I<sub>B</sub>,X,Y,c,d,e,f,pub))作为一个伪随机函数PRF的随机种子来导出;一个伪随机函数是一个二元函数PRF<sub>α</sub>(·):第一元α是一个随机数,称为PRF的随机种子;·是另外一元,是任意字符串的顺序连接;PRF<sub>α</sub>(c,pub)表示的是PRF<sub>α</sub>(c‖pub),其中“c||pub”表示的是字符串c与pub的顺序连接;身份及密钥确认方法:为了进一步相互确认身份及会话密钥,用户“B”和“A”用导出的会话密钥作为消息认证码MAC的私钥对与发明方法运行相关的公开信息,sid,I<sub>A</sub>,I<sub>B</sub>,A,B,X,Y,c,d以及用户角色标示,进行认证;方法运行的响应者“B”在第二轮认证(sid,I<sub>B</sub>,I<sub>A</sub>,B,A,Y,X,d,c,pub),协议初始者“A”在另加的第三轮进行认证(sid,I<sub>A</sub>,I<sub>B</sub>,A,B,X,Y,c,d,pub);用户角色,即发明方法运行的初始者和响应者的标示方法:(1).由c,d,e,f的顺序来标示;(c,d)标示方法运行初始者角色,(d,c)标示方法运行响应者角色;这种角色标示方法要求函数c,d的输出不为常数;(2).由c与用户ID的顺序来标示;(c,I<sub>A</sub>)标示方法运行初始者;(I<sub>B</sub>,c)标示方法运行响应者。
地址 201203 上海市浦东张衡路825号复旦大学软件学院