Diffie-Hellman秘钥交换算法到Oakley密钥算法

来源:互联网 发布:elsevier是什么数据库 编辑:程序博客网 时间:2024/06/05 10:56
        Diffie-Hellman算法一种密钥加密算法;是一种建立秘钥的方法,而不是加密方法,所以秘钥必须和其他一种加密算法结合使用。这种秘钥交换技术的目的在于使两个用户安全的交换一个秘钥一遍后面的报文加密,算法的有效性依赖于计算离散对数的难度。

       Diffie-Hellman的算法如下:

1、有两个全局公开的参数,一个素数q和一个整数a,a是q的一个原根。

2、假设用户A和B希望交换一个密钥,用户A选择一个作为私有密钥的随机数XA<q,并计算公开密钥YA=a^XA mod q。A对XA的值保密存放而使YA能被B公开获得。类似地,用户B选择一个私有的随机数XB<q,并计算公开密钥YB=a^XB mod q。B对XB的值保密存放而使YB能被A公开获得。

3、用户A产生共享秘密密钥的计算方式是K = (YB)^XA mod q。同样,用户B产生共享秘密密钥的计算是K = (YA)^XB mod q。这两个计算产生相同的结果


      Diffie-Hellman算法具有两个吸引力的特征:

1、仅当需要时才生成密钥,减小了将密钥存储很长一段时间而致使遭受攻击的机会。

2、除对全局参数的约定外,密钥交换不需要事先存在的基础结构。


然而,该技术也存在许多不足:

1、没有提供双方身份的任何信息。

2、它是计算密集性的,因此容易遭受阻塞性攻击,即对手请求大量的密钥。受攻击者花费了相对多的计算资源来求解无用的幂系数而不是在做真正的工作。

3、没办法防止重演攻击。

4、容易遭受中间人的攻击。第三方C在和A通信时扮演B;和B通信时扮演A。A和B都与C协商了一个密钥,然后C就可以监听和传递通信量。中间人的攻击按如下进行:

(1)B在给A的报文中发送他的公开密钥。

(2)C截获并解析该报文。C将B的公开密钥保存下来并给A发送报文,该报文具有B的用户ID但使用C的公开密钥YC,仍按照好像是来自B的样子被发送出去。A收到C的报文后,将YC和B的用户ID存储在一块。类似地,C使用YC向B发送好像来自A的报文。

(3)B基于私有密钥XB和YC计算秘密密钥K1。A基于私有密钥XA和YC计算秘密密钥K2。C使用私有密钥XC和YB计算K1,并使用XC和YA计算K2。

(4)从现在开始,C就可以转发A发给B的报文或转发B发给A的报文,在途中根据需要修改它们的密文。使得A和B都不知道他们在和C共享通信。

      基于Diffie-Hellman算法的上述问题,提出了Oakley密钥算法,进行近一步的算法改进:

      Oakley 协议在D-H算法的基础上加入了辅助的加密算法(RSA )、散列算法 (SHA ,MD5 )和认证算法 (如 RSA,DSS ),包括认证用户的机制,提供了附加的安全性 。作为协议的一部分,公开密钥证书存储于DNS;使用该协议产生的密钥与以往产生的任何密钥都无关,因此攻击者无法通过破获几个主密钥来导出会话密钥 。

      Oakley算法具有五个重要特征:

1、它采用称为cookie程序的机制来对抗阻塞攻击。

2、它使得双方能够协商一个全局参数集合。

3、它使用了现时来保证抵抗重演攻击。

4、它能够交换Diffie-Hellman公开密钥。

5、它对Diffie-Hellman交换进行鉴别以对抗中间人的攻击。

Oakley可以使用三个不同的鉴别方法:

1、数字签名:通过签署一个相互可以获得的散列代码来对交换进行鉴别;每一方都使用自己的私钥对散列代码加密。散列代码是在一些重要参数上生成的,如用户ID和现时。

2、公开密钥加密:通过使用发送者的私钥对诸如ID和现时等参数进行加密来鉴别交换。

3、对称密钥加密:通过使用某种共享密钥对交换参数进行对称加密,实现交换的鉴别。




      参考文献:

      http://blog.csdn.net/lee244868149/article/details/51790397

      《Oakley密钥协议》

原创粉丝点击