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 оказывается слишком быстрым.

Системы

править

Шифрование дисков

править

Примечания

править
  1. Р 50.1.111-2016 Информационная технология. Криптографическая защита информации. Парольная защита ключевой информации. Росстандарт (2016). Дата обращения: 10 апреля 2018. Архивировано 11 апреля 2018 года.
  2. WPA key calculation: From passphrase to hex. Дата обращения: 4 марта 2012. Архивировано 29 апреля 2015 года.
  3. OpenCiphers. Дата обращения: 5 мая 2011. Архивировано 15 апреля 2018 года.
  4. OpenCiphers. Дата обращения: 5 мая 2011. Архивировано 10 марта 2018 года.
  5. Windows Data Protection Архивировано 16 апреля 2007 года.
  6. WinZip — AES Coding Tips for Developers. Дата обращения: 5 мая 2011. Архивировано 4 апреля 2018 года.
  7. BRG Main SIte
  8. LastPass Security Notification. Дата обращения: 5 мая 2011. Архивировано 19 мая 2012 года.
  9. nsa.org is registered with pairNIC.com. Дата обращения: 18 апреля 2013. Архивировано 15 марта 2007 года.

Литература

править