Security 在PBKDF2中重置密码

Security 在PBKDF2中重置密码,security,passwords,pbkdf2,Security,Passwords,Pbkdf2,我存储了一些加密的数据,并使用PBKDF2根据用户的密码(经过哈希和盐析)生成密钥 我可以通过使用旧密码解密数据,然后使用新密码重新加密数据来实现密码更改请求 但是,当用户忘记密码时,我如何执行密码重置?我应该以不同的方式存储东西来支持这个用例吗?如果是,怎么做 我可以通过解密数据来实现密码更改请求 使用旧密码,然后使用新密码重新加密数据 密码 但是,当用户 忘记密码?我应该以不同的方式存储东西吗 支持这个用例吗?如果是,怎么做 通常使用内容加密密钥或CEK。CEK是一个随机密钥,您可以使用它为

我存储了一些加密的数据,并使用PBKDF2根据用户的密码(经过哈希和盐析)生成密钥

我可以通过使用旧密码解密数据,然后使用新密码重新加密数据来实现密码更改请求

但是,当用户忘记密码时,我如何执行密码重置?我应该以不同的方式存储东西来支持这个用例吗?如果是,怎么做

我可以通过解密数据来实现密码更改请求 使用旧密码,然后使用新密码重新加密数据 密码

但是,当用户 忘记密码?我应该以不同的方式存储东西吗 支持这个用例吗?如果是,怎么做

通常使用内容加密密钥或CEK。CEK是一个随机密钥,您可以使用它为保护文件的分组密码和MAC设置密钥。每个文件都有自己的CEK和其他加密参数,如and IV或nonce

然后使用密钥加密密钥或KEK。在您的情况下,KEK将是您PBKDF的输出。KEK对CEK进行加密

对于恢复,您需要创建一个恢复密钥。然后在恢复密钥下再次加密CEK,并将加密的CEK移动到安全的地方


当需要更改密码时,只需在新的PBKDF派生下重新加密CEK即可。无需弄乱恢复密钥,因为它在其他地方是安全的。(或者在政府不加监督的情况下发行债券时尽可能安全)。

uhhhmmmmm。为什么你要加密密码而不是散列密码?对不起,让我澄清一下:我不是在加密密码,事实上我是在散列密码。但我使用它作为PBKDF2的输入,并从那里加密他们的一些数据。