Вопрос или проблема
У одного пользователя два разных пароля. Я хеширую оба для будущей валидации. В настоящее время я использую одну уникальную соль для пользователя, но каждый хешируется с разными алгоритмами (PBKDF2 с разными алгоритмами и различным количеством итераций).
Есть ли какая-либо польза в том, чтобы также использовать отдельные соли для каждого из хешей? Или разные алгоритмы достаточно? Я понимаю, что изменение алгоритма хеширования фактически требует от злоумышленника создания уникальной радужной таблицы для атаки на коллизию, поэтому две соли кажутся излишеством и только добавляют к управленческим затратам.
Соль обычно достаточно видима для хакера. Она не защищает вас тем, что незнакома, она защищает вас, делая вашу комбинацию (соль + пароль) уникальной.
Без соли у вас есть два риска: если вы используете пароль с низкой энтропией, то кто-то другой может использовать точно такой же пароль, и хакер может обнаружить, что есть два пользователя с одинаковым паролем. Это делает вероятным то, что оба пользователя используют слабый пароль, так что это хорошая цель для взлома пароля. Когда все используют разные соли, хакер не может идентифицировать слабые пароли.
Кроме того, вы можете купить “радужные таблицы”, то есть базу данных хешей паролей. Без соли ваш пароль, обладающий промежуточной прочностью, может быть найден в радужной таблице с очень небольшими усилиями. При использовании всеми различной соли это не так.
Так что, какую соль вы используете, не так важно. Даже если хакер узнает вашу соль, это не так уж важно. И если у вас есть два разных алгоритма хеширования, так что одна и та же соль в сочетании с одним и тем же паролем имеет другой хеш, это все равно не поможет хакеру.
Тем не менее, чем больше песка или соли вы можете распылить в лицо хакеру, тем лучше. Так что, если использование разных солей не вызывает проблем, используйте разные соли.
Ответ или решение
Вопрос о целесообразности использования различных солей для разных алгоритмов шифрования паролей одного пользователя является актуальным в области информационной безопасности. Проанализируем данную ситуацию с точки зрения безопасности и управления.
Введение
Соль — это случайная строка символов, которая добавляется к паролю перед его хешированием. Это помогает предотвратить атаки, такие как радужные таблицы и атаки на основании повторяющихся паролей. Вы уже используете одну уникальную соль для двух разных паролей, хешируя их с помощью различных алгоритмов, таких как PBKDF2, с разными параметрами.
Преимущества использования различных солей
-
Уникальность хеша:
Разные соли для разных паролей и алгоритмов повышают уникальность хешей. Даже если оба пароля одинаковы, использование уникальных солей сделает их хеши разными. Это усложняет задачу злоумышленнику, который может пытаться использовать равноценные пароли для атаки. -
Защита от атаки по словарю:
Использование разных солей пресекает возможность злоумышленника идентифицировать пользователей, имеющих одинаковые пароли. Даже при наличии пароля с низкой энтропией, такой как "123456", разная соль сделает его хеш уникальным для каждого пользователя. -
Дополнительный уровень безопасности:
Хотя использование разных алгоритмов уже создает дополнительные барьеры, разные соли могут стать дополнительной мерой защиты, затрудняющей обратный процесс — восстановление исходного пароля.
Сложности управления
Несмотря на каждую из вышеперечисленных причин, стоит также рассмотреть сложность управления:
- Увеличение объема данных: Появляется необходимость хранить различные соли для каждого пароля и алгоритма, что увеличивает объем управления данными.
- Увеличение сложности системы: Более сложные системы требуют большей осторожности при развертывании и поддержке.
Заключение
Использование разных солей для различных алгоритмов шифрования одного и того же пользователя — это разумная и безопасная практика, хотя и требующая большего управления. На уровне безопасности это добавляет защитную прослойку, увеличивая затраты времени и ресурсов для потенциальных злоумышленников. Даже если соль становится известной, ее наличие вместе с уникальным хешом препятствует выявлению слабых паролей.
Так, учитывая вышеизложенные факторы, рекомендуется использовать разные соли для различных алгоритмов шифрования, несмотря на дополнительные сложности управления. Это значительно укрепит безопасность системы, особенно в свете растущих угроз в кибербезопасности.