《武汉工程大学学报》  2012年11期 65-67   出版日期:2012-12-10   ISSN:1674-2869   CN:42-1779/TQ
结合公钥密码的密钥协商协议


0引言密钥协商协议分为两种模式:证书型和无证书型.证书型是指在会话密钥的产生过程中,由一个可信的证书中心(CA)给参与密钥协商的各方各分发一个证书,此证书中含有此方的公钥,ID及其他信息.证书型密钥协商协议的优点是提供认证,其中PKI(公钥密码体制)广泛部署比较成熟,应用面广,并且由它管理密钥对有利于证书的统一管理,其缺点是计算代价大,需要一个可信的CA,同时证书还需要维护.无证书型是指各方在进行会话密钥的协商过程中不需要证书的参与,优点是不需要CA的参与,减少了计算量,尤其是在低耗环境下应用的更多,同时安全性也不比证书型弱.本文提出的协议属于后者,通信双方不需要第三方的认证,由于每次通信中所用的密钥对都是动态生成的,不存在对密钥的更新、撤销等管理问题\[1\].由于公钥密码算法比对称密码算法的速率慢很多,主要原因是涉及大量复杂的运算,像PKI体制中用到的RSA算法要生成大素数、素性检测、指数模运算都是影响运算速率的因素,要生成新的密钥对比较费时,但长时间不更新密钥对又会有安全隐患\[2\],本文结合认证阶段生成的随机数来更新密钥对,未涉及到生成大素数和素性检测运算,速率较快、安全性高.1RSA算法描述密钥生成:(1) 生成两个大素数p和q.(2) 求得n=pq,(n)=(p-1)(q-1).(3) 选择一个随机数 e,e介于1和(n)之间,并且使得gcd(e,(n))=1.(4) 计算d≡e-1mod (n),即d为e在模(n)下的乘法逆元.(5) 公钥为(n,e),私钥为d\[3\].加密方式为c≡me mod n,m为明文,c为密文.解密方式为m≡cd mod n.2协议说明假设A为用户,B为服务器,A的用户名表示为IDA,密码为PWA,函数H()为一种Hash函数.可用文献\[4\]中改进的算法代替.A、B之间事先共享了IDA和hpw=H(IDA,PWA),并选定了RSA算法的一对密钥对(n,e)和d.A保存一个数sa,B保存一个数sb,保证sa+sb=n.2.1认证及密钥交换阶段(1) 用户A首先生成两个随机数xa和ra,计算H(hpw)xa和H(hpw,ra),其中表示异或操作,H(hpw,ra)表示将hpw和ra合并后计算其Hash值,之后A将AU={IDA,H(hpw)xa,ra,H(hpw,ra)}发送给B.(2) B首先在数据库中搜寻是否有IDA,若无,则放弃通信,若有,则取出ra,将其和IDA对应的hpw合并后计算H′(hpw,ra),若H′(hpw,ra)≠H(hpw,ra),则放弃通信,若相等,则保留ra,并计算H(hpw),将其与接受到的AU的第二部分H(hpw)xa作一次异或运算,得到xa,然后B生成两个随机数xb和rb,并计算H(hpwxa),H(hpw,ra,rb),H(hpw,rb)xb,将BU={H(hpwxa),H(hpw,ra,rb)rb,H(hpw,rb)xb}发送给A.(3) A先利用自己知道的hpw和xa计算H′(hpwxa),若H′(hpwxa)≠H(hpwxa),则放弃通信,若相等,则A确信B收到了自己发送的xa,然后取出rb,将其与hpw,ra合并后计算H′(hpw,ra,rb),若H′(hpw,ra,rb)≠H(hpw,ra,rb),则放弃通信,若相等,则接下来计算H(hpw,ra),并将其与接收到的BU的第四部分H(hpw,ra)xb作一次异或运算,得到xb,最后计算H(hpwxb)并发送给B.(4) B利用自己知道的hpw和xb计算H(hpwxb),若H′(hpwxb)≠h(hpwxb),放弃通信,若相等,则B确信A收到了xb,结束认证\[5\].认证及密钥交换阶段的流程图如下:图1认证阶段流程图
Fig.1flow chart of authentication phase第11期蔡琼,等:结合公钥密码的密钥协商协议
武汉工程大学学报第34卷
2.2加密与解密阶段RSA算法一般用于交换对称加密算法的密钥,数字签名,并不直接用来加密数据,因此本节所讲的加、解密本质上是为了在不安全信道上传递对称加密算法的密钥,真正对原始数据的加密由对称加密算法来完成.加、解密过程如下\[67\]:(1)加密c≡(me+ta)mod n其中ta≡sa(xa+xb)mod n.(2)解密m≡(c+tb)dmod n其中tb≡sb(xa+xb)mod n.(3)算法证明主要看解密方程能否还原原文,因c≡(me+ta)modn,令c=(me+ta)-y*n,y∈Z由解密公式推导原文过程如下:D(c)=(c+tb)d mod n≡
(me+ta-y*n+tb)d mod n≡
(me+(xa+xb)(sa+sb)-y*n)d mod n≡
(me+(xa+xb-y)n)d mod n≡
(C0d((xa+xb-y)n))0med+
C1d((xa+xb-y)n)1me(d-1)+
L+Cdd((xa+xb-y)n)dme(d-d) mod n≡
med mod n=m最后一步由Euler定理可证.3安全性分析对协议的攻击种类繁多,这里选取了三种主流的攻击方法来分析本协议的安全性\[8\].3.1中间人攻击在2.1的(a)步骤中,假设中间人C截获了A发送给B的消息AU={IDA,H(hpw)xa,ra,H(hpw,ra)},C首先是没必要修改IDA 的;其次,由于C不知道hpw,因此C无法找到一对rc和H(x,rc)(其中x为中间人任意做出的字符串),使得H(hpw,ra)=H(x,rc).这是由hash函数的弱抗碰撞性来保证的.所以C不能把ra和H(hpw,rc)替换为自己的rc和H(x,rc);最后,如果C将H(hpw)xa换成自己设计的字符串Tc,在(b)步骤中B将回传H(hpwH(hpw)Tc),在(c)步骤中A将验证回传的字符串是否等于H(hpwxa),因为hpw和xa是C不知道的两个数,即C无法知道H(hpwxa)的值,因此C也不能对回传的字符串进行替换,否则A和B将发现中间人的C的存在,将采取相应措施,C顶多能做的是把A的消息原封不动的传给B,这样C达不到中间人攻击的目的.其他步骤的分析同上所述.3.2重放攻击攻击者C将2.1的(a)步骤中A发送给B的消息AU={IDA,H(hpw)xa,ra,H(hpw,ra)}保留,在将来的某个时点重新发送给B,此时C可以通过第一步认证,但C无法从B回传的H(hpw,xb)xb中还原出xb,因此C无法在以往的数据包中找到xb与H(hpw,xb)的对应关系,于是在认证阶段的第三步,C无法回传一个正确的H(hpw,xb)给B.最终也无法通过认证.3.3平行会话攻击在平行会话攻击中,在攻击者的特意安排下,一个协议的两个或者更多的运行并发执行.并发的多个协议使得攻击者可能从一个运行中得到另外某个运行中困难问题的答案.由于该协议每次通信时双方要各自产生随机数互传,每次产生的随机数相等的概率很小,并且双方传输的数据包格式不同,不可能从另一个运行协议中得到本次协议要回传给对方的数据包.4结语在认证阶段,通过传输像r,H(hpw,r)这样的消息对,使得r和H(hpw,r)在传输过程中不可被修改,因为很难找到一个r′(r′≠r),使得H(hpw,r′)=H(hpw,r),这得益于Hash函数的单向性和弱抗碰撞.通过交换各自产生的随机数之后,结合双方选定的RSA算法的密钥对,生成一组动态的密钥:A的私钥{sa,xa},B的公钥{n,e},B的私钥{sb,xb,d},其中xa和xb在每次通信的认证阶段动态生成并相互交换,以实现通信过程中的一次一密.并且并未重新生成大素数而改变密钥对,只是在原有加解密过程中多出一步加法、乘和模运算就生成了新的密钥对,这样既保留了RSA算法的安全性,也加入了一次一密的思想,使得破解该动态RSA的难度更大.不过此协议适用于通信双方已事先保存了各自的身份信息和选定了一个RSA算法的情况,例如金融机构与客户之间的通信,其他情况下的通信还有待进一步研究.