Diffe_Hellman算法
1、Diffe_Hellman算法概念
Diffe_Hellman(迪菲-赫尔曼)算法也叫DH算法是Whitefield Diffie和Martin Hellman在1976年公布的一种密钥交换算法或者说是一种密钥交换协议,它是一种建立密钥的方法,而不是加密方法,所以密钥必须和其他一种加密算法结合使用。这种密钥交换技术的目的在于使双方在不泄露密钥的情况下协商出一个密钥来方便之后的数据加解密。
Diffie-Hellman密钥交换算法的有效性依赖于计算离散对数的难度。
简言之,可以如下定义离散对数:首先定义一个素数p的原根a,为a各次幂产生从1 到p-1的所有整数根,也就是说,如果a是素数p的一个原根,那么数值
b1 = a1 mod p,
b2 = a2 mod p,
……,
bp = ap-1 mod p
是各不相同的整数,并且以某种排列方式组成了从1到p-1的所有整数。
而对于一个整数b和素数p
的一个原根a
,可以找到惟一的指数i
,使得
b=ai mod p, (0<=i<=p-1)
指数i
称为b
的以a
为基数的模p
的离散对数或者指数。该值被记为inda ,p(b)。
2、Diffe_Hellman算法过程描述
以Alice和Bob利用Diffie-Hellman 密钥交换算法交换密钥的过程来说明该算法:
(0)前提说明,Alice和Bob都知道密钥交换过程中需要用到的素数p和p的一个原根a,这两个值可以由发起通信的那一方选择并发送给通信的另一方。
(1)Alice选择自己私钥Sa,计算出自己的公钥,Pa = aSa mod p,然后把Pa传给Bob;
(2)Bob选择自己私钥Sb,计算出自己的公钥,Pb = aSb mod p,然后把Pb传给Alice;
(3)Alice根据Bob的公钥、自己的私钥、P和a计算出用于对称加密的加密密钥,K = PbSa mod p;
(4)Bob根据Alice的公钥、自己的私钥、P和a计算出用于对称加