DHP,全称是Diffie Hellman Protocol,是一种交换密钥的方式。
在私钥加密体系中,密钥是非公开的,加密和解密使用的是同一个密钥,那么如何传递密钥?DPH提供了在公共channel传递密钥的方法。
假设A和B要通信,那么二者传递key的方式如下:
先选择质数p和底数g,公开。
(1)A产生一个随机数a,a是保密的。
(2)A发送A = g^a % p给B。
(3)B也产生一个随机数b,发送B = g^b % p给A。
(4)A 使用 a计算key,key=B^a % p
(5)B 使用 b计算key,key=A^b % p。
其中a,b是private的,A,B,p,g是public的。
(1)正确性证明,即B^a % p =A^b % p。
B^a % p = (g^b % p)^a % p = (g^b - kp)^a % p = g^(ab) % p; 同理A^b % p = g^(ab) % p ,得证。
注:(a % p)^b % p = a^b % p。利用二项式展开。
(2)破解的可能性,必须得到a或者b,a和b都是余数方程,那么是一个不定方程,存在两个未知数,通常p和a都是很大的数字,这个方程是很难解的。
如果觉得《【信息安全】DHP》对你有帮助,请点赞、收藏,并留下你的观点哦!