KeePass安全帮助页面讨论防止字典攻击
为了生成用于分组密码的最终 256 位密钥,KeePass 首先使用 SHA-256 对用户密码进行哈希处理,然后使用高级加密标准 (AES) 算法对结果进行 N 次加密(从现在开始称为密钥转换轮次) , 然后使用 SHA-256 再次对其进行哈希处理。对于 AES,使用随机的 256 位密钥,该密钥存储在数据库文件中。由于 AES 转换不可预先计算(密钥是随机的),攻击者也必须执行所有加密,否则他无法尝试查看当前密钥是否正确。
“针对字典攻击的安全性”显然在于 N 轮加密所需的时间。现在的问题:
计算 AES 的 N 次迭代所需的时间真的是单个 AES 加密所需时间的 N 倍,还是有一个已知的、更有效的方案来计算 AES^N(明文)?
