Код аутентификации сообщения (MAC)

Примитив MAC позволяет вам проверить, что никто не подделал ваши данные. Отправитель, поделившись симметричным ключом с получателем, может вычислить тег аутентификации для данного сообщения, что позволяет получателю проверить, что сообщение пришло от ожидаемого отправителя и не было изменено.

MAC имеет следующие свойства:

  • Подлинность : знание ключа — единственный способ создать проверяемую метку MAC.
  • Симметричный : для вычисления и проверки тега требуется один и тот же ключ.

MAC может быть детерминированным или рандомизированным, в зависимости от алгоритма. Tink не реализует недетерминированные алгоритмы MAC на данный момент. Вы должны использовать MAC только для аутентификации сообщений, а не для других целей, таких как генерация псевдослучайных байтов (для этого см. PRF ).

Если вам нужен асимметричный примитив, см. раздел Цифровая подпись .

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

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

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

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

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

  • Уровень аутентификации не менее 80 бит
  • Защита от экзистенциальной подделки с помощью атаки с использованием выбранного открытого текста
  • Как минимум 128-битная защита от атак с восстановлением ключа, а также в многопользовательских сценариях (когда злоумышленник нацеливается не на конкретный ключ, а на любой ключ из набора, содержащего до 232 ключей)

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

См. Я хочу защитить данные от несанкционированного доступа .