Как соль защищает от атаки по словарю?

Возможный дубликат:
Какова цель соли?

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

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

6 ответов

Решение

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

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

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

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

Поскольку соль защищает от этого, так как теперь вам потребуется отдельный стол для каждой соли. Даже с двухбуквенной солью простого склепа Unix это уже в 3844 раза. Современные алгоритмы хэширования паролей используют гораздо большую соль (например, bcrypt использует 128-битную соль, что дает коэффициент 2 128).

Для защиты от словарных атак вы также будете использовать медленный алгоритм хеширования вместо быстрого, такого как простой MD5 или SHA1/SHA2. Bcrypt - это такой алгоритм (с настраиваемым рабочим фактором), и тот же автор позже предложил scrypt (который не только занимает много времени, но и требует много памяти, а злоумышленникам зачастую не хватает вычислительной мощности).

1- Вы не можете использовать радужные таблицы, чтобы взломать хеш

2- Если два пользователя имеют один и тот же пароль, хэш будет отличаться, если будет соленым (поэтому сложнее поймать общие пароли)

На самом деле соль не защищает от словарной атаки. Он имеет следующие преимущества:

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

Это действительно увеличивает работу, которую они должны сделать, увеличивая количество возможных ответов в файле паролей.

Одним из способов атаки по словарю является сканирование файла паролей. Если соли нет, и вы видите "DFGE$%$%£TEW", то вы знаете, что пароль "ПАРОЛЬ". Добавление соли означает, что вам придется использовать либо гораздо больший словарь, содержащий все значения для "ПАРОЛЯ" со всеми возможными солями, либо вам придется потратить усилия, чтобы прочитать соль и выполнить шифрование, которое замедляет работу. Это больше не простой поиск.

Соль также помогает в ситуациях, когда несколько пользователей выбирают один и тот же пароль. Особенно в старые времена, когда файл паролей был доступен для чтения всем пользователям, становится неочевидным, если у другого пользователя тот же пароль, что и у вас, или тот же пароль, что и у вас.

Каждое значение соли требует отдельного словаря, поэтому каждая база данных, которая не использует соль, может быть атакована одним и тем же словарем.

  • Без какой-либо соли злоумышленник может просто использовать готовый предварительно вычисленный словарь, которых достаточно.

  • Если у вас есть одна соль для всей вашей базы данных, то они должны создать словарь, специфичный для вашей базы данных.

  • Если у каждой записи пользователя была своя собственная соль, теперь им нужно создать 1 словарь на пользователя.

Словарные атаки основаны на словах из словаря. При добавлении случайной соли у вас больше нет словарных слов. Таким образом, хеш-таблица пароля, основанная на словарных словах, не поможет при взломе пароля.

Другие вопросы по тегам