Cryptology Academy · Lektion

CMAC und Poly1305: MACs für Blockchiffren

Vergleichen Sie CMAC und Poly1305 als Alternativen zu Hash-basierten MACs.

Lektion 4 von 413 Schritte

CMAC und Poly1305: MACs für Blockchiffren ist eine kostenlose Cryptology Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cryptology Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cryptology Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist ein MAC?

Ein Message Authentication Code (MAC) nimmt einen Schlüssel und eine Nachricht entgegen und erzeugt daraus einen Tag. Der Tag bestätigt, dass die Nachricht nicht manipuliert wurde und von jemandem erzeugt wurde, der den Schlüssel besitzt.

HMAC im Vergleich zu Blockchiffren-MACs

HMAC verwendet eine Hashfunktion als Primitive. CMAC und Poly1305 verwenden dagegen Blockchiffren beziehungsweise Polynomarithmetik. Blockchiffren-MACs vermeiden die Abhängigkeit von einer Hashfunktion und lassen sich natürlich in AES-Hardware integrieren.

CMAC-Konstruktion

CMAC (Cipher-based MAC) ist im NIST SP 800-38B definiert. Die Nachricht wird bis zu einer Blockgrenze aufgefüllt, aus der Chiffre werden zwei Subkeys K1/K2 abgeleitet, diese werden in den letzten Block ein-XOR-verknüpft, und anschließend wird der CBC-Modus ausgeführt, ohne Zwischenchiffretexte zu speichern.

Ableitung der CMAC-Subkeys

K1 = AES_K(0^128), um 1 Bit nach links verschoben und mit einer Konstante ein-XOR-verknüpft, wenn das MSB 1 war. K2 wird auf dieselbe Weise aus K1 durch Verschieben abgeleitet. Diese Subkeys binden den letzten unvollständigen Block sicher und verhindern Length Extension.

Poly1305-Übersicht

Poly1305 ist ein von Daniel Bernstein entwickelter One-Time-Authenticator. Dabei wird ein Polynom über der Primzahl 2^130-5 ausgewertet. Die Nachricht wird als Koeffizienten des Polynoms behandelt und ein einmaliges Schlüsselpaaar (r, s) verwendet.

Poly1305-Mathematik

Tag = (sum of (m_i * r^i) mod 2^130-5) + s mod 2^128. Der Schlüssel r wird auf 22 bestimmte Bits eingeschränkt, um Timing-Angriffe zu verhindern. s ist eine 16 Byte große einmalige Additionsmaske.

ChaCha20-Poly1305

Poly1305 wird fast immer mit ChaCha20 kombiniert. ChaCha20 erzeugt das einmalige (r, s) aus dem Keystream der Stromchiffre. Dadurch ist das kombinierte AEAD-Verfahren nachweislich sicher und auf ARM-/Mobilprozessoren extrem schnell.

AES-GCM im Vergleich zu AES-CMAC

AES-GCM authentifiziert mithilfe von GHASH, einem polynomialen MAC über GF(2^128). AES-CMAC ist einfacher und wird in IEEE 802.11i (WPA2) sowie in TLS-1.2-Chiffrensammlungen verwendet. GCM bietet Verschlüsselung und Authentifizierung in einem Durchlauf.

Leistungsvergleich

Poly1305 erreicht auf ARM Cortex-A mit NEON-Intrinsics etwa 1 Zyklus pro Byte. AES-CMAC benötigt eine AES-Blockoperation pro 16-Byte-Block. Bei großen Datenmengen ist Poly1305 auf Hardware ohne AES-NI schneller als CMAC.

Sicherheitseigenschaften

CMAC ist unter der Annahme, dass AES eine pseudorandom Permutation ist, unter einem Angriff mit frei wählbaren Nachrichten existentially unforgeable. Poly1305 ist bei einem wirklich zufälligen einmaligen Schlüssel informationstheoretisch sicher – die Wahrscheinlichkeit einer Fälschung beträgt höchstens 8*ceil(L/16)/2^106.

Anwendungsfälle

CMAC: WPA2, S/MIME, Integrität von Dateisystemen. Poly1305: TLS 1.3 über ChaCha20-Poly1305, WireGuard-VPN, Signal Protocol, Noise Protocol Framework. Beide Verfahren sind in modernen Hochsicherheitssystemen weit verbreitet.

Schnelltest

Welcher MAC wird in ChaCha20-Poly1305 AEAD verwendet?

Zusammenfassung

Sie haben die CBC-basierte Konstruktion von CMAC und die Polynomarithmetik von Poly1305 kennengelernt. Beide sind MACs mit konstanter Laufzeit und hoher Sicherheit, die in Protokollen der Praxis eingesetzt werden. Als Nächstes: TLS/HTTPS und die Kombination all dieser Primitive.

Kostenlos starten

Lerne Cryptology Academy mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
67
Lektionen
261

Häufig gestellte Fragen

Ist die Lektion „CMAC und Poly1305: MACs für Blockchiffren“ kostenlos?

Ja — der vollständige Text von „CMAC und Poly1305: MACs für Blockchiffren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cryptology Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cryptology Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „CMAC und Poly1305: MACs für Blockchiffren“?

Vergleichen Sie CMAC und Poly1305 als Alternativen zu Hash-basierten MACs. Du übst Cryptology Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Cryptology Academy zu starten?

Keine Vorkenntnisse erforderlich. Cryptology Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „CMAC und Poly1305: MACs für Blockchiffren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Cryptology Academy-Lektion Code schreiben und ausführen?

Ja. Jede Cryptology Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. MAC-Konzepte und Length-Extension-Angriffe
  2. HMAC-Aufbau und Sicherheitsnachweis
  3. HMAC in APIs: Anforderungssignierung
  4. CMAC und Poly1305: MACs für Blockchiffren
← Zurück zu Cryptology Academy