PBKDF2
PBKDF2 (англ. Password-Based Key Derivation Function) — стандарт формирования ключа на основе пароля. Является частью PKCS #5 v2.0 (RFC 2898). Заменил PBKDF1, который ограничивал длину порождаемого ключа 160 битами.
PBKDF2 | |
---|---|
![]() | |
Разработчики | RSA Security[d] |
PBKDF2 использует псевдослучайную функцию для получения ключей. Длина генерируемого ключа не ограничивается (хотя эффективная мощность пространства ключей может быть ограничена особенностями применяемой псевдослучайной функции). Использование PBKDF2 рекомендовано для новых программ и продуктов. В качестве псевдослучайной может быть выбрана криптографическая хеш-функция, шифр, HMAC.
В Российской Федерации использование функции PBKDF2 регламентируется рекомендациями по стандартизации Р 50.1.111-2016 «Парольная защита ключевой информации»[1], при этом в качестве псевдослучайной функции рекомендуется использовать функцию выработки имитовставки HMAC на основе бесключевой функции хеширования Стрибог (ГОСТ Р 34.11-2012).
Алгоритм
Общий вид вызова PBKDF2:
Опции алгоритма:
- PRF — псевдослучайная функция, с выходом длины hLen
- P — мастер-пароль
- S — соль (salt)
- c — количество итераций, положительное целое число
- dkLen — желаемая длина ключа (не более ( — 1) * hLen)
- Выходной параметр: DK — сгенерированный ключ длины dkLen
Ход вычислений:
1. l — количество блоков длины hLen в ключе (округление вверх), r — количество байт в последнем блоке:
2. Для каждого блока применить функцию F с параметрами P — мастер пароль, S — соль, c — количество итераций, и номером блока:
F определена как операция xor () над первыми c итерациями функции PRF, примененной к паролю P и объединению соли S и номеру блока, записанному как 4-байтовое целое с первым msb байтом.
3. Объединение полученных блоков составляет ключ DK. От последнего блока берется r байт.
Скорость работы
Одной из задач при создании PBKDF2 было усложнить перебор паролей. Благодаря множеству зацепленных вычислений PRF скорость генерации ключа является небольшой. Например, для WPA-PSK с параметрами[2].
были достигнуты скорости перебора ключей 70 штук в секунду для Intel Core2 и около 1 тысячи на ПЛИС Virtex-4 FX60[3]. Для сравнения, классические функции хеширования пароля LANMAN имеют скорость перебора около сотен миллионов вариантов в секунду[4].
Использование
Алгоритмы
- Используется как первая и последняя стадия в адаптивной криптографической функции формирования ключа на основе пароля scrypt. Данная функция была специально разработана для приложений, где вычисление PBKDF2 оказывается слишком быстрым.
Системы
- Wi-Fi Protected Access (WPA и WPA2)
- Microsoft Windows Data Protection API (DPAPI)[5]
- Шифрование в формате OpenDocument (OpenOffice.org)
- Схема шифрования AES в WinZip[6][7]
- LastPass для хеширования паролей[8]
- 1Password для хеширования паролей
- Roboform для хеширования паролей
- Apple iOS мобильная операционная система, для защиты пользовательских кодов доступа и паролей
Шифрование дисков
Примечания
- Р 50.1.111-2016 Информационная технология. Криптографическая защита информации. Парольная защита ключевой информации. . Росстандарт (2016).
- WPA key calculation: From passphrase to hex
- OpenCiphers
- OpenCiphers
- Windows Data Protection Архивировано 16 апреля 2007 года.
- WinZip® — AES Coding Tips for Developers
- BRG Main SIte
- LastPass : The last password you’ll have to remember: LastPass Security Notification
- nsa.org is registered with pairNIC.com (недоступная ссылка). Дата обращения: 18 апреля 2013. Архивировано 15 марта 2007 года.