Diffie-Hellman密钥交换

上篇说到了RSA公钥加密算法,这里看一下D-H密钥交换。

首先我们看一下数学上的概念:

本原根:我们定义素数p的本原根为其乘方能够产生从1到p - 1的所有整数的数

比如:若a是素数p的本原根,那么下列数字:

a mod p, a^2 mod p ,…… ,a^(p - 1) mod p

是互不相同的数字, 并且以某种排列包含了从1~p - 1的所有整数。也就是说,对于任何小于 p 的整数 b 和 素数 p 的本原根来说,都有唯一一个指数i满足:

b = a^i mod p   其中0 <= i <= (p - 1)

好了,更加深入的数学自行学习,我们和学习RSA一样,先来开一下D-H密钥交换中使用的几个值:

  1. XA :用户A选择的一个小于q随机整数(用户A私有)
  2. XB :用户B选择的一个小于q随机整数(用户B私有)
  3. YA :用户A计算出来的供对方使用的公有值
  4. YB :用户B计算出来的供对方使用的公有值

在这个方案中,素数q和q的本原根整数α 是两个众所周知的数字,密钥的生成过程如下:

假设有两个用户A和B,首先A选择一个随机的并且小于q的整数 XA 并且计算这里写图片描述 。B用户也随机选择一个小于q的整 XB 并且计算这里写图片描述。这样就得到了 YA YB ,也就是A和B的公有值, XA XB 对应 A和B的私有值。

这样有了公有值 YA YB ,然后双方交换 YA YB 给对方,然后用户A和用户B根据传过来的值计算他们要使用的密钥值,计算的公式如下:

===========================

!!!很重要!!!

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

===========================

根据上述四个公式可以在数学上严密的知道A用户和B用户计算出来的K值是相同的(数学公式自行推导),与此同时,在网络传输的过程中并没有K值的泄露,在网络上进行传输的只有素数q和q的本原根整数α以及相互交换的 YA YB ,根据这四个值是无法推测出K的值的,所以D-H密钥交换也是比较安全的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值