下图试图为像我这样数学不强的人解释 diffie-hellman 密钥交换:

我确实理解颜色/油漆示例如何说明这个想法。但是我有点困惑它如何映射到非常大的数字的使用,就像真正的协议一样。
特别是上图的最后阶段,
接受彼此的颜料混合物,他们添加了他们的秘密颜色,最终得到了一个共同的秘密。这个秘密在图片中是相同的颜色。但是如果使用其他一些秘密颜色怎么办,我的意思是不能保证最终得到相同的颜色是吗?
这与使用大数有什么关系。它们最终得到的数字是否与公共秘密相同?
下图试图为像我这样数学不强的人解释 diffie-hellman 密钥交换:

我确实理解颜色/油漆示例如何说明这个想法。但是我有点困惑它如何映射到非常大的数字的使用,就像真正的协议一样。
特别是上图的最后阶段,
接受彼此的颜料混合物,他们添加了他们的秘密颜色,最终得到了一个共同的秘密。这个秘密在图片中是相同的颜色。但是如果使用其他一些秘密颜色怎么办,我的意思是不能保证最终得到相同的颜色是吗?
这与使用大数有什么关系。它们最终得到的数字是否与公共秘密相同?
对于大数,Diffie-Hellman 看起来像这样:我们以一个大素数p为模,我们从一个传统的大整数g(在2..p-2范围内)开始。每个整数模p代表一种获得的颜色;g本身就是起点,即图片中的“黄色”。
每个油漆都是一个整数;可能的油漆色调范围很大(至少 2 160)。将新涂料x与当前混合物v混合是模幂运算:新混合物变为v x mod p(您将v提高到x次方,工作模p,因此您回到1..p-1中的整数范围)。完全不混合油漆等同于混合油漆“1”,因为v 1 = v mod p。
Diffie-Hellman 的工作得益于两个特点:
单向性:给定v和v x,很难重新计算x。在油漆类比中,任何人都可以混合油漆,但没有人可以“取消混合”混合的东西。
交换性:混合涂料x,然后涂料y,产生与混合y 和x相同的结果。使用数字:(g x ) y = g xy = (g y ) x mod p。对于油漆,这意味着将黄色放入蓝色中产生的绿色与将蓝色放入黄色中产生相同的绿色。这就是为什么爱丽丝和鲍勃最终会得到相同的颜色。
在图片中,爱丽丝和鲍勃以黄色开头。爱丽丝混合了橙色,而鲍勃在他自己的纸上使用了青色。然后爱丽丝和鲍勃交换了他们的文件;爱丽丝得到黄色+青色的纸,而鲍勃现在有黄色+橙色的纸。爱丽丝不知道她当时拥有的是黄色+青色;她只知道她混合了黄色和“鲍勃使用的任何秘密颜色”。然后她混合了她自己的秘密颜色(与她最初在她自己的床单上使用的颜色相同,现在在 Bob 手中),这就是黄色+青色+橙色。类似地,Bob 将青色添加到他从 Alice 那里得到的工作表中,得到黄色+橙色+青色,即相同的最终色调。这是有效的,因为每张纸上都涂有 Alice 和 Bob 的秘密颜色(橙色和青色),并且混合顺序对最终色调无关紧要。安全,因为“在电线上”(窃听者可及)传播的只是混合床单:间谍会看到黄色+橙色床单,甚至知道它是黄色和爱丽丝的秘密颜色的混合,然后解决爱丽丝的秘密颜色是橙色是很难的。
油漆类比失效的地方:与所有类比一样,它并不完美。模块化算法有两个对安全性至关重要的特征,并且不会转化为绘画:
模整数“环绕”。至少在理论上,你可以混合很多不同的颜料,然后恢复到最初的黄色。这些数字油漆可以相互抵消;这就好像有“负颜料”可以去除颜料而不是添加新颜料。用实际的油漆,大量混合只能达到一些深灰色的粘稠状态。
音调可以彼此相似,而不是整数。如果一个间谍(我们称他为查尔斯)观察爱丽丝的黄色+橙色床单,他可以用黄色和他自己的颜料做实验。例如,如果查尔斯将黄色和红色混合,他会得到接近他观察到的纸张的东西,比他将黄色和蓝色混合更接近。然后查尔斯可以用几种不同的粉红色、赭色和橙色再试一次,直到他确定爱丽丝的秘密颜色。这适用于物理油漆,但不适用于模块化整数,您无法猜测您是“接近”还是“不接近”。
这说明了一个基本点:所有这个协议都是关于信息的。查尔斯想要的是“取消混合”颜料,但不一定要破坏性地这样做;事实上,Charles 的最大兴趣是让 Alice 的工作表毫发无损地到达 Bob 手中(如果受害者实际上没有完成密钥交换,因此不使用交换的密钥,那么破坏密钥交换协议是没有意义的)。查尔斯想要做的是使用他自己的颜料库存来获得爱丽丝的秘密颜色的副本(或至少是最终色调的副本)。