Zum Hauptinhalt springen

1. Overview of Contents (Inhaltsübersicht)

Dieses Dokument enthält Spezifikationen für die Secure Hash Algorithms (SHAs) des Federal Information Processing Standard (FIPS) der Vereinigten Staaten von Amerika (USA), Code zur Implementierung der SHAs, Code zur Implementierung von HMAC (Hashed Message Authentication Code, [RFC2104]) basierend auf den SHAs und Code zur Implementierung von HKDF (HMAC-basierte Schlüsselableitungsfunktion, [RFC5869]) basierend auf HMAC. Spezifikationen für HMAC und HKDF sind nicht enthalten, da sie an anderer Stelle in der RFC-Reihe erscheinen [RFC2104] [RFC5869].

HINWEIS: Ein Großteil des nachfolgenden Textes stammt aus [SHS], und die darin beschriebenen Behauptungen zur Sicherheit der Hash-Algorithmen werden von der US-Regierung, dem Autor von [SHS], und nicht von den aufgeführten Autoren dieses Dokuments gemacht. Siehe auch [RFC6194] bezüglich der Sicherheit von SHA-1.

Der nachfolgende Text spezifiziert Secure Hash Algorithms, SHA-224 [RFC3874], SHA-256, SHA-384 und SHA-512, zur Berechnung einer verdichteten Darstellung einer Nachricht oder einer Datendatei. (SHA-1 ist in [RFC3174] spezifiziert.) Wenn eine Nachricht beliebiger Länge < 2^64 Bits (für SHA-224 und SHA-256) oder < 2^128 Bits (für SHA-384 und SHA-512) in einen dieser Algorithmen eingegeben wird, ist das Ergebnis eine Ausgabe namens Message Digest. Die Message Digests reichen in der Länge von 224 bis 512 Bits, abhängig vom Algorithmus. Secure Hash Algorithms werden typischerweise zusammen mit anderen kryptografischen Algorithmen verwendet, wie digitalen Signaturalgorithmen und Keyed-Hash-Authentifizierungscodes, der Generierung von Zufallszahlen [RFC4086] oder in Schlüsselableitungsfunktionen.

Die in diesem Dokument spezifizierten Algorithmen werden als sicher bezeichnet, weil es rechnerisch nicht durchführbar ist, (1) eine Nachricht zu finden, die einem gegebenen Message Digest entspricht, oder (2) zwei verschiedene Nachrichten zu finden, die denselben Message Digest erzeugen. Jede Änderung an einer Nachricht während der Übertragung wird mit sehr hoher Wahrscheinlichkeit zu einem anderen Message Digest führen. Dies führt zu einem Verifikationsfehler, wenn der Secure Hash Algorithm zusammen mit einem digitalen Signaturalgorithmus oder einem Keyed-Hash-Nachrichtenauthentifizierungsalgorithmus verwendet wird.

Der hier bereitgestellte Code unterstützt Eingabezeichenfolgen beliebiger Bitlänge. Der Beispielcode von SHA-1 aus [RFC3174] wurde ebenfalls aktualisiert, um Eingabezeichenfolgen beliebiger Bitlänge zu handhaben. Die Erlaubnis wird für alle Verwendungen, kommerziell und nicht-kommerziell, dieses Codes erteilt.

Dieses Dokument macht [RFC4634] obsolet, und die Änderungen gegenüber diesem RFC sind im Anhang zusammengefasst.

ASN.1-OIDs (Objektidentifikatoren) für die SHA-Algorithmen, entnommen aus [RFC4055], lauten wie folgt:

id-sha1  OBJECT IDENTIFIER  ::=  { iso(1)
identified-organization(3) oiw(14)
secsig(3) algorithms(2) 26 }
id-sha224 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2)
country(16) us(840) organization(1) gov(101)
csor(3) nistalgorithm(4) hashalgs(2) 4 }
id-sha256 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2)
country(16) us(840) organization(1) gov(101)
csor(3) nistalgorithm(4) hashalgs(2) 1 }
id-sha384 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2)
country(16) us(840) organization(1) gov(101)
csor(3) nistalgorithm(4) hashalgs(2) 2 }
id-sha512 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2)
country(16) us(840) organization(1) gov(101)
csor(3) nistalgorithm(4) hashalgs(2) 3 }

Abschnitt 2 unten definiert die Terminologie und Funktionen, die als Bausteine zur Bildung dieser Algorithmen verwendet werden. Abschnitt 3 beschreibt die grundlegenden Operationen auf Wörtern, aus denen diese Algorithmen aufgebaut sind. Abschnitt 4 beschreibt, wie Nachrichten auf ein ganzzahliges Vielfaches der erforderlichen Blockgröße aufgefüllt und dann in Blöcke analysiert werden. Abschnitt 5 definiert die Konstanten und die zusammengesetzten Funktionen, die zur Spezifikation der Hash-Algorithmen verwendet werden. Abschnitt 6 gibt die eigentliche Spezifikation für die Funktionen SHA-224, SHA-256, SHA-384 und SHA-512. Abschnitt 7 bietet Verweise auf die Spezifikation von HMAC-Keyed-Message-Authentifizierungscodes und auf die Spezifikation einer Extrahier-und-Erweitern-Schlüsselableitungsfunktion basierend auf HMAC.

Abschnitt 8 gibt Beispielcode für die SHA-Algorithmen, für SHA-basierte HMACs und für die HMAC-basierte Extrahier-und-Erweitern-Schlüsselableitungsfunktion.