Zum Hauptinhalt springen

1. Einführung (Introduction)

Die Bereitstellung einer Möglichkeit, die Integrität von Informationen zu überprüfen, die über ein unzuverlässiges Medium übertragen oder in einem solchen gespeichert werden, ist eine wesentliche Notwendigkeit in der Welt des offenen Rechnens und der Kommunikation. Mechanismen, die eine solche Integritätsprüfung auf Basis eines geheimen Schlüssels bereitstellen, werden üblicherweise als „Message Authentication Codes“ (MAC, Nachrichten-Authentifizierungscodes) bezeichnet. Typischerweise werden Message Authentication Codes zwischen zwei Parteien verwendet, die einen geheimen Schlüssel teilen, um die zwischen diesen Parteien übertragenen Informationen zu validieren. In diesem Dokument stellen wir einen solchen MAC-Mechanismus vor, der auf kryptografischen Hash-Funktionen basiert. Dieser Mechanismus, HMAC genannt, basiert auf der Arbeit der Autoren [BCK1], in der die Konstruktion vorgestellt und kryptografisch analysiert wird. Wir verweisen auf diese Arbeit für Einzelheiten zur Begründung und Sicherheitsanalyse von HMAC sowie zu dessen Vergleich mit anderen gehashten und mit Schlüssel versehenen Verfahren.

HMAC kann in Kombination mit einer beliebigen iterierten kryptografischen Hash-Funktion verwendet werden. MD5 und SHA-1 sind Beispiele für solche Hash-Funktionen. HMAC verwendet zudem einen geheimen Schlüssel zur Berechnung und Verifikation der Nachrichten-Authentifizierungswerte. Die wichtigsten Ziele hinter dieser Konstruktion sind:

  • Die ohne Änderungen verfügbaren Hash-Funktionen zu nutzen. Insbesondere Hash-Funktionen, die in Software eine gute Leistung erbringen und deren Code frei und weit verbreitet verfügbar ist.

  • Die ursprüngliche Leistung der Hash-Funktion zu bewahren, ohne eine deutliche Verschlechterung herbeizuführen.

  • Schlüssel auf einfache Weise zu verwenden und zu verwalten.

  • Eine gut verstandene kryptografische Analyse der Stärke des Authentifizierungsmechanismus zu besitzen, die auf vernünftigen Annahmen über die zugrunde liegende Hash-Funktion beruht.

  • Die einfache Ersetzbarkeit der zugrunde liegenden Hash-Funktion zu ermöglichen, falls schnellere oder sicherere Hash-Funktionen gefunden oder benötigt werden.

Dieses Dokument spezifiziert HMAC unter Verwendung einer generischen kryptografischen Hash-Funktion (bezeichnet durch H). Spezifische Instanziierungen von HMAC müssen eine bestimmte Hash-Funktion definieren. Aktuelle Kandidaten für derartige Hash-Funktionen sind SHA-1 [SHA], MD5 [MD5] und RIPEMD-128/160 [RIPEMD]. Diese unterschiedlichen Realisierungen von HMAC werden als HMAC-SHA1, HMAC-MD5, HMAC-RIPEMD usw. bezeichnet.

Hinweis: Zum Zeitpunkt der Abfassung dieses Dokuments sind MD5 und SHA-1 die am weitesten verbreiteten kryptografischen Hash-Funktionen. Kürzlich wurde gezeigt, dass MD5 für Kollisionssuchangriffe anfällig ist [Dobb]. Dieser Angriff und andere derzeit bekannte Schwächen von MD5 gefährden die Verwendung von MD5 innerhalb von HMAC, wie in diesem Dokument spezifiziert, nicht (siehe [Dobb]); jedoch scheint SHA-1 eine kryptografisch stärkere Funktion zu sein. Bis zu diesem Zeitpunkt kann MD5 für die Verwendung in HMAC bei Anwendungen in Betracht gezogen werden, bei denen die überlegene Leistung von MD5 entscheidend ist. In jedem Fall müssen Implementierer und Nutzer sich der möglichen kryptoanalytischen Fortschritte hinsichtlich einer dieser kryptografischen Hash-Funktionen sowie der eventuellen Notwendigkeit bewusst sein, die zugrunde liegende Hash-Funktion zu ersetzen. (Siehe Abschnitt 6 für weitere Informationen zur Sicherheit von HMAC.)