AES-256 密钥长度重要性

信息安全 AES 密码策略
2021-08-25 07:42:51

我已经阅读了一些关于 AES-256 加密方法的信息。但是我仍然对密钥长度的重要性感到困惑?

上下文:我想用 AES-256 选项加密一个 7Zip 存档。我想知道我的密码应该多长。我不想在这里考虑生成密码的方式,假设我有能力生成一个包含字符、数字和符号的完全随机密码。我不想谈论破解加密的时间,因为我没有对此提出建议的例子。

问题:如果我使用 256 位 AES,这是否意味着我应该使用至少256 位密钥,即32 个字符如果这是错误的,为什么它是错误的?

我在这里阅读了一些关于 AES 的信息, AES 对蛮力攻击有多安全它似乎说我们应该使用 256 位密钥。

2个回答

AES-256 使用的密钥长度正好为 256 位。

因为加密需要一个精确大小的密钥,所以 7Zip 不会直接使用您的密码作为加密密钥。相反,它通过密钥派生函数运行密码以生成合适的加密密钥。

由于您的密码不直接用作加密密钥,因此它的长度并不重要。相反,重要的是密码的“熵”,它衡量知道您如何生成密码的攻击者猜测您的密码的难度。如果您使用 32 个随机字节,您将拥有一个包含 256 位熵的密码,一个包含197 个语法正确英文乱码字符的密码也是如此。更简单的密码具有更低的熵,并且更容易猜测。

256 位的密钥大小为密码的有用复杂性设置了上限。例如,如果您使用 48 个随机字节(或 300 个乱码字符),攻击者可能会忽略您的密码,而是搜索一个较短的密码(可能 32 个字节长),该密码会生成相同的密钥。

简短的回答:您可以使用任何您喜欢的密码,7zip 不会使用您的密码作为原始密钥。

长答案:AES 密钥大小的选择取决于您,您需要分析成本与风险。256 位 AES 通常被认为几乎永远安全,可以抵御暴力攻击(但这不是会破坏 AES 的那种攻击)。

但是,您绝对不应该使用密码作为原始密钥。相反,您应该使用密钥派生函数来添加一些熵并生成合理的密钥。

这正是 7zip 所做的(我不知道它做得如何以及它使用什么算法)。这最终意味着您使用的密码用于生成正确长度的 AES 密钥。