1、描述密钥交换的过程

1.1 什么是DH密钥交换

DH密钥交换是1976年由Diffie和Hellman共同发明的一种算法。使用这种算法,通信双方仅通过交换一些可以公开的信息就能够生成出共享的密码数字,而这一密码数字就可以被用作对称密码的密钥。IPsec中就使用了经过改良的DH密钥交换。

1.2 DH密钥交换的步骤

现在假设Alice和Bob需要共享一个对称密码的密钥,然而双方之间的通信线路已经被被(qieting)者(qieting)。这时,Alice和Bob可以通过下面的方法进行密钥交换,从而生成共享密钥。 image.png

  • Alice向Bob发送两个质数P和G P必须是一个非常大的质数,而G则是一个和P相关的数,成为生成元。G可以是一个较小的数字。 P和G不需要保密,被(qieting)者获取了也没关系。 此外,P和G可以由Alice和Bob中的任意一方生成。
  • Alice生成一个随机数A A是一个1~P-2之间的整数。这个数是一个只有Alice知道的秘密数字,没有必要告诉Bob,也不能让(qieting)者知道。
  • Bob生成一个随机数B B是一个1~P-2之间的整数。这个数是一个只有Bob知道的秘密数字,没有必要告诉Alice也不能让(qieting)者知道。
  • Alice将G的A次方 mod P 这个数发给Bob 这个数让(qieting)者知道也没关系。
  • Bob将G的B次方 mod P 这个数发给Alice 这个数让(qieting)者知道也没关系。
  • Alice用Bob发过来的数计算A次方并求mod P 这个数就是共享密钥。 image.png
  • Bob用Alice发过来的数计算B次方并求mod P image.png Alice和Bob就计算出等的共享密钥。