0%

密钥协商之DH,ECDH,ECDHE

什么是DH?

Diffie-Hellman密钥交换算法是在1976年由这两个人发明的算法。它可以在不安全的网络中,通过交换一些公开的信息协商出共享密钥,使用此共享密钥建立安全通讯。它实际上并没有直接交换密钥,而是通过数学计算,得出共享密钥。

在DH算法之前 - RSA密钥交换算法

我们构建这么一种场景,服务器配置有公钥+私钥,客户端是离散的。

1
2
3
4
5
6
7
8
9
10
RSA算法流程文字描述如下:

(1):任意客户端对服务器发起请求,服务器首先发回复自己的公钥到客户端(公钥明文传输)。

(2):客户端使用随机数算法,生成一个密钥S,使用收到的公钥进行 加密,生成C,把C发送到服务器。

(3):服务器收到C,使用公钥对应的私钥进行解密,得到S。

(4):上述交换步骤后,客户端和服务器都得到了S,S为密钥(预主密钥)。

RSA算法的问题

前向安全问题

就是如果私钥泄漏,即私钥被第三方知道,那么第三方就能从C中解密得到S,即只要保存所有的A和B的报文,等到私钥被泄漏的那一天,或者有办法快从C中计算S的方法出现(量子计算机分解大素数),那么A和B就没有什么私密性可言了。

这就是所谓的前向不安全,私钥参与了密钥交换,安全性取决于私钥是否安全保存。

一句话说DH

利用临时生成(固定的)的一对公私钥,完成master key的交换

DHE是什么? - Ephemeral

  • 静态DH:通信双方有一方的私有密钥是固定的,另一方临时生成,一般是服务器端固定。但是这样随着时间的验证,很容易被破解,而一旦被破解,之前所有的通讯数据都很容易被解密,不具备前向安全的特性。目前静态DH基本不同。

  • 既然静态DH算法中,一方固定一方临时生成的方式不安全,那么我们就双方都不固定。通讯双方的私有密钥都采用临时生成的方式,这中DH算法称之为DHE算法(E是指Ephemeral, 临时的)。

用一句话说,唯一的区别就是DHE是由随机值生成密钥