Cryptology Academy · Lektion

MAC-Konzepte und Length-Extension-Angriffe

Erklären Sie, warum das Anhängen eines geheimen Präfixes gegen Length Extension unsicher ist.

Lektion 1 von 413 Schritte

MAC-Konzepte und Length-Extension-Angriffe ist eine kostenlose Cryptology Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.

Willkommen

Message Authentication Codes (MACs) gewährleisten mit einem gemeinsamen geheimen Schlüssel Integrität und Authentizität. In dieser Lektion lernen wir MACs und ihre Eigenschaften kennen und untersuchen eine kritische Schwachstelle naiver schlüsselbasierter Hashes.

Was ist ein MAC?

Ein MAC ist ein kurzer Authentifizierungscode, der aus einer Nachricht und einem geheimen Schlüssel berechnet wird. Der Empfänger berechnet den MAC mit demselben Schlüssel erneut und überprüft ihn. Dadurch werden Fälschungen ohne Kenntnis des Schlüssels verhindert.

MAC vs. Hash vs. Signatur

Hash: kein Schlüssel, öffentlich, bietet nur Integrität. MAC: gemeinsames Geheimnis, symmetrisch, bietet Integrität und Authentizität. Digitale Signatur: privater Schlüssel, asymmetrisch, bietet zusätzlich Nichtabstreitbarkeit. Nur Signaturen bieten Nichtabstreitbarkeit.

Nichtfälschbarkeit

Ein sicherer MAC muss unter einem Angriff mit frei wählbaren Nachrichten existenziell nicht fälschbar sein (EUF-CMA): Ein Angreifer, der den MAC für beliebige Nachrichten abfragen kann, darf keinen gültigen MAC für eine neue Nachricht fälschen können, die zuvor noch nicht abgefragt wurde.

Naiver schlüsselbasierter Hash: Präfix-MAC

Naiver Versuch: MAC(K, M) = H(K || M). Sieht sicher aus, ist aber bei Merkle-Damgård-Hashfunktionen (SHA-256, SHA-512, MD5) anfällig für Length-Extension-Angriffe.

Length-Extension-Angriff

Der SHA-256-Zustand nach dem Hashen von M ist einfach H(M). Ausgehend von H(K || M) kann ein Angreifer H(K || M || padding || extra) für jedes 'extra' berechnen, ohne K zu kennen. Er erweitert die Nachricht, um neue Daten anzuhängen.

Praktische Auswirkungen des Angriffs

Flickr (2009): Die API verwendete H(K || params). Angreifer hängten &api_sig=forgery an authentifizierte Anfragen an. Das Ergebnis: Nicht autorisierte API-Aufrufe erschienen gültig. Ein reiner Length-Extension-Exploit.

Suffix-MAC schlägt ebenfalls fehl

MAC(K, M) = H(M || K): anfällig für Offline-Angriffe. Ein Angreifer berechnet H(message) ohne K und verwendet anschließend einen Geburtstagsangriff, um M' mit demselben Hash zu finden. Der Schlüssel wird nach der Kollision angehängt.

Warum HMAC dies behebt

HMAC verkapselt den Hash zweimal mit unterschiedlichen Schlüssel-Padding-Werten: HMAC(K, M) = H((K⊕opad) || H((K⊕ipad) || M)) Der innere Hash erzeugt H(ipad_key || M). Der äußere Hash umschließt ihn mit opad_key. Die Längenerweiterung schlägt fehl, weil der Angreifer den Anfangszustand des äußeren Hashes nicht festlegen kann.

SHA-3 und Length Extension

SHA-3 verwendet die Sponge-Konstruktion und ist dadurch von Natur aus gegen Length-Extension-Angriffe geschützt. H_SHA3(K || M) ist eine gültige einfache MAC-Konstruktion. SHA-2 ist dies nicht — verwenden Sie mit SHA-2 immer HMAC.

Timing-Angriffe bei der MAC-Verifikation

Ein MAC-Vergleich mit vorzeitigem Abbruch (==) verrät Informationen über die Laufzeit. Ein 'korrektes' erstes Byte benötigt geringfügig mehr Zeit als ein 'falsches' erstes Byte. Nach 256 Abfragen ist Byte 1 gefunden. 256 weitere: Byte 2. Der vollständige MAC ist mit 16×256 Abfragen wiederhergestellt.

Schnelltest

Warum ist MAC(K, M) = SHA256(K || M) unsicher?

Zusammenfassung

Length-Extension-Angriffe zeigen, warum naive schlüsselbasierte Hashes fehlschlagen. Als Nächstes untersuchen wir die Konstruktion und den Sicherheitsbeweis von HMAC.
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 „MAC-Konzepte und Length-Extension-Angriffe“ kostenlos?

Ja — der vollständige Text von „MAC-Konzepte und Length-Extension-Angriffe“ 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 „MAC-Konzepte und Length-Extension-Angriffe“?

Erklären Sie, warum das Anhängen eines geheimen Präfixes gegen Length Extension unsicher ist. 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 1 von 4.

Wie lange dauert die Lektion „MAC-Konzepte und Length-Extension-Angriffe“?

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