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