DH 或 DHE 是否有密钥长度定义?

信息安全 diffie-hellman
2021-09-01 03:27:31

我在 wiki 上找到了这个

对于相同的密钥大小,有限域 Diffie-Hellman 算法的密钥强度与 RSA 大致相同。破除 Diffie-Hellman 的功因数是基于离散对数问题,这与 RSA 的强度所依据的整数因式分解问题有关。因此,3072 位 Diffie-Hellman 密钥的强度与 3072 位 RSA 密钥大致相同。

如何定义 Diffie-Hellman 密钥长度?

根据DH原则:

Y = g^X 模 p

p、g、X 还是 Y?根据wiki的意见,哪一个等于3072位

2个回答

密钥大小是传统的我的意思是,没有通用的、数学上接受的“密钥大小”概念可以匹配所有算法。对于对称算法,通常具有给定长度n的位序列的密钥,这样所有可能的长度为n的序列(其中有2 n个)都是可接受的密钥;在这种情况下,密码学家倾向于谈论n作为“密钥大小”。这里已经有麻烦了,DES 有 64 位密钥,其中只有 56 位被使用,所以 DES 可以说是使用 56 位密钥。同样,3DES 使用 192 位密钥,实际上是 168 位密钥;并且,为了进一步混淆,有一种已知算法(理论上)在努力2 112中破坏了 3DES,因此有时说 3DES 具有“112 位”安全级别。另一个麻烦的算法是 RC2,它有一个额外的“有效密钥大小”参数,可以将 RC2 对暴力破解的抵抗力降低到可配置的值,即使密钥更长。

对于非对称密码学,事情更加复杂,因为公钥和私钥不再是“只是位序列”。例如,一个 RSA 公钥由两个整数组成,模数公共指数传统上使用模数的大小作为“RSA 密钥大小”,即使不可能将整个 RSA 公钥放入该大小的位序列中(因为公共指数没有空间) .

对于 Diffie-Hellman,标准是ANSI X9.42标准始终避免提及“密钥大小”。相反,它总是谈论“ p的大小”和“ q的大小”。两种尺寸对于安全性都很重要,但不在同一范围内。也就是说,DH 使用以大素数p为模的数字和生成器g工作。生成器g “生成”整数模p的子组:如果考虑连续值1gg 2g 3 ...模p,你会在某个时候回到1 。g是最小整数k > > 0使得g k = 1 mod p数学告诉我们k必然除以p-1使用这些符号:

  • 如果以g为底的离散对数p被破坏,则 DH 可能被破坏。有些算法的成本取决于p的大小,因此您希望p足够大以使这些算法过于昂贵。该类型最著名的算法是通用数域筛和当前记录的变体,因为“随机”模p是 530 位(可以制作特殊形式的模p,这使得离散对数更容易,但是随机素数将以压倒性的概率避免这种情况)。

  • 离散对数也可以在一段时间内被打破,这取决于使用的指数大小和k的阶数。如果在 Diffie-Hellman 中,一方在t个连续值的范围内选择其私有指数,并且k的最大素因子( g的阶)是q,那么该类型的算法将在一段时间内破坏 DH取决于qt中的最小值。这些是“通用”算法,其运行时间与q的平方根(或t,如果它更小)成正比。

所以基本上你有三种尺寸

  • DH 私钥生成的t大小:每个参与方生成 1..t-1范围内的随机 DH 私钥。
  • q的大小,它是生成器g的k阶的最大素因子
  • 模数p的大小。

在某些协议中,q是显式生成的,因此具有已知的大小,然后生成p使得p-1q的倍数。然后选择g以精确地具有顺序q ( g q = 1 mod p )。在这些协议中,我们设置t = qq是已知的,系统生成1..q-1范围内的私钥。

在一些其他协议中,p被生成为所谓的“安全素数”,即,(p-1)/2也是素数。在这种情况下,p = 2q+1对于这些协议,DH 私钥将在较小的t范围内生成,通常为 160 到 256 位。

在其他一些协议中,q根本不知道,只是假设它足够大。这是SSL/TLS的情况(对于 DHE 密码套件,Server Key Exchange消息包含pg但不包含q,因此客户端不知道q)。同样,使用范围t

我们想要一些n的n位安全性,这意味着破坏算法应该具有平均成本2 n操作。要达到这样的安全级别,q的大小和t的大小至少应为2n位,但p必须大得多。给出数字,一般估计如果你寻找n = 112(112 位安全性,这是你用 3DES 进行对称加密得到的),那么你需要qt至少为 224 位,但p应该至少为 2048 位。


总结:当谈到 DH 时,像 1024 或 3072 这样的“大”尺寸通常意味着“ p的大小”,而像 160 或 256 这样的“小”尺寸通常意味着“ q的大小”或“ t的大小” . “尺寸”没有标准,实际上该标准并没有定义唯一的一刀切尺寸。

在您的维基百科引用中,“3072 位”是p的大小(模数)。y是 DH 公钥,在1..p-1范围内,因此也是 3072 位(或稍小)。私有指数x在1..t-1范围内选择,该范围可能与 3072 位一样大(甚至更大),但更小的范围(例如)256 位对于安全性来说是完全可以接受的。

正如@Polynomial 所说,请参阅此站点以比较密钥大小。

Diffie-Hellman 有两种密钥大小:离散日志密钥大小和离散日志组大小。这些分别映射到qp

截至 2013 年,它们的合理大小为 224 位q和 2048 位p

您可以使用KeyLength来获取各种密钥生命周期和安全裕度的估计值。

在 Crypto SE 上查看这个问题也是值得的,它提供了有关此事的更多技术细节。