Хеши/крипто
PBKDF2 Hash + Verify
Производный ключ через PBKDF2 (RFC 8018) с паролем, HMAC-SHA1/256/384/512 и настраиваемым количеством итераций.
PBKDF2 (RFC 8018) многократно применяет HMAC к паролю и соли, чтобы искусственно замедлить вычисление, — это старейший из стандартизированных алгоритмов для хеширования паролей и вывода ключей шифрования.
Как пользоваться
- Получение ключа: введите пароль, выберите алгоритм HMAC (SHA-1/256/384/512) и количество итераций — получите производный ключ заданной длины.
- Проверка: вставьте пароль и существующий PBKDF2-хеш, чтобы проверить соответствие без ручного повторного вычисления.
- Чем больше итераций, тем медленнее и безопаснее вычисление — подбирайте значение под бюджет времени ответа сервера.
Типичные сценарии
- Вывод ключа шифрования из пароля пользователя для файловых контейнеров или собственного протокола.
- Проверка совместимости реализации PBKDF2 между разными языками программирования (параметры должны точно совпадать).
- Хеширование паролей в системах, где требуется FIPS-совместимый алгоритм (PBKDF2 одобрен NIST).
Что стоит помнить
В отличие от bcrypt и Argon2, PBKDF2 не является memory-hard — требует только времени процессора, поэтому менее устойчив к атакам на GPU с большим количеством параллельных вычислительных блоков.
Рекомендуемое количество итераций растёт со временем по рекомендациям NIST и OWASP по мере ускорения оборудования — стоит периодически сверяться с актуальными рекомендациями.
Статья об этом инструменте: PBKDF2: самый старый стандарт растяжения ключей
Часто задаваемые вопросы
Чем PBKDF2 отличается от bcrypt или Argon2 для хеширования паролей?
PBKDF2 многократно применяет HMAC-хеш-функцию, чтобы замедлить перебор, но, в отличие от bcrypt или Argon2, не требователен к памяти, поэтому его относительно дешевле взломать на GPU. Он всё ещё широко используется и одобрен FIPS, но для новых систем обычно рекомендуют Argon2.
За что отвечает количество итераций и каким оно должно быть?
Количество итераций задаёт, сколько раз применяется базовая хеш-функция, напрямую обменивая скорость на стойкость к перебору. Текущие рекомендации — сотни тысяч итераций для SHA-256, с увеличением со временем по мере роста мощности оборудования.
Зачем PBKDF2 нужна соль?
Соль гарантирует, что одинаковые пароли дают разный результат, не позволяя злоумышленникам использовать заранее вычисленные радужные таблицы и заставляя атаковать каждый хеш отдельно.
Имеет ли значение, какую базовую хеш-функцию использует PBKDF2?
Да. Старые реализации часто использовали HMAC-SHA1 по умолчанию — в конструкции HMAC это не критическая уязвимость, но современные рекомендации однозначно советуют HMAC-SHA256 или более сильный вариант ради большего запаса прочности без заметной потери скорости.
Где ещё используется PBKDF2, кроме хранения паролей?
PBKDF2 широко применяют для вывода криптографических ключей шифрования из паролей — например, в WPA2/WPA3 для Wi-Fi и во многих форматах зашифрованных файловых контейнеров.