第十九章 DH / 19.1 DH算法介绍

DH算法是W.DiffieM.Hellman提出的。此算法是最早的公钥算法。它实质是一个通信双方进行密钥协商的协议:两个实体中的任何一个使用自己的私钥和另一实体的公钥,得到一个对称密钥,这一对称密钥其它实体都计算不出来。DH算法的安全性基于有限域上计算离散对数的困难性。离散对数的研究现状表明:所使用的DH密钥至少需要1024位,才能保证有足够的中、长期安全。

首先,发送方和接收方设置相同的大数数ng,这两个数不是保密的,他们可以通过非安全通道来协商这两个素数;

       接着,他们用下面的方法协商密钥:

发送方选择一个大随机整数x,计算X= g^x mod n ,发送X给接收者;

接收方选择一个大随机整数y,计算Y = g^y mod n ,发送Y给发送方;

双方计算密钥:发送方密钥为k1=Y^x mod n,接收方密钥为k2=X^y mod n

其中k1=k2=g^(xy) mod n

其他人可以知道ngXY,但是他们不能计算出密钥,除非他们能恢复xyDH算法不能抵御中间人攻击,中间人可以伪造假的XY分别发送给双方来获取他们的秘密密钥,所以需要保证XY的来源合法性。