PBKDF2 (образовано от англ. password-based key derivation function) — стандарт формирования ключа на основе пароля. Является частью PKCS #5 v2.0 (RFC 2898). Заменил PBKDF1, который ограничивал длину генерируемого ключа 160 битами.
PBKDF2 | |
---|---|
Разработчики | RSA Security[вд] |
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-байтовое целое число в формате big-endian.
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). Дата обращения: 10 апреля 2018. Архивировано 11 апреля 2018 года.
- ↑ WPA key calculation: From passphrase to hex . Дата обращения: 4 марта 2012. Архивировано 29 апреля 2015 года.
- ↑ OpenCiphers . Дата обращения: 5 мая 2011. Архивировано 15 апреля 2018 года.
- ↑ OpenCiphers . Дата обращения: 5 мая 2011. Архивировано 10 марта 2018 года.
- ↑ Windows Data Protection Архивировано 16 апреля 2007 года.
- ↑ WinZip — AES Coding Tips for Developers . Дата обращения: 5 мая 2011. Архивировано 4 апреля 2018 года.
- ↑ BRG Main SIte
- ↑ LastPass Security Notification . Дата обращения: 5 мая 2011. Архивировано 19 мая 2012 года.
- ↑ nsa.org is registered with pairNIC.com . Дата обращения: 18 апреля 2013. Архивировано 15 марта 2007 года.
Литература
править- RFC 2898, стр. 9—11
- NIST Special Publication 800-132. Recommendation for Password-Based Key Derivation. // NIST
Эта статья входит в число добротных статей русскоязычного раздела Википедии. |