Kod MAC (Message Authentication)
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Primitive MAC umożliwia sprawdzenie, czy nikt nie wprowadził zmian w Twoich danych.
Nadawca, który udostępnia klucz symetryczny odbiorcy, może obliczyć znacznik uwierzytelniający dla danej wiadomości. Pozwala to odbiorcy zweryfikować, czy wiadomość pochodzi od oczekiwanego nadawcy i czy nie została zmodyfikowana.
Adres MAC ma te właściwości:
- Autentyczność: znajomość klucza to jedyny sposób na utworzenie weryfikowalnego znacznika MAC.
- Symmetric obliczenie i weryfikacja tagu wymagają tego samego klucza.
Adres MAC może być deterministyczny lub losowy, w zależności od algorytmu. Tink nie implementuje obecnie niedeterministycznych algorytmów MAC. Musisz używać MAC tylko do uwierzytelniania wiadomości, a nie do innych celów, takich jak generowanie pseudolosowych bajtów (patrz PRF).
Jeśli potrzebujesz prymitywu asymetrycznego, zapoznaj się z artykułem Digital Signature (ang.).
Wybieranie typu klucza
W większości przypadków zalecamy używanie funkcji HMAC_SHA256, ale dostępne są też inne opcje.
Ogólnie obowiązują następujące zasady:
Minimalne gwarancje bezpieczeństwa
- Siła uwierzytelniania co najmniej 80-bitowa
- Zabezpieczenie przed fałszowaniem egzystencjalnym w ramach ataku z wybranym jawnym tekstem
- co najmniej 128-bitowe zabezpieczenia przed atakami na klucze, a także w scenariuszach wieloużytkownikowych (gdy atakujący nie kieruje się na konkretny klucz, ale na dowolny klucz z zestawu do 232 kluczy);
Przykładowy przypadek użycia
Zapoznaj się z artykułem Chcę chronić dane przed modyfikacją.
O ile nie stwierdzono inaczej, treść tej strony jest objęta licencją Creative Commons – uznanie autorstwa 4.0, a fragmenty kodu są dostępne na licencji Apache 2.0. Szczegółowe informacje na ten temat zawierają zasady dotyczące witryny Google Developers. Java jest zastrzeżonym znakiem towarowym firmy Oracle i jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-25 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 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,[]]