在 Ephemeral Diffie Hellman Key Exchange 中 - 实际上什么是短暂的?

信息安全 tls 密码学 diffie-hellman
2021-09-06 04:35:32

刚开始了解 Diffie-Hellman,看起来很简单,但我很难找到任何资源来解释 Ephemeral Diffie Hellman 密钥交换,实际上是什么是短暂的?

因此,在 DH 中,我们有一个众所周知的素数 p,以及在循环乘法群上的 ag mod p,其中 g 是该群的生成器。

  1. Alice 选择一个随机 a,Bob 选择一个随机 b,两者都是 mod p。
  2. 爱丽丝计算 A = g^a mod p
  3. Bob 计算 B = g^b mod p
  4. Bob 将 B 转给 Alice
  5. Alice 将 A 转给 Bob。
  6. Alice 计算 B^a mod p
  7. Bob 计算 A^b mod p
  8. 这两种计算都得到相同的答案,因此已经建立了一个共享密钥。

在短暂的 Diffie Hellman 中,究竟什么是短暂的?p 和 g 会改变吗?a 和 b 是否定期重新计算?

谢谢

2个回答

A & B 被称为 Alice 和 Bob 交换的ephemerals它并不比这更复杂。还有其他使用 Diffie Hellman 的方法,例如DSA - 数字签名算法,其中没有出现术语 ephemeral。

此外,通常,(P,g) 不仅针对网站,而且针对与最近有关 Logjam 攻击和 NSA 可能的黑客攻击有关的大部分互联网(通过 RFC)进行修复。这是我写的无论如何,(P,g) 创建起来很复杂,所以大多数人使用已经存在的那些。因此,它们变化不大。鉴于最近的曝光,看起来我们需要使用更大的,或者你可以自己计算(应该是一个大 P)。

(a,b) 不会定期重新计算,除非通过某些网络安全协议的策略,或者在 TLS 的情况下,密码套件配置。我对 TLS 密码套件配置不够熟悉,无法回答这个问题。通常,为了提高安全性,网络会话应定期重新计算会话密钥。这通常是 8 小时,虽然它可以更短或更长。数学中没有任何东西需要重新计算,只是建议。

这是我的镜头。我对此并不完全满意。我很感激批评。

至少公钥/私钥。有时参数。

我不认为这是很好的定义。但我没有任何来源支持这一点。(如果有人可以给我看一份标准文件,我会很高兴被证明是错误的。对我来说,任何事情都比不确定性要好。)

TLS1.2 RFC 说服务器可以选择这三个:

  struct {
      opaque dh_p<1..2^16-1>;
      opaque dh_g<1..2^16-1>;
      opaque dh_Ys<1..2^16-1>;
  } ServerDHParams;     /* Ephemeral DH parameters */

所以服务器可以改变这三个中的任何一个。

但我认为实际上只有服务器的 pubkey ( dh_Ys) 会改变。应该足以提供前向保密。

但只有当你的

  opaque dh_p<1..2^16-1>;
  opaque dh_g<1..2^16-1>;

不太可能很快被打破。(就像它们是 2048 位一样。)(Thomas Pornin 在另一个问题上说要获得错误的 DH 参数,您必须故意这样做。

F5的“单DH使用”

现在我查看了 F5 的网站,了解他们的负载均衡器如何实现 EDH。

他们有一个选项Single DH use ,我认为它可以重新生成 dh_p/dh_g 对。

这是报价单。我不明白我为什么要那样。让我很困惑。

单DH使用

此选项在使用临时/临时 DH 参数时创建一个新密钥。如果要防止小型子组攻击,则必须使用此选项,当 DH 参数不是使用强素数生成时(例如,使用 DSA 参数时)。如果使用强质数,则不必在每次握手期间生成新的 DH 密钥,但我们建议这样做。每当使用临时/临时 DH 参数时,您都应该启用 Single DH use 选项。

F5 键每小时生成一次

F5 有一篇文章说从 BIG-IP 11.4.0 开始,新的临时密钥的生成每小时发生一次。

我怀疑他们正在互换使用“键”和“参数”。

CryptoPP 将“重新生成的密钥对”方法称为短暂的。

CryptoPP 谈到 EDH 时,他们的意思是:组保持不变。密钥对更改。

Citrix NetScaler 我不确定。

同样,我不确定它们是否完全区分 dhparams 和 dh-keypair。

dh文件

要安装的 PEM 格式 DH 参数文件的名称和路径(可选)。/nsconfig/ssl/ 是默认路径。

配置后端配置文件时,此参数不适用。

dhCount

客户端和 NetScaler 设备之间的交互次数,之后重新生成 DH 私有-公共对。零 (0) 值指定无限使用(不刷新)。

配置后端配置文件时,此参数不适用。

最小值:0

最大值:65534

dhKeyExpSizeLimit

此选项允许使用 NIST 推荐的(NIST Special Publication 800-56A)位大小作为私钥大小。例如,对于大小为 2048 位的 DH 参数,建议的私钥大小为 224 位。这是四舍五入到 256 位。

可能的值:启用、禁用

默认值:禁用

这里dhKeyExpSizeLimit让我很困惑。我不明白您为什么允许该部分是用户可定义的。