Функция формирования ключа (англ. key derivation function, KDF) — функция, формирующая один или несколько секретных ключей на основе секретного значения (главный ключ, пароль или парольная фраза) с помощью псевдослучайной функции[1][2]. Функция формирования ключа может использоваться для создания ключа необходимой длины или заданного формата. Примером этого может служить преобразование секретного ключа, полученного как результат протокола Диффи — Хеллмана, в симметричный ключ для использования в алгоритме AES. Часто в качестве псевдослучайной функции для формирования ключа используются криптографические хеш-функции[3].
Некоторые широко используемые алгоритмы формирования ключа: bcrypt, PBKDF2, scrypt.
Функция формирования ключа часто используются в связке с несекретными параметрами для получения одного или нескольких секретных ключей на основе общего секретного значения. Такое применение может помешать атакующему, владеющему сформированным ключом, узнать информацию об исходном секретном значении или о любом из сформированных ключей. Функция формирования ключа может применяться для генерации ключа, удовлетворяющего заданным желательным свойствам (например, исключение слабых ключей в некоторых шифрующих системах).
Функции формирования ключа на основе пароля часто используются для хеширования паролей и их последующей верификации. В этом случае несекретный параметр, используемый в связке с секретным паролем, называется «соль». В 2013 году был анонсирован независимый открытый конкурс Password Hashing Competition[англ.] по разработке новой функции хеширования паролей. Конкурс завершился 20 ноября 2015 года, победителем стал алгоритм Argon2[4]. Помимо победителя, четыре алгоритма были удостоены специального признания: Catena, Lyra2, Makwa и yescrypt.
Это заготовка статьи по криптографии. Помогите Википедии, дополнив её. |
В статье не хватает ссылок на источники (см. рекомендации по поиску). |