6. Sicherheit (Security)
Die Sicherheit von HMAC beruht auf vernünftigen Annahmen über die zugrunde liegende Hash-Funktion H. Insbesondere hängt die Stärke von HMAC von der Annahme ab, dass H eine kryptografisch starke Hash-Funktion ist (d. h. sie besitzt Präbildresistenz und Kollisionsresistenz).
Die Analysen in [BCK1] und [BCK2] zeigen, dass HMAC unter der Annahme, dass H „nahe einer pseudo-zufälligen Funktion (PRF)“ ist, als mit Schlüssel versehene Hash-Funktion sicher ist. Diese Annahme gilt für weit verbreitete Hash-Funktionen wie MD5 und SHA-1 derzeit als hinreichend gerechtfertigt.
Hinsichtlich der Schlüssellänge wird, wie in Abschnitt 3 dargelegt, die Verwendung eines Schlüssels von mindestens L Bytes empfohlen. Ein Schlüssel von weniger als L Bytes verringert die Sicherheitsstärke der Funktion.
Hinsichtlich der Kürzung wird, wie in Abschnitt 4 dargelegt, die Verwendung einer Ausgabe von mindestens 10 Bytes (80 Bit) empfohlen. Eine Kürzung auf weniger als 10 Bytes bietet möglicherweise nicht genügend Stärke gegen Brute-Force-Angriffe.
Für MD5 sind kürzlich Kollisionsangriffe [Dobb] bekannt, doch gefährdet dieser Angriff die Verwendung von MD5 in der HMAC-Konstruktion nicht. Dies liegt daran, dass HMAC eine zweistufige Konstruktion (innerer und äußerer Hash) sowie einen geheimen Schlüssel verwendet, sodass ein einfacher Kollisionsangriff die HMAC-Ausgabe nicht fälschen kann. Dennoch wird für Anwendungen, die eine stärkere Sicherheit erfordern, die Verwendung von HMAC mit SHA-1 oder RIPEMD-160 empfohlen.
Implementierer sollten möglichen kryptoanalytischen Fortschritten bezüglich der zugrunde liegenden Hash-Funktion Aufmerksamkeit schenken und die Hash-Funktion bei Bedarf ersetzen.