在讨论对称加密算法(如高级加密标准(AES))时,您可能一直在考虑使用AES-128或AES-256。最后三位数字代表密钥的长度——可以把它想象成一把物理钥匙中的齿数。从安全角度来看,256位密钥显然更好,但是您选择这两个选项中的哪一个真的很重要吗?本文介绍了AES-128和AES-256的一些主要安全注意事项。
暴力攻击保护
蛮力密钥猜测攻击是攻击者尝试每个潜在的秘密密钥,直到找到正确的密钥。这种攻击肯定会(最终)成功,并且(理想情况下)应该是破解加密算法的最快方法。
在讨论暴力攻击保护时,了解不同密钥长度的含义至关重要。随着量子计算的到来,了解它们将如何影响密码安全性也是一件好事。当前形式的AES是否足够强大?
密钥长度的差异
128位和256位加密算法之间的主要区别在于它们使用的密钥长度。AES-128和AES-256中的128和256表示这两种算法分别使用128位和256位的密钥。
密钥越长,攻击者就越难通过暴力破解进行猜测。然而,AES-256的强度不仅仅是AES-128的两倍。
对于128位和256位密钥,AES-128和AES-256分别有2128和2256个潜在密钥。对于二进制密钥,密钥长度中每增加一位,密钥空间就会加倍。这意味着AES-256的密钥数量是AES-128的2^128或340,282,366,920,938,463,463,374,607,431,768,211,456倍。
因此,对AES-256密钥的暴力攻击比对AES-128密钥的暴力攻击要难得多。然而,即使是128位密钥也能抵御现代技术的攻击。在其巅峰时期,比特币网络——可以说是现代最大的密码学计算能力应用——每秒执行大约150*10^18≈2^67次操作。假设这些操作与暴力攻击的难度相同,则比特币网络需要70,000,000,000,000,000,000,000,000年才能破解单个AES-128密钥。
抗量子计算
量子计算对密码学的威胁已广为人知。量子计算机的工作方式与传统计算机截然不同,而且量子算法可以使针对密码学的攻击更加有效。
对于非对称加密算法(如RSA),量子计算可以完全破解它们。然而,对于像AES这样的对称算法,格罗弗算法——最著名的攻击这些加密算法的算法——只会削弱它们。Grover算法将对称加密算法的有效密钥长度减少了一半,因此AES-128的有效密钥空间为2^64,AES-256的有效密钥空间为2^128。
然而,虽然这看起来很重要,但它并没有破坏任何一种算法。使用合适的量子计算机,AES-128大约需要2.61*10^12年才能破解,而AES-256则需要2.29*10^32年。作为参考,宇宙目前的年龄约为1.38×10^10岁,因此使用量子计算机破解AES-128所需的时间比宇宙存在时间长约200倍。
这也假设攻击者拥有“正确的”量子计算机。破解AES-128估计需要2,953个逻辑量子位,而AES-256需要6,681个。2020年,最大的量子计算机拥有65个量子位,目标是到2023年达到1,000个。
引擎盖下的128位和256位算法
针对秘密密钥的蛮力攻击是针对安全算法的最佳潜在攻击,但如果算法存在漏洞怎么办?
AES分为两种不同的算法:加密算法(执行实际加密)和密钥计划(将秘密密钥转换为轮密钥)。每一项的安全性都关系到AES的安全性。
加密算法
AES-128和AES-256使用几乎相同的加密算法。每个加密算法都采用一组操作并将它们应用一定次数或“轮次”。AES加密算法之间的唯一区别是轮数:AES-128使用10,AES-256使用14。
这意味着,如果发现针对AES算法的攻击,它可能会同时影响AES-128和AES-256。唯一的区别是攻击是否仅在特定数量的AES回合中起作用(某些AES攻击会这样做)。如果攻击在至少10轮但少于14轮内有效,那么AES-128和AES-256之间存在明显的赢家。但是,目前还没有针对AES的此类攻击。
关键时间表
关键时间表是AES-128和AES-256变得非常不同的地方。AES-128密钥表旨在将一个128位密钥转换为十个128位圆形密钥。AES-256密钥表将256位密钥转换为14个128位轮密钥。
在这两者中,AES-128密钥计划实际上更安全。AES-256密钥计划具有已知的弱点,这些弱点可能会导致对该算法执行相关的密钥攻击。
相关的按键攻击不应该在现实生活中发生。为此,攻击者需要:
说服密钥所有者使用他们现有的加密密钥
使用攻击者已知的关系基于此密钥创建另外三个密钥
使用这些密钥加密2个99.5(八个后跟29个零)数据块
即使这种攻击是可行的,也可以通过使用良好的密钥生成实践来简单地避免。一个真正的随机密钥永远不会容易受到相关密钥攻击,因为它没有相关密钥。
尽管执行这种攻击是不可行的,但一些密码学家建议——当在AES-128和AES-256之间自由选择时——使用AES-128而不是AES-256。如果你有一个更简单的算法和更强的密钥调度,为什么要使用更复杂的算法呢?
在AES-128和AES-256之间进行选择
128位和256位AES各有利弊。AES-128速度更快、效率更高,并且不太可能对其进行全面攻击(由于更强大的密钥计划)。AES-256对暴力攻击的抵抗力更强,对相关密钥攻击的抵抗力较弱(无论如何都不应该发生)。
由于这两种算法都可以抵御现代和预期的未来威胁,因此从安全角度来看,它们之间的选择并不重要。我们最好的指导是AES-128提供了足够的安全性,同时速度更快,资源效率更高,但是想要通过更大的密钥大小和更多轮次的算法提供额外安全性的读者应该选择AES-256。
文章来自:https://www.freebuf.com/