简单英语的“Diffie-Hellman 密钥交换”

信息安全 密码学 密钥交换 diffie-hellman 不对称
2021-08-28 21:51:31

有人可以用简单的英语解释一下Diffie-Hellman 密钥交换算法吗?我读到 Twitter 已经实现了这项技术,它允许两方在非安全通道之上交换加密消息。这是如何运作的?

4个回答

Diffie-Hellman 是一种在两个人之间生成共享秘密的方式,通过观察通信无法看到秘密。这是一个重要的区别:您不是在密钥交换期间共享信息,而是一起创建密钥

这特别有用,因为您可以使用此技术与某人创建加密密钥,然后开始使用该密钥加密您的流量。即使流量被记录下来并在以后进行分析,也绝对无法找出密钥是什么,即使创建它的交易所可能已经可见。这就是完美前向保密的来源。以后分析流量的任何人都不能闯入,因为密钥从未保存过,从未传输过,也从未在任何地方可见。

它的工作方式相当简单。许多数学与您在公钥加密中看到的相同,因为使用了陷门函数虽然传统上使用离散对数问题(x y mod p业务),但一般过程也可以修改为使用椭圆曲线密码学

但即使它使用与公钥加密相同的基本原理,这也不是非对称加密,因为在交换过程中没有任何东西被加密或解密。然而,它是一个重要的组成部分,实际上是后来构建非对称加密的基础。

基本思想是这样的:

  1. 我想出了一个质数p和一个与p-1互质的数g并将这些数字告诉你。(仅供参考:p代表“Prime”,g代表“发电机”)

  2. 然后,您选择一个秘密号码 ( a ),但您不告诉任何人。相反,您计算并将结果发送回给我。(我们称它为“ A ”,因为它来自a)。ga mod p

  3. 我做同样的事情,但我们将调用我的秘密数字b和计算出来的数字B所以我计算并将结果发送给您(称为“ B ”)。 gb mod p 

  4. 现在,你拿着我发给你的号码,用它做同样的操作所以这是: Ba mod p 

  5. 我对你发给我的结果做了同样的操作,所以:. Ab mod p 

这里的“魔法”是我在第 5 步得到的答案与你在第 4 步得到的数字相同。现在这并不是真正的魔法,它只是数学,它归结为模指数的奇特属性。具体来说:

(g a mod p) b mod p = g ab mod p
(g b mod p) a mod p = g ba mod p

如果您仔细检查,这意味着无论您以哪种顺序进行幂运算,您都会得到相同的答案。所以我以一种顺序进行,而您以另一种顺序进行。我永远不知道你用什么秘密号码来得到结果,你也不知道我用了什么号码,但我们仍然得到相同的结果。

结果,我们在第 4 步和第 5 步中偶然发现的那个数字就是我们的共享密钥。我们可以将其用作 AES 或 Blowfish 或任何其他使用共享机密的算法的密码。我们可以确定,除了我们之外,没有其他人知道我们共同创造的钥匙。

仅供参考:DH 参数
步骤 1 中的数字(pg)是“Diffie-Hellman 参数”。您通常会提前计算好这些,因为这需要一段时间。这些不是秘密,因此它们往往会被重复使用。很长一段时间以来,许多服务器都只使用相同的pg,而不是特别好的值,这导致了一些混乱(被命名为Logjam),如果您有兴趣,可能会很有趣。

其他答案很好地解释了密钥交换背后的数学原理。如果您想要更多的图形表示,没有什么比Diffie–Hellman 密钥交换Wikipedia 条目中显示的出色的油漆类比更好的了:


DH 密钥交换图像

图片属于公共领域

Diffie-Hellman 是一种用于在两方之间建立共享秘密的算法。它主要用作交换加密密钥的方法,用于对称加密算法(如 AES)。

算法本身非常简单。假设 Alice 想与 Bob 建立一个共享秘密。

  1. Alice 和 Bob事先就素数p和底数达成一致。g对于我们的示例,我们假设p=23g=5
  2. Alice 选择一个a值为 6 的秘密整数并计算A = g^a mod p在此示例中,A 的值为 8。
  3. Bob 选择一个秘密整数 b,其值为 15 并计算B = g^b mod p在此示例中,B 的值为 19。
  4. Alice 发送A给 Bob,Bob 发送B给 Alice。
  5. 为了获得共享秘密,Alice 计算s = B^a mod p在这个例子中,Alice 获得了s=2
  6. 为了获得共享秘密,Bob 计算s = A^b mod p. 在此示例中,Bob 获得 的值s=2

该算法是安全的,因为导出所需的a和的值根本不会通过网络传输。bs

如果你想要一个更简单、通俗易懂的 DH 英文解释,即使是非技术人员也能轻松理解,那就是双锁盒类比。

  1. 爱丽丝把一个秘密放在一个盒子里,然后用她唯一可以打开的钥匙把它锁起来。然后她把盒子寄给鲍勃。

  2. Bob 收到了盒子,放了第二把只有他有钥匙的挂锁,然后把它寄回给 Alice。

  3. 爱丽丝打开她的锁并将盒子第二次寄给鲍勃。

  4. Bob 取下他的锁,打开盒子,并可以访问 Alice 发送给他的秘密。

由于盒子在运输过程中总是至少有一个锁,所以 Eve 永远没有机会看到里面的东西并窃取秘密:这是一个加密密钥,将用于加密 Alice 和 Bob 通信的其余部分。