Почему SHA-256 один не подходит для хранения паролей

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

3 мин. читатьНеобходимое время: чтение; реализация требует отдельного обзора
В этом руководстве

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

Скорость SHA становится недостатком

SHA-256 полезен для проверки целостности и многих криптографических приложений. Его скорость нежелательна для хранения паролей. Добавление соли к SHA256(salt + password) Соль и вычислительные затраты служат разным целям.

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

Выберите выделенную функцию хеширования паролей

OWASP предпочитает Argon2id Для новых систем, с scrypt в качестве альтернативы, когда он недоступен. PBKDF2 Bcrypt остается актуальным для устаревших систем, но имеет ограничения, включая длину входа.

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

Понять соль и перец

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

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

Обновление записей после успешной проверки

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

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