在这里观看动画版本ðð»
离散对数问题是什么?
为了了解差异 - 赫尔曼算法,必须了解数学中的离散对数问题。
对数函数遵循陷阱门函数的概念。板门功能易于朝一个方向计算,但很难朝相反的方向计算。
让我们以这种方式可视化:
给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,我将在其中分享所有网络开发的内容。如果您渴望与我一起学习和成长,请点击“订阅”按钮,让我们深入研究编码和学习的世界ð
也在此处发布: