Зачем нужна соль при хэшировании паролей и какова ее роль?

  • 12 августа 2023 г. 17:56
Ответы на вопрос 3
Использование соли при хэшировании паролей имеет несколько целей:

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

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

3. Защита от ресурсоотказных атак: Даже если злоумышленник получает доступ к базе данных, содержащей хэши паролей и их соли, использование соли делает затруднительным использование предварительно вычисленных таблиц или сервисов для получения исходных паролей. Это требует дополнительных вычислительных ресурсов и времени.

4. Защита от индивидуального взлома: Соль предотвращает индивидуальный взлом пароля, когда злоумышленник ищет конкретный пароль, используя хэши солей из базы данных. 

Гарантия безопасности при использовании соли основана на комбинации факторов:

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

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

- Дополнительные меры безопасности: Использование соли является только одной из мер безопасности при хранении паролей. Для полной защиты рекомендуется использовать алгоритмы хэширования с плавающей точкой, дополнительные шаги аутентификации (например, двухфакторную аутентификацию) и другие меры безопасности.
В 2000-х годах хакеры стали использовать метод радужных таблиц (rainbow tables), чтобы быстро находить пароль по известному хешу, если у них уже была расчетная таблица для этого. Особенно это хорошо работало для хеш-функции Windows NTLM, когда пароль был коротким - до 8 символов, например. Однако было просто противостоять этому методу, добавляя соль (salt) к паролю на уровне алгоритма. Соль не меняла логику аутентификации, но замедляла процесс взлома. Теперь хакерам приходится создавать индивидуальные таблицы для каждого программного обеспечения, и это занимает много времени и ресурсов. Соль имеет аналогию с вектором инициализации IV для симметричных шифров в криптографии.
В период с 2000 года существует техника, называемая методом радужных таблиц, которая позволяет хакерам быстро находить пароль по известному хешу, если они имеют заранее рассчитанную базу этих таблиц. Однако это работает только в случае, если хакеры знают, какая хеш-функция используется, и если пароль короткий, например, менее 8 символов для Windows NTLM. Если пароль длиннее, база таблиц становится несоизмеримо большим размером. 

Чтобы предотвратить такие атаки, было предложено использовать дополнительный элемент безопасности - "соль" (salt), который добавляется к паролю на уровне алгоритма. Это не изменяет логику алгоритма аутентификации, но затрудняет работу злоумышленников, так как они должны генерировать индивидуальные таблицы для каждого программного обеспечения. Даже с использованием видеокарт этот процесс занимает много времени, а сами таблицы требуют много памяти. 

Таким образом, с использованием "соли" можно надежно предотвратить атаки с использованием радужных таблиц. Аналогия в криптографии может быть сделана с вектором инициализации (IV) для симметричных шифров.
Похожие вопросы