用于生成对称加密密钥的 HKDF 或 PBKDF2? (Python 密码学)
HKDF or PBKDF2 for generating key for symmetric encryption? (Python Cryptography)
我有一个为用户加密一些文本的应用程序。
截至目前,用户输入明文密码,然后我运行一个HKDF algorithm via the Cryptography package to derive a key from that password. After converting the key to a URL-safe base64-encoded 32-byte key, I use it as the key for running symmetric encryption (using the Fernet module)来加密用户的文本。
我已经阅读了 HKDF,并了解到 "extract-then-expand" 范式使其对此类场景很有用。但我也阅读了说明 HKDF 不适合密码存储的文档。所以我想知道我是否应该在这种情况下使用 PBKDF2 algorithm?
我没有存储纯文本密码,也没有存储我从中导出的密钥,这就是为什么我认为 HKDF 没问题。我想确保我做事安全,并且可以使用更有经验的人的任何帮助。
谢谢!
更新
我刚刚发现这个有用的 post https://security.stackexchange.com/questions/38303/hkdf-and-key-stretching,这让我相信我应该使用 PBKDF2。如果可能的话,还是想要一些确认。
您应该使用 PBKDF2 而不是 HKDF,原因有一个:密钥拉伸,"stretches" 从密码生成密钥所需的时间,而 HKDF 不提供。 HKDF 很快,PBKDF2 很慢。越慢越好,因为当攻击者尝试一百万个不同的密码时——您希望攻击者放弃,因为它花费的时间太长。在此处阅读此答案以获取更多详细信息:https://security.stackexchange.com/questions/38303/hkdf-and-key-stretching.
我有一个为用户加密一些文本的应用程序。
截至目前,用户输入明文密码,然后我运行一个HKDF algorithm via the Cryptography package to derive a key from that password. After converting the key to a URL-safe base64-encoded 32-byte key, I use it as the key for running symmetric encryption (using the Fernet module)来加密用户的文本。
我已经阅读了 HKDF,并了解到 "extract-then-expand" 范式使其对此类场景很有用。但我也阅读了说明 HKDF 不适合密码存储的文档。所以我想知道我是否应该在这种情况下使用 PBKDF2 algorithm?
我没有存储纯文本密码,也没有存储我从中导出的密钥,这就是为什么我认为 HKDF 没问题。我想确保我做事安全,并且可以使用更有经验的人的任何帮助。
谢谢!
更新
我刚刚发现这个有用的 post https://security.stackexchange.com/questions/38303/hkdf-and-key-stretching,这让我相信我应该使用 PBKDF2。如果可能的话,还是想要一些确认。
您应该使用 PBKDF2 而不是 HKDF,原因有一个:密钥拉伸,"stretches" 从密码生成密钥所需的时间,而 HKDF 不提供。 HKDF 很快,PBKDF2 很慢。越慢越好,因为当攻击者尝试一百万个不同的密码时——您希望攻击者放弃,因为它花费的时间太长。在此处阅读此答案以获取更多详细信息:https://security.stackexchange.com/questions/38303/hkdf-and-key-stretching.