¿Cómo podría implementar mejor una función de restablecimiento de contraseña para un administrador de contraseñas? Actualmente estoy guardando una contraseña maestra con hash + salted, que se oculta con PBKDF2, y cifrando las contraseñas con la propia contraseña maestra, sin embargo, si un usuario ha perdido su contraseña maestra, esto significa que las contraseñas no se pueden descifrar.
Pensé en guardar una versión de las contraseñas cifradas con la contraseña maestra y una versión cifrada con el correo electrónico de los usuarios + algún token aleatorio generado cuando el usuario crea su cuenta, pero ¿sería seguro? ¿Hay alguna mejor práctica al hacer esto?
El correo electrónico del usuario también se almacena como un hash.
Entonces, para aclarar mi pregunta, ¿existen prácticas recomendadas para recuperar datos cifrados con una contraseña si esa contraseña se pierde?
EDIT
Mi idea actual es generar una segunda clave para cifrar todas las contraseñas, y cifrar esta clave en una imagen a través de la esteganografía que el usuario puede almacenar en un usb, pero todas las contraseñas se guardarán dos veces en la base de datos (cifradas ambas veces), así que no sé si eso es un riesgo o no.
EDIT 2
Versión final, con la ayuda de la respuesta de @ A.Hersean.
Voy a generar una clave con la que se cifrarán todas las contraseñas, y esta clave se puede cifrar con una contraseña y una contraseña de respaldo (que se guarda dentro de una imagen) y esos dos cifrados de la clave se guardarán a la base de datos.