安全密钥交换算法研究
2015-10-08李家兰冼浪
李家兰 冼浪
【摘 要】密钥交换是网络通信用户实现加密通信的基础。D-H算法是迄今在网络安全领域应用最为广泛的密钥交换算法,但其安全性面临中间人攻击的危害。传统PGP体系利用RSA算法可实现基于公钥证书加密的密钥交换,但无法验证发送者的真实身份。改进的密钥交换算法采用数字签名技术,可实现通信双方的身份认证,提高了密钥交换的安全性。
【关键词】密钥交换;D-H算法;PGP;身份认证
1 密钥交换
两个网络通信用户在采用对称加密法实现保密通信时,首先必须共享一个秘密密钥;为了防止攻击者破获,这个密钥必须经常更新。这个在一次定长通话或交换定量数据时使用的密钥,通常称为会话密钥。
会话密钥产生的两种形式是集中式生产和分散式生产。集中式生产,是由指定的密钥产生中心(如密钥分发中心KDC和证书分发中心CDC 等)集中生产密钥,然后分发给系统内的用户,其用户数量受到算法所能提供的密钥总数的限制,所以也称有边界生产;分散式生产,由使用者个人分散生产或由通信双方协商产生,用户数量不受限制,也称无边界生产。会话密钥一般采用分散式生产,由用户在公开的信道上协商建立,这个建立过程称为密钥交换。
2 D-H算法与中间人攻击
分散式密钥生产方式中最著名的是Diffie-Hellman密钥交换算法,简称D-H算法。D-H算法是W.Diffie和M.Hellman于1976年提出的一个用于交换密钥的公钥密码算法,已经在很多商业产品中得以应用。算法的目的是使得两个或两个以上用户能够在公开的信道上安全地交换数据,得到一个共享的会话密钥,用于实现对称加密通信,并能有效阻止攻击者窃取该密钥。D-H算法实现过程如下:
1)A和B预先协商一个大素数p及p的本原根a;
2)A产生随机数x,计算M=ax mod p,然后把M发送给B;
3)B产生随机数y,计算N= ay mod p,然后把N发送给A;
4)A计算k=Nx mod p;
5)B计算k'=My mod p。
因为k=Nx mod p=(ay mod p)x mod p=(ay)x mod p=(ax)y mod p=My mod p=k',所以A和B得到了相同的密钥。而攻击者要从p,a,M,N计算k,将需要解决求离散对数的问题,这是个著名的陷门单向函数,目前普遍认为无法通过穷举之外的方法求解。
D-H算法的主要缺陷是容易受到中间人攻击:
1)A发送公开值(a,p,M)给B,攻击者C处于A和B的通信路径之间,截获这些值并把自己产生的公开值发送给B;
2)B发送公开值(N)给A,C截获它然后把自己的公开值发送给A;
3)A和C计算出共享密钥k1,B和C计算出共享密钥k2;
4)A用密钥k1给B发送消息,但实际上k1是A与C协商计算所得,C截获消息后可用k1解密,同理C可用k2解密B发送给A的消息。C还可以篡改A、B之间的通信,甚至假冒其中一方同另一方通信。
可引入认证、时间戳、随机标号等机制改进D-H算法,有效抵抗中间人攻击。[1]
3 PGP体系实现密钥交换
PGP(Pretty Good Privacy) 是Phil Zimmermann于1991年发布的一个基于RSA公钥加密算法与IDEA对称加密算法的开源的邮件加密体系[2]。PGP创造性地把RSA公钥体系的方便和传统加密体系的高速结合起来,成为最流行的公钥加密软件包。PGP对信息内容使用IDEA对称加密,所以需要在收发双方之间预先实现密钥交换;而PGP的密钥交换是利用RSA算法的公钥加密实现的。传统PGP体系的一般使用过程如下:
发送方A:
1)随机生成新的会话密钥k;基于k,用IDEA算法加密邮件信息m,得到m;
2)获取接收方的RSA公钥e;基于e,用RSA算法加密k,得到k=Ee(k);
3)将m| k一起发送给接收方。
接收方B:
1)用本方RSA私钥d解密k,得到k=Dd(k);
2)用k解密邮件信息m,得到m。
在以上过程中,会话密钥并非通过协商,而只是由发送方随机生成;密钥共享则是通过公钥证书加密发送完成的,其安全性非常高,是基于RSA算法的破解难度的。但另一方面,接收方只能保证其邮件内容无法被窃取,但无法验证发送者的真实身份,导致了接收方可能收到伪造的信息。
4 改进的密钥交换算法
发送方A:
1)随机生成新的会话密钥k;基于k,用IDEA算法加密邮件信息m,得到m;
2)使用RSA算法,用本方私钥da加密k,再用接收方的公钥eb加密这个结果,得到k=Eeb(Eda(k));
3)将m|k一起发送给接收方。
接收方B:
1)用本方RSA私钥db解密k,再用发送方公钥ea解密这个结果,得到k=Dea(Ddb(k));
2)用k解密邮件信息m,得到m。
以上方案与本文第3节所描述的方案的区别是:在发送方的第2步中,要求其先用自己的私钥da加密k,这就达到了数字签名的效果;因为接收方可以根据权威的公钥来源获取证书的身份标识,从而通过验证签名确认发送者的真实身份。同时,k是经过接收方的公钥加密所得,只有正确的接收方才能基于其私钥实现解密,因此可防止中间人的窃听与篡改。
以上方案在使用时,发送方A的第2步的加密顺序不可倒换,即不可先加密再签名,如k=Eda(Eeb(k))。否则,k被中间人C截取后,他可以使用发送方公钥ea去除原签名得到Eeb(k),即使他无法获取真正的k,但可以生成自己的签名k=Edc(Eeb(k)),继续发送m| k给B;此时B将受到欺骗,认为m是C发出的。
改进的算法并不能解决所有的密钥交换的安全问题,如接收者抵赖、信息重放及针对RSA算法的攻击等。必须综合使用各种安全策略,并对信息交互流程进行合理优化,才能尽可能地降低网络通信中所遇到的各种风险。
【参考文献】
[1]张珂.一种改进的抗攻击密钥协商协议研究[J].郑州轻工业学院学报:自然科学版,2011(3):53-57.
[2]宋芬.安全电子邮件的相关协议和标准[J].微计算机应用,2006(5):546-549.
[责任编辑:邓丽丽]