Cifre datos usando PBKDF2, pero aún así proporcione la función de restablecimiento de contraseña [duplicar]

0

En mi aplicación, me gustaría cifrar los datos del usuario de manera que no tenga acceso a ellos. Para ello seguiré los siguientes pasos:

  1. generar clave de 256 bits
  2. Cifrar datos con clave
  3. Derivar la segunda clave de la contraseña (PBKDF2)
  4. Encriptar la 1ª clave, destruir la clave de texto sin formato
  5. Almacene el hash + la contraseña salada y la clave cifrada

Ahora mi problema es este: todavía tengo que proporcionar una manera de restablecer la contraseña cuando se olvida.

Me doy cuenta de que seguir este esquema de estilo de confianza y nadie contradice directamente la capacidad de proporcionar una función de restablecimiento de contraseña, pero espero una solución que pueda ayudar a mantener el espíritu del esquema a través de un compromiso saludable, sin requerir un segundo secreto del usuario, como respuestas a preguntas de seguridad o un tercero confiable.

Mis ideas:

  • Almacenar una copia de la clave de cifrado por usuario con una clave que mi aplicación controla como respaldo, lista para volver a cifrarla con su nueva contraseña (restablecer) para las operaciones diarias. Para ser claro, estoy de acuerdo con tener acceso a los datos yo mismo, en lugar de eso, me propongo limitar los datos potenciales a los que podría acceder un pirata informático exitoso.
  • Al registrarse, envía un enlace para restablecer la contraseña a su correo electrónico que contiene una clave en el enlace utilizado para cifrar una versión de respaldo de la clave cifrada, lista para volver a cifrarla con la nueva contraseña.
pregunta sousdev 17.05.2018 - 01:04
fuente

1 respuesta

1

En este caso, todos los datos que fueron cifrados por la clave de cifrado de datos se perderán, porque como usted dijo, la contraseña fue olvidada. Ahora, si la contraseña simplemente se cambió, pero no se olvidó, entonces podría desempaquetar la clave de cifrado de datos con la clave derivada de la contraseña en el inicio de sesión inicial, almacenar esa clave envuelta previamente en la sesión, luego volver a ajustar y almacenar la clave de cifrado de datos de nuevo cuando el usuario cambia su contraseña. Así que eso no es un problema. Es solo que si alguna vez se olvida la contraseña, también lo son los datos que dependen de esa contraseña para desenvolver la clave de cifrado de datos. No hay otra forma segura de evitar esto, a menos que tenga algún tipo de esquema de copia de seguridad, tal vez protegido por cifrado en todo el sitio con claves protegidas por, por ejemplo, un KMS. Pero, en ese caso, ¿por qué no simplemente abandonó el cifrado basado en contraseñas y, en su lugar, usó el KMS?

    
respondido por el vrtjason 17.05.2018 - 15:09
fuente

Lea otras preguntas en las etiquetas