¿Usar el nombre de usuario como Salt es lo suficientemente seguro? [duplicar]

1

En lugar de crear un generador de sal por separado para cada usuario, ¿no puedo usar su nombre de usuario como sal? Sería único para todos y lograría el propósito de las sales.

    <?php   
$hashedpass = sha1($username.$password)
 >?

Si el nombre de usuario es demasiado corto para ser usado como un salt, puedo agregar una cadena global al nombre de usuario.

$salt =$username.'asdf1234'
$hashedpass = sha1($salt.$password)

¿Sería esto suficiente para la seguridad? Todavía crea una sal única para cada usuario y evita los ataques de tabla arco iris.

    
pregunta Kunal Chopra 21.06.2015 - 19:14
fuente

1 respuesta

1

Los nombres de usuario son predecibles. Preferiría usar valor aleatorio como una sal. Un atacante podría comenzar a generar una tabla hash precomputada dirigida a un usuario (¿admin?) Incluso antes de obtener el hash & salt to crack.

Por lo tanto, debes NO .

Editar :

El propósito principal de tener una sal es que las tablas de arco iris son inútiles. Desde mi punto de vista, usar un valor que se pueda adivinar (incluso con un valor estático agregado) como sal es una mala práctica, ya que le permite a un atacante "preparar" los hashes antes de obtener su base de datos.

En algunos casos: si distribuyes tu código y tienes una cuenta de "administrador" predeterminada, un atacante podrá reutilizar la tabla del arco iris contra todas las instalaciones de tu software.

Otro ejemplo de @ Anti-weakpasswords: Pyrit , "una herramienta de craqueo WPA / WPA2, una ventaja de la herramienta de "Protocolo WPA / WPA2 que utiliza el SSID (nombre de usuario equivalente) como el salt para permitir la precomputación de diccionarios de tamaño razonable en comparación con los SSID comunes: linksys, dlink, 2WIRE047".

    
respondido por el r00t 21.06.2015 - 19:36
fuente

Lea otras preguntas en las etiquetas