一、原理简介
Diffie-Hellman 是一种密钥交换协议,它本身不进行加密或认证,只用于生成一个双方共享的秘密值,然后该值可用于对称加密算法中。
核心思想是利用 离散对数问题难解性,即:给定 g 和
,难以求出 a。
二、算法步骤
假设 Alice 和 Bob 要协商一个密钥:
1. 公共参数(可公开)
一个大素数 p
一个生成元 g,通常是 p 的原根
这两个值是公开的,任何人(双方)都可以知道。
2. 各自生成私钥和公钥
Alice 选择一个私钥 a,计算
Bob 选择一个私钥 b,计算
然后 Alice 和 Bob 交换各自的公钥 A、B
3. 计算共享密钥
Alice 计算
Bob 计算
由于数学性质,两者结果相同:
这个 s 就是共享的密钥!
三、一个简单示例
为了便于理解,我们使用小数字(实际应用中数字必须很大):
公共参数:
p = 23
g = 5
私钥选择:
Alice 选择 a=6
Bob 选择 b=15
公钥计算:
Alice 计算
Bob 计算
交换后计算共享密钥:
Alice 计算
Bob 计算
所以双方共享密钥 s=18
四、安全性说明
安全依赖于 离散对数问题的难度
攻击者即使截获 g,p,A,B,也无法有效计算出 a 或 b,更无法求出共享密钥 s