什么是DH?
Diffie-Hellman密钥交换算法是在1976年由这两个人发明的算法。它可以在不安全的网络中,通过交换一些公开的信息协商出共享密钥,使用此共享密钥建立安全通讯。它实际上并没有直接交换密钥,而是通过数学计算,得出共享密钥。
在DH算法之前 - RSA密钥交换算法
我们构建这么一种场景,服务器配置有公钥+私钥,客户端是离散的。
1 | RSA算法流程文字描述如下: |
RSA算法的问题
前向安全问题
就是如果私钥泄漏,即私钥被第三方知道,那么第三方就能从C中解密得到S,即只要保存所有的A和B的报文,等到私钥被泄漏的那一天,或者有办法快从C中计算S的方法出现(量子计算机分解大素数),那么A和B就没有什么私密性可言了。
这就是所谓的前向不安全,私钥参与了密钥交换,安全性取决于私钥是否安全保存。
一句话说DH
利用临时生成(固定的)的一对公私钥,完成master key的交换
DHE是什么? - Ephemeral
静态DH:通信双方有一方的私有密钥是固定的,另一方临时生成,一般是服务器端固定。但是这样随着时间的验证,很容易被破解,而一旦被破解,之前所有的通讯数据都很容易被解密,不具备前向安全的特性。目前静态DH基本不同。
既然静态DH算法中,一方固定一方临时生成的方式不安全,那么我们就双方都不固定。通讯双方的私有密钥都采用临时生成的方式,这中DH算法称之为DHE算法(E是指Ephemeral, 临时的)。
用一句话说,唯一的区别就是DHE是由随机值生成密钥