- Keyed-Hash Message Authentication Code
-
Ein Keyed-Hash Message Authentication Code (HMAC) ist eine Art Message Authentication Code (MAC), dessen Konstruktion auf einer kryptografischen Hash-Funktion basiert. HMACs werden beispielsweise in den Protokollen TLS oder IPsec verwendet.
Der HMAC wird aus der Nachricht N und einem geheimen Schlüssel K mittels der Hash-Funktion H wie folgt berechnet. K wird auf die Blocklänge B der Hash-Funktion (512 Bit für die meisten gängigen Hash-Funktionen) aufgefüllt. Falls die Länge von K größer als die Blocklänge der Hash-Funktion ist, wird K durch H(K) ersetzt.
Die Werte opad und ipad sind dabei Konstanten, steht für die bitweise XOR-Operation und für die Verknüpfung durch einfaches Zusammensetzen (Konkatenation).
Nach RFC 2104 sind beide Konstanten:
- .
Der innere Hashwert alleine ist nicht ausreichend, da ein Angreifer einfach weitere Blöcke an N anhängen und den Hashwert weiterrechnen könnte. Die innere Schlüsselkomponente sichert also nur den Anfang der Nachricht. Die Äußere Funktion sichert auch das „Ende“ der Nachricht.
Eigenschaften
Vorausgesetzt sei:
- Die Hashfunktion H ist unumkehrbar (Berechnung von N aus H(N) ausgeschlossen)
- H ist kollisionsresistent (N,N' mit H(N)=H(N') nicht bestimmbar)
Unter diesen Voraussetzungen kann für den HMAC folgendes abgeleitet werden:
- Die Bestimmung des Schlüsselwerts K aus der Nachricht N und dem HMAC-Wert ist ausgeschlossen.
- Die Bestimmung der Nachricht N aus K und dem HMAC-Wert ist ausgeschlossen.
- Es können keine unterschiedlichen Wertepaare (K',N') gefunden werden, die zum gleichen HMAC-Wert führen.
Die Eigenschaften können jedoch auch dann erfüllt sein, falls die Hash-Funktion H die geforderten Eigenschaften nicht voll erfüllt. Für einen festen Schlüsselwert kann die HMAC-Funktion als Hash-Funktion angesehen werden. Die Sicherheit dieser Hash-Funktion ist gewährleistet, sofern die Hash-Funktion H sicher ist.
Auch eine Hashfunktion, die nur eine Einweghashfunktion (OWHF) ist, wäre hinreichend für einen MAC. Zu einem gegebenen MAC-Wert, entsprechend einem Schlüssel und einer Nachricht, kann für eine OWHF keine zweite Nachricht oder ein zweiter Schlüssel mit gleichem MAC-Wert gefunden werden.
Weblinks
- RFC 2104, HMAC: Keyed-Hashing for Message Authentication
- RFC 2202, HMAC-MD5 and HMAC-SHA1 Test Vectors, HMAC-SHA1 implementation in C
- FIPS PUB 198, The Keyed-Hash Message Authentication Code (PDF; 173 kB)
- The Status of MD5 After a Recent Attack (PDF RSA Labs' CryptoBytes, Vol. 2 No. 2, Summer 1996)
Wikimedia Foundation.