DHE 和 ECDH 有什么区别?

信息安全 密钥生成 密钥交换 diffie-hellman
2021-08-12 19:08:04

我了解到完美的前向保密是通过 DHE 和 ECDH 实现的,但这两个密钥交换有什么区别?

也有人可以解释完美的前向保密是如何工作的吗?我在网上找到了各种各样的答案,包括:生成了一个从未共享的秘密会话密钥,有一个根据两个用户的随机输入而变化的会话密钥,还有一个从共享秘密派生的会话密钥只有 2 个用户知道。

2个回答

首先,我为数学道歉,以及过度简化数学!

DHE 和 ECDH 的区别在于两个要点:

  • DHE 使用模运算来计算共享秘密。
  • ECDH 类似于 DHE,但除此之外,它使用代数曲线来生成密钥(椭圆曲线是代数曲线的一种)。

两种情况下的总体方法仍然是Diffie-Hellman(或者我们现在称它为 Diffie-Hellman-Merkle?)

完美的前向保密是通过使用临时密钥对来保护每个会话来实现的——它们根据需要生成,在会话期间保存在 RAM 中,并在使用后丢弃。

“永久”密钥对(由证书颁发机构验证的密钥对)用于身份验证,并在交换临时密钥时对其进行签名。不是为了保护会话。

这是否更好地解释了一些事情?

编辑:详细检查您的示例...

从未共享的秘密会话密钥

嗯,这是 DH 密钥交换的定义,但与完美前向保密无关。DH 允许双方独立计算共享秘密将是,而无需通过仍然不安全的通道以明文形式传输共享秘密。

基于来自两个用户的随机输入而改变的会话密钥

...当然,连接的双方都将使用本地随机源来派生他们的临时会话密钥,但我认为上述措辞没有抓住重点:通过在使用后丢弃会话密钥来实现完美的前向保密。

从只有 2 个用户知道的共享密钥派生的会话密钥

现在你在想“这个事实如何给我们完美的前向保密?” 强调一点:完美的前向保密是通过在使用后丢弃会话密钥来实现的。

完美前向保密 (PFS) 意味着长期密钥材料的泄露不会泄露先前从长期材料中派生的会话密钥。这意味着记录了您之前所有协议运行的窃听者无法导出过去的会话密钥,即使他以某种方式了解了您的长期密钥(可能是 RSA 私钥)。幸运的是,后者仅用于实现身份验证,而不是实际会话密钥的派生(如在 STS 或 ECDH 协议中,因为 DHE 容易受到中间人攻击)。

DHE 和 ECDH 都提供 PFS,因为假设很难解决数学 Diffie-Hellman 问题(根据 g、g^x 和 g^y 的值计算 g^xy)和离散对数问题(给定 g ^k 和 g) 用于 DHE 和椭圆曲线离散对数问题(找到 n 给定,nP 和 Q)用于 ECDH。因此,即使使用私钥,窃听者也无法导出会话密钥,除非他能够解决“困难”的数学问题。ECDH 是 Diffie-Hellman 协议的一种变体,它使用椭圆曲线加密来降低计算、存储和内存要求。