Почему SHA-256 один не подходит для хранения паролей
Контрольные суммы файлов и хранение паролей на стороне сервера решают различные проблемы. Хранение паролей также должно сделать каждое автономное угадывание дорогим.
В этом руководстве
Хеширование не является шифрованием: нет соответствующей операции дешифрования.Тем не менее, после утечки базы данных злоумышленник может хэшировать догадки и сравнивать их с украденными записями без прохождения лимитов скорости входа в приложение.
Скорость SHA становится недостатком
SHA-256 полезен для проверки целостности и многих криптографических приложений. Его скорость нежелательна для хранения паролей. Добавление соли к SHA256(salt + password) Соль и вычислительные затраты служат разным целям.
Не изобретайте формат учетных данных или цикл обыкновенных хешей. Используйте поддерживаемую библиотеку хеширования паролей.
Выберите выделенную функцию хеширования паролей
OWASP предпочитает Argon2id Для новых систем, с scrypt в качестве альтернативы, когда он недоступен. PBKDF2 Bcrypt остается актуальным для устаревших систем, но имеет ограничения, включая длину входа.
Используйте библиотечные функции для создания и проверки, генерации солей и хранения параметров. Выберите параметры стоимости из текущего руководства и измерений на целевом сервере. Учет одновременных логинов и лимитов ресурсов: дорогостоящее хеширование не должно делать отказ в обслуживании тривиальным. Онлайн-ограничение ставок остается необходимым.
Понять соль и перец
Соль случайна и уникальна для каждой записи; она не должна быть секретной. также храните идентификатор алгоритма и параметры проверки, часто в закодированной записи библиотеки.
Перец - это необязательный секрет, хранящийся за пределами базы паролей. Он может помочь в некоторых сценариях взлома, но усложняет ротацию и управление ключами. Он не заменяет ни соль, ни подходящую функцию хеширования.
Обновление записей после успешной проверки
При успешном входе в систему сначала проверьте старую запись, затем перетащите представленный пароль, если параметры устарели. Вы не можете восстановить оригинальные пароли из существующих хэшей для миграции всей базы данных. Неактивные аккаунты нуждаются в отдельной сбросе или миграционной политике. Перетасовка не отменяет предыдущую утечку.
Перед развертыванием проверьте неправильные пароли, унаследованную миграцию, ограничения по длине и загрузке. Никогда не регистрируйте тестовые пароли или отправляйте их в аналитику.