B.1.1. HMAC-SHA-1
B.1.1. HMAC-SHA-1
HMAC-SHA-1 ist die Pseudozufallsfunktion, die dem HMAC-Nachrichtenauthentifizierungscode [RFC2104] entspricht, der auf der SHA-1-Hash-Funktion [NIST180] basiert. Die Pseudozufallsfunktion ist dieselbe Funktion, durch die der Nachrichtenauthentifizierungscode berechnet wird, mit einer Ausgabe voller Länge. (Das erste Argument der Pseudozufallsfunktion PRF dient als "Schlüssel" von HMAC, und das zweite dient als "Text" von HMAC. Im Fall von PBKDF2 ist der "Schlüssel" somit das Passwort und der "Text" ist das Salt.) HMAC-SHA-1 hat eine variable Schlüssellänge und einen 20-Oktett- (160-Bit-) Ausgabewert.
Obwohl die Länge des Schlüssels für HMAC-SHA-1 im Wesentlichen unbegrenzt ist, kann der effektive Suchraum für Pseudozufallsfunktionsausgaben durch die Struktur der Funktion begrenzt sein. Insbesondere wenn der Schlüssel länger als 512 Bits ist, wird HMAC-SHA-1 ihn zuerst auf 160 Bits hashen. Selbst wenn also ein langer abgeleiteter Schlüssel, der aus mehreren Pseudozufallsfunktionsausgaben besteht, aus einem Schlüssel erzeugt wird, beträgt der effektive Suchraum für den abgeleiteten Schlüssel höchstens 160 Bits. Obwohl die spezifische Einschränkung für andere Schlüsselgrößen von Details der HMAC-Konstruktion abhängt, sollte man konservativ annehmen, dass der effektive Suchraum auch für andere Schlüsselgrößen auf 160 Bits begrenzt ist.
(Die 160-Bit-Einschränkung sollte im Fall passwortbasierter Kryptographie im Allgemeinen keine praktische Einschränkung darstellen, da der Suchraum für ein Passwort unwahrscheinlich größer als 160 Bits ist.)
Der Object Identifier id-hmacWithSHA1 identifiziert die HMAC-SHA-1-Pseudozufallsfunktion:
id-hmacWithSHA1 OBJECT IDENTIFIER ::= {digestAlgorithm 7}
Das Parameterfeld, das mit dieser OID in einem AlgorithmIdentifier assoziiert ist, MUSS den Typ NULL haben. Dieser Object Identifier wird in der Objektmenge PBKDF2-PRFs (Anhang A.2) verwendet.
Hinweis: Obwohl HMAC-SHA-1 als Nachrichtenauthentifizierungscode konzipiert wurde, ist sein Sicherheitsbeweis leicht modifizierbar, um Anforderungen für eine Pseudozufallsfunktion unter stärkeren Annahmen zu erfüllen. Eine Hash-Funktion kann auch die Anforderungen einer Pseudozufallsfunktion unter bestimmten Annahmen erfüllen. Zum Beispiel kann die direkte Anwendung einer Hash-Funktion auf die Verkettung des "Schlüssels" und des "Texts" angemessen sein, vorausgesetzt, dass "Text" eine angemessene Struktur hat, um bestimmte Angriffe zu verhindern. HMAC-SHA-1 ist jedoch vorzuziehen, da es "Schlüssel" und "Text" als separate Argumente behandelt und nicht verlangt, dass "Text" eine bestimmte Struktur hat.
Während der Jahre 2004 und 2005 gab es eine Reihe von Angriffen auf SHA-1, die seine wahrgenommene effektive Stärke gegen Kollisionsangriffe auf 62 Bits anstelle der erwarteten 80 Bits reduzierten (z.B. Wang et al. [WANG], bestätigt von M. Cochran [COCHRAN]). Da diese Angriffe jedoch darauf ausgerichtet waren, Kollisionen zwischen Werten zu finden, sind sie hier keine direkte Sicherheitsüberlegung, weil die kollisionsresistente Eigenschaft vom HMAC-Authentifizierungsschema nicht benötigt wird.