Глоссарий

Соль (salt)

соль паролякриптографическая соль

Соль — уникальное значение, добавляемое при хешировании пароля или выводе ключа, чтобы одинаковые входы давали разные результаты.

Определение

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

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

Как это работает

Для каждого пароля система создаёт новую случайную соль и передаёт пароль вместе с солью в функцию хеширования паролей, например Argon2id, bcrypt или PBKDF2. При проверке сохранённая соль используется снова с проверяемым паролем.

Уникальные соли не дают одинаковым паролям превращаться в одинаковые сохранённые хеши и сильно уменьшают пользу заранее вычисленных таблиц. Они не делают слабые пароли сильными: у функции хеширования всё равно должны быть подходящие параметры стоимости.

Соль, ключ, pepper и nonce

Соль — это публичная уникальность, а не секретный ключ аутентификации. Pepper — отдельное секретное значение вне базы паролей, а nonce — число, используемое один раз в конкретном протоколе или операции шифрования.

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

Частые вопросы

Нет. Соль должна быть уникальной и желательно случайной, но её можно хранить рядом с хешем.

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

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

См. также