0Pricing
Cryptology Academy · Lekcja

CMAC i Poly1305: MAC oparte na szyfrze blokowym

Porównać CMAC i Poly1305 jako alternatywy dla MAC opartych na funkcjach skrótu

CMAC i Poly1305: MAC oparte na szyfrze blokowym to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Czym jest MAC?

Kod uwierzytelniania wiadomości (MAC) przyjmuje klucz i wiadomość, a następnie generuje znacznik. Znacznik potwierdza, że wiadomość nie została zmodyfikowana i że utworzyła ją osoba posiadająca klucz.

HMAC a MAC oparte na szyfrach blokowych

HMAC używa funkcji skrótu jako swojego prymitywu. CMAC i Poly1305 wykorzystują natomiast szyfry blokowe lub arytmetykę wielomianów. MAC-y oparte na szyfrach blokowych nie zależą od funkcji skrótu i naturalnie integrują się ze sprzętową obsługą AES.

Konstrukcja CMAC

CMAC (Cipher-based MAC) jest zdefiniowany w dokumencie NIST SP 800-38B. Dopełnia wiadomość do granicy bloku, wyprowadza dwa podklucze K1/K2 z szyfru, wykonuje XOR z ostatnim blokiem, a następnie uruchamia tryb CBC bez przechowywania pośredniego szyfrogramu.

Wyprowadzanie podkluczy CMAC

K1 = AES_K(0^128) przesunięte w lewo o 1 bit, z operacją XOR ze stałą, jeśli MSB miało wartość 1. K2 = K1 przesunięte w ten sam sposób. Podklucze te bezpiecznie wiążą ostatni niepełny blok, zapobiegając rozszerzeniu długości.

Przegląd Poly1305

Poly1305 to jednorazowy mechanizm uwierzytelniania zaprojektowany przez Daniela Bernstein. Oblicza wartość wielomianu nad ciałem pierwszym 2^130-5, traktując wiadomość jako współczynniki wielomianu i używając jednorazowej pary kluczy (r, s).

Matematyka Poly1305

Tag = (suma (m_i * r^i) mod 2^130-5) + s mod 2^128. Klucz r jest ograniczany do 22 określonych bitów, aby zapobiegać atakom czasowym. s to jednorazowa maska dodawana do wyniku, mająca 16 bajtów.

ChaCha20-Poly1305

Poly1305 jest niemal zawsze łączony z ChaCha20. ChaCha20 generuje jednorazowe (r, s) ze strumienia szyfru strumieniowego, dzięki czemu połączony schemat AEAD jest formalnie bezpieczny i niezwykle szybki na procesorach ARM oraz mobilnych procesorach.

AES-GCM a AES-CMAC

AES-GCM uwierzytelnia za pomocą GHASH, czyli wielomianowego MAC-a nad GF(2^128). AES-CMAC jest prostszy i jest używany w IEEE 802.11i (WPA2) oraz w zestawach szyfrów TLS 1.2. GCM zapewnia szyfrowanie i uwierzytelnianie w jednym przebiegu.

Porównanie wydajności

Poly1305 na ARM Cortex-A osiąga około 1 cyklu na bajt przy użyciu intrinsics NEON. AES-CMAC wymaga jednej operacji na bloku AES dla każdego bloku o długości 16 bajtów. W przypadku dużych ilości danych Poly1305 jest wydajniejszy od CMAC na sprzęcie bez AES-NI.

Właściwości bezpieczeństwa

CMAC jest egzystencjalnie niepodrabialny w warunkach ataku z wybranymi wiadomościami, przy założeniu, że AES jest pseudolosową permutacją. Poly1305 jest bezwarunkowo bezpieczny przy prawdziwie losowym kluczu jednorazowym — prawdopodobieństwo sfałszowania wynosi co najwyżej 8*ceil(L/16)/2^106.

Zastosowania

CMAC: WPA2, S/MIME, integralność systemów plików. Poly1305: TLS 1.3 przez ChaCha20-Poly1305, VPN WireGuard, Signal Protocol, Noise Protocol Framework. Oba mechanizmy są szeroko wdrażane w nowoczesnych systemach o wysokim poziomie bezpieczeństwa.

Szybki test

Jaki MAC jest używany w AEAD ChaCha20-Poly1305?

Podsumowanie

Poznali Państwo konstrukcję CMAC opartą na CBC oraz arytmetykę wielomianową Poly1305. Oba mechanizmy to stałoczasowe i bezpieczne MAC-y używane w rzeczywistych protokołach. Następnie: TLS/HTTPS i sposób łączenia wszystkich tych prymitywów.

Często zadawane pytania

Czy lekcja „CMAC i Poly1305: MAC oparte na szyfrze blokowym” jest bezpłatna?

Tak — pełny tekst „CMAC i Poly1305: MAC oparte na szyfrze blokowym” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „CMAC i Poly1305: MAC oparte na szyfrze blokowym”?

Porównać CMAC i Poly1305 jako alternatywy dla MAC opartych na funkcjach skrótu Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?

Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „CMAC i Poly1305: MAC oparte na szyfrze blokowym”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?

Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Koncepcje MAC i ataki polegające na rozszerzeniu długości
  2. Konstrukcja HMAC i dowód bezpieczeństwa
  3. HMAC w API: podpisywanie żądań
  4. CMAC i Poly1305: MAC oparte na szyfrze blokowym
← Powrót do Cryptology Academy