4.1 MACs
Die gebräuchlichsten Verfahren der Generierung von MACs sind mittlerweile standardisiert, z. B.
in [ISO02b]. Dabei handelt es sich um den CBC-MAC und den HMAC mit kryptographischen
Hashfunktionen wie MD5, SHA-1 oder RIPEMD-160.
4.1.1 CBC-MAC
Beim CBC-MAC handelt es sich um ein schon relativ lange in Benutzung befindliches Verfahren zur
Erzeugung von MACs [ISO99]. Dabei wird eine Blockchiffre im CBC-Modus genutzt, deren
Zwischenergebnisse jedoch nicht weiterverwendet. Statt dessen wird nur das Resultat der letzten
Verschlüsselung (immer mit dem Schlüssel ) als kryptographische Prüfsumme (MAC) über die
Nachricht interpretiert. Folgende Formel beschreibt jeden Einzelschritt:
Abbildung 4.1 stellt das gesamte Verfahren anschaulich dar. Erwähnt werden soll noch,
daß
- die Nachricht bei Bedarf auf die Blockbreite des Algorithmus zu padden ist
- und immer ein Initialisierungsvektor (IV) benötigt wird .
4.1.2 XCBC-MAC
Der XCBC-MAC (Extended MAC) geht im Original auf [BR03] zurück, hat seine Popularität aber
wahrscheinlich IPSec zu verdanken [FH03]. Er behebt eine Schwachstelle des CBC-MAC, die nur bei
Nachrichten variabler Länge in Erscheinung tritt [MvV92, Example 9.62]. Die Bildungsvorschrift
entspricht weitestgehend dem CBC-MAC, unterscheidet sich jedoch wesentlich bei der Behandlung des
letzten Blocks (siehe Abbildung 4.2).
Die Einzelschritte sind:
- Aus dem Schlüssel werden durch Verschlüsselung drei neue Schlüssel erzeugt.
- Mit dem Schlüssel wird, abgesehen vom letzten Block, ein CBC-MAC nach Abschnitt 4.1.1
gebildet.
- Die Verarbeitung des letzten Blocks wird nach Abbildung 4.2 vorgenommen, wobei das
Vorgehen davon abhängt, ob die Länge der Nachricht ein Vielfaches der Blockbreite
ist.
- Ist die Länge der Nachricht ein Vielfaches der Blockbreite , dann wird im letzten
Schritt
gerechnet.
- Sollte jedoch Padding nötig ein, dann wird zuerst ein -Bit angehängt und bei
Bedarf auf ein Vielfaches von mit Nullen aufgefüllt. Die Berechnung des MAC
geht nach Abbildung 4.2b vor sich:
4.1.3 Hash-MAC (HMAC)
Der HMAC einer Message wird mittels einer kryptographischen
Hashfunktion
berechnet [HK97, ISO02b, NIS07]. Dazu geht man in folgenden Schritten vor:
- Der geheime Schlüssel wird durch Anhängen von Null-Bytes auf die Blockbreite der
Hashfunktion
gebracht (ANSI-Padding).
- Der so verlängerte Schlüssel wird nun mit einer Wiederholung von bitweise
Exklusiv-Oder (XOR) verknüpft.
- An diesen ersten Block wird die (zu schützende) Message angehängt und
auf die Verkettung unsere Hashfunktion angewendet. Als Resultat erhält man:
.
- Genauso wie in Punkt 1 und 2 wird nun der Schlüssel nocheinmal verarbeitet, nur das
die XOR-Operation mit erfolgt.
- An das Ergebnis wird angehängt und darauf erneut die Hash-Funktion angewendet.
Als Ergebnis liegt schlußendlich der HMAC der Message vor :
.
Abbildung 4.3 veranschaulicht das gesamte Verfahren.