【问题标题】:I have general questions about Diffie Hellman parameters我对 Diffie Hellman 参数有一般性问题
【发布时间】:2017-04-27 15:16:34
【问题描述】:

我目前正在处理 Diffie-Hellman 密钥交换并将密钥对用于 AES。

Q1) 当我从 RFC 3526 中为 Diffie-Hellman 选择素数(例如 1536、2048、3072 MODP 组)时,更大的素数是否更安全?你能解释一下吗?

Q2) 每个组都有 2 的生成器,如果我使用 RFC3526 中的标准素数组,我是否应该始终使用 2 作为生成器??

Q3) 我正在使用来自 Diffie-Helman 的密钥对用于 AES。我了解 AES 的密钥长度可以是 128、192 或 256 位。我应该在 Diffie-Hellman 中选择特定的素数还是生成器来满足 AES 的 128、192 或 256 位的密钥长度??

很抱歉在一篇文章中提出三个问题,但我相信它们都是相关的问题。谢谢!!

【问题讨论】:

    标签: security aes diffie-hellman


    【解决方案1】:

    RFC 3528 中,他们在第 8 节“安全注意事项”中解决了您的问题。我将尝试在这里重申/解释答案:

    1. 简而言之,是的,较大的素数“更安全”。假设 Diffie-Hellman 没有从根本上被破坏,那么“破解”交易所的难度,即找出交易所建立的共享密钥,直接与所使用的素数的大小成正比。但是,在 AES 术语中,额外的一位素数并不等于额外的一位“密钥强度”。这是因为,简单地说,并非每个数字都是素数。例如,在 AES-128 中,我们期望密钥是 128 个随机位的字符串,这意味着密钥可以是 2^128 种可能性中的任何一种。然而,我们永远不会在 Diffie-Hellman(或 RSA,或任何其他需要素数的东西)中使用 128 位素数,因为长度为 128 位的素数远少于 2^128 个。因此,如果我们使用 128 位素数,攻击者不必尝试所有 2^128 种可能性,他们只需尝试数量少得多的 128 位素数。因此,为了说我们拥有与 AES-x 相同的“密钥强度”,我们需要使用大得多的素数,这样我们就有许多可能的素数在 2^x 的范围内。
    2. 我会说是的。如有疑问,请遵循参考实现;在这种情况下,使用 2 作为生成器。
    3. 第 8 节中的表格显示了提供的各种素数组的“强度估计”;我总是以较低的估计他们的实力。所以对于 AES-128,至少使用 3072 位组;对于 AES-192,至少 8192 位组。

    【讨论】:

    • 谢谢它真的帮助了我哈!
    • 一般建议是正确的,尽管其背后的推理并不那么正确。打破 DH 与达到某个大小的素数数量无关(我们知道这个数字,顺便说一句,它是由素数定理给出的)。相反,它的安全性取决于使用number field sieve 破解素数的难度。该算法的运行时间为 e^[(1 + o(1))^(1.923 (Log p)^(1/3) * (Log Log p)^(2/3))] 阶。对数是自然的。将 p 设置为 2^3072 的数量级会产生大约 2^128 的运行时间。
    • @TheGreatContini 我可以再问一个问题吗?强度估计究竟是什么意思?与 3072 位组一样,强度估计范围为 130 ~ 210 位。这是否意味着建议使用该范围内的密钥加密 3072 位组??
    • @F. Stephen Q 我可以再问一个问题吗?强度估计究竟是什么意思?与 3072 位组一样,强度估计范围为 130 ~ 210 位。这是否意味着建议使用该范围内的密钥加密 3072 位组?
    • @Michael 是的,这是正确的。它本质上是打破它的操作次数的日志。因此,如果文档说强度估计为 130,则破坏该 DH 组的操作数约为 2^130。这个概念是 DH 强度估计不应小于破解您正在交换的密钥的努力。 128 位 AES 密钥需要花费 2^128 才能破解,因此在这种情况下,您可以使用 3072-DH 交换 128 位 AES,但您不应该使用它来交换 256 位 AES。
    猜你喜欢
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多