前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DH算法 | Diffie-Hellman 密钥交换

DH算法 | Diffie-Hellman 密钥交换

作者头像
秋名山码神
发布2022-12-13 15:15:40
1.6K0
发布2022-12-13 15:15:40
举报
文章被收录于专栏:码神随笔

概述:

DH 算法又称“Diffie–Hellman 算法”,像往常的算法名字一样,这是用俩个数学牛人的名字来命名的算法,实现安全的密钥交换,通讯双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。

优点:

  1. 通讯双方事先不需要有共享的秘密。
  2. 用该算法协商密码,即使中间被截获,也无法解密出来密钥是啥

缺点:

  1. 没有办法进行认证
  2. 计算很复杂,但是一般情况下,一个会话只用计算一次,那么假如有大量的请求,就会耗费大量的资源来进行计算,容易受阻塞性攻击
  3. 其余的缺点,感兴趣的可以自行百度(QAQ)

数学理论支撑

从概念上讲,要想破解DH算法,那么就是在求解离散对数问题

离散对数难题是指:当已知一个大质数p和它的一个原根a,如果给定一个b,要计算i的值是相当困难的。

是一个典型的正向求解简单,逆向求解特别难的问题

举例:

通讯双方(张三、李四)需要先约定好算法参数(algorithm parameters):一个素数 p 作为模数,一个素数 g 作为基数(g 也称为“生成元”)。这两个算法参数是可以对外公开滴。

对于张三而言,需要先想好一个秘密的自然数 a 作为私钥(不能公开),然后计算 A = ga mod p 作为自己的公钥(可以公开)。 对李四而言也类似,先想好一个秘密的自然数 b 作为私钥(不能公开),然后计算 B = gb mod p 作为自己的公钥(可以公开)。 张三和李四互相交换各自的公钥。 然后张三计算出 k = Ba mod p,李四计算出 k = Ab mod p

我们不难发现,张三和李四最后计算出来的k必然是一致的 他们都无法通过已知 的数来推算出对方的私钥 对于中间截获者来说,虽然能看到 p,g,A,B,但是无法推算出 a 和 b(就是说,旁观者无法推算出双方的私钥),自然也无法推算出 k

DH算法

算法核心:为了生成一个共享的秘密——密钥

算法步骤:

在这里插入图片描述
在这里插入图片描述
  1. 客户端随机生成随机值Ra 计算Pa(x, y) = Ra * Q(x, y), Q(x, y)为全世界公认的某个椭圆曲线算法的基点 将Pa(x, y)发送至服务器
  2. 服务器随机生成随机值Rb 计算Pb(x,y) = Rb * Q(x, y) 将Pb(x,y)发送至客户端
  3. 客户端计算Sa(x,y) = Ra * Pb(x,y) 服务器计算Sb(x,y) = Rb *Pa(x,y)
  4. 算法保证了Sa = Sb = S,提取其中的S的x向量作为密钥(预主密钥)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述:
  • 数学理论支撑
  • DH算法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档