迪菲-赫尔曼密钥交换
迪菲-赫尔曼密钥交换(英语:Diffie–Hellman key exchange,缩写为D-H) 是一种安全协议,用于双方在一个不安全的通信网络上建立一个 共享的秘钥,有了共享秘钥以后,就可以使用这个密钥加密交互消息。由于通信双方最终使用的密钥相同,所以可以认为该协议目标是创建一个对称密钥。迪菲-赫尔曼密钥交换本身是一个匿名(无认证)的密钥交换协议,它却是很多认证协议的基础,并且被用来提供传输层安全协议的短暂模式中的前向安全性。
-
密钥交换(创建)过程
假设A,B两人通信,约定使用同一个有限循环群G和它的一个生成元g。一般过程如下:
- A选择一个随机正整数a,计算ra = ga mod p发送给B。
- B选择一个随机正整数b,计算rb = gb mod p发送给A。
- A收到B消息后 计算R1 = (rb)a mod p
- B收到A消息后 计算R2 = (ra)b mod p
- 由于R1==R2,所以得到同一个值,作为共同的密钥。
为什么R1==R2? 可以推导如下:
R1= (rb)a mod p =(gb mod p)a = (gb)a mod p=gab mod p
R2= (ra)b mod p =(ga mod p)b = (ga)b mod p=gab mod