Actualmente guardo las contraseñas de mis usuarios como hash PBKDF2, para la parte de autenticación de mi aplicación web.
Cada usuario también tiene su propia clave privada y pública (también almacenada en su perfil de usuario en la base de datos). La clave privada se cifra con su contraseña de texto sin formato al registrarse.
Ahora, he llegado a la parte en la que necesito recuperar la clave privada del usuario para descifrar otros datos, por lo que el problema es. ¿Cuál sería la mejor manera de permitirme acceder a la clave privada del usuario?
Tengo un par de ideas en mente:
Podría (al iniciar sesión) descifrar la clave privada, luego cifrarla con DPAPI y almacenarla en la memoria persistente (lado del servidor).
Podría cifrar la contraseña del usuario con una OTP, y luego almacenar la contraseña cifrada en una cookie (en cada solicitud podría generar una nueva OTP, volver a cifrar la contraseña y volver a colocarla en la cookie) La OTP tendría para ser almacenado en la memoria persistente del servidor (probablemente encriptada con DPAPI).
Podría almacenar la tienda OTP y la contraseña cifrada en la memoria persistente (lado del servidor).
Podría almacenar la mitad de la contraseña (cifrada) en una cookie y la otra mitad en la memoria persistente (lado del servidor).
¿Cuál de estas opciones sería la más segura? ¿Hay otro método que no haya pensado?
Sé que hacer rodar la suya es una cuestión básica, pero esta aplicación no necesita ser super segura a nivel gubernamental, pero me gustaría que fuera lo más segura posible.