我怎样才能最好地为密码管理器实现重置密码功能?我目前正在保存一个散列+加盐的主密码,它是用 PBKDF2 散列的,并用主密码本身加密密码,但是如果用户丢失了他的主密码,这意味着密码无法解密。
我考虑过保存使用主密码加密的密码版本和使用用户电子邮件加密的版本+用户创建帐户时生成的一些随机令牌,但这会安全吗?这样做时有什么最佳做法吗?
用户的电子邮件也仅作为散列存储。
因此,为了澄清我的问题,如果密码丢失,是否有恢复使用密码加密的数据的最佳做法?
编辑
我目前的想法是生成第二个密钥来加密所有密码,并通过用户可以存储在 USB 上的隐写术在图像中加密这个密钥,但是所有密码将在数据库中保存两次(两次都加密),所以我不不知道这是否有风险。
编辑 2
最终版本,在@A.Hersean 的回答的帮助下。
我将生成一个用于加密所有密码的密钥,并且该密钥本身可以使用密码和备份密码(保存在图像中)进行加密,然后将密钥的这两个加密保存到数据库中.