How could I best implement a reset password functionality for a password manager? I'm currently saving a hashed + salted master password, which is hashed with PBKDF2, and encrypting the passwords with the master password itself, however if a user has lost his master password this means the passwords can't be decrypted.
I thought about saving a version of the passwords encrypted with the master password and a version encrypted with the users email + some random token generated when the user creates his account, but would this be safe? Is there any best practice when doing this?
The user's email also only gets stored as a hash.
So to clarify my question, are there any best practices for recovering data encrypted with a password if that password is lost?
My current idea is generating a second key to encrypt all passwords, and encrypting this key in an image through steganography the user can store on an usb, but then all passwords would be saved twice in the database (encrypted both times), so I don't know if that's a risk or not.
Final version, with the help of @A.Hersean 's answer.
I'm going to generate a key with which all passwords are encrypted, and this key itself can be encrypted with a password and backup password (which is saved inside an image) and those two encryptions of the key will then be saved to the database.