我有一个应用程序,可以为用户加密一些文本。
截至目前,用户输入纯文本密码,然后我通过加密包运行 HKDF 算法,从该密码派生密钥。将密钥转换为 URL 安全的 base64 编码的 32 字节密钥后,我将其用作运行对称加密(使用Fernet 模块)的密钥来加密用户的文本。
我读过 HKDF,并了解到“提取然后扩展”范式使其对于这种类型的场景很有用。但我也阅读了文档,其中指出 HKDF 不适合密码存储。所以我想知道在这种情况下是否应该使用PBKDF2 算法?
我没有存储纯文本密码,或者我从它们派生的密钥,这就是为什么我认为 HKDF 没问题。我想确保我做事安全,并且可以寻求更有经验的人的帮助。
谢谢!
更新
我刚刚看到这篇有用的帖子https://security.stackexchange.com/questions/38303/hkdf-and-key-stretching,这让我相信我应该使用 PBKDF2。如果可能的话,仍然希望得到一些确认。
您应该使用 PBKDF2 而不是 HKDF,原因有一个:密钥拉伸,它“拉伸”从密码生成密钥所需的时间,而 HKDF 不提供这一功能。HKDF 快,PBKDF2 慢。越慢越好,因为当攻击者尝试一百万个不同的密码时,您希望攻击者放弃,因为这需要太长时间。请在此处阅读此答案以了解更多详细信息:https://security.stackexchange.com/questions/38303/hkdf-and-key-stretching。
| 归档时间: |
|
| 查看次数: |
3872 次 |
| 最近记录: |