Asegurar frase de contraseña en DB

1

He almacenado claves de cifrado en la base de datos que están cifradas con una frase de contraseña. Para descifrarlo, el propietario / usuario debe iniciar sesión con su contraseña, y se usará para descifrar las claves cifradas en la base de datos. Mi preocupación es, para verificar si la frase de contraseña ingresada del usuario es la correcta, tendría que almacenar una versión con hash de su frase de contraseña. ¿Habrá algún problema de seguridad o es suficiente para detener al menos la mayoría de los ataques básicos? Para su información, el sistema solo tendrá como 2-3 usuarios, por lo que estoy realmente preocupado de que puedan forzar la frase de contraseña de hash almacenada.     

pregunta Eldon Hipolito 09.04.2017 - 10:47
fuente

2 respuestas

1

Podemos utilizar MAC (código de autenticación de mensajes) en lugar de simplemente almacenar el hash de la frase de contraseña en la base de datos.

Generación de MAC

Una vez que la clave está encriptada, se genera MAC. Seguimos el mecanismo Encrypt-then-MAC .

Puedes generar un tag = MAC(m, k) donde

  • m es la clave encriptada
  • k es la clave que utiliza para cifrar la clave de los usuarios (frase de contraseña)

Este tag se almacena en el DB en lugar del hash de la frase de contraseña.

Comprobando la frase de paso

Para verificar si la frase de contraseña es correcta o no, podemos verificarla fácilmente generando el MAC nuevamente de manera similar, con la clave como frase de contraseña del usuario. Ahora, la etiqueta generada y la etiqueta almacenada en la base de datos se comprueban, si son iguales.

Si es igual, es una frase de contraseña válida y el descifrado de la clave cifrada puede continuar. De lo contrario, podemos enviar un mensaje al usuario que la frase de contraseña es incorrecta.

Algoritmos de MAC

Puede usar HMAC (MAC basado en Hash) Desde OpenSSL para manejar las tareas de generación de etiquetas MAC. Los enlaces apropiados estarían disponibles para cualquier idioma que esté utilizando en su aplicación.

editar: Asegúrese de elegir un algoritmo de hashing fuerte como SHA256 o SHA512 para la generación HMAC (y no MD5 o SHA1 como se muestra en los ejemplos en el enlace anterior)

    
respondido por el gtux 14.04.2017 - 18:50
fuente
-1

Si esto se implementa como un servicio en lugar de un archivo accesible para los usuarios, entonces el cliente no necesita ver la contraseña con hash: la verificación se realiza en el servidor. Y puede rastrear y responder a múltiples intentos fallidos de inicio de sesión. Por lo tanto, hay poco riesgo de los usuarios.

    
respondido por el symcbean 09.04.2017 - 23:11
fuente

Lea otras preguntas en las etiquetas