Примитив псевдослучайной функции (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 , поскольку он поддерживает проверку, позволяет избежать проблем безопасности, которые часто возникают во время проверки, и имеет автоматическую поддержку ротации ключей. Это также позволяет использовать недетерминированные алгоритмы.