Diffie-Hellman密钥交换

DH密钥交换是一种安全协议,允许双方在不安全的信道上创建共享密钥。通过混合颜色比喻,解释了如何在第三方无法得知的情况下,双方可以协商出相同的密钥。关键在于离散对数问题,确保了即使第三方知道混合后的颜色也无法逆向推导出原始颜色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DH密钥交换是一种安全协议,它可以让双方在不安全的信道上创建一个密钥。双方互相发送的数据就算被第三方知晓,也无法知道加密信息的密钥。

其解决问题的主要思想可以用下图来解释:

在这里插入图片描述
Alice和Bob想要协商出一个只有它们两人知道的颜色,不能让第三方知道,怎么办呢?解决办法如下:

先从它们共同拥有的颜色(图中为黄色)开始,这个黄色是大家都知道的,第三方知道也没有关系。
Alice选了一个只有自己知道的颜色(图中为红色),并将之混入大家知道的黄色中,形成新的颜色(图中为棕色)。
Bob也选了一个只有自己知道的颜色(图中为淡绿色),并将之混入大家都知道的黄色中,形成新的颜色(图中为浅蓝色)。
Alice和Bob交换混合后的颜色。(这里假定人们很难从混合颜色中找到是哪两种颜色混合的,安全性保证取决于此,所以即使第三方知道了混合后的颜色也没有用,因为它推断不出来只有Alice和Bob自己掌握的红色和淡绿色)
Alice收到Bob发送过来的混合色后,再加入只有自己知道的红色,得到秘密颜色=黄色+红色+淡绿色(图中为土色,在图的最下方)。
Bob收到Alice发送过来的混合色后,再加入只有自己知道的淡绿色,得到秘密颜色=黄色+淡绿色+红色。
至此,Alice和Bob各自拥有了只有它们两人知道的秘密颜色,且秘密颜色是相同的。
这里的关键是,混合后的颜色,人们无法知晓是由哪两种颜色混合而成的。由此,很容易想到数学难题,离散对数问题。数学描述如下:

在这里插入图片描述
这里,aaa只有Alice知道,bbb只有Bob知道,g,pg,pg,p是公开的,KKK是最终计算出的共享密钥。

一般描述如下:

Alice和Bob协商一个有限循环群GGG和它的一个生成元ggg,一个大素数ppp;
Alice生成一个随机数aaa,计算A=gamod pA=g^a mod\ pA=g 
a
 mod p,将AAA发送给Bob;
Bob生成一个随机数bbb,计算B=gbmod pB=g^b mod\ pB=g 
b
 mod p,将BBB发送给Alice;
Alice计算K=Bamod p=(gb)amod pK=B^a mod\ p=(g^b)^a mod\ pK=B 
a
 mod p=(g 
b
 ) 
a
 mod p,得到共享密钥KKK;
Bob计算K=Ab mod p=(ga)b mod pK=A^b\ mod\ p=(g^a)^b\ mod\ pK=A 
b
  mod p=(g 
a
 ) 
b
  mod p,得到共享密钥KKK;
(gb)a=(ga)b(g^b)^a=(g^a)^b(g 
b
 ) 
a
 =(g 
a
 ) 
b
 因为群是乘法交换的,涉及到数论及代数的内容。Alice和Bob同时协商出KKK,作为共享密钥。

最后,安全性问题,DH密钥交换可以防窃听(即,你知道我们交换的数据也没关系),但是DH本身并没有提供通讯双方的身份验证服务(正确交换的前提是,Alice必须确保对方是Bob),无法抵御中间人攻击。
————————————————
版权声明:本文为优快云博主「让我思考一下」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/s_lisheng/article/details/90694413

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值