DH
算法原理
DH
是
Diffie-Hellman
的首字母缩写,
是
Whitefield
与
Martin
Hellman
在
1976
年提出了一个的密钥交换协议。我个人倾向于称
DH
算法为
密
钥协商协议而
RSA
算法是密钥交换算法。
本篇分为几个部分,
第一个部分介绍一下密钥交换的场景;
第二部分介
绍一下
DH
算法的的步骤,以及由该算法引出的一些问题;第三部分开
始讲数学原理。数学原理可能涉及到数论、抽象代数,本篇尽量在每个
公式后面证明该公式的正确性。
简单场景
&
简单的密钥协商
先从一个应用场景说起:
Alice
和
Bob
想要在一个不安全的信道共享一个密钥,
该密钥可被用来
进行后续的其他的操作,
并且仅被
Alice
和
Bob
所知,
第三方无法得知。
一个简单的方法就是,现在全世界都是知道一个值
P=100
。
Alice
生成
随机值
5
,然后乘上
P
,接着发送
Pa = 500
给
Bob
;通样
Bob
生成随机
值
6
,然后乘上
P
,接着发送
Pb = 600
给
Alice
。
这样,
Alice
有
100
,
5
,
600
,
Bob
有
100
,
6,500
。
Alice
计算
:
随机值
5
(自己私钥)
* 600
(对端的公钥)
= 3000
等式
1
Bob
计算
:
随机值
6
(自己私钥)
* 500
(对端的公钥)
= 3000
等式
2
这样
Alice
就和
Bob
共享了一个值
3000
,
还有谁知道
3000
这个