因此,我正在使用 AES 算法加密文档列表。我使用 PBKDF2 从用户密码中确定密钥。我有几个关于存储数据和 IV/salt 的问题:
如何存储文件:
- 使用一个 AES 密钥、IV 和 salt 加密所有文档
- 使用一个 AES 密钥加密每个文档,但将 IV 和 salt 分开
如何存储/检索 IV 和盐:
- 从 PBKDF2 获取 IV(如 AES 密钥),无需将其存储在某处
- 在每个文档加密之前生成 IV 并存储为纯文本
- 对于盐,我认为没有选择 - 无论如何我需要将它存储为纯文本
正如我从那篇文章(http://adamcaudill.com/2013/04/16/1password-pbkdf2-and-implementation-flaws/)和其他一些文章中所理解的那样:
- 可以将 IV 和 salt 存储为纯文本,因为有时攻击者甚至不需要知道它们
- 不同的 IV 只能“扭曲”第一个密码块(对于 CBC 模式),但不是全部,因此它不会为 AES 方法带来安全性。