一种改进的密钥交换协议的制作方法

文档序号:7890999阅读:242来源:国知局
专利名称:一种改进的密钥交换协议的制作方法
技术领域
本发明属于密码协议技术领域,具体涉及一种改进的密钥交换协议。

背景技术
本发明协议基于发明人在专利申请书200710047344.8中所给出的密钥交换协议。为了说明书描述方便,专利申请书200710047344.8中所给出的密钥交换协议被称为YYZ密钥交换协议。下面为YYZ协议的核心运行机制 用户“A”及“B”相互交换它们各自的DH密钥成分X=gx和Y=gy以及公钥证书。假设用户“A”为协议的发起者,用户“B”为协议的响应者;即用户“A”在第一轮发送X;在收到X后用户“B”检查X为Z*p中阶为q的非1元素(即检查X∈Z*p且X≠1且Xq=1 mod p)并在第二轮发送Y;收到Y后,用户“A”检查Y为Z*p中阶为q的非1元素(即检查Y∈Z*p且Y≠1且Yq=1 modp)。注意,用户需要检查DH密钥成分X和Y是否阶为q,即Xq=1 modp和Yq=1 modp。
用户“A”计算KA=Bea+cxYda+fx,并计算会话密钥K=HK(KA,IA,A,IB,B,X,Y,c,d,e,f);用户“B”计算KB=Aeb+dyXcb+fy,并计算会话密钥K=HK(KB,IA,A,IB,B,X,Y,c,d,e,f)。其中,c=H(IA,A,X,IB,B),d=H(IA,A,IB,B,Y),e=1或0,f=H(c,d)。
为了进一步相互确认身份及会话密钥,协议响应者利用会话密钥K作为MAC-密钥在第二轮认证(IB,c),即“B”在第二轮发送MACK(IB,c);协议初始者“A”在另加的第三轮利用会话密钥K作为MAC-密钥认证(c,IA),即“A”在第三轮发送MACK(c,IA)。注意,MAC-密钥和会话密钥相同。


发明内容
本发明的目的在于提供一种改进的更为高效的YYZ密钥交换协议。本发明协议也可以视为专利申请200710047344.8的一个改进。
本发明协议具有如下特点 与专利申请书200710047344.8中所给出的YYZ密钥交换协议相比较,本发明协议有如下2个主要不同 (1).本发明协议的关键之处为利用对BcxYda+fx及AdyXcb+fy进行t=(p-1)/q次幂运算从而保证Y(da+fx)t及X(cb+fy)t为Z*p中阶为q的元素,并进而保证KA=Bea+tcxY(da+fx)t和KB=Aeb+tdyX(cb+fy)t为Z*p中阶为q的元素。与专利申请书200710047344.8中所给出的YYZ协议相比,对BcxYda+fx及AdyXcb+fy进行t次幂运算的好处为可以省去对DH密钥成分X和Y的阶q检查,减少低效的指数运算,提高计算效率; (2).在本发明协议中,会话密钥K=HK(f,KA)=HK(f,KB),而MAC-密钥Km=HK(KA,f)=HK(KB,f)。而在原YYZ协议中,MAC-密钥与会话密钥相同。
本发明协议的系统工作环境为 (1).系统参数系统参数(p,q,g,H,HK MAC),其中p和q为大素数,并且q能整除p-1,g是一个Z*p中阶(order)为q的元素,使得在Z*p中由g定义的子群上离散对数(discrete logarithm DL)及计算Diffie-Hellman(computational Diffie-Hellman CDH)问题是难的。一般而言,p的长度为1024位或2048位,q的长度为160或1024。所有的指数运算及(不在指数上的)乘法运算是模(mod)p运算,加法及指数上的乘法为模(mod)q运算(比如gda表示gda mod q mod p)。这里,Z*p指的是所有比p小并与p互素的正整数的集合,即Z*p={1,2,…,p-1}。定义函数DLZq→Z*p,使得h=DL(w)=gw mod p。w称为h的离散对数。我们要求给定随机计算出的h,没有多项式时间算法计算出h的离散对数w,这称为离散对数问题。计算Diffie-Hellman问题指的是给定随机的gx与gy,没有多项式时间算法计算出gxy。一般而言,对于熟悉本领域的人而言,离散对数问题及计算Diffie-Hellman问题也可以定义在由椭圆曲线或双线性对(bilineartity)定义的群上。H是从{0,1}*→{0,1,2,…,q-1}的哈西函数。为增加计算速度,H的输出长度可以为l=(log2 q+1)/2。HK是从{0,1}*→{0,1}k的哈西函数,k是会话密钥的长度,比如k=128或160;对于字符串s1,…,sm,m>1,H(s1,s2,…,sm)表示的是将s1,…,sm用二进制0-1串来表示,然后将所有的0-1串连接(即,串联)起来,最后将串联后得到的串作为H的输入(元素的串联顺序可以变化)。MAC是一个消息认证码算法。(p,q,g,H,HK MAC)既可以是全局或部分全局性的公共参数,亦可以由任意一对执行该协议的用户进行协商。
(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 mod p为用户“A”的DH密钥成分,x为DH密钥成分X的离散对数,x由用户“A”从Zq={0,1,…,q-1}中随机选取。记Y=gy mod p为用户“B”的DH密钥成分,y为DH密钥成分Y的离散对数,y由用户“B”从Zq={0,1,…,q-1}中随机选取。
(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亦可省略,例如在某些密钥交换应用中(x=gx,Y=gy)可兼当会话标示号。
(6).与协议执行相关的其它信息pub除了(sid,IA,A=ga,IB,B=gb,X=gx,Y=gy)外,其它与协议执行相关的信息用pub来表示。pub是一个字符串,一般是用户的IP地址,公钥证书,其它需要认证的信息,时间戳等的串联。pub可以为空。在所有具有MAC的协议实现中,为了提高计算效率,可仅仅将pub作为MAC的输入一部分,而不作为H,HK的输入。
协议实现方法 用户“A”及“B”相互交换它们各自的DH密钥成分X=gx和Y=gy以及公钥证书。假设用户“A”为协议的发起者,用户“B”为协议的响应者。即用户“A”在第一轮发送X;在收到X后用户“B”检查X为Z*p中的非1元素并在第二轮发送Y;收到Y后,用户“A”检查Y为Z*p中的非1元素。
用户“A”计算KA=Bea+tcxY(da+fx)t,检查KA≠1并计算会话密钥K=HK(f,KA);用户“B”计算KB=Aeb+tdyX(cb+fy)t,检查KB≠1并计算会话密钥K=HK(f,KB);其中,t=(p-1)/q,c=H(X,IA,A,IB,B),d=H(IA,A,IB,B,Y),e=0或1,f=H(IA,A,IB,B,X,Y)或H(c,d)或H(c,d,e)。函数c、d、e、f设置的关键之处为c和e的输入不包含Y,d和e的输入不包含X。
用户“A”事先离线计算X、c和Bea+tcx,用户“B”事先离线计算Y、d和Aeb+tdy,从而提高在线计算的效率。KA与KB计算的关键之处为利用对BcxYda+fx及AdyXcb+fy进行t=(p-1)/q次幂运算从而保证Y(da+fx)t及X(cb+fy)t为Z*p中阶为q的元素,并进而保证KA和KB为Z*p中阶为q的元素。对BcxYda+fx及AdyXcb+fy进行t次幂运算的好处为可以省去对DH密钥成分X和Y的阶q检查,提高计算效率。
为了进一步相互确认身份及会话密钥,用户“A”计算MAC-密钥Km=HK(KA,f),“B”计算Km=HK(KB,f)。协议响应者“B”在第二轮发送MACKm(d),协议初始者“A”在另加的第三轮发送MACKm(c)。
本发明协议的具体实现步骤 在下述协议描述中,大括号内的值表示发送的信息。注意用户“A”的公钥是A=ga并具有CA颁发的证书CERTA;用户“B”的公钥是B=gb并具有CA颁发的证书CERTB。假设用户“A”为协议运行初始者,用户“B”为协议运行响应者。
协议-1无身份及密钥确认功能的协议实现步骤 事先计算用户“A”事先计算X=gx mod p、c=H(X,IA,A,IB,B)、e=0或1、和B(ea+tcx)mod q mod p,删除掉c与ea+tcx,但保留x和Bea+tcx;其中,x从Zq中随机选取,X称为“A”的DH密钥成分。
用户“B”事先计算Y=gy mod p、d=H(IA,A,IB,B,Y)、e=0或1和A(eb+tdy)mod q mod p,删除掉d与eb+tdy,但保留y和Aeb+tdy。其中,y从Zq中随机选取且Y称为“B”的DH密钥成分。
第-轮,从“A”到“B”{sid,IA,A,CERTA,X=gx(mod p)}。
收到“A”发送的信息后,“B”验证“A”的身份、公钥及证书,X为Z*p中的非1元素。验证不成功,“B”拒绝继续执行协议;验证成功,用户“B”计算KB=Aeb+tdyX(cb+fy)t,检查KB≠1并计算会话密钥K=HK(f,KB),其中,t=(p-1)/q,f=H(IA,A,IB,B,X,Y)。用户“B”删除掉除用户私钥和会话密钥之外的所有在本次协议执行中所生成的内部状态数据,包括y、Aeb+tdy、(cb+fy)t、X(cb+fy)t、KB、c、f。
第二轮,从“B”到“A”{sid,IB,B,CERTB,Y=gy}。
收到“B”发送的信息后,“A”验证“B”的身份、公钥及证书,Y为Z*p中的非1元素。验证不成功,“A”中止协议;验证成功,用户“A”计算KA=Bea+tcxY(da+fx)t,检查KA≠1并计算会话密钥K=HK(f,KA)。用户“A”删除掉除用户私钥和会话密钥之外的所有在本次协议执行中所生成的内部状态数据,包括x、Bea+tcx、(da+fx)t、Y(da+fx)t、KA、d、f。
协议-2具有身份及密钥确认功能的协议实现步骤 事先计算用户“A”事先计算X=gx mod p、c、e、和Bea+tcx;删除掉ea+tcx,但保留x、Bea+tcx和c。其中,x从Zq中随机选取,X称为“A”的DH密钥成分,c=H(X,IA,A,IB,B),e=0或1。
用户“B”事先计算Y=gy mod p、d、e和Aeb+tdy;删除掉eb+tdy,但保留y、Aeb+tdy和d。其中,y从Zq中随机选取且Y称为“B”的DH密钥成分,d=H(IA,A,IB,B,Y)。
第一轮,从“A”到“B”{sid,IA,A,CERTA,X=gx(mod p)}。
收到“A”发送的信息后,“B”验证“A”的身份、公钥及证书,X为Z*p中的非1元素。验证不成功,“B”拒绝继续执行协议;验证成功,进入下一轮。
第二轮,从“B”到“A”{sid,IB,B,CERTB,Y=gy,MACKm(d)}。
用户“B”计算KB=Aeb+tdyX(cb+fy)t,检查KB≠1,计算MAC-密钥Km=HK(KB,f),计算并发送MACKm(d)其中,t=(p-1)/q,f=H(IA,A,IB,B,X,Y)。用户“B”计算会话密钥K=HB(f,KB);删除掉y、Aeb+tdy、(cb+fy)t、X(eb+fy)t、KB、d、f,但保留c、会话密钥K和MAC-密钥Km。
收到“B”发送的信息后,“A”验证“B”的身份、公钥及证书,Y为Z*p中的非1元素。验证不成功,“A”终止协议;验证成功,用户“A”计算KA=Bea+tcxY(da+fx)t,检查KA≠1,计算MAC-密钥Km=HK(KA,f)并验证MACKm(d)的正确性。验证不成功,用户“A”中止协议执行;验证成功,用户“A”计算并发送MACKm(c);然后,用户“A”计算会话密钥K=HK(f,KA),删除掉x、Bea+tcx,(da+fx)t、Y(da+fx)t、KB、c、d、f以及MAC-密钥Km,但保留会话密钥K。
第三轮,从“A”到“B”{sid,MACKm(c)}。收到“A”发送的信息后,“B”验证MACKm(c)的正确性。验证不成功,用户“A”中止协议执行;验证成功,用户“B”删除掉Km和c,但保留会话密钥K,并结束协议执行。
本发明中,协议-1及协议-2有如下变体 (1).KA=(Bea+cxYda+fx)t,KB=(Aeb+dyXcb+fy)t。
(2).函数c、d、e、f的其它计算方法c=H(IA,A,X,IB,B),d=H(IA,A,IB,B,Y),e=0或1,f=H(IA,A,IB,B,X,Y)或H(c,d)或H(c,d,e)。
或者,c=H(IA,ga,IB,gb,X,Y),d=H(c),e=0或H(d),f=H(d,e)或H(c,d)或H(c,d,e)或H(d)(当e=0)。
(3).在实际应用中,将函数c、d、e、f输入中的(IA,A)换为用户“A”的公钥证书CertA的哈西值,将(IB,B)换为用户“B”的公钥证书CertB的哈西值。或者,将(IA,A,IB,B)换为CertA、CertB以及其它在协议运行之前所交换的cookie、随机数和IP地址信息的串联或串联信息的哈西值。将sid作为函数c、d、e、f以及HK输入的一部分。
(4).KA和KB的其它计算形式KA=Ba+tcxY(da+x)t,KB=Ab+tdyX(cb+y)t;或KA=Bca+txY(a+dx)t,KB=Acb+tyX(b+dy)t;或KA=BtxY(a+cx)t,KB=AtyX(b+cy)t,其中c=H(IA,ga,IB,gb,X,Y),d=H(c)。
或者,KA=Btcx+eaYtda,KB=Atdy+ebXtcb,其中c=H(X,IA,A,IB,B),d=H(IA,A,IB,B,Y),e=1或H(IA,A,IB,B)。
(5).会话密钥与MAC-密钥的其它计算形式K=HK(KA)=HK(KB)或K=HK(KA,1)=HK(KB,1);Km=HK(KA,0)=HK(KB,0)。或者,Km=K,即会话密钥同时充当MAC-密钥。将c、d、e、f以及sid的部分或全部作为HK输入的一部分。会话密钥与MAC-密钥由不同的哈西函数来实现,比如MAC-密钥使用MD5哈西函数生成,会话密钥由SHA-1哈西函数生成。
(6).在协议-2中,将MACKm(d)换为MACKm(0);将MACKm(c)换为MACKm(1)。
(7).用户“A”或“B”不进行事先计算;此时,在会话密钥和MAC密钥计算之前所保留的内部状态仅包括x或y,并且一旦会话密钥计算完毕,除用户私钥和会话密钥之外的所有在本次协议执行中所生成的内部状态数据立即被删除。
(8).将哈西函数H和HK的输入中的元素的顺序进行变化。
(9).为了更强的安全性,用户在向CA注册公钥时候,向CA证明其的确知道与其注册公钥相对应的私钥。
(10).在协议-2中,在将MAC的输入同时放入HK的输入的前提下,将部分或全部MAC去掉,只用哈西函数HK进行绑定。比如将MACKm(d)换为HK(KB,f,d)或HK(KB,f,0),等;将MACKm(c)换为HK(KB,f,c)或HK(KB,f,1)或HK(f,d,Km),等。

具体实施例方式 假设,具有身份IA的用户“A”的公钥是A=ga并具有证书CERTA,具有身份IB的用户“B”的公钥是B=gb并具有证书CERTB。证书CERTA指的是CA对A的身份IA及其公钥A=ga的一个电子签名,其余同。我们假设A为协议运行初始者(initiator),B为协议运行响应者(responder)。
在下述协议具体实施中,消息认证码MAC采用由IETF(Internet Engineering TaskForce)所公布的第2104号互联网意见征求文档(Internet RFC 2104)中所描述的HMAC认证码。HMAC只需作两个哈西运算,并被证明既是消息认证码又是伪随机函数。在协议具体实施中,HMAC以及哈西函数H,HK由SHA-1哈西函数来实现。在下述协议具体实施中,会话标示符sid省去。
协议-1无身份及密钥确认功能的协议
具体实施例方式 事先计算用户“A”事先计算X=gx mod p、c=H(X‖IA‖A‖IB‖B)、e=0或1、和B(ea+tcx)modq mod p;删除掉c与ea+tcx,但保留x和Bea+tcx。x与Bea+tcx应该分别保存在不同的存储模块中;一般而言,x可保存在更为安全的存储模块中。其中,x从Zq中随机选取,X称为“A”的DH密钥成分。这里,“‖”表示的是字符串的顺序连接。
用户“B”事先计算Y=gy mod p、d=H(IA‖A‖IB‖B‖Y)、e=0或1和A(eb+tdy)mod q mod p;删除掉d与eb+tdy,但保留y和Aeb+tdy。y与Aeb+tdy应该分别保存在不同的存储模块中;一般而言,y可保存在更为安全的存储模块中。其中,y从Zq中随机选取且Y称为“B”的DH密钥成分。
第一轮,从“A”到“B”{IA,A,CERTA,X=gx(mod p)}。
收到“A”发送的信息后,“B”验证“A”的身份、公钥及证书(即验证证书颁发机构CA对(IA,A)签名的有效性),X为Z*p中的非1元素(即2≤X≤p-1)。验证不成功,“B”拒绝继续执行协议;验证成功,用户“B”计算KB=A(eb+tdy)mod q X(cb+fy)t mod q mod p,检查KB≠1并计算会话密钥K=HK(f‖KB),其中,t=(p-1)/q,f=H(IA‖A‖IB‖B‖X‖Y)。用户“B”删除掉除用户私钥和会话密钥之外的所有在本次协议执行中所生成的内部状态数据,包括y、Aeb+tdy、(cb+fy)t、X(cb+fy)t、KB、c、f。这里,“‖”表示的是字符串的顺序连接。
第二轮,从“B”到“A”{IB,CERTB,Y=gy}。
收到“B”发送的信息后,“A”验证“B”的身份、公钥及证书,Y为Z*p中的非1元素。验证不成功,“A”中止协议;验证成功,用户“A”计算KA=B(ea+tcx)mod qY(da+fx)t mod q mod p,检查KA≠1并计算会话密钥K=HK(f‖KA)。用户“A”删除掉除用户私钥和会话密钥之外的所有在本次协议执行中所生成的内部状态数据,包括x、Bea+tcx、(da+fx)t、Y(da+fx)t、KA、d、f。
协议-2具有身份及密钥确认功能的协议
具体实施例方式 事先计算用户“A”事先计算X=gx mod p、c=H(X‖IA‖A‖IB‖B)、e=0或1、和B(ea+tcx)mod q mod p;删除掉ea+tcx,但保留x、Bea+tcx和c。x与Bea+tcx应该分别保存在不同的存储模块中;一般而言,x可保存在更为安全的存储模块中。其中,x从Zq中随机选取,X称为“A”的DH密钥成分。这里,“‖”表示的是字符串的顺序连接。
用户“B”事先计算Y=gy mod p、d=H(IA‖A‖IB‖B‖Y)、e=0或1和A(eb+tdy)modq mod p;删除掉eb+tdy,但保留y、Aeb+tdy和d。y与Aeb+tdy应该分别保存在不同的存储模块中;一般而言,y可保存在更为安全的存储模块中。其中,y从Zq中随机选取且Y称为“B”的DH密钥成分。
第一轮,从“A”到“B”{IA,A,CERTA,X=gx(mod p)}。
收到“A”发送的信息后,“B”验证“A”的身份、公钥及证书,X为Z*p中的非1元素。验证不成功,“B”拒绝继续执行协议;验证成功,进入下一轮。
第二轮,从“B”到“A”{IB,B,CERTB,Y=gy,HMACKm(d)}。
用户“B”计算KB=A(eb+tdy)mod qX(cb+fy)t mod q mod p,检查KB≠1,计算MAC-密钥Km=HK(KB‖f),计算并发送HMACKm(d);其中,t=(p-1)/q,f=H(IA‖A‖IB‖B‖X‖Y)。用户“B”计算会话密钥K=HK(f‖KB);删除掉y、Aeb+tdy、(cb+fy)t、X(cb+fy)t、KB、d、f,但保留c、会话密钥K和MAC-密钥Km。
收到“B”发送的信息后,“A”验证“B”的身份、公钥及证书,Y为Z*p中的非1元素。验证不成功,“A”终止协议;验证成功,用户“A”计算KA=B(ea+tcx)mod q Y(da+fx)tmod q mod p,检查KA≠1,计算MAC-密钥Km=HK(KA‖f)并验证HMACKm(d)的正确性。验证不成功,用户“A”中止协议执行;验证成功,用户“A”计算并发送HMACKm(c);然后,用户“A”计算会话密钥K=HK(f‖KA);删除掉x、Bea+tcx,(da+fx)t、Y(da+fx)t、KB、c、d、f以及MAC-密钥Km,但保留会话密钥K。
第三轮,从“A”到“B”{HMACKm(c)}。收到“A”发送的信息后,“B”验证HMACKm(c)的正确性。验证不成功,用户“A”中止协议执行;验证成功,用户“B”删除掉Km和c,但保留会话密钥K,并结束协议执行。
协议变体的
具体实施例方式 (1).KA=B(ea+cx)tmodqY(da+fx)tmod qmod p,KB=A(eb+dy)tmodqX(cb+fy)tmodq modp。
(2).函数c、d、e、f的其它计算方法c=H(IA‖A‖X‖IB‖B),d=H(IA‖A‖IB‖B‖Y),e=0或1,f=H(IA‖A‖IB‖B‖X‖Y)或H(c‖d)或H(c‖d‖e)。
或者,c=H(IA‖ga‖IB‖gb‖X‖Y),d=H(c),e=0或H(d),f=H(d‖e)或H(c‖d)或H(c‖d‖e)或H(d)(当e=0); (3).在具体实施中,可将函数c、d、e、f输入中的(IA‖A)换为用户“A”的公钥证书CertA的哈西值,将(IB‖B)换为用户“B”的公钥证书CertB的哈西值。另一个推荐的实施方式为将(IA‖A‖IB‖B)换为CertA、CertB以及其它在协议运行之前所交换的cookie、随机数和IP地址等信息的串联(即pub)或串联信息的哈西值(即pub的哈希值)。将sid作为函数c、d、e、f以及HK输入的一部分。
(4).KA和KB的其它计算形式KA=B(a+tcx)modqY(da+x)tmodq modp,KB=A(b+tdy)mod qX(cb+y)tmod q mod p; 或者,KA=B(ca+tx)modqY(a+dx)tmod q mod p,KB=A(cb+ty)modqX(b+dy)t mod qmod p; 或者,KA=Btx mod qY(a+cx)t mod qmod p,KB=Aty mod qX(b+cy)tmodqmodp,其中c=H(IA‖ga‖IB‖gb‖X‖Y),d=H(c); 或者,KA=B(tcx+ea)modqYtdamodq modp,KB=A(tdy+eb)modqXtcb modq modp,其中c=H(X‖IA‖A‖IB‖B),d=H(IA‖A‖IB‖B‖Y),e=1或H(IA‖A‖IB‖B)。
(5).会话密钥与MAC-密钥的其它计算形式K=HK(KA)=HK(KB)或K=HK(KA‖1)=HK(KB‖1);Km=HK(KA‖0)=HK(KB‖0);或者,Km=K,即会话密钥同时充当MAC-密钥。会话密钥与MAC-密钥由不同的哈西函数来实现,比如MAC-密钥使用MD5哈西函数生成,会话密钥由SHA-1哈西函数生成;此时,在MD5和SHA-1哈西函数输入中的元素顺序可以一致。
(6).在协议-2中,将HMACKm(d)换为HMACKm(0);将HMACKm(c)换为HMACKm(1)。
(7).用户“A”或“B”不进行事先计算。此时,在会话密钥和MAC密钥计算之前所保留的内部状态仅包括x或y,并且一旦会话密钥计算完毕,除用户私钥和会话密钥之外的所有在本次协议执行中所生成的内部状态数据立即被删除。
(8).将哈西函数H和HK的输入中的元素的顺序进行变化。比如c=H(IB‖B‖IA‖A‖X),d=H(IB‖B‖Y‖IA,A),f=H(X‖Y‖IA‖A‖IB‖B),等。
(9).为了更强的安全性,用户在向CA注册公钥时候,向CA证明其的确知道与其注册公钥相对应的私钥。比如,用户用相应的私钥对其ID及公钥进行签名,等。
(10).在协议-2中,在将MAC的输入同时放入HK的输入的前提下,将部分或全部MAC去掉,只用哈西函数HK进行绑定。比如将MACKm(d)换为HK(KB‖f‖d)或HK(KB‖f0),等;将MACKm(c)换为HK(KB‖f‖c)或HK(KB‖f‖1)或HK(f‖d‖Km),等。
权利要求
1.一种改进的密钥交换协议,其特征在于
系统工作环境为
(1).系统参数(p,q,H,HK,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是从{0,1}*→{0,1,2,…,(q-1)/2}的哈西函数,HK是从{0,1}*→{0,1}k的哈西函数,k是会话密钥的长度;对于字符串s1,…,sm,m>1,(s1,s2,…,sm)表示的是将s1,…,sm用二进制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 mod p为用户“A”的DH密钥成分,x为DH密钥成分X的离散对数,x由用户“A”从Zq={0,1,…,q-1}中随机选取;记Y=gy mod p为用户“B”的DH密钥成分,y为DH密钥成分Y的离散对数,y由用户“B”从Zq={0,1,…,q-1}中随机选取;
(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”检查X为Z*p中的非1元素并在第二轮发送Y;收到Y后,用户“A”检查Y为Z*p中的非1元素;
用户“A”计算KA=Bea+tcxY(da+fx)t,检查KA≠1并计算会话密钥K=HK(f,KA);用户“B”计算KB=Aeb+tdyX(cb+fy)t,检查KB≠1并计算会话密钥K=HK(f,KB);其中,t=(p-1)/q,c=H(X,IA,A,IB,B),d=H(IA,A,IB,B,Y),e=0或1,f=H(IA,A,IB,B,X,Y)或H(c,d)或H(c,d,e);函数c、d、e、f设置的关键之处为c和e的输入不包含Y,d和e的输入不包含X;用户“A”事先离线计算X、c和Bea+tcx,用户“B”事先离线计算Y、d和Aeb+tdy,从而提高在线计算的效率;KA与KB计算的关键之处为利用对BcxYda+fx及AdyXcb+fy进行t=(p-1)/q次幂运算从而保证Y(da+fx)t及X(cb+fy)t为Z*p中阶为q的元素,并进而保证KA和KB为Z*p中阶为q的元素;对BcxYda+fx及AdyXcb+fy进行t次幂运算的好处为可以省去对DH密钥成分X和Y的阶q检查,提高计算效率;
为了进一步相互确认身份及会话密钥,用户“A”计算MAC-密钥Km=HK(KA,f),“B”计算Km=HK(KB,f);协议响应者“B”在第二轮发送MACKm(d),协议初始者“A”在另加的第三轮发送MACK(c)。
2.根据权利要求1所述的改进的密钥交换协议,其特征在于协议的实现步骤为
在下述协议描述中,大括号内的值表示发送的信息;注意用户“A”的公钥是A=ga并具有CA颁发的证书CERTA,用户“B”的公钥是B=gb并具有CA颁发的证书CERTB;假设用户“A”为协议运行初始者,用户“B”为协议运行响应者;
协议-1无身份及密钥确认功能的协议实现步骤
事先计算用户“A”事先计算X=gx mod p、c、e、和Bea+tcx,删除掉c与ea+tcx,但保留x和Bea+tcx;其中,t=(p-1)/q,x从Zq中随机选取,X称为“A”的DH密钥成分,c=H(X,IA,A,IB,B),e=0或1;
用户“B”事先计算Y=gy mod p、d、e和Aeb+tdy,删除掉d与eb+tdy,但保留y和Aeb+tdy;其中,y从Zq中随机选取且Y称为“B”的DH密钥成分,d=H(IA,A,IB,B,Y);
第一轮,从“A”到“B”{sid,IA,A,CERTA,X=gx(mod p)};
收到“A”发送的信息后,“B”验证“A”的身份、公钥及证书,X为Z*p中的非1元素;验证不成功,“B”拒绝继续执行协议;验证成功,用户“B”计算KB=Aeb+tdyX(cb+fy)t,检查KB≠1并计算会话密钥K=HK(f,KB),其中,t=(p-1)/q,f=H(IA,A,IB,B,X,Y);用户“B”删除掉除用户私钥和会话密钥之外的所有在本次协议执行中所生成的内部状态数据,包括y、Aeb+tdy、(cb+fy)t、X(cb+fy)t、KB、c、f;
第二轮,从“B”到“A”{sid,IB,B,CERTB,Y=gy};
收到“B”发送的信息后,“A”验证“B”的身份、公钥及证书,Y为Z*p中的非1元素;验证不成功,“A”中止协议;验证成功,用户“A”计算KA=Bea+tcxY(da+fx)t,检查KA≠1并计算会话密钥K=HK(f,KA);用户“A”删除掉除用户私钥和会话密钥之外的所有在本次协议执行中所生成的内部状态数据,包括x、Bea+tcx、(da+fx)t、Y(da+fx)t、KA、d、f;
协议-2具有身份及密钥确认功能的协议实现步骤
事先计算用户“A”事先计算X=gx mod p、c、e、和Bea+tcx,删除掉ea+tcx,但保留x、Bea+tcx和c;其中,x从Zq中随机选取,X称为“A”的DH密钥成分,c=H(X,IA,A,IB,B),e=0或1;
用户“B”事先计算Y=gymodp、d、e和Aeb+tdy,删除掉eb+tdy,但保留y、Aeb+tdy和d;其中,y从Zq中随机选取且Y称为“B”的DH密钥成分,d=H(IA,A,IB,B,Y);
第一轮,从“A”到“B”{sid,IA,A,CERTA,X=gx(mod p)};
收到“A”发送的信息后,“B”验证“A”的身份、公钥及证书,X为Z*p中的非1元素;验证不成功,“B”拒绝继续执行协议;验证成功,进入下一轮;
第二轮,从“B”到“A”{sid,IB,B,CERTB,Y=gy,MACKm(d)};
用户“B”计算KB=Aeb+tdyX(cb+fy)t,检查KB≠1,计算MAC-密钥Km=HK(KB,f),计算并发送MACKm(d);其中,t=(p-1)/q,f=H(IA,A,IB,B,X,Y);用户“B”计算会话密钥K=HK(f,KB),删除掉y、Aeb+tdy、(cb+fy)t、X(cb+fy)t、KB、d、f,但保留c、会话密钥K和MAC-密钥Km;
收到“B”发送的信息后,“A”验证“B”的身份、公钥及证书,Y为Z*p中的非1元素;验证不成功,“A”终止协议;验证成功,用户“A”计算KA=Bea+tcxY(da+fx)t,检查KA≠1,计算MAC-密钥Km=HK(KA,f)并验证MACKm(d)的正确性;验证不成功,用户“A”中止协议执行;验证成功,用户“A”计算并发送MACKm(c);然后,用户“A”计算会话密钥K=HK(f,KA),删除掉x、Bea+tcx,(da+fx)t、Y(da+fx)t、KB、c、d、f以及MAC-密钥Km,但保留会话密钥K;
第三轮,从“A”到“B”{sid,MACKm(c)};收到“A”发送的信息后,“B”验证MACKm(c)的正确性;验证不成功,用户“A”中止协议执行;验证成功,用户“B”删除掉Km和c,但保留会话密钥K,并结束协议执行。
3.根据权利要求2所述的改进的密钥交换协议,其特征在于协议-1及协议-2有如下的变体
(1).KA=(Bea+cxYda+fx)t,KB=(Aeb+dyXcb+fy)t;
(2).函数c、d、e、f的其它计算方法c=H(IA,A,X,IB,B),d=H(IA,A,IB,B,Y),e=0或1或H(IA,A,IB,B),f=H(IA,A,IB,B,X,Y)或H(c,d)或H(c,d,e);
或者,c=H(IA,ga,IB,gb,X,Y),d=H(c),e=0或H(d),f=H(d,e)或H(c,d)或H(c,d,e);
(3).将函数c、d、e、f输入中的(IA,A)换为用户“A”的公钥证书CertA的哈西值,将(IB,B)换为用户“B”的公钥证书CertB的哈西值;或者,将(IA,A,IB,B)换为CertA、CertB以及其它在协议运行之前所交换的cookie、随机数和IP地址信息的串联或串联信息的哈西值;将sid作为函数c、d、e、f以及HK输入的一部分;
(4).KA和KB的其它计算形式KA=Ba+tcxY(da+x)t,KB=Ab+tdyX(cb+y)t,或KA=Bca+txY(a+dx)t,KB=Acb+tyX(b+dy)t,或KA=BtxY(a+cx)t,KB=AtyX(b+cy)t,其中c=H(IA,ga,IB,gb,X,Y),d=H(c);或者,KA=Btcx+eaYtda,KB=Atdy+ebXtcb,其中c=H(X,IA,A,IB,B),d=H(IA,A,IB,B,Y),e=1或H(IA,A,IB,B);
(5).会话密钥与MAC-密钥的其它计算形式K=HK(KA)=HK(KB)或K=HK(KA,1)=HK(KB,1);Km=HK(KA,0)=HK(KB,0);或者,Km=K;将c、d、e、f以及sid的部分或全部作为HK输入的一部分;会话密钥与MAC-密钥由不同的哈西函数来实现,此时,不同哈西函数的输入中的元素顺序可以一致;将K作为一个伪随机函数的密钥,将0、1、IA、IB、A、B、X、Y、c、d、e、f以及sid的部分或全部作为伪随机函数的输入来导出会话密钥和MAC密钥;将哈西函数HK的输入中的元素的顺序进行变化;
(6).在协议-2中,将MACKm(d)换为MACKm(0);将MACKm(c)换为MACKm(1);
(7).用户“A”或“B”不进行事先计算;此时,在会话密钥和MAC密钥计算之前所保留的内部状态仅包括x或y,并且一旦会话密钥计算完毕,除用户私钥和会话密钥之外的所有在本次协议执行中所生成的内部状态数据立即被删除;
(8).将哈西函数H和HK的输入中的元素的顺序进行变化;
(9).为了更强的安全性,用户在向CA注册公钥时候,向CA证明其的确知道与其注册公钥相对应的私钥;
(10).在协议-2中,在将MAC的输入同时放入HK的输入的前提下,将部分或全部MAC去掉,只用哈西函数HK进行绑定;将MACKm(d)换为HK(KB,f,d)或HK(KB,f,0);将MACKm(c)换为HK(KB,f,c)或HK(KB,f,1)或HK(f,d,Km)。
全文摘要
本发明属于密码协议技术领域,具体为一种改进的密钥交换协议。本发明协议基于发明人在专利申请200710047344.8中所给出的YYZ密钥计算公式KA=Bea+cxYda+fx=Aeb+dyXcb+fy=KB。本发明协议的关键之处为利用对BcxYda+fx及AdyXcb+fy进行t=(p-1)/q次幂运算从而保证Y(da+fx)t及X(cb+fy)t为Z*p中阶为q的元素,并进而保证KA=Bea+tcxY(da+fx)t=Aeb+tdyX(cb+fy)t=KB为Z*p中阶为q的元素。这可以省去原YYZ协议中对DH密钥成分X和Y的阶q检查,从而提高计算效率。另外,在本发明协议中,会话密钥和MAC-密钥不同会话密钥K=HK(f,KA)=HK(f,KB),而MAC-密钥Km=HK(KA,f)=HK(KB,f)。
文档编号H04L9/30GK101247394SQ200810032508
公开日2008年8月20日 申请日期2008年1月10日 优先权日2008年1月10日
发明者赵运磊, 姚期智, 枫 储 申请人:赵运磊, 姚期智, 枫 储
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1