Skip to content

Verfahren der Kryptographie, Teil 16: SHA-2 ist noch für einige Jahre sicher

Nachdem die weit verbreiteten Hashfunktionen MD4, MD5, SHA und SHA-1 alle Schwächen zeigten, war es Zeit für eine neue sichere Hashfunktion. Das war und ist die Funktion SHA-2. Die es so gar nicht gibt, denn es handelt sich um mehrere Funktionen mit unterschiedlichen Ausgabelängen. Die Algorithmen der SHA-2-Familie wurden erstmals in FIPS PUB 180-2 (PDF) (in dem auch SHA-1 definiert ist) spezifiziert. SHA-2 ist zwar ein Nachfolger von SHA-1, aber zumindest bisher noch sicher.

SHA-2 - Eine wachsende Familie

Die SHA-2-Familie bestand zunächst aus drei Varianten des Algorithmus, SHA-256, SHA-384 und SHA-512, deren Hashwerte 256, 384 bzw. 512 Bit lang sind.

Im Februar 2004 wurde als weitere Variante SHA-224 für 224 Bit lange Hashwerte als Ergänzung zu FIPS PUB 180-2 veröffentlicht, die dann 2008 in FIPS PUB 180-3 (PDF) aufgenommen wurde.

Mit SHA-224 und SHA-256 können Nachrichten unter einer Länge von 264 Bits verarbeitet werden, mit SHA-384 und SHA-512 Nachrichten unter einer Länge von 2128 Bits.

Der im März 2012 veröffentlichte Standard FIPS PUB 180-4 (PDF) fügt der SHA-2-Familie die Varianten SHA-512/224 und SHA-512/256 hinzu, die mit den Algorithmus für SHA-512 auf 224 bzw. 256 Bit reduzierte Hashwerte liefern. Der Vorteil dieser Funktionen ist die im Vergleich zu SHA-256 schnellere Berechnung von SHA-512 auf 64-Bit-Prozessoren. Wenn auf 64-Bit-Plattformen 224 oder 256 Bit lange Hashwerte berechnet werden müssen, sind SHA-512/224 und SHA-512/256 schneller als SHA-224 bzw. SHA-256.

Die Funktionen im Überblick

Zur Berechnung von SHA-256 wird die Eingabe in 512-Bit-Blöcke bzw. 16 32-Bit-Wörter aufgeteilt, die dann iterativ mit 64 Konstanten durch vier komplexe logische Funktionen umgewandelt werden. Die 64 Konstanten werden aus den ersten 32 Bit der Nachkommastellen der Kubikwurzeln der ersten 64 Primzahlen gebildet. Der Startwert von SHA-256 besteht aus den ersten 32 Bits der Nachkommastellen der Quadratwurzeln der ersten acht Primzahlen (2 bis 19).

Die Berechnung von SHA-224 erfolgt mit dem gleichen Algorithmus, als Startwert werden jedoch die Bits 33 bis 64 der Nachkommastellen der Quadratwurzeln der Primzahlen ab 23 verwendet. Damit das Ergebnis nur 224 Bit lang ist werden nur die ersten sieben 32-Bit-Wörter aus dem Ergebnis verwendet (bzw. das achte 32-Bit-Wort weggelassen).

Die Berechnung von SHA-512 erfolgt mit 1024-Bit-Blöcken und einer Wortbreite von 64 Bit. Außerdem werden 80 64-Bit-Konstanten verwendet. Der Startwert besteht aus acht 64-Bit-Werten aus den ersten 64 Nachkommastellen der Quadratwurzeln der ersten acht Primzahlen.

Die Berechnung von SHA-384 erfolgt mit dem gleichen Algorithmus wie bei SHA-512, der Startwert wird aus den ersten 64 Nachkomma-Bits der Quadratwurzeln der Primzahlen ab 23 berechnet. Damit das Ergebnis nur 384 Bit lang ist werden nur die ersten sechs 64-Bit-Wörter aus dem Ergebnis verwendet (bzw. die letzten zwei weggelassen).

Auch die Berechnung von SHA-512/224 und SHA-512/256 erfolgt wie schon erwähnt mit dem Algorithmus für SHA-512. Die Startwerte werden über eine in FIPS PUB 180-4 definierte Funktion aus dem Startwert für SHA-512 berechnet, das Ergebnis wie oben beschrieben gekürzt. Bei Bedarf kann auch der Algorithmus SHA-512/l für andere Ausgabelängen l definiert werden.

Eine Beschreibung der Algorithmen finden Sie außer in den FIPS-Dokumenten zum Beispiel auch in diesem NIST-Dokument (PDF via archive.org). Sourcecode wurde in RFC 6234 veröffentlicht.

Die Sicherheit von SHA-2

Die meisten vor 2010 entwickelten Hashfunktionen, darunter auch MD5, SHA-1 und SHA-2, folgen der Merkle-Damgård Konstruktion, einem Verfahren, um aus einer kollisionssicheren Kompressionsfunktion eine kollisionssichere Hash-Funktion zu machen. Dadurch lassen sich die Angriffe auf MD5 und SHA-1 theoretisch auch auf SHA-2 übertragen, auch wenn das praktisch kaum passiert ist.

Außerdem sind alle diese Hashfunktionen gefährdet, falls ein Angriff gegen die Merkle-Damgård Konstruktion entwickelt wird. Weshalb man auch beim SHA-2-Nachfolger SHA-3 auf ein anderes Konstruktionsprinzip Wert gelegt hat, aber darauf komme ich in der nächsten Folge zurück.

Aber zurück zu SHA-2: Die erfolgreichen Angriffe auf MD5 und SHA-1, durch die diese zwei Funktionen nun unsicher sind, wurden bisher nicht auf SHA-2 übertragen. Was es bisher gibt, sind neu entwickelte Angriffe auf Versionen von SHA-2 mit reduzierter Rundenzahl. Die sind zwar theoretisch interessant, praktisch aber nicht, da ja wohl niemand die Funktion mit reduzierter Rundenzahl produktiv einsetzen würde. SHA-2 ist also noch sicher.

Und das "noch" dauert sehr wahrscheinlich auch noch einige Zeit (unerwartete geniale Angriffe mal ausgeklammert): Die Bundesnetzagentur, zuständig für die Bewertung der Algorithmen für digitale Signaturen nach dem Signaturgesetz, stuft im Algorithmenkatalog 2016 vom 9.12.2015 die Hashfunktionen SHA-256, SHA-512/256, SHA-384 und SHA-512 mindestens bis Ende 2022 als sicher ein.
Und das Bundesamt für Sicherheit in der Informationstechnik hat in der Technischen Richtlinie BSI TR-02102-1 "Kryptographische Verfahren: Empfehlungen und Schlüssellängen" in der Version 2016-01 vom 15.2.2016 die Funktionen SHA-256, SHA-512/256, SHA-384 und SHA-512 als "kryptographisch stark" eingestuft.

In der nächsten Folge wird zunächst die oben schon erwähnte Hashfunktion SHA-3 vorgestellt. Außerdem geht es dann um die verschiedenen Angriffe auf Hashfunktionen, die bisher teilweise schon erwähnt, aber bisher nicht erklärt wurden.

Carsten Eilers

Trackbacks

Dipl.-Inform. Carsten Eilers am : Verfahren der Kryptographie, Teil 18: Angriffe auf Hash-Funktionen

Vorschau anzeigen
Welche Hashfunktionen unsicher bzw. sicher sind habe ich bereits bei den jeweiligen Beschreibungen der Funktionen MD4, MD5, SHA und SHA-1 (alle unsicher), der SHA-2-Familie (ab 256 Bit Hashlänge, also SHA-256, noch einige Jahre sicher) und

Dipl.-Inform. Carsten Eilers am : Kryptographie - Ein Überblick

Vorschau anzeigen
Die Kryptographie ist ein ein sehr umfangreiches Themengebiet, und obwohl ich mich jetzt seit 30 Artikeln damit befasst habe sind längst nicht alle Themen vorgestellt worden. Aber zumindest die wichtigsten habe ich beschrieben, und damit soll e

Dipl.-Inform. Carsten Eilers am : Drucksache: Windows Developer 1.18 - Sicherheit von Kryptoverfahren

Vorschau anzeigen
Im Windows Developer 1.18 ist ein Überblick über den aktuellen Stand der Sicherheit in der Kryptographie erschienen: Welche Kryptoverfahren und Schlüssellängen sollte man verwenden, welche sollte man meiden? Im Windows De

entwickler.de am : PingBack

Die Anzeige des Inhaltes dieses Trackbacks ist leider nicht möglich.