Зачем паролю добавляют случайные данные
Соль — случайная строка, которую система присоединяет к паролю перед вычислением хеша. Хеш — результат одностороннего преобразования: по нему нельзя просто восстановить исходную строку, но можно проверить догадку. При входе система берет введенный пароль, снова соединяет его с сохраненной солью и вычисляет результат. Совпадение с сохраненным хешем означает, что пароль введен верно.
Соль обычно создают отдельно для каждой учетной записи и хранят рядом с хешем. Секретом она быть не обязана: ее задача не скрыть пароль, а сделать вычисления для разных записей непохожими.
Как соль мешает массовому подбору
Без соли злоумышленник может заранее вычислить хеши для множества распространенных паролей и сверять их с украденной базой. Если один и тот же пароль использовали несколько человек, одинаковые хеши также сразу выдадут это совпадение.
С солью заранее подготовленная таблица не подходит: для каждой записи пароль нужно проверять заново, с ее собственной строкой. Даже если два человека выбрали один пароль, их хеши, как правило, будут разными. Это делает массовый анализ дороже, но не отменяет возможность подбора: атакующий может проверять варианты по очереди, зная и соль, и алгоритм.
Соль — часть защиты, а не замена надежному паролю
Поэтому системы обычно используют не просто быстрый хеш, а специальный алгоритм хранения паролей, который намеренно требует времени и вычислительных ресурсов. Соль мешает повторно использовать одну и ту же работу для множества учетных записей, а медленное вычисление повышает цену каждой отдельной догадки.
Иными словами, соль не делает слабый пароль сильным. Она не дает украденной базе превратиться в удобный каталог, где одинаковые пароли легко распознаются, а готовые вычисления можно применить сразу ко всем пользователям.





