CMAC en Poly1305: MAC's op basis van blockciphers
Vergelijk CMAC en Poly1305 als alternatieven voor hashgebaseerde MAC's.
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.
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
- MAC-concepten en length-extensionaanvallen
- HMAC-constructie en beveiligingsbewijs
- HMAC in API's: requests ondertekenen
- CMAC en Poly1305: MAC's op basis van blockciphers