El cifrado reversible no se usa comúnmente para contraseñas porque los requisitos y parámetros específicos de la autenticación de contraseñas son incompatibles con la debilidad del cifrado reversible.
La principal debilidad del cifrado reversible es simple: si la clave está comprometida, los datos cifrados se ven comprometidos, punto.
Las contraseñas se utilizan todo el tiempo, siempre que los usuarios inician sesión. Por lo tanto, el proceso de autenticación debe poder acceder a las credenciales de los usuarios todo el tiempo, de manera automatizada, sin controles obstructivos. Eso significa que la clave para el cifrado reversible debe estar en el disco o en la memoria todo el tiempo. Si ese programa, disco o memoria están comprometidos de alguna manera, entonces todas esas contraseñas encriptadas reversiblemente están comprometidas de una sola vez.
En contraste, considere el uso de hashes no reversibles. Si el programa, el disco o la memoria se ven comprometidos, el atacante obtiene los hashes "bloqueados" y no hay ninguna clave. Luego pueden atacar aún más (ataque de texto cifrado conocido, fuerza bruta, etc.) pero aún no han "ganado".
Usamos cifrado reversible (permítanme decirlo) todo el tiempo: discos, archivos, archivos adjuntos de correo electrónico. Sin embargo, lo que todos estos usos tienen en común es que alientan (si no requieren) la intervención humana para proporcionar la clave.
No estoy seguro de por qué lo preguntas, pero ¿qué pasa con un modelo híbrido? Tenga en cuenta que podría ser razonable almacenar tanto texto cifrado reversible como no reversible para las contraseñas de los usuarios. Cuando se crean las contraseñas, almacene dos versiones cifradas: una creada con una función de hashing de una vía y la otra creada con un algoritmo de cifrado asimétrico ("criptografía de clave pública"). Todos los procesos de autenticación automatizados utilizan los hashes no reversibles para fines de autenticación. Mantenga la mitad de la "clave pública" del par en el sistema para el uso que genera las contraseñas cifradas, y almacene la mitad de la "clave privada" del par sin conexión . En el caso de que se necesite la contraseña en texto sin formato, desconecte la contraseña cifrada y descifrela con la clave correspondiente. Siempre que la clave de descifrado no sea accesible para el sistema de autenticación, un atacante no puede aprovechar el hecho de que utilizó un cifrado "reversible" para almacenar contraseñas de texto simple.
Eso solo ayudará si su necesidad de acceder a las contraseñas de texto simple no es una necesidad automática, por supuesto. Pero me parece una idea ingeniosa.