什么是DH密钥交换?
DH密钥交换又称Diffie–Hellman 密钥交换(Diffie–Hellman key exchange)。是由惠特菲尔德·迪菲(Bailey Whitfield Diffie)和马丁·赫尔曼(Martin Edward Hellman)创立。是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。就是双方互相发送数据就算全程被别人偷窥,偷窥者也无法知道加密信息的密钥是啥。
DH密钥交换说明
DH密钥交换可以用简单颜色交换来说明,比如 和
要交换找到一个秘密颜色,但是
一直在中间监听着,那么怎么让绕过
的监听,找到秘密颜色呢?
- 首先
先找出一个公共颜色,然后再找出私人颜色。
- 然后将公共颜色和自己的私有颜色混合得到一个混合颜色,然后将混合颜色发送给对方。
- 得到对方的混合颜色后,再将自己的私有颜色于其混合,就的到了秘密颜色。
虽然 知道了对方的混合颜色,但是不知道秘密颜色,因为将一个颜色变为原始两个颜色非常困难。
数学原理
DH 依赖的是求解离散对数问题的复杂性。
如果知道 求出
是非常困难的。那么现在
通信就为:
- 找到素数
,
是
的也叫生成元(它可以生成1到
间的余数)。
- 然后找到各自的一个秘密自然数作为私钥,比如
找到
,
找到
,然后分别计算出他们的余数
,再把余数(公钥)发送给对方。
- 最后秘密数字
就是
。因为
。
这时 只知道
,由于不知道它们的私钥那么就不能推算出
了。
安全性
虽然DH算法
可以防止全程偷窥,但是还是不能解决中间人攻击
(就是中间人让 以为自己是
,让
以为自己是
)。
所以为了避免中间人攻击
,DH 需要与其它签名算法(比如 )配合。 靠签名算法帮忙来进行身份认证。当与RSA配合使用,称为DH-RSA
,与DSA 配合则称为DH-DSA
,如果没有配合其他签名算法,则称为DH-ANON
。
ECDH
椭圆曲线迪菲-赫尔曼金钥交换(英语:Elliptic Curve Diffie–Hellman key Exchange,缩写为ECDH),一种匿名的密钥合意协议(Key-agreement protocol)。在这个协定下,双方通过迪菲-赫尔曼密钥交换算法,利用由椭圆曲线加密建立的公钥与私钥对,在一个不安全的通道中,建立起安全的共有加密资料。这是迪菲-赫尔曼密钥交换的变种,采用椭圆曲线加密来加强安全性。
ECDH是依赖求解椭圆曲线离散对数问题的复杂度。跟DH 一样,也是无认证的。同样需要跟其它签名算法。