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:
- HMAC_SHA512 może być szybszy lub nie, w zależności od rozmiaru wiadomości i szczegółów używanego sprzętu.
- HMAC_SHA512 to najbardziej zachowawczy tryb, który można stosować w przypadku praktycznie nieograniczonej liczby wiadomości.
AES256_CMAC działa najszybciej na systemach, które obsługują akcelerację sprzętową AES-NI.
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ą.