- HMAC
-
Ein keyed-hash message authentication code, (HMAC) ist eine Art Message Authentication Code (MAC), der basierend auf einer kryptografischen Hash-Funktion berechnet wird.
HMACs werden in vielen modernen Protokollen wie beispielsweise TLS oder IPsec verwendet. Die Sicherheit des HMAC erfordert nicht zwingend kollisionsresistente Hash-Funktionen, so dass der HMAC auch auf Basis des MD5 berechnet werden kann. Wird HMAC beispielsweise in Kombination mit einer Festplattenverschlüsselung eingesetzt und dient nur dem Zweck, feststellen zu können, ob die Festplatte einen physikalischen Defekt aufweist, so empfiehlt sich auf Grund der höheren Datendurchsatzrate und des geringeren Platzbedarfs HMAC/MD5.
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 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).Der innere Hashwert alleine ist nicht sicher, 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. Ein MAC mit den genannten Eigenschaften kann zur elektronischen Signatur genutzt werden. 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 als sicher gelten kann.
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)
- HMAC Algorithm in Detail
Wikimedia Foundation.