Хранение паролей: соль и стоимость
Почему одинаковые пароли не должны давать одинаковые хеши и почему хеш пароля должен быть намеренно медленным.
Подписи внутри интерактивного демо пока на английском.
| User | Stored hash: SHA-256(password) | Lookup table |
|---|
accounts cracked instantly 0 / 6shared hashes 0
Real SHA-256, computed in your browser. aysel and cavid have the same password, so they have the same hash, and so do dilara and fidan. A table of hashes of common passwords cracks 0 accounts without any work.
На что обратить внимание
- Без соли у пользователей с одинаковым паролем одинаковый хеш, и заранее вычисленные таблицы мгновенно вскрывают популярные пароли.
- Соль делает каждый хеш уникальным, но не замедляет перебор. Замедляет его только стоимость хеширования.
- Используйте Argon2id (RFC 9106), а если он недоступен — bcrypt или PBKDF2 с большим числом итераций. Скорости перебора здесь — грубые оценки для одного современного GPU.