为什么不使用更大的密钥?

信息安全 密码学 不对称 密码选择
2021-08-20 22:43:23

RSA Security 通常使用大小为 1024 位、2048 位甚至 3072 位的密钥。并且大多数对称算法仅在 112 位和 256 位之间。 我确实意识到当前的密钥对于今天的硬件来说已经足够安全了,但是随着计算机变得越来越快,我们是否应该考虑使用像一百万位左右这样大得惊人的密钥来保护自己免受尚未发明的超级计算机系统的侵害?

所以换句话说,选择一个太大的密码密钥会有什么后果,为什么每个人都限制他们的密钥大小?

4个回答

我翻出我的Applied Cryptography副本来回答这个关于对称加密的问题,256 已经足够了,而且可能会持续很长时间。施奈尔解释说;

更长的密钥长度更好,但仅在一定程度上。AES 将具有 128 位、192 位和 256 位密钥长度。这比可预见的未来需要的时间要长得多。事实上,我们甚至无法想象一个可以进行 256 位暴力搜索的世界。它需要在物理学和我们对宇宙的理解方面取得一些根本性的突破。

热力学第二定律的结果之一是表示信息需要一定的能量。通过改变系统状态来记录单个位需要不少于kT的能量,其中T是系统的绝对温度,k是玻尔兹曼常数。(坚持我;物理课快结束了。)

假设k = 1.38 × 10 -16  erg/K,并且宇宙的环境温度为 3.2 Kelvin,一台运行在 3.2 K 的理想计算机每次设置或清除一个位时将消耗 4.4 × 10 -16 ergs。要运行比宇宙背景辐射更冷的计算机,需要额外的能量来运行热泵。

现在,我们太阳的年能量输出约为 1.21 × 10 41尔格。这足以在我们的理想计算机上驱动大约 2.7 × 10 56个单位的变化;足够的状态更改以将 187 位计数器置于其所有值中。如果我们在太阳周围建造一个戴森球,并在 32 年内毫无损失地捕获其所有能量我们可以为计算机提供动力,使其数到 2 192当然,它不会有剩余的能量来使用这个计数器进行任何有用的计算。

但这只是一颗星,而且是微不足道的一颗。典型的超新星会释放 10 51尔格。(大约一百倍的能量将以中微子的形式释放,但现在让它们离开吧。)如果所有这些能量都可以引导到一个单一的计算过程中,那么一个 219 位的计数器就可以循环遍历所有的其状态。

这些数字与设备的技术无关;它们是热力学允许的最大值。他们强烈暗示,在计算机不是由物质以外的东西构成并占据空间以外的东西之前,对 256 位密钥的暴力攻击将是不可行的。

大胆是我自己的补充。

备注:请注意,此示例假定存在“完美”加密算法。如果您可以利用算法中的弱点,密钥空间可能会缩小,您最终会得到有效更少的密钥位。

它还假设密钥生成是完美的——每比特密钥产生 1 比特熵。这在计算环境中通常难以实现。一个不完美的生成机制可能会为 256 位密钥产生 170 位熵。在这种情况下,如果知道密钥生成机制,则蛮力空间的大小会减少到 170 位。

然而,假设量子计算机是可行的,任何 RSA 密钥都将使用 Shor 算法破解。(见https://security.stackexchange.com/a/37638/18064

RSA 密钥如此之小的原因是:

RSA 密钥长度每增加一倍,解密速度就会慢 6-7 倍。

所以这只是另一个安全便利性权衡。这是一个图表: 按密钥长度计算的 RSA 解密时间

来源:http ://www.javamex.com/tutorials/cryptography/rsa_key_length.shtml

对于一个 AES 是为三种密钥大小构建的128, 192 or 256 bits

目前,暴力破解 128 位甚至不可行。假设,如果 AES 密钥有 129 位,那么暴力破解 129 位密钥所需的时间是 128 位密钥的两倍。这意味着 192 位和 256 位的较大密钥将花费更长的时间来攻击。暴力破解其中一个密钥需要非常长的时间,以至于在实现密钥之前太阳会停止燃烧。

2^256=115792089237316195423570985008687907853269984665640564039457584007913129639936

这是一个大到吓人的数字。这就是有多少个可能的键。假设密钥是随机的,如果您将其除以 2,那么您平均需要多少个密钥才能暴力破解 AES-256

从某种意义上说,我们确实拥有您所说的非常大的密钥。对称密钥的全部意义在于使暴力破解不可行。将来,如果攻击 256 位密钥成为可能,那么密钥大小肯定会增加,但那是一段相当长的路要走。

RSA 密钥比 AES 密钥大得多的原因是因为它们是两种完全不同的加密类型。这意味着一个人不会像攻击 AES 密钥那样攻击 RSA 密钥。

攻击对称密钥很容易。

  1. 从位串开始 000...
  2. 使用该位串解密密文。
  3. 如果你能读懂它,你就成功了。
  4. 如果您无法读取它,则增加位串

攻击 RSA 密钥是不同的......因为 RSA 加密/解密适用于大半素数......这个过程是数学的。使用 RSA,您不必尝试所有可能的位串。您尝试的次数远远少于2^10242^2048位串……但仍然无法进行暴力破解。这就是 RSA 和 AES 密钥大小不同的原因。[ 1 ]

总结一切并用1句话回答您的问题。我们不需要大得离谱的对称密钥,因为我们已经有了大得离谱的对称密钥。与 2048 位 RSA 密钥相比,256 位加密听起来很弱,但算法是不同的,不能像那样“逐位”比较。将来如果需要更长的密钥,那么将会开发新的算法来处理更大的密钥。如果我们想要在当前硬件上做得更大,这只是时间上的权衡。更大的密钥意味着更长的解密时间意味着更慢的通信。这对于密码来说尤其重要,因为您的互联网浏览器将建立并使用对称密钥来发送信息。

处理时间,纯粹而简单。安全中的一切都是在安全需求(将坏人拒之门外)和可用性(让好人进入)之间的平衡行为。即使使用专用硬件进行计算,加密也是一项处理成本高的操作。

对于大多数目的而言,超出一定的安全级别根本不值得,因为权衡变得更加难以使用,同时几乎没有提供切实的好处(因为十亿年和一千亿年之间的差异在实用术语)。

此外,对于 RSA 与 AES,这是对称与非对称加密的本质。简而言之,使用对称密码学(其中有一个共享密钥),没有什么可以开始猜测的,因此非常困难。对于 RSA 等非对称加密,您正在披露与解密密钥(私钥)相关的一条信息(公钥)。虽然这种关系“非常难以”计算,但它远比没有信息可工作要弱得多。正因为如此,更大的密钥大小对于使从公钥中获取私钥的问题变得更加困难,同时试图限制加密和解密的数学问题的难度。