CMAC og Poly1305: MAC-er basert på blokkchifre
Sammenlign CMAC og Poly1305 som alternativer til hashbaserte MAC-er.
CMAC og Poly1305: MAC-er basert på blokkchifre er en gratis leksjon i Cryptology Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Cryptology Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Cryptology Academy inneholder totalt 4 leksjoner.
Hva er en MAC?
En Message Authentication Code (MAC) tar en nøkkel og en melding og produserer en tag. Taggen beviser at meldingen ikke har blitt manipulert, og at den ble produsert av noen som har nøkkelen.
HMAC kontra blokkchiffer-MAC-er
HMAC bruker en hashfunksjon som primær byggestein. CMAC og Poly1305 bruker i stedet blokkchiffre eller polynomregning. Blokkchiffer-MAC-er unngår avhengigheten av en hashfunksjon og integreres naturlig med AES-maskinvare.
CMAC-konstruksjon
CMAC (Cipher-based MAC) er definert i NIST SP 800-38B. Den utfyller meldingen til en blokkgrense, utleder to undernøkler K1/K2 fra chifferet, utfører XOR med dem i den siste blokken og kjører deretter CBC-modus uten å lagre mellomliggende chiffertekst.
Utledning av CMAC-undernøkler
K1 = AES_K(0^128) forskjøvet én bit mot venstre, med XOR mot en konstant hvis MSB var 1. K2 forskyves på samme måte fra K1. Disse undernøklene binder den siste ufullstendige blokken sikkert for å forhindre lengdeutvidelse.
Oversikt over Poly1305
Poly1305 er en engangsautentikator utviklet av Daniel Bernstein. Den evaluerer et polynom over primtallet 2^130-5, behandler meldingen som polynomkoeffisienter og bruker et engangsnøkkelpar (r, s).
Poly1305-matematikk
Tag = (sum of (m_i * r^i) mod 2^130-5) + s mod 2^128. Nøkkelen r begrenses til 22 bestemte bit for å forhindre timingangrep. s er en 16-byters engangsmaske som legges til.
ChaCha20-Poly1305
Poly1305 kombineres nesten alltid med ChaCha20. ChaCha20 genererer engangsverdiene (r, s) fra strømchifferets keystream, noe som gjør den kombinerte AEAD-konstruksjonen beviselig sikker og svært rask på ARM-/mobilprosessorer.
AES-GCM kontra AES-CMAC
AES-GCM autentiserer ved hjelp av GHASH, en polynomisk MAC over GF(2^128). AES-CMAC er enklere og brukes i IEEE 802.11i (WPA2) og TLS 1.2-chiffersuiter. GCM gir både kryptering og autentisering i én gjennomgang.
Ytelsessammenligning
Poly1305 på ARM Cortex-A oppnår omtrent 1 syklus per byte ved bruk av NEON-intrinsics. AES-CMAC krever én AES-blokkoperasjon per blokk på 16 byte. For store datamengder har Poly1305 bedre ytelse enn CMAC på maskinvare uten AES-NI.
Sikkerhetsegenskaper
CMAC er eksistensielt uforfalskbart under et valgt-melding-angrep, forutsatt at AES er en pseudotilfeldig permutasjon. Poly1305 er informasjonsteoretisk sikkert med en virkelig tilfeldig engangsnøkkel – sannsynligheten for forfalskning er høyst 8*ceil(L/16)/2^106.
Bruksområder
CMAC: WPA2, S/MIME og integritetssikring av filsystemer. Poly1305: TLS 1.3 via ChaCha20-Poly1305, WireGuard VPN, Signal Protocol og Noise Protocol Framework. Begge er bredt tatt i bruk i moderne systemer med høye sikkerhetskrav.
Hurtigsjekk
Hvilken MAC brukes i ChaCha20-Poly1305 AEAD?
Oppsummering
Du har lært om CMACs CBC-baserte konstruksjon og Poly1305s polynomregning. Begge er MAC-er som kjører i konstant tid, er sikre og brukes i virkelige protokoller. Deretter ser vi på TLS/HTTPS og hvordan alle disse byggesteinene settes sammen.
Lær deg Cryptology Academy med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 67
- Leksjoner
- 261
Ofte stilte spørsmål
Er leksjonen «CMAC og Poly1305: MAC-er basert på blokkchifre» gratis?
Ja – hele teksten i «CMAC og Poly1305: MAC-er basert på blokkchifre» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Cryptology Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Cryptology Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «CMAC og Poly1305: MAC-er basert på blokkchifre»?
Sammenlign CMAC og Poly1305 som alternativer til hashbaserte MAC-er. Du øver på Cryptology Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Cryptology Academy?
Ingen tidligere erfaring er nødvendig. Cryptology Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «CMAC og Poly1305: MAC-er basert på blokkchifre»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Cryptology Academy-leksjonen?
Ja. Alle Cryptology Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- MAC-konsepter og lengdeutvidelsesangrep
- HMAC-konstruksjon og sikkerhetsbevis
- HMAC i API-er: signering av forespørsler
- CMAC og Poly1305: MAC-er basert på blokkchifre