Cryptology Academy · Les

CMAC en Poly1305: MAC's op basis van blockciphers

Vergelijk CMAC en Poly1305 als alternatieven voor hashgebaseerde MAC's.

Les 4 van 413 stappen

CMAC en Poly1305: MAC's op basis van blockciphers is een gratis Cryptology Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Cryptology Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Cryptology Academy bevat in totaal 4 lessen.

Wat is een MAC?

Een berichtauthenticatiecode (MAC) neemt een sleutel en een bericht en produceert een label. Het label bewijst dat er niet met het bericht is geknoeid en dat het is geproduceerd door iemand die de sleutel bezit.

HMAC tegenover MAC's op basis van blokcijfers

HMAC gebruikt een hashfunctie als primitief. CMAC en Poly1305 gebruiken in plaats daarvan blokcijfers of polynoomrekenen. MAC's op basis van blokcijfers vermijden een afhankelijkheid van hashfuncties en sluiten natuurlijk aan op AES-hardware.

CMAC-constructie

CMAC (op cijfers gebaseerde MAC) is gedefinieerd in NIST SP 800-38B. De berichtlengte wordt aangevuld tot een blokgrens, er worden twee subsleutels K1/K2 uit het cijfer afgeleid, deze worden met het laatste blok ge-XOR'd en vervolgens wordt CBC-modus uitgevoerd zonder tussentijdse cijfertekst op te slaan.

Afleiding van CMAC-subsleutels

K1 = AES_K(0^128), één bit naar links verschoven en ge-XOR'd met een constante als de MSB 1 was. K2 = K1, op dezelfde manier verschoven. Deze subsleutels binden het laatste gedeeltelijke blok op veilige wijze tegen lengte-uitbreiding.

Overzicht van Poly1305

Poly1305 is een eenmalige authenticator, ontworpen door Daniel Bernstein. De methode evalueert een polynoom over het priemgetal 2^130-5, behandelt het bericht als polynoomcoëfficiënten en gebruikt een eenmalig sleutelpaar (r, s).

Wiskunde van Poly1305

Tag = (som van (m_i * r^i) mod 2^130-5) + s mod 2^128. De sleutel r wordt op 22 specifieke bits vastgezet om timingaanvallen te voorkomen. s is een eenmalig toevoegingsmasker van 16 bytes.

ChaCha20-Poly1305

Poly1305 wordt vrijwel altijd gecombineerd met ChaCha20. ChaCha20 genereert de eenmalige (r, s) uit de sleutelstroom van het stroomcijfer, waardoor het gecombineerde AEAD-schema aantoonbaar veilig en extreem snel is op ARM- en mobiele CPU's.

AES-GCM tegenover AES-CMAC

AES-GCM authenticeert met GHASH, een polynomiale MAC over GF(2^128). AES-CMAC is eenvoudiger en wordt gebruikt in IEEE 802.11i (WPA2) en TLS 1.2-ciphersuites. GCM biedt versleuteling en authenticatie in één doorgang.

Prestatievergelijking

Poly1305 op ARM Cortex-A bereikt ongeveer 1 cyclus per byte met NEON-intrinsics. AES-CMAC vereist één AES-blokbewerking per blok van 16 bytes. Voor grote hoeveelheden gegevens presteert Poly1305 beter dan CMAC op hardware zonder AES-NI.

Veiligheidseigenschappen

CMAC is existentieel onvervalsbaar bij een aanval met gekozen berichten, ervan uitgaande dat AES een pseudowillekeurige permutatie is. Poly1305 is informatie-theoretisch veilig bij een werkelijk willekeurige eenmalige sleutel. De kans op vervalsing is maximaal 8*ceil(L/16)/2^106.

Toepassingen

CMAC: WPA2, S/MIME en integriteit van bestandssystemen. Poly1305: TLS 1.3 via ChaCha20-Poly1305, WireGuard VPN, Signal Protocol en Noise Protocol Framework. Beide worden veel gebruikt in moderne systemen met hoge veiligheidseisen.

Korte controle

Welke MAC wordt gebruikt in ChaCha20-Poly1305 AEAD?

Samenvatting

Je hebt de CBC-gebaseerde constructie van CMAC en het polynoomrekenen van Poly1305 geleerd. Beide zijn MAC's met constante uitvoeringstijd en hoge veiligheid, die in echte protocollen worden gebruikt. Vervolgens behandelen we TLS/HTTPS en hoe al deze primitieve bewerkingen worden gecombineerd.

Gratis beginnen

Leer Cryptology Academy met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
67
Lessen
261

Veelgestelde vragen

Is de les “CMAC en Poly1305: MAC's op basis van blockciphers” gratis?

Ja — de volledige tekst van “CMAC en Poly1305: MAC's op basis van blockciphers” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Cryptology Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Cryptology Academy bevat in totaal 4 lessen.

Wat leer ik in “CMAC en Poly1305: MAC's op basis van blockciphers”?

Vergelijk CMAC en Poly1305 als alternatieven voor hashgebaseerde MAC's. Je oefent met Cryptology Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Cryptology Academy te beginnen?

Ervaring vooraf is niet nodig. Cryptology Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “CMAC en Poly1305: MAC's op basis van blockciphers”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Cryptology Academy?

Ja. Elke les over Cryptology Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. MAC-concepten en length-extensionaanvallen
  2. HMAC-constructie en beveiligingsbewijs
  3. HMAC in API's: requests ondertekenen
  4. CMAC en Poly1305: MAC's op basis van blockciphers
← Terug naar Cryptology Academy