Tengo la tarea de cambiar el método de inicio de sesión actual de nuestros usuarios a uno más seguro (en el momento en que todas las contraseñas se almacenan en texto sin cifrar en la base de datos ...).
El problema es que todas las contraseñas deben estar en la red local del cliente (ya que deberían poder funcionar incluso sin conexión a Internet), pero debemos poder recuperarlas y avisarlas a los usuarios en caso de que se olviden.
Intenté presionar para obtener la solución estándar "hashing and salting + reset de contraseña si fuera necesario", pero se consideró demasiado complejo.
Estaba pensando en usar cifrado asimétrico, por lo que podemos implementar una clave pública para los clientes y cifrar todas las contraseñas con ella (verificando la contraseña cifrada en el momento del inicio de sesión, como lo hace normalmente con hashes), y mantener la clave privada para que podamos eventualmente puede descifrar la contraseña si es necesario.
¿Esto es realmente seguro (siempre que mantengamos la clave privada para nosotros mismos) o deberíamos recurrir a otro método?