Псевдослучайная функция (PRF)

Примитив псевдослучайной функции (PRF) позволяет создавать стабильные псевдослучайные выходные данные произвольной длины для данного входного сигнала.

Поскольку Tink работает с наборами ключей , этот примитив предоставляет соответствующий набор PRF вместо одного PRF. PRF индексируются 32-битным идентификатором ключа. Это можно использовать для поворота ключа, используемого для редактирования фрагмента информации, без потери предыдущей ассоциации.

ПРФ обладает следующими свойствами:

  • Детерминированный : вычисление PRF для данного входного сигнала всегда будет давать один и тот же результат.
  • Случайность : выходные данные PRF неотличимы от случайных байтов.

Выберите тип ключа

В большинстве случаев мы рекомендуем использовать HMAC_SHA256_PRF , но есть и другие варианты.

В целом справедливо следующее:

  • HMAC_SHA512_PRF может быть быстрее, а может и нет, в зависимости от размера входных данных и особенностей используемого вами оборудования.
  • HMAC_SHA512_PRF — наиболее консервативный режим, который можно использовать практически для неограниченного количества сообщений.
  • AES_CMAC_PRF работает быстрее всего в системах, поддерживающих аппаратное ускорение AES-NI .

Минимальные гарантии безопасности

  • Без знания ключа PRF неотличима от случайной функции.
  • Не менее 128-битная безопасность, в том числе в многопользовательских сценариях (когда злоумышленник нацелен не на конкретный ключ, а на любой ключ из набора до 2 32 ключей)
  • Доступно не менее 16 байт вывода

Примеры использования

Варианты использования PRF включают детерминированное редактирование личной информации (PII), хэш-функции с ключами и создание субидентификаторов, которые не позволяют присоединяться к исходному набору данных без знания ключа.

Хотя PRF можно использовать для подтверждения подлинности сообщения, для этого варианта использования рекомендуется использовать примитив MAC , поскольку он поддерживает проверку, позволяет избежать проблем безопасности, которые часто возникают во время проверки, и имеет автоматическую поддержку ротации ключей. Это также позволяет использовать недетерминированные алгоритмы.