虽然很感兴趣,但我只是信息安全方面的专家,如果我的问题很愚蠢,请将我重定向到任何有用的资源,或者如果我的假设错误,请纠正我。
在阅读Keepass Security 页面时,在我看来,从用户输入的密码(假设没有使用密钥文件或 Windows 用户帐户)生成实际用于加密 kdbx 文件的密码的工作流程如下:
- 获取用户输入的密码并对其进行哈希处理 (SHA-256)
- 生成随机密码/从 kdbx 文件中检索它
N使用来自 2 的密钥对来自 1 的哈希进行加密- 再次使用 SHA-256 散列 3 的输出
然后,4 的输出是实际用于加密数据库的密钥。
我想知道的是:为什么要以明文和加密方式存储密钥?为什么不干脆省略步骤2,3和散列用户输入的密码N(或者也许C*N,与C为AES加密和SHA-256散列之间的时间关系)的时间?我很确定我在这里忽略了一些重要的事情,如果你能启发我,我将不胜感激。