Ponga una forma un poco menos descriptiva, pero más conceptual, básicamente desea proporcionar dos medios diferentes para obtener la misma clave. Esta es la idea de tener una clave de datos, generalmente única para un registro, o quizás para todos los registros de un usuario, dependiendo de las necesidades de seguridad. Luego, encripta esa clave con una clave derivada de su contraseña y una clave derivada de algún otro dato. Podría ser una cosa alternativa que ellos saben o podría ser algo que su servidor sepa. Esto puede ser criptografía simétrica o, para mayor seguridad, la información que su servidor sabe puede usar una clave pública para una clave privada que no se encuentra en el servidor.
Luego, si el usuario alguna vez pierde la contraseña y no puede acceder a la clave de datos, se puede descifrar el cifrado alternativo para recuperar la clave. En orden de seguridad, el almacenamiento simétrico de la clave en el servidor es menos seguro, ya que si el servidor y la base de datos están comprometidos, el cifrado se vuelve inútil. La información del usuario puede ser un poco mejor, pero para que sea fácil de recordar, también es fácil de investigar o adivinar, lo cual es inseguro incluso si el servidor no está comprometido. La opción asimétrica donde el servidor no tiene acceso a la información necesaria para un restablecimiento (porque solo sabe cómo cifrar la versión de recuperación de la clave de datos es la más segura, pero también es la más difícil desde el punto de vista de la usabilidad como el descifrado debe realizarse a) manualmente b) por un servidor secundario altamente seguro, preferiblemente manteniendo la clave privada en un TPM (módulo de plataforma confiable) o en algún otro almacén de claves de hardware seguro.
De cualquier manera, sin embargo, el principal básico es el mismo. Siempre hace que la clave sea irrecuperable sin el secreto, simplemente la almacena varias veces con diferentes secretos.