DH 算法原理

一、DH算法

DH 算法其实也叫作 Diffie - Hellman 密钥交换协议,是一个不安全的秘钥共享网络协议,无法避免中间人攻击。

二、DH算法的原理

假设 Ali Bob 需要互相通信并共享秘钥

  1. Ali 先给 Bob 一个明文共享参数 ,此信息可以被任何人识别。
  2. Ali 自己生成一个随机数 (Ali 的私钥) ,并不将  告诉包括 Bob 在内的任何人。
  3. Bob自己生成一个随机数(Bob 的私钥) ,并不将  告诉包括 Ali 在内的任何人。
  4. Ali 通过自己的私钥 进行加密后( )的值传送给 Bob 。
  5. Bob通过自己的私钥 Ali 通过第 4 步发送给 Bob 的信息()进行加密得到
  6. 同理,Bob 通过 自己的私钥 进行加密后( )的值传送给 Ali 。
  7. Ali 通过自己的私钥 Bob 通过第 6 步发送给 Bob 的信息()进行加密得到
  8. 因此Ali和Bob得到了他们协议后的公钥 ,及他们各自的私钥 私钥 

在这一过程中 必须是一个非常大的质数,才能保证在第4步第6步中相互传递加密信息之后,私钥 私钥 不会被第三方攻击者猜出来。

DH算法通信过程图示

前面也说过,DH 算法无法避免中间人攻击,个人觉得原因是 A 和 B 通信时,对方不一定是 B 和 A,因为没有对双方进行认证。

 

作者:云子可信
链接:https://www.zhihu.com/question/274142856/answer/676178421
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DH算法是一种用于密钥交换的协议,它允许两个通信方通过交换公钥来生成共享密钥。在DH算法中,Alice和Bob首先选定一个质数p和一个原根g作为公开参数。然后,他们分别生成自己的私钥和公钥,并将公钥传递给对方。最后,他们使用自己的私钥和对方传递过来的公钥计算出共享密钥。 在给定的例子中,Alice选择的公钥为A=4,Bob选择的公钥为B=9。他们的质数p=13和原根g=7已经提前确定。 根据DH算法原理,Alice可以通过遍历所有可能的私钥值,找到与自己的公钥匹配的私钥XA。同样地,Bob可以通过遍历所有可能的私钥值,找到与自己的公钥匹配的私钥XB。 经过计算,我们可以得到Alice的私钥为XA=3,Bob的私钥为XB=4。然后,他们可以使用这些私钥计算出共享密钥K1=9。 因此,根据给定的例子,Alice的私钥为3,Bob的私钥为4,他们交换的公钥为9。 这是DH算法在Python中的实现示例,它可以根据输入的公开参数和公钥计算出私钥和共享密钥: ```python p = 13 g = 7 KA = 4 KB = 9 for i in range(p): if (pow(g, i) - KA) % p == 0: XA = i break for i in range(p): if (pow(g, i) - KB) % p == 0: XB = i break K1 = pow(KB, XA) % p K2 = pow(KA, XB) % p if K1 == K2: print("Alice的私钥为:", XA) print("Bob的私钥为:", XB) print("Alice和Bob交换的密钥为:", K1) ``` 这段代码将输出结果为: Alice的私钥为: 3 Bob的私钥为: 4 Alice和Bob交换的密钥为: 9 请注意,这只是一个简单的示例,实际上DH算法可以支持更大的质数和原根来提高安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值