DH密钥交换

一 什么是DH密钥交换

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

虽然这种方法的名字叫“密钥交换”,但实际上双方并没有真正交换密钥,而是通过计算生成出一个相同的共享密钥。因此,这种方法也称DH密钥协商。

二 DH密钥交换的步骤

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

1 Alice向Bob发送两个质数P和G

P必须是一个非常大的质数,而G则是一个和P相关的数,称为生成元。G可以是一个较小的数字。

P和G不需要保密,被窃听者获取了也没关系。

此外,P和G可以由Alice和Bob中的任意一方生成。

2 Alice生成一个随机数A

A是一个1~P-2之间的整数。这个数是一个只有Alice知道的秘密数字,没有必要告诉Bob,也不能让窃听者知道。

3 Bob生成一个随机数B

B是一个1~P-2之间的整数。这个数是一个只有Bob知道的秘密数字,没有必要高数Alice,也不能让窃听者知道。

4 Alice将 G的A次方 mod P 这个数发送给Bob

这个数让窃听者知道也没关系。

5 Bob 将 G的B次方 mod P 这个数发送给Alice

这个数让窃听者知道也没关系。

6 Alice用Bob发过来的数计算A次方并求 mod P

这个数就是共享密钥。

上面将mod P的“G的B次方的A次方” 改写成了“G的A*B次方”

7 Bob用Alice发过来的数计算B次方并求 mod P

上面将mod P的“G的A次方的B次方”改写成了“G的A*B次方”

于是Alice和Bob就计算出相等的共享密钥了。

 

  • 28
    点赞
  • 113
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值