Код аутентификации сообщения (MAC)
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Примитив MAC позволяет вам проверить, что никто не подделал ваши данные. Отправитель, поделившись симметричным ключом с получателем, может вычислить тег аутентификации для данного сообщения, что позволяет получателю проверить, что сообщение пришло от ожидаемого отправителя и не было изменено.
MAC имеет следующие свойства:
- Подлинность : знание ключа — единственный способ создать проверяемую метку MAC.
- Симметричный : для вычисления и проверки тега требуется один и тот же ключ.
MAC может быть детерминированным или рандомизированным, в зависимости от алгоритма. Tink не реализует недетерминированные алгоритмы MAC на данный момент. Вы должны использовать MAC только для аутентификации сообщений, а не для других целей, таких как генерация псевдослучайных байтов (для этого см. PRF ).
Если вам нужен асимметричный примитив, см. раздел Цифровая подпись .
Выберите тип ключа
Для большинства случаев мы рекомендуем использовать HMAC_SHA256 , но есть и другие варианты.
В целом справедливо следующее:
Минимальные гарантии безопасности
- Уровень аутентификации не менее 80 бит
- Защита от экзистенциальной подделки с помощью атаки с использованием выбранного открытого текста
- Как минимум 128-битная защита от атак с восстановлением ключа, а также в многопользовательских сценариях (когда злоумышленник нацеливается не на конкретный ключ, а на любой ключ из набора, содержащего до 232 ключей)
Пример использования
См. Я хочу защитить данные от несанкционированного доступа .
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-25 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-25 UTC."],[[["\u003cp\u003eThe Message Authentication Code (MAC) primitive, using a shared symmetric key, enables verification of data integrity and authenticity by generating an authentication tag.\u003c/p\u003e\n"],["\u003cp\u003eMAC ensures authenticity as only the key holder can create a verifiable tag, and it's symmetric, requiring the same key for both computation and verification.\u003c/p\u003e\n"],["\u003cp\u003eTink recommends HMAC_SHA256 for most use cases, while HMAC_SHA512 offers higher security and AES256_CMAC might provide better performance with specific hardware.\u003c/p\u003e\n"],["\u003cp\u003eTink's MAC implementation guarantees a minimum of 80-bit authentication strength, protection against forgery, and at least 128-bit security against key recovery attacks, even in multi-user environments.\u003c/p\u003e\n"]]],["MAC uses a shared symmetric key between sender and recipient to verify message authenticity and integrity. The sender computes an authentication tag for a message, which the recipient uses to confirm its origin and unaltered state. MAC guarantees authenticity, where only key holders can create verifiable tags. Key recommendations include HMAC_SHA256, HMAC_SHA512 (most conservative), and AES256_CMAC (fastest with AES-NI). MAC is designed solely for message authentication, offering a minimum of 80-bit authentication strength.\n"],null,[]]