¿Cómo ayuda la sal de contraseña contra un ataque de mesa arcoiris?

Tengo problemas para entender el propósito de una sal a una contraseña. Tengo entendido que el uso principal es obstaculizar un ataque de la mesa del arco iris. Sin embargo, los métodos que he visto para implementar esto no parecen realmente dificultar el problema.

He visto muchos tutoriales que sugieren que la sal se use de la siguiente manera:

$hash =  md5($salt.$password)

El razonamiento es que el hash ahora no se asigna a la contraseña original, sino a una combinación de la contraseña y la sal. Pero decir$salt=foo y$password=bar y$hash=3858f62230ac3c915f300c664312c63f. Ahora, alguien con una tabla de arcoíris podría revertir el hash y generar la entrada "foobar". Luego podrían probar todas las combinaciones de contraseñas (f, fo, foo, ... oobar, obar, bar, ar, ar). Puede tomar algunos milisegundos más obtener la contraseña, pero no mucho más.

El otro uso que he visto es en mi sistema Linux. En / etc / shadow, las contraseñas hash se almacenan realmentecon la sal. Por ejemplo, una sal de "foo" y una contraseña de "bar" se confundirían con esto:He visto muchos tutoriales que sugieren que la sal se use de la siguiente manera:foo$te5SBM.7C25fFDu6bIRbX1. Si un pirata informático pudo de alguna manera tener en sus manos este archivo, no veo para qué sirve la sal, ya que el hash inverso dete5SBM.7C25fFDu6bIRbX se sabe que contiene "foo".

Gracias por cualquier luz que alguien pueda arrojar sobre esto.

EDITAR: Gracias por la ayuda. Para resumir lo que entiendo, la sal hace que la contraseña hash sea más compleja, por lo que es mucho menos probable que exista en una tabla de arco iris precalculada. Lo que antes entendí mal fue que estaba asumiendo que existía una mesa arcoiris para TODOS los hashes.

Respuestas a la pregunta(10)

Su respuesta a la pregunta