DH加密算法全称为Diffie-Hellman密钥交换协议/算法,是由Whitfield Diffie与Martin Hellman在1976年提出的,属于非对称加密算法。

DH算法

DH算法的用途

DH加密算法主要用于密钥的交换,能够实现了在非安全网络下通信双方密钥的安全建立,从而使通信双方能够使用这个密钥进行消息的加密解密,从而实现通信的安全。

DH算法的原理

DH算法的基本原理就是通过共享的参数协商一个对称秘钥,然后用这个对称秘钥加密后面的通信。这里用到了离散对数函数,这样即使中间人截获了公钥,也无法计算出各自的私钥。

DH算法

DH算法的流程

假设Ali和Bob需要互相通信并共享秘钥

  1. Ali先给Bob一个明文共享参数P、G,此信息可以被任何人识别。
  2. Ali 自己生成一个随机数A(Ali的私钥),并不将A告诉包括Bob在内的任何人。
  3. Bob自己生成一个随机数B(Bob的私钥),并不将B告诉包括Ali在内的任何人。
  4. Ali通过自己的私钥A对G、P进行加密后(G^AmodP)的值传送给Bob。
  5. Bob通过自己的私钥B对Ali通过第4步发送给Bob的信息(G^AmodP)进行加密得到(G^AmodP)^BmodP=G^AxBmodP=S。
  6. 同理,Bob通过自己的私钥B对G、P进行加密后(G^BmodP)的值传送给Ali。
  7. Ali通过自己的私钥A对Bob通过第6步发送给Bob的信息(G^BmodP)进行加密得到(G^BmodP)^AmodP=G^B×AmodP=G^A×BmodP=S。
  8. 因此Ali和Bob得到了他们协议后的公钥S,及他们各自的私钥A和私钥B。

在这一过程中P必须是一个非常大的质数,才能保证在第4步、第6步中相互传递加密信息之后,私钥 A 和私钥B不会被第三方攻击者猜出来。

DH加密算法

DH算法的缺点

DH算法虽然可以保护通信信息安全,但却无法确认通信双方的真实身份,很难防范中间人的攻击。所以在日常使用中,DH算法经常辅以其他的数字签名算法(如RSA等)一同使用,用于验证通信双方的真实身份。

免责声明:素材源于网络,如有侵权,请联系删稿。