Kod MAC (Message Authentication)

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ą.