解释的算法:Diffie-Hellman

到达此处,您已经参与了Diffie-Hellman密钥交换! (或至少是一个变体)。 Diffie-Hellman是一种在两个端点(各方)之间建立共享秘密的方法。

该算法背后的数学实际上很简单。 我将先解释我们要做的事情,然后再解释我们如何实现它。

假设爱丽丝(Alice)和鲍勃(Bob)希望彼此交流,而约翰不知道他们在说什么或发送什么。 爱丽丝寄给鲍勃的任何东西,约翰都会收到,同样,鲍勃寄给爱丽丝的任何东西,约翰也会收到。 那么,在约翰不理解的情况下,爱丽丝和鲍勃如何互相发送任何东西? 那就是Diffie-Hellman出现的地方。

我将直接研究它的数学原理,但是可以用直观的方式进行解释,您可以在家中用一些涂料自己进行测试。

首先,爱丽丝(Alice)和鲍勃(Bob)公开决定了两个素数gn (约翰也会得到一个副本)。 通常, g是一个很小的质数, n很大,通常为2000或更常见的4000位长。 所以现在爱丽丝,鲍勃和约翰都知道这些数字。

现在,爱丽丝秘密决定另一个数字a 。 鲍勃秘密地决定了数字b 。 爱丽丝和鲍勃都不会发送这些号码,它们会自己保留。 爱丽丝执行计算g ^ a mod n ,我们称它为A ,因为它来自a 。 然后,Bob执行g ^ b mod n ,我们将其称为B。

爱丽丝(Alice)发送鲍勃( A) ,鲍勃(Bob)发送爱丽丝( B) 。 注意John现在有4个数字, A,B,gn,但没有ab 。 最后,换个心机把戏。 爱丽丝接受鲍勃的B并执行B ^ a mod n 。 类似地,鲍勃采用爱丽丝的A并执行A ^ b mod n 。 这导致相同的数字,即B ^ a mod n = A ^ b mod n 。 他们现在有一个共享号码。 请注意,John如何无法从他得到的数字中弄清楚这些数字是什么。

实际上,他可以并为其命名,称为解决离散对数问题。 如果我们使n很大,这将成为一个计算上非常繁重的问题,根本就没有时间去弄清楚。 John将不得不从AB中找出ab ,这太浪费时间了。

那么,爱丽丝和鲍勃可以用刚刚创建的这个密钥做什么呢? 那么他们可以使用它来开始加密彼此发送的消息。 一个非常简单的示例,因为它极其不安全,因此不应该在任何地方使用,它是使用移位密码(凯撒密码)加密其消息的,其中移位值由新生成的密钥确定。 爱丽丝(Alice)和鲍勃(Bob)都可以对消息进行加密和解密,因为他们知道移位值,但是约翰(John)没有密钥,因此不能。

哦,如果您要尝试使用油漆,请对g和n使用单一颜色而不是两种颜色,并且只要执行计算,就可以混合使用油漆。

如果您对此感兴趣,请访问www.pyler.io ,我们在这里提供了出色的在线Python课程,使您立即从入门者那里学习!

“ Slither into Python” —下个月在Pyler.io上发布

From: https://hackernoon.com/algorithms-explained-diffie-hellman-1034210d5100

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值