一个 43 个字符的安全随机生成的混合大小写字母数字密码(每个字符有 2 个额外字符以提供 64 种可能性)将构成 258 位熵 (6 * 43 = 258)。
由于 AES 对称密钥长度的黄金标准是 256 位,我的结论是否正确直接位二进制密钥(而不是从密码中派生)?
我正在寻找陷阱,例如尽管指定 gpg 命令使用 AES256,KDF 是否仍将仅从我的 258 位熵创建一个 128 位密钥?
一个 43 个字符的安全随机生成的混合大小写字母数字密码(每个字符有 2 个额外字符以提供 64 种可能性)将构成 258 位熵 (6 * 43 = 258)。
由于 AES 对称密钥长度的黄金标准是 256 位,我的结论是否正确直接位二进制密钥(而不是从密码中派生)?
我正在寻找陷阱,例如尽管指定 gpg 命令使用 AES256,KDF 是否仍将仅从我的 258 位熵创建一个 128 位密钥?
在 GPG 的某些版本中,默认 KDF 是 PBKDF-SHA1,这将产生一个 160 位密钥,我不确定每个版本的默认 KDF 是什么,但是他们的网站手册页显示它是 RIPEMD-160(对于我假设的当前版本)。
您可以使用命令将默认值更改为更安全的 SHA512 --s2k-digest-algo SHA512,这将导致哈希值被截断为加密算法使用的任何密钥大小,在 AES256 的情况下为 256 位。
由于您使用的是全熵随机密码,因此您不需要迭代或加盐,如果您愿意,可以只使用直接哈希(模式 0)。