Cryptology Academy · leksjon

CMAC og Poly1305: MAC-er basert på blokkchifre

Sammenlign CMAC og Poly1305 som alternativer til hashbaserte MAC-er.

Leksjon 4 av 413 trinn

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.

Gratis å komme i gang

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

  1. MAC-konsepter og lengdeutvidelsesangrep
  2. HMAC-konstruksjon og sikkerhetsbevis
  3. HMAC i API-er: signering av forespørsler
  4. CMAC og Poly1305: MAC-er basert på blokkchifre
← Tilbake til Cryptology Academy