¿Tener un hash de contraseña con sal hace que descifrar un hash sin sal de la misma contraseña sea más fácil?

2

Se me ha pedido que implemente un sistema para evitar la reutilización de contraseñas en la misma cuenta.

La forma más segura que conozco para hacer esto es comparar hashes de la contraseña + un salt conocido. bcrypt.hash(sha256(password), user.savedSalt))

El resto del sistema utiliza un sha256 salado separado - bcrypt.hash(sha256(password), 10) .

Estos dos hash revelan información diferente sobre la contraseña original.

¿Tener ambos hace que el craqueo de sal conocido sea más fácil?

    
pregunta Michael Cole 04.05.2018 - 01:13
fuente

2 respuestas

3

Si está almacenando los hashes de varias contraseñas con el mismo salt, está rechazando el propósito de usar un salt. La sal debe ser única para cada una de las contraseñas, de lo contrario, un atacante podría calcular H (contraseña || sal) solo una vez por cada contraseña candidata, y comparar el resumen resultante con cada hash en su base de datos, porque todos usan el mismo salt .

Además, como se mencionó en los comentarios, parece que está confundiendo el parámetro de costo para otra cosa. El "10" especifica la cantidad de cómputo que tomará la operación bcrypt. Un valor mayor aumenta el costo para los atacantes al hacer que la operación sea más costosa computacionalmente.

Si desea comprobar si hay contraseñas duplicadas, no necesita crear un esquema de homebrew como este. Si realmente lo desea, puede tomar la contraseña suministrada, concatenarla con la sal del primer usuario y hacer una hash, y compararla con el hash almacenado. Si no coincide, haga lo mismo para el segundo usuario, y así sucesivamente. Esto significa que cada nueva contraseña que se establezca requerirá recorrer toda la base de datos, pero detectará las contraseñas que son duplicados exactos.

    
respondido por el forest 04.05.2018 - 01:50
fuente
-1

"¿Tener un hash de contraseña con sal hace que el craqueo de un hash sin sal de la misma contraseña sea más fácil?"

Encontré algunos lugares donde la gente decía que esto era teóricamente cierto, pero nadie citó ningún trabajo sobre él ni nada en la práctica.

"La sal debe ser única para cada contraseña ..."

Esto no es cierto. Establecimos una sal por usuario que recordó las últimas contraseñas de los usuarios. Las sales son para derrotar las tablas de arco iris, y el cálculo de una tabla de arco iris por usuario para 3 contraseñas parece tan ineficiente como el cálculo de tablas para una contraseña.

    
respondido por el Michael Cole 07.05.2018 - 03:45
fuente

Lea otras preguntas en las etiquetas