HMAC: Verschlüsseltes HashingIm RFC 2104 wird ein Verfahren zur Authentisierung beschrieben, welches ohne ein RSA-Verfahren auskommt. Dazu wird die Erzeugung eines Hashwerts von einem Schlüssel abhängig gemacht. Aufgabe ist es, ein erhaltenes Dokument darauf hin zu überprüfen, ob es bei der Übertragung vorsätzlich verfälscht wurde. Ein aktiver Angreifer könnte das Dokument verfälschen und einen neuen Hashwert erzeugen. DSA und ähnlich Verfahren verschlüsseln diesen Hashwert mit einem privaten Schlüssel. HMAC fügt in das Dokument einen geheimen Schlüssel ein und Hashed das so entstandene neue Dokument. Dieses kann von einem Angreifer nicht nachvollzogen werden. Er könnte höchstens den Hashwert fälschen, aber damit wäre die Authentisierung völlig gescheitert, also nicht ein gefälschtes Dokument als echt anerkannt. Ist der geheime Schlüssel nur zwei Parteien bekannt, so können diese anhand dieses Schlüssels die Unverfälschtheit einer Nachricht nachweisen. Das gilt auch, wenn sich eine Instanz vergewissern will, dass ein gespeichertes Dokument nicht absichtlich verfälscht. RFC 2104 nennt die folgenden Entwurfsziele:
Das Verfahren basiert auf der Sicherheit von bekannten Hash-Verfahren wie MD5, SHA-1 oder RIPEMD. Die Idee ist es, einem Text einen Schlüssel hinzuzufügen, so dass der Fingerabdruck nicht nur vom Text, sondern auch vom Schlüssel abhängt. Es werden die folgenden Werte eingeführt:
Der Schlüssel darf nicht länger als die Länge eines Eingabeblocks sein. Ist er länger, so wird der Wert des Schlüssels zunächst mit H gehasht und der Fingerabdruck der Länge L als Schlüssel verwendet. Wird ein Schlüssel kürzer als B verwendet, so ist der Schlüssel rechts mit 0-Bytes aufzufüllen, d.h. im folgenden ist K=S+(0016)B-k bzw. falls k>B ist K=H(S)+(0016)B-L. Der Algorithmus berechnet den folgenden Hashwert:
Es wird somit K mit IPAD verknüpft (xor) und vor den Text gehängt, worauf dann der Hashalgorithmus angewendet wird. Das Ergebnis der Länge L wird an K xor OPAD gehängt und dieser Wert noch einmal gehasht. Die Stärke des Algorithmus hängt im wesentlichen von der Stärke des Hashalgorithmus H ab, solange die Schlüssellänge nicht kürzer als L Bits gewählt wird. Man beachte, dass die Werte (K xor OPAD) und (K xor IPAD) unabhängig von dem Text berechnet werden können, was das RFC 2104 ausdrücklich empfiehlt. Das RFC 2104 hält dieses Verfahren für sicher, vorausgesetzt die folgenden Voraussetzungen sind erfüllt:
Man beachte, dass das Brechen eines Schlüssels bei HMAC nicht die Folge hat, dass alle bisherigen Anwendungen unsicher werden; lediglich zukünftig müssen entweder neue Hashalgorithmen oder neue Schlüssel verwendet werden. |