Все статьи

PBKDF2: самый старый стандарт растяжения ключей

Российский закон «О персональных данных» (152-ФЗ) требует от операторов применять «необходимые правовые, организационные и технические меры» для защиты персональных данных, включая пароли, но не называет конкретный алгоритм. На практике для сертифицированных государственных систем это часто означает хеш-функцию ГОСТ Р 34.11-2012 («Стрибог») вместо SHA-2 внутри конструкции, аналогичной PBKDF2, — сама схема растяжения ключа при этом остаётся такой же.

Принцип растяжения ключа

Вместо того чтобы хешировать пароль один раз, PBKDF2 применяет базовую хеш-функцию (обычно HMAC-SHA256, а в российских сертифицированных системах — HMAC на основе Стрибога) много тысяч раз подряд, используя результат каждой итерации как вход для следующей. Это намеренно замедляет вычисление одного хеша, делая массовый перебор значительно дороже для злоумышленника.

PBKDF2 в Wi-Fi: WPA2 и WPA3

Одно из самых массовых применений PBKDF2 в мире — это вывод ключа шифрования Wi-Fi из пароля сети в стандарте WPA2-PSK: пароль сети пропускается через PBKDF2-HMAC-SHA1 с 4096 итерациями и именем сети (SSID) в качестве соли, давая 256-битный ключ. Именно поэтому короткий Wi-Fi пароль так легко перебрать офлайн, перехватив всего один handshake, — количество итераций здесь зафиксировано стандартом и не может быть увеличено пользователем.

Зачем это нужно

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

При чём здесь Web Crypto API и HTTPS

Этот инструмент вычисляет PBKDF2 прямо в браузере через встроенный Web Crypto API — быстрее и надёжнее, чем реализация на чистом JavaScript. Но браузеры намеренно ограничивают доступ к crypto.subtle «безопасным контекстом» (HTTPS или localhost): без шифрованного соединения этот и подобные криптографические инструменты просто не будут работать, вне зависимости от того, насколько мощное у вас устройство.

Попробовать инструмент