Что такое соль в алгоритмах хеширования и как она увеличивает защищенность хешированных данных?

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

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

Какую угрозу несут коллизии?

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

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

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

соль в алгоритмах хеширования
Изображение сгенерировано нейросетью Stable Diffusion

Радужные таблицы

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

Если коротко и просто, то радужные таблицы – это таблицы, которые содержат расшифровки некоторых хеш-значений. Сам по себе процесс создания таких таблиц гораздо сложнее, чем кажется, ведь расшифровать хеш-значение в обратную сторону проблематично. Тем не менее, хакеры могут прибегнуть к использованию таких таблиц. Имея доступ к хеш-таблице с паролями по радужной таблице можно довольно просто вычислить пароль.

Как «соль» решает проблему защиты паролей?

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

Различают статическую и динамическую «соль». Статическая «соль» – это строка данных, которая будет одинаковой для всех входных данных. При этом, если злоумышленник узнает значение «соли», то он сможет создать радужные таблицы на основе этих данных, из-за чего рекомендуется применять динамическую «соль».

Динамическая «соль» – это такая строка данных, которая генерируется для каждого значения индивидуально. Это обеспечивает безопасность и тем пользователям, чьи пароли совпадают, так как их хеш-значения будут разными. К тому же в создании хеш-значений с динамической «солью» применяются алгоритмы, которые добавляют новую строку данных в разные части входного значения и на разных итерациях хеширования.

Заключение

Несмотря на основной замысел хеш-значения, злоумышленники все равно нашли способ найти исходное значение, имея хеш-значение и функцию хеширования. Однако «соль» стала отличным решением данной проблемы, так как она обеспечивает защиту от взлома, даже если хакеру удается перехватить хеш-таблицу. По этой причине мы рекомендуем вам использовать в качестве пароля только те хеш-значения, которые могут быть разбавлены «солью». Если же вы хотите создать сервис, частью которого будет использование хеш-значений, то применяйте динамическую «соль», так как она в полной мере обеспечивает защищенность данных.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *