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
- Koncepcje MAC i ataki polegające na rozszerzeniu długości
- Konstrukcja HMAC i dowód bezpieczeństwa
- HMAC w API: podpisywanie żądań
- CMAC i Poly1305: MAC oparte na szyfrze blokowym