Diffie-Hellman及其简单的数学在5分钟内解释
#javascript #网络开发人员 #node #tls

在这里观看动画版本ðð»

离散对数问题是什么?

为了了解差异 - 赫尔曼算法,必须了解数学中的离散对数问题。

对数函数遵循陷阱门函数的概念。板门功能易于朝一个方向计算,但很难朝相反的方向计算。

让我们以这种方式可视化:

给2茶匙咖啡,1茶匙糖和半杯牛奶,您可以制作咖啡。

现在喝了相同的咖啡,您能猜出确切的咖啡,糖和牛奶吗?

modulo操作是一个操作,结果是通过两个给定整数作为操作数执行的分区操作的其余部分。

我们说13 mod 5â€3,因为13 = 5 x 2 + 3

如果我们想找到x,以便5^x mod 13â€11?

让我们为X尝试许多值,然后检查我们找到答案的尝试进行了多少个尝试。

8次尝试后,我们会发现x = 8,我们将获得5的功率x mod 13是11

现在这是有趣的地方。

让我们说我们有x'mod p。

,但是现在我们的p是一个很大的素数(而不是13),而g和x也很大(而不是5和11)。

总的来说,我们的意思是,真的很大。想象例如p等于2048位

p=292463028894281219037597349727360684779483317376473239399537257843546320734871513839651347201104480199877191389522614785890996622493775440722572336903336882065975199234931879695261910015161305537526235180562475469982005301778126151856278585195545100903316048416565416635315530213841740854981894053524430751990450476315137696784232893772161407889014577329968174019042697407332291644176957214843165640734510101308586892775505187939228207220238747243895829499434176678189216930154964392995431879145409980273938229601680574417474486982384981120906945098803000392061156847661464691587852166635245652933518718150794527

在这些情况下,您能找到Y吗?

这是离散对数问题的要旨,即使使用当前一代计算机,也需要很长时间才能解决。

使用质数的原因之一是避免重复模式。

例如,让我们以p = 12,一个非素数

  • 21 mod 12 = 2
  • 22 mod 12 = 4
  • 23 mod 12 = 8
  • 24 mod 12 = 4(重复)
  • 25 mod 12 = 10
  • 26 mod 12 = 2(重复)
  • 27 mod 12 = 4(重复)
  • 28 mod 12 = 8(重复)

例如,对于p = 11,素数:

  • 21 mod 11 = 2
  • 22 mod 11 = 4
  • 23 mod 11 = 8
  • 24 mod 11 = 5
  • 25 mod 11 = 10
  • 26 mod 11 = 9
  • 27 mod 11 = 7
  • 28 mod 11 = 3
  • 29 mod 11 = 6
  • 210mod 11 = 1

离散对数问题是Diffie-Hellman Exchange算法的基础。

Diffie-Hellman

Diffie-Hellman密钥交换可用于在不安全的网络上安全地交换秘密密钥。它使用质数和Modulo操作的概念起作用。

首先,杰伊普(Jayp)和乔(Joe)都同意两个数字:g和p,是一个较大的素数。这些将通过公共互联网共享。

然后,Jayp和Joe的每个人都会生成一个随机的私钥,该密钥将不会通过Internet共享。

Jayp在下面的屏幕截图中使用公式计算其公共密钥,并将其发送给Joe。
同样,乔还以相同的方式计算他的公钥并将其发送给Jayp。

回顾到现在为止,双方都通过公共互联网分享了参数G和P及其各自的公共钥匙。 私钥未共享。现在,让我们看看如何从这些参数中得出共享的秘密。

jayp使用下面的屏幕截图中所示的方程计算他一侧的共享秘密。

乔还使用相同的方程式在他身边计算共享秘密。

他们每个独立计算的秘密键将相同。

为什么?好吧,由于简单的数学。让我们在双方使用公共钥匙的替换。

这解释了Jayp和Joe如何在不实际传输的情况下产生共享的秘密价值做出贡献。

给定p,g和y,计算S.

很容易

但是,在公共互联网上,查迪只能看到P和G,他很难计算Y。计算y是我们刚刚谈到的离散对数问题。

在TLS握手中,共享的秘密将被送入所谓的键推导功能。

KDF作为输入共享的秘密和其他参数,例如盐和一些其他特定于应用程序的信息。

使用所有这些输入,KDF将产生许多键,例如MAC键,以及用于数据加密的对称密钥。

无耻的自我促进ð

我正在启动我的新YouTube频道JayPMedia,我将在其中分享所有网络开发的内容。如果您渴望与我一起学习和成长,请点击“订阅”按钮,让我们深入研究编码和学习的世界ð

也在此处发布: