Примитив MAC позволяет вам убедиться, что никто не подделывает ваши данные. Отправитель, использующий симметричный ключ получателя, может вычислить тег аутентификации для данного сообщения, что позволяет получателю убедиться, что сообщение пришло от ожидаемого отправителя и не было изменено.
МАК имеет следующие свойства:
- Подлинность : знание ключа — единственный способ создать проверяемый MAC-тег.
- Симметричный : для вычисления и проверки тега требуется один и тот же ключ.
MAC может быть детерминированным или рандомизированным, в зависимости от алгоритма. На данный момент Tink не реализует недетерминированные алгоритмы MAC. Вам следует использовать MAC только для аутентификации сообщений, а не для других целей, таких как генерация псевдослучайных байтов (см. PRF ).
Если вместо этого вам нужен асимметричный примитив, см. Цифровая подпись .
Выберите тип ключа
В большинстве случаев мы рекомендуем использовать HMAC_SHA256 , но есть и другие варианты.
В целом справедливо следующее:
- HMAC_SHA512 может быть быстрее, а может и нет, в зависимости от размера вашего сообщения и особенностей используемого вами оборудования.
- HMAC_SHA512 — наиболее консервативный режим, который можно использовать практически для неограниченного количества сообщений.
AES256_CMAC является самым быстрым в системах, поддерживающих аппаратное ускорение AES-NI .
Минимальные гарантии безопасности
- По крайней мере, 80-битная сила аутентификации
- Защита от экзистенциальной подделки при атаке с выбранным открытым текстом
- Не менее 128-битная защита от атак с восстановлением ключей, а также в многопользовательских сценариях (когда злоумышленник нацелен не на конкретный ключ, а на любой ключ из набора до 2 32 ключей)
Пример варианта использования
См. раздел Я хочу защитить данные от несанкционированного доступа .