迪菲-赫尔曼密钥交换( Diffie–Hellman key exchange ,简称「D–H」) 是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。
1、离散对数的数学概念
协议基于离散对数的概念:
如果$ a$是素数$ p$的一个原根,那么数值:
$$ a \mod p , a^2 \mod p, \cdots, a^{p-1} \mod p $$
是各不相同的整数,且以某种排列方式组成了从 1 到 p-1 的所有整数。
如果对于一个整数$ b$和素数$ p$的一个原根$ a$,可以找到一个唯一的指数$i$,使得:
$$ b = a^i \mod p, 0 \leq i \leq p - 1 $$
那么指数$ i$称为$ b$的以$ a$为基数的模$ p$的离散对数。
Diffie-Hellman 算法的有效性依赖于计算离散对数的难度,其含义是:当已知大素数$ p$和它的一个原根$ a$后,对给定的$ b$,要计算 $ i$ ,被认为是很困难的,而给定$ i$ 计算$ b$ 却相对容易 。
2、具体的 Diffie-Hellman 算法
假如用户 A 和用户 B 希望交换一个密钥。取素数$ p$和整数$ a$,$ a$是$ p$ 的一个原根,公开$ a$和$ p$。
- A 选择随机数$ X_A
Q. E. D.