¿Por qué almacenar la contraseña salt en lugar de generarla? [duplicar]

0

Entonces, leyendo este artículo: enlace dice que almacenar la sal está bien en texto sin formato porque representa el Tablas de búsqueda / arco iris ineficaces. Obtengo eso, pero ¿por qué no generar el salt de la contraseña enviada y luego nunca almacenar eso por separado?

Algo como esto:

<?php
$pass = '12345';
$salt = '';
// generate the salt somehow... probably not like this
$hash1 = hash('md2',$pass);
$hash2 = hash('md4',$pass);
for($i = 0; $i < strlen($hash1); $i += 2){
  $salt .= $hash1{$i} | $hash2{$i};
}
// hash the results
$hashedPass = hash('bcrypt', $salt . $pass);
    
pregunta SeanJA 03.06.2013 - 21:06
fuente

1 respuesta

8

Si el salt es una función de la contraseña, dos contraseñas exactas producirán el mismo hash.

Para una función de hashing arbitraria H() y una generación de sal arbitraria S(Password) , entonces

H("Password_1", S("Password_1")) = H("Password_1", S("Password_1"))

Si utiliza una función de generación de sal aleatoria RS() entonces

H("Password_1", RS()) != H("Password_1", RS())

Como atacante, nada puede hacerte más feliz que ver dos (o más) hash utilizados en dos (o más) cuentas diferentes. Esto significa al menos una de dos cosas

  1. La contraseña es débil (porque dos usuarios diferentes eligieron la misma contraseña), entonces el atacante podría concentrar sus poderes de craqueo computacional en esos hashes.

  2. El atacante puede atacar dos (o más) cuentas usando el mismo esfuerzo computacional solo una vez.

respondido por el Adi 03.06.2013 - 21:15
fuente

Lea otras preguntas en las etiquetas