Защищены ли хешированные и защищенные пароли от атак по словарю?

Я понимаю, что соли делают один и тот же хэш пароля для разных значений. Однако соли обычно хранятся в базе данных с паролем. Итак, давайте скажем, что я атакующий, вот как я могу использовать атаку по словарю против соли (обратите внимание, что в этом примере я не пишу 128-битные хеши или соли для краткости):

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)
}

Я понимаю, что это не позволяет хакерам использовать радужные таблицы ... но, похоже, не предотвращает атаки по словарю. Я думаю, вы могли бы добавить что-то еще в алгоритм хэширования, но с точки зрения безопасности мы должны предположить, что метод атаки известен.

Таким образом, кажется, что засолка не позволяет хакерам выяснить, какие пароли могут быть парольными словарями (которые есть у нескольких пользователей), и предотвращает радужные атаки ... но не предотвращает атаки по словарю.

Это правильный анализ? Какие-нибудь предложения для лучшей безопасности?

Спасибо!

Ответы на вопрос(5)

Ваш ответ на вопрос