Чем bcrypt и argon2 принципиально отличаются от SHA-256 применительно к хранению паролей?
- Почему SHA-256 не подходит для паролей?
- Чем argon2 лучше bcrypt?
SHA-256 быстрый — это хорошо для контрольных сумм и плохо для паролей: утёкшую базу перебирают миллиардами вариантов в секунду. bcrypt, scrypt и argon2 намеренно медленные и настраиваются параметром стоимости.
- argon2id ещё и требует много памяти — мешает перебору на видеокартах
- Соль — случайная на каждый пароль, хранится рядом с хешем
- Пароли хешируют, а не шифруют: восстанавливать их не нужно
А ещё Параметры повышают со временем и перехешируют при входе
Подробно
Зачем медленная функция. После утечки базы атакующий перебирает словари и варианты паролей, вычисляя хеш для каждого. SHA-256 на видеокарте — миллиарды вычислений в секунду: короткие и словарные пароли находятся за минуты. Функции для паролей (KDF) специально делают одно вычисление дорогим — десятки–сотни миллисекунд. Для легитимного входа это незаметно, для перебора — замедление в миллионы раз.
Различия функций:
- bcrypt — параметр cost (каждая единица удваивает время), проверен временем, обрезает пароль до 72 байт;
- scrypt — стоимость по памяти и времени;
- argon2id — победитель конкурса Password Hashing Competition, настраиваются память, итерации и параллелизм; память делает перебор на GPU и ASIC дорогим. Текущая рекомендация OWASP;
- PBKDF2 — если нужна сертификация FIPS, с большим числом итераций.
Соль — уникальная случайная строка на каждый пароль. Одинаковые пароли дают разные хеши, радужные таблицы бесполезны, перебор идёт по каждому пользователю отдельно. Все перечисленные функции включают соль и параметры в выходную строку.
Не шифрование: зашифрованный пароль расшифровывается ключом, который лежит рядом — утечка ключа раскрывает все пароли.
Что хотят услышать
- Ключевое: намеренная стоимость, а не длина хеша.
- Особенности bcrypt и argon2, память как защита от GPU.
- Роль соли.
- Хеширование вместо шифрования.
Частые ошибки
- «SHA-256 с солью достаточно».
- Глобальная соль на всех пользователей.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✓Они намеренно медленные и настраиваемые по стоимости, что удорожает перебор
- ✗Они дают более длинный хеш, который труднее подобрать
- ✗Они устойчивы к радужным таблицам сами по себе и потому не требуют хранить соль
- ✗Они шифруют пароль, и его можно расшифровать при необходимости
Что спросят дальше
- Что делать с сохранёнными хешами при повышении параметра стоимости?
- Почему сообщение об ошибке входа не должно различать неверный логин и неверный пароль?
Разбор темы
- Безопасность приложения: OWASP, доступ и секреты
OWASP Top 10 в редакции 2025, разница аутентификации и авторизации, ловушки JWT против сессий, хранение паролей и секретов, безопасность цепочки поставок.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.