Cryptology Academy · Lektion

CMAC och Poly1305: MAC med blockchiffer

Jämför CMAC och Poly1305 som alternativ till hashbaserade MAC:ar.

Lektion 4 av 413 steg

CMAC och Poly1305: MAC med blockchiffer är en gratis lektion i Cryptology Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cryptology Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cryptology Academy innehåller totalt 4 lektioner.

Vad är en MAC?

En Message Authentication Code (MAC) tar en nyckel och ett meddelande och producerar en tagg. Taggen bevisar att meddelandet inte har manipulerats och att det producerats av någon som har nyckeln.

HMAC jämfört med MAC:ar baserade på blockchiffer

HMAC använder en hashfunktion som primitiv. CMAC och Poly1305 använder i stället blockchiffer respektive polynomaritmetik. MAC:ar baserade på blockchiffer undviker beroendet av hashfunktioner och integreras naturligt med AES-hårdvara.

CMAC-konstruktionen

CMAC (Cipher-based MAC) definieras i NIST SP 800-38B. Meddelandet utfylls till en blockgräns, två delnycklar K1/K2 härleds från chiffret, de XOR:as in i det sista blocket och därefter körs CBC-läge utan att mellanliggande chiffertexter lagras.

Härledning av CMAC-delnycklar

K1 = AES_K(0^128) vänsterskiftat 1 bit, XOR:at med en konstant om MSB var 1. K2 = K1 skiftat på motsvarande sätt. Dessa delnycklar binder det sista ofullständiga blocket säkert mot längdexpansion.

Översikt över Poly1305

Poly1305 är en engångsautentiserare som utformats av Daniel Bernstein. Den evaluerar ett polynom över primtalet 2^130-5, behandlar meddelandet som polynomkoefficienter och använder ett engångsnyckelpar (r, s).

Poly1305-matematik

Tagg = (summan av (m_i * r^i) mod 2^130-5) + s mod 2^128. Nyckeln r klampas till 22 specifika bitar för att förhindra tidsattacker. s är en 16 byte stor additionsmask för engångsbruk.

ChaCha20-Poly1305

Poly1305 kombineras nästan alltid med ChaCha20. ChaCha20 genererar (r, s) för engångsbruk från strömchiffrets keystream, vilket gör det kombinerade AEAD-schemat bevisat säkert och extremt snabbt på ARM- och mobilprocessorer.

AES-GCM jämfört med AES-CMAC

AES-GCM autentiserar med GHASH, en polynomisk MAC över GF(2^128). AES-CMAC är enklare och används i IEEE 802.11i (WPA2) och TLS 1.2:s chiffersviter. GCM ger både kryptering och autentisering i ett enda steg.

Prestandajämförelse

Poly1305 på ARM Cortex-A uppnår cirka 1 cykel per byte med NEON-intrinsics. AES-CMAC kräver en AES-blockoperation per 16-byteblock. För stora datamängder överträffar Poly1305 CMAC på hårdvara utan AES-NI.

Säkerhetsegenskaper

CMAC är existentialt oförfalskningsbart under en vald meddelandeattack, förutsatt att AES är en pseudorandom permutation. Poly1305 är informationsteoretiskt säkert med en verkligt slumpmässig engångsnyckel – sannolikheten för förfalskning är högst 8*ceil(L/16)/2^106.

Användningsområden

CMAC: WPA2, S/MIME och filsystems integritet. Poly1305: TLS 1.3 via ChaCha20-Poly1305, WireGuard VPN, Signal Protocol och Noise Protocol Framework. Båda används brett i moderna system med höga säkerhetskrav.

Snabb kontroll

Vilken MAC används i ChaCha20-Poly1305 AEAD?

Sammanfattning

Du har lärt dig CMAC:s CBC-baserade konstruktion och Poly1305:s polynomaritmetik. Båda är MAC:ar med konstant exekveringstid och hög säkerhet, som används i verkliga protokoll. Nästa steg är TLS/HTTPS och hur alla dessa primitiver kombineras.

Gratis att börja

Lär dig Cryptology Academy med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
67
Lektioner
261

Vanliga frågor

Är lektionen ”CMAC och Poly1305: MAC med blockchiffer” gratis?

Ja – hela texten till ”CMAC och Poly1305: MAC med blockchiffer” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cryptology Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Cryptology Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”CMAC och Poly1305: MAC med blockchiffer”?

Jämför CMAC och Poly1305 som alternativ till hashbaserade MAC:ar. Ni övar på Cryptology Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Cryptology Academy?

Du behöver inga förkunskaper. Utbildningen i Cryptology Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”CMAC och Poly1305: MAC med blockchiffer”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Cryptology Academy-lektionen?

Ja. Varje Cryptology Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. MAC-begrepp och attacker med längdutökning
  2. HMAC-konstruktion och säkerhetsbevis
  3. HMAC i API:er: signering av begäranden
  4. CMAC och Poly1305: MAC med blockchiffer
← Tillbaka till Cryptology Academy