Усі статті

PBKDF2: найстаріший стандарт розтягування ключів

PBKDF2 (Password-Based Key Derivation Function 2) — один із найстаріших і найпоширеніших стандартів для перетворення пароля на криптографічний ключ або хеш, стійкий до перебору. На відміну від Argon2 чи scrypt, він не вимагає пам'яті — лише обчислювального часу.

Принцип розтягування ключа

Замість того, щоб хешувати пароль один раз, PBKDF2 застосовує базову хеш-функцію (зазвичай HMAC-SHA256) багато тисяч разів поспіль, використовуючи результат кожної ітерації як вхід для наступної. Це навмисно уповільнює обчислення одного хешу, роблячи масовий перебір значно дорожчим для зловмисника.

Чому кількість ітерацій потрібно збільшувати з часом

Обчислювальна потужність доступного обладнання постійно зростає, тож фіксована кількість ітерацій, яка була "достатньо повільною" п'ять років тому, сьогодні може перебиратись у рази швидше. Організації на кшталт OWASP регулярно оновлюють рекомендовану мінімальну кількість ітерацій PBKDF2 (наразі — сотні тисяч для SHA-256).

Чому PBKDF2 менш стійкий, ніж Argon2 чи scrypt

Оскільки PBKDF2 вимагає лише обчислень і не потребує великого обсягу пам'яті, його простіше й дешевше атакувати на спеціалізованому обладнанні (GPU, ASIC), яке ефективно паралелізує саме обчислювальні операції. Тому для нових систем частіше рекомендують memory-hard алгоритми, хоча PBKDF2 залишається широко підтримуваним стандартом (зокрема, в NIST-рекомендаціях).

Навіщо це потрібно

  • Генерувати криптографічні ключі з паролів для шифрування (наприклад, в WPA2/WPA3 для Wi-Fi).
  • Підтримувати сумісність зі старими системами, що використовують PBKDF2 для зберігання паролів.
  • Розуміти, чому рекомендована кількість ітерацій постійно зростає в нових версіях стандартів.

Вибір базової хеш-функції має значення

Старі реалізації PBKDF2 часто використовували HMAC-SHA1 за замовчуванням — сам SHA-1 вважається криптографічно ослабленим для прямого хешування, але в конструкції HMAC ця слабкість не є критичною вразливістю. Проте сучасні рекомендації однозначно радять HMAC-SHA256 чи HMAC-SHA512 — не через пряму загрозу від SHA-1, а тому що довший вивід і сучасніша функція дають більший запас міцності без відчутної втрати швидкості.

Спробувати інструмент