有人不使用更长的密钥有什么理由吗?

信息安全 公钥基础设施 密钥生成
2021-08-20 22:47:50

据说更大的密钥大小更难暴力破解;是否有任何理由有人会决定改用较小的密钥?

使用较大的密钥大小是否有任何负面影响,例如性能,或者与旧版本的加密/解密软件的兼容性差?

4个回答

密钥的每一位都会以指数方式增加暴力攻击的难度,但需要权衡取舍。向密钥添加更多位将对加密/解密速度产生负面影响。这种速度损失的实际量取决于算法,例如在 RSA(理论上)中,对于n-bit密钥,加密的计算量与 成正比n^2,而解密的量与 成正比n^3,因此在 RSA 中将密钥加倍意味着加密将慢四倍,解密将(几乎)慢八倍。

我认为值得一提的另一件事是感谢英仙座指出。有一个限制,打破算法所需的更多时间变得毫无意义,因为出于实际目的,它已经“永远”了。作为一个“现实世界”的类比,想象你正在为沙漠中的短途旅行打包口粮,并且正在决定你想带多少水。对于少量的水,“越多越好”是一种合理的方法,因为您可能需要比计划停留更长时间或洒一些水。但是,当您已经带走了整个亚马逊河时,再增加地球上所有水的数量并没有帮助。当有人试图说服您使用 8192 位 RSA 时,这就是我们所说的维度。

按密钥长度计算的 RSA 解密时间

(来自Javamex的图表)

对于椭圆曲线算法,我们假设找到随机椭圆曲线元素相对于已知基点的离散对数是不可行的。ECC 的主要好处实际上是更小的密钥大小,例如,256 位 ECC 公钥应该提供与 3072 位 RSA 公钥相当的安全性。基于用于解决 ECDLP 的主要算法(例如婴儿步巨步)需要 n^(1/2) 步的事实,增加/减少 n 位将影响解/加密速度。

至于你的附带问题,我不会太担心,但考虑到你在谈论长度,“更长”是首选。

有几点需要考虑:

  • “密钥大小”不一定灵活。在对称加密算法(例如 AES)中,密钥是必须具有特定长度的“一串位”。AES 本身不是一种算法,而是三个算法家族,它们分别接受 128、192 和 256 位的密钥。没有其他密钥大小适合。

  • 实现可能有限制。如果我们考虑 RSA,它的密钥是大整数(具有一些数学结构),算法本身是相当灵活的,但实现有限制:有些不支持超过 2048 位的密钥;有些会要求密钥大小为“圆形”(例如 32 的倍数)。我使用可以执行 1024 位和 2048 位 RSA 的智能卡,但没有其他密钥大小。

  • 成本随着密钥大小而增加。CPU成本已在其他答案中引用;但大小也很重要:4096 位 RSA 签名比 2048 位 RSA 签名长两倍。我们在这里谈论网络带宽;这可能比 CPU 更重要。

  • 取决于国家/地区,加密密钥长度(尤其是出口)存在或至少曾经存在法律限制。这导致广泛部署的实现无法处理超出一定大小的密钥。例如,某些软件可以使用 AES-128,但不能使用 AES-256。即使取消了法规,部署的软件也不会在一夜之间更新。

  • 尽管人们喜欢拥有更大的钥匙,但它在某些时候变得毫无意义。我们需要“足够强大”的密钥来击败任何没有外星技术的攻击者。对于对称加密,这很快:对称密钥是一堆没有特定结构的n位,因此破解这样的密钥平均需要2 n-1 次操作,因此 128 位密钥足以保证安全。对于非对称加密,攻击不是“暴力破解”,而是对密钥的数学结构起作用,这取决于算法;对于 RSA,2048 位(方式)足以击败你的对手(是的,甚至是 NSA / FSB / Illuminati 或任何你最喜欢的克星)。

    因此,超过这些值的密钥增长对安全性没有任何影响(至少没有积极影响——更大的密钥可能意味着性能下降,因此会激励用户不使用它们,这反过来又会降低安全性)。坚持使用 4096 位 RSA 或 AES-256 的人被误导了,或者出于其他原因这样做(另一只熊会说,更大的钥匙是求偶仪式的求偶展示,与红色跑车属于同一类别)。

实际上说

  • 对于对称加密,您需要 AES-128。对 AES-256 的支持稍微少一些,并且会产生 +40% 的 CPU 成本(额外的成本通常并不重要,但它可能会发生)。

  • 对于使用 RSA 的非对称加密或签名,请转到 2048 位密钥。1024 位密钥尚未破解,但理论上是人类技术可以达到的(需要一台尚未建造的专用机器,因为它的成本甚至比最富有的大学愿意花费的成本高得多)。有些部署的实现不能处理大于 2048 位的密钥,有些也不能处理 1024 到 2048 之间的密钥大小。2048 位密钥因此最大限度地提高了互操作性,并且对安全性很好。

  • 用ECDSA或者其他椭圆曲线的算法,数学结构不同,所以数字也不同。256 位 EC 密钥与 AES-128 一样好,事实上,NIST P-256 曲线是任何处理 ECDSA 的地方都支持的曲线。

最近的 Citrix Netscaler PR 版本指出,密钥大小从 1024 位翻倍到 2048 位,将 CPU 计算需求从 4 倍提高到 8 倍。

(来自网络计算文章

更大/更长的密钥(我相信它们是可以互换的)在使用过程中需要更多的计算工作——处理器周期。因为密钥通常用于非对称架构(例如,一个 Web 服务器用于多个 Web 客户端),所以较大的密钥对服务器的累积影响更大,这反过来会降低性能和/或迫使服务器所有者投入更多资源和资金问题(更大的服务器场、SSL 卸载程序等)

因此,密钥大小往往足够大以提供有效保护,但不会更大。

由于移动设备(智能手机和平板电脑)的普及,典型最终用户计算机中的可用 CPU 资源量在过去五年中下降了,而不是上升。随着更便宜的产品(即电子墨水阅读器)进入市场,对于普通用户来说,这种趋势是否会增加减少资源存在争议,但普遍认为计算密集型软件(例如Lastpass)至少应该支持低CPU设备。

这样做的一个后果是密钥长度和相关的计算量大的操作。作为一个例子,Lastpass 建议使用移动设备的用户减少密码迭代 (PBKDF2)。我找不到网络链接,但是在 in 界面中更改 Lastpass 密码时会提到这一点。