¿Las contraseñas con hash y con sal son seguras contra ataques de diccionario?

Entiendo que las sales hacen el mismo hash de contraseña para diferentes valores. Sin embargo, las sales generalmente se almacenan en la base de datos con la contraseña. Así que digamos que soy un atacante, aquí es cómo podría usar un ataque de diccionario contra una sal (en este ejemplo, no escribo hashes o sales de 128 bits en aras de la brevedad):

user_pw = 'blowfish'

Given:
email = '[email protected]'
hash = '1234567890'
salt = '0987654321'

function attack(){
  for each(word in dictionary)
    md5( word * salt ) == hash ? cracked_one(email, word)
}

Entiendo que esto evita que los piratas informáticos usen tablas arcoiris ... pero no parece impedir los ataques de diccionario. Supongo que podría agregar algo más al algoritmo hash, pero con seguridad debemos asumir que el método de ataque es conocido.

Así que parece que la aplicación de sal evita que los piratas informáticos descubran qué contraseñas pueden ser contraseñas de diccionarios (las que tienen varios usuarios) y evita los ataques de arco iris ... pero no evita los ataques de diccionarios.

¿Es este un análisis correcto? ¿Alguna sugerencia para una mejor seguridad?

¡Gracias!

Respuestas a la pregunta(5)

Su respuesta a la pregunta