Prev    Up    Next  

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 K ) als kryptographische Prüfsumme (MAC) über die Nachricht M interpretiert. Folgende Formel beschreibt jeden Einzelschritt:

ci = EK(ci−1 ⊕ mi) mit c−1 = IV.

Abbildung 4.1 stellt das gesamte Verfahren anschaulich dar. Erwähnt werden soll noch, daß


PIC
Abbildung 4.1: Generierung des CBC-MAC


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).


PIC (a) ohne Padding PIC (b) mit Padding
Abbildung 4.2: Generierung des XCBC-MAC


Die Einzelschritte sind:

  1. Aus dem Schlüssel K werden durch Verschlüsselung drei neue Schlüssel erzeugt.
    pict
  2. Mit dem Schlüssel K1  wird, abgesehen vom letzten Block, ein CBC-MAC nach Abschnitt 4.1.1 gebildet.
  3. Die Verarbeitung des letzten Blocks wird nach Abbildung 4.2 vorgenommen, wobei das Vorgehen davon abhängt, ob die Länge der Nachricht M ein Vielfaches der Blockbreite n ist.

    1. Ist die Länge der Nachricht ein Vielfaches der Blockbreite n , dann wird im letzten Schritt
      MAC   = EK1(mi⊕ ci−1⊕ K2 )

      gerechnet.

    2. Sollte jedoch Padding nötig ein, dann wird zuerst ein 1  -Bit angehängt und bei Bedarf auf ein Vielfaches von n mit Nullen aufgefüllt. Die Berechnung des MAC geht nach Abbildung 4.2b vor sich:
      MAC  = E  (m ||(100...00)⊕c   ⊕ K ).
         K1◟-i--◝◜-----◞   i−1    3
                 n

4.1.3 Hash-MAC (HMAC)

Der HMAC einer Message M wird mittels einer kryptographischen Hashfunktion46 H berechnet [HK97ISO02bNIS07]. Dazu geht man in folgenden Schritten vor:

  1. Der geheime Schlüssel K wird durch Anhängen von Null-Bytes auf die Blockbreite der Hashfunktion47 gebracht (ANSI-Padding).
  2. Der so verlängerte Schlüssel wird nun mit einer Wiederholung von 36H  bitweise Exklusiv-Oder (XOR) verknüpft.
  3. An diesen ersten Block wird die (zu schützende) Message M angehängt und auf die Verkettung unsere Hashfunktion H  angewendet. Als Resultat erhält man: I(nner)= H[(K||00H ...00H )⊕ (36H...36H )||M ]  .
  4. Genauso wie in Punkt 1 und 2 wird nun der Schlüssel K nocheinmal verarbeitet, nur das die XOR-Operation mit 5CH  erfolgt.
  5. An das Ergebnis wird I(nner)  angehängt und darauf erneut die Hash-Funktion H  angewendet. Als Ergebnis liegt schlußendlich der HMAC der Message M vor48 : O (uter)= H [(K ||00H...00H)⊕ (5CH ...5CH )||I]  .

Abbildung 4.3 veranschaulicht das gesamte Verfahren.


PIC

Abbildung 4.3: Generierung des HMAC