Diffie-Hellman 协议是一种方法,允许两个计算机用户生成一个共享私钥,然后他们可以使用该密钥通过不安全的信道交换信息。假设用户名为 Alice 和 Bob。首先,他们约定两个质数 和
,其中
很大(通常至少 512 位),而
是模
的原根。(在实践中,最好选择
,使得
也是质数。)数字
和
不需要对其他用户保密。现在 Alice 选择一个大的随机数
作为她的私钥,Bob 类似地选择一个大数
。然后 Alice 计算
,她将其发送给 Bob,Bob 计算
,他将其发送给 Alice。
现在 Alice 和 Bob 都计算他们的共享密钥 ,Alice 计算为
Bob 计算为
Alice 和 Bob 现在可以使用他们的共享密钥 交换信息,而无需担心其他用户获取此信息。为了让潜在的窃听者 (Eve) 这样做,她首先需要获得
,仅知道
、
、
和
。
这可以通过从 计算
或从
计算
来完成。这是离散对数问题,对于大的
来说,在计算上是不可行的。计算模
的数的离散对数所花费的时间大致与分解与
大小相同的两个质数的乘积的时间相同,而 RSA 密码系统的安全性就依赖于此。因此,Diffie-Hellman 协议的安全性大致与 RSA 相当。