¿Guardar la contraseña de hash y los datos cifrados con esta contraseña en db?

3

Actualmente estoy desarrollando una aplicación django.

Necesito almacenar datos de usuario. Estos datos no deben estar disponibles para ningún otro usuario o administrador

He creado un sistema de cuenta de usuario dedicado (sin usar dj auth). (Tal vez podría modificarlo, pero este no es el tema aquí ...)

La contraseña del usuario está oculta con passlib.

Los datos del usuario se cifran utilizando AES y la contraseña del usuario (no hash: p) como clave secreta.

Me pregunto:

  • ¿Es seguro mantener una contraseña con hash y datos encriptados, cuando el cifrado usó esta contraseña como clave secreta?

  • ¿Qué puedo hacer con AES IV utilizado para cifrar datos de usuario? ¿Generarlo cuando creo el usuario y lo guardo en la tabla de usuarios, junto a la contraseña con hash?

pregunta Obscur Moirage 25.08.2013 - 15:42
fuente

1 respuesta

4

Al hashear la contraseña con passlib, asegúrese de usar passlib.hash.pbkdf2_sha512 . Puede leer más sobre esto aquí .

  1. Sí, esto es seguro, de hecho, realmente debe hacer esto para verificar la contraseña antes de intentar descifrar los datos.
  2. El punto de la IV es que incluso cuando se reutiliza la misma clave y el texto sin formato, se generará un texto cifrado diferente. Puedes verlo un poco como una sal para una contraseña. Solo debe asegurarse de que sea único y que, al volver a cifrar los datos (si se modificaron los datos), genere un nuevo IV.

Dependiendo del tamaño de los datos, puede crear una clave de descifrado larga y compleja que a su vez está cifrada con AES utilizando la contraseña del usuario. Esto se hace a menudo ya que el usuario puede decidir cambiar su contraseña. Esto daría lugar a tener que volver a cifrar todos los datos con la nueva contraseña. Por lo tanto, utiliza una clave de descifrado que a su vez está cifrada con la contraseña del usuario. En el caso de que un usuario decidiera cambiar su contraseña, todo lo que necesita hacer es volver a cifrar la clave. Ahora, si solo está almacenando un poco de texto, esto podría ser excesivo, sin embargo, si almacena grandes cantidades de datos (megabytes), entonces podría optar por esta estrategia.

    
respondido por el Lucas Kauffman 25.08.2013 - 16:04
fuente

Lea otras preguntas en las etiquetas