Функция формирования ключа

Функция формирования ключа (англ. key derivation function, KDF) — функция, формирующая один или несколько секретных ключей на основе секретного значения (главный ключ, пароль или парольная фраза) с помощью псевдослучайной функции[1][2]. Функция формирования ключа может использоваться для создания ключа необходимой длины или заданного формата. Примером этого может служить преобразование секретного ключа, полученного как результат протокола Диффи — Хеллмана, в симметричный ключ для использования в алгоритме AES. Часто в качестве псевдослучайной функции для формирования ключа используются криптографические хеш-функции[3].

Некоторые широко используемые алгоритмы формирования ключа: bcrypt, PBKDF2, scrypt.

Использование

[править | править код]

Функция формирования ключа часто используются в связке с несекретными параметрами для получения одного или нескольких секретных ключей на основе общего секретного значения. Такое применение может помешать атакующему, владеющему сформированным ключом, узнать информацию об исходном секретном значении или о любом из сформированных ключей. Функция формирования ключа может применяться для генерации ключа, удовлетворяющего заданным желательным свойствам (например, исключение слабых ключей в некоторых шифрующих системах).

Функции формирования ключа на основе пароля часто используются для хеширования паролей и их последующей верификации. В этом случае несекретный параметр, используемый в связке с секретным паролем, называется «соль». В 2013 году был анонсирован независимый открытый конкурс Password Hashing Competition[англ.] по разработке новой функции хеширования паролей. Конкурс завершился 20 ноября 2015 года, победителем стал алгоритм Argon2[4]. Помимо победителя, четыре алгоритма были удостоены специального признания: Catena, Lyra2, Makwa и yescrypt.

Примечания

[править | править код]
  1. Bezzi, Michele et al. Data privacy // Privacy and Identity Management for Life (неопр.) / Camenisch, Jan et al.. — Springer, 2011. — С. 185—186. — ISBN 9783642203176.
  2. Kaliski, Burt; RSA Laboratories.: RFC 2898 -- PKCS #5: Password-Based Cryptography Specification, Version 2.0. IETF. Дата обращения: 12 сентября 2015. Архивировано 1 марта 2018 года.
  3. Zdziarski, Jonathan. Hacking and Securing IOS Applications: Stealing Data, Hijacking Software, and How to Prevent It (англ.). — O’Reilly Media, 2012. — P. 252—253. — ISBN 9781449318741. Архивировано 9 апреля 2017 года.
  4. «Password Hashing Competition». Дата обращения: 19 ноября 2015. Архивировано 7 апреля 2019 года.