Cryptography Reference
In-Depth Information
Der Algorithmus arbeitet zweistufig, mit einer inneren und einer äußeren Stufe (siehe (3.3-5)
oder anschaulicher Abb. 3-5). Jede Stufe benutzt einen unterschiedlichen Schlüssel, der mit
zwei Konstanten ipad und opad aus dem Schlüssel k abgeleitet wird. Die innere Stufe bildet
aus dem inneren Schlüssel k d
, verkettet mit der Nachricht m, einen inneren Hashwert.
Die äußere Stufe verkettet den äußeren Schlüssel k d
mit dem inneren Hashwert und
bildet den endgültigen Hashwert HMAC. Durch die äußere Stufe wird verhindert, dass die
Nachricht m unbemerkt durch eine Nachricht m* verlängert werden kann.
HMAC (m)
h[(k
opad) || h((k
ipad) || m)]
k
: stellenweise Addition mod 2 (XOR ),
(3.3-5)
||: Konkatenation
Bei einer langen Nachricht m sind in der inneren Stufe viele Blöcke von der Hashfunktion zu
verarbeiten. In der äußeren Stufe sind es nur zwei Blöcke, einer mit dem Schlüssel k d
und einer mit dem Hashwert der inneren Stufe.
Die verwendeten Hashfunktionen h( ) arbeiten meist mit einer Blocklänge von 512 Bit (MD5,
SHA-1, SHA-256, RIPEMD-160). Falls der Schlüssel k kürzer als die Blocklänge ist, wird er
durch Anhängen von 0...0 auf die Blocklänge verlängert. Die Länge der beiden Konstanten ist
ebenfalls gleich der Blocklänge. Sie lauten in hexadezimaler Schreibweise:
ipad = 0x3636...3636 und
opad = 0x5c5c...5c5c.
3.4.2 Vergleich von MAC mit HMAC
Ein MAC auf Basis von Block-Chiffren hat eine Länge, die gleich der Länge der verwendeten
Block-Chiffre ist. Bei Verwendung von DES oder Triple-DES ergibt sich ein MAC von 64 Bit
und bei Verwendung von AES ist der MAC 128 Bit lang. Die Wahlfreiheit für die Länge des
MAC ist damit sehr eingeschränkt. Für die Länge des HMAC gibt es durch die Wahl der Hash-
funktion einen größeren Freiraum: 128 Bit bei MD5, 160 Bit bei SHA-1, mehrere Möglichkei-
ten bei RIPEMD und 256/224 Bit oder 512/384 Bit bei den verschiedenen Versionen von
SHA-2.
Bei Kenntnis des Schlüssels k können Sender und Empfänger den HMAC leicht erzeugen oder
nachprüfen. Dagegen ist es auch bei Kenntnis des Schlüssels k nicht möglich, aus einem gege-
benen HMAC-Wert eine dazu passende Nachricht m* zu konstruieren. Die kryptographische
Hashfunktion h( ) ist eine Einwegfunktion, und es ist praktisch nicht durchführbar, für einen
Hashwert h einen passenden Eingangswert zu finden.
Bei einem MAC auf Basis einer Block-Chiffre ist es bei Kenntnis des Schlüssels k sehr wohl
möglich, zu einem gegebenen MAC-Wert eine dazu passende Nachricht zu konstruieren (Kap.
2.2.4.1). Diese Möglichkeit entspricht nicht der normalen Verwendung von MAC und stellt
eine gewisse Schwäche dar.
Zusammenfassend lässt sich feststellen, dass HMAC gegenüber dem MAC auf Basis einer
Block-Chiffre in Flexibilität, Sicherheit und auch Performance überlegen ist.
Search WWH ::




Custom Search