全称 Diffie Hellman密钥交换算法
DH算法属于公钥加密算法,https加密过程客户端C与服务端需要用到dh算法或者RSA算法来协商用户加密数据的session key
在加密数据时使用对称密码算法,密钥管理使用公钥密码技术
背景介绍 – 离散对数
假设a, p均为素数,则有以下等式:
{a1mod p, a2mod p,…, a(p-1)mod p} ={1, 2, …, p-1} //{}表示集合 ,假定为T
对于任意⼀个数x,若0<x<p,则必定存在唯⼀的y (0<y<p),使得x = aymod p,当p很⼤时,很难求出y。
有以下公式:
((axmod p)y)mod p = axymod p
example:
1 | a = 3,p = 7 |
dh算法的安全性则是基于这个问题的难解性。
DH算法基本原理
此时两个计算的共享密钥是相等的,中间人通过窃听双方在通信过程中的信息是可以获取到Ya,Yb,a,q这四个值的,而中间人若想知道双方计算出来的K的话,就需要知道某一方的指数,即Xb或者Xa,假设说中间人要获取Xb的值,那么Xb就等于${log_a{Yb}}$,而计算离散对数的结果是非常困难的,而对于大素数来说,求解离散对数被认为是不可能的,因此当q取极大值时,计算Xb是不可能的。
example:
a = 3 q = 17
当Xa = 15 时
Ya = 315 mod 17 = 6
6 – > 发送给了Blob
当Xb = 13 时
Yb = 313 mode 17 = 12
12 –> 发送给Alice
Alice的共享密钥为 1215 mode 17 = 10
Blob的共享密钥为 613 mode 17 = 10
以上即为DH加密算法
摘自blibli