这篇描述 AES 的维基百科文章说:
相关密钥攻击可以破坏 AES-192 和 AES-256,复杂度分别为 2^176 和 2^99.5。
这是否意味着 AES-256 实际上是一种比 AES-192 更弱的加密形式?我目前正在编写一个小型密码管理程序,我应该使用哪个?如果有人能解释 AES-256 与 AES-192 相比的弱点,那也很酷。
这篇描述 AES 的维基百科文章说:
相关密钥攻击可以破坏 AES-192 和 AES-256,复杂度分别为 2^176 和 2^99.5。
这是否意味着 AES-256 实际上是一种比 AES-192 更弱的加密形式?我目前正在编写一个小型密码管理程序,我应该使用哪个?如果有人能解释 AES-256 与 AES-192 相比的弱点,那也很酷。
相关密钥攻击是算法的有趣数学属性,但对加密系统的安全性没有实际影响,只要它们被用于它们的设计,即加密(而不是,例如,作为散列函数的构建块) .
越大不一定越好。在 192 位密钥或 128 位密钥上使用 256 位密钥没有实际需要。但是,具有 128 位密钥的 AES 稍快一些(这在大多数应用程序中并不重要),因此可能有客观的理由不使用更大的密钥。此外,AES-128 比其他密钥大小得到更广泛的支持(例如,在美国以外的地区,Java 默认提供 AES-128,而更大的密钥大小必须显式激活)。
AES-128、AES-192 或 AES-256 都不能用今天(或明天)的技术破解(如果应用得当的话)。试着算出 2 99.5是什么:它……有点大。
Thomas 是正确的(和往常一样),但使用特定“等级”加密还有其他非技术原因。
在某些分类中,您有义务使用特定类型和密钥位长度。这样做的原因是保证数据将被保护至少 30 年而不是 10 年。是的,会有对算法的攻击,它们会减少暴力破解所需的工作量。虽然 2^167 和 2^99.5 位密钥都完全属于“荒谬”领域,但如果有足够的时间、摩尔定律,以及可能更多/更好的攻击进一步减少有效密钥长度,我们可能会在不久的将来达到这一点暴力破解 AES-128 可能是可能的,但 256 种可能仍然超出任何人的计算能力。
这就是您对更长密钥位长度的赌注:它可能会在 30 年内破解,但在 10 年内不会破解,到那时,如果被攻击者解密,受保护的信息将不会产生太大影响。