Хеши/крипто

PBKDF2 Hash + Verify

Производный ключ через PBKDF2 (RFC 8018) с паролем, HMAC-SHA1/256/384/512 и настраиваемым количеством итераций.


                    

PBKDF2 (RFC 8018) многократно применяет HMAC к паролю и соли, чтобы искусственно замедлить вычисление, — это старейший из стандартизированных алгоритмов для хеширования паролей и вывода ключей шифрования.

Как пользоваться

Типичные сценарии

Что стоит помнить

В отличие от 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 и во многих форматах зашифрованных файловых контейнеров.

Статьи: Хеши/крипто

Hash Generator: чем MD5, SHA-1 и SHA-256 отличаются друг от друга

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

Checksum Verifier: как проверить, что файл не повреждён

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

HMAC: чем хеш с ключом отличается от обычного хеша

Почему обычный SHA-256 не защищает от подделки сообщения, а HMAC — защищает.

Bcrypt: почему пароли хешируют медленно, а не быстро

Почему быстрый SHA-256 — плохая идея для паролей, а медленный bcrypt — правильная.

UUID: как генерируют идентификаторы, которые почти никогда не повторяются

Почему UUID v4 можно генерировать независимо на миллионах машин без риска коллизий.

Генератор паролей: что на самом деле делает пароль устойчивым

Почему длинный пароль из словаря надёжнее короткого с символами и цифрами.

AES: как работает симметричное шифрование

Почему один и тот же ключ шифрует и расшифровывает данные в AES, и чем это отличается от асимметричного шифрования.

Argon2: почему этот алгоритм победил в конкурсе на хеширование паролей

Чем Argon2 лучше защищает от атак на видеокартах, чем более старые алгоритмы хеширования паролей.

Scrypt: зачем алгоритму нужно много памяти

Почему scrypt намеренно требует много памяти, чтобы усложнить перебор на ASIC-устройствах.

TOTP: как работают одноразовые коды в приложениях-аутентификаторах

Почему код в Google Authenticator работает без интернета и синхронизируется с сервером только по времени.

X.509: что внутри SSL-сертификата

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

PGP: как работает шифрование с открытым и приватным ключом

Почему можно свободно делиться публичным ключом PGP, но не приватным.