SHA-2

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von SHA-256)
Zur Navigation springen Zur Suche springen

SHA-2 (von englisch secure hash algorithm, sicherer Hash-Algorithmus) ist der Oberbegriff für die kryptologischen Hashfunktionen SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 und SHA-512/256, die vom US-amerikanischen National Institute of Standards and Technology (NIST) als Nachfolger von SHA-1 standardisiert wurden.

Geschichte[Bearbeiten | Quelltext bearbeiten]

Im August 2002 wurden die Versionen SHA-256, SHA-384 und SHA-512 vorgestellt. Eine vierte Variante, SHA-224, folgte im Februar 2004. Im März 2012 wurde der Standard in FIPS PUB 180-4 um die Hashfunktionen SHA-512/224 und SHA-512/256 ergänzt.[1]

Als Reaktion auf die bekanntgewordenen Angriffe gegen SHA-1 hielt das NIST im Oktober 2005 einen Workshop ab, in dem der aktuelle Stand kryptologischer Hashfunktionen diskutiert wurde. NIST empfiehlt den Übergang von SHA-1 zu Hashfunktionen der SHA-2-Familie.

Um eine Hashfunktion mit einem andersartigen Konstruktionsprinzip zu erhalten, organisierte das NIST eine Ausschreibung für SHA-3 nach Vorbild des Advanced Encryption Standards (AES). Die Wahl fiel im Oktober 2012 auf den Algorithmus Keccak. SHA-2 wird aber weiterhin als sicher betrachtet und zur Benutzung empfohlen.[2] Hiervon ausgenommen ist SHA-224, siehe Empfehlung seitens des Bundesamt für Sicherheit in der Informationstechnik (BSI).[3]

Funktionsweise[Bearbeiten | Quelltext bearbeiten]

Rundenfunktion von SHA-224 und SHA-256
  
  
  
  
Die Varianten mit 64-Bit-Wörtern nutzen die gleiche Rundenfunktion, nur mit anderen Rotationsweiten für und

Wie der Vorläufer SHA-1 ist SHA-2 eine Merkle-Damgård Konstruktion mit Davies-Meyer-Kompressionsfunktion. Die Nachricht (zu hashende Quelldaten) wird erst erweitert, wobei eine Kodierung der Nachrichtenlänge angefügt wird, und dann in Blöcke zu je sechzehn Wörtern aufgeteilt. Die Nachrichtenblöcke werden nacheinander (iterativ) verarbeitet, indem sie als Schlüssel für die Verschlüsselung eines Datenblocks von acht Wörtern dienen. Der Datenblock wird zunächst mit Konstanten initialisiert. Jeder Schlüsseltext wird mit dem Klartext verknüpft (durch Addition der Wörter modulo bzw. ), was den nächsten Klartext ergibt, der mit dem nächsten Nachrichtenblock verschlüsselt wird. Am Ende wird der Hashwert dem Datenblock entnommen.

Die Länge der Schlüssel- und Datenwörter beträgt 32 oder 64 Bit, je nach Variante. Die kleineren Versionen SHA-224 und SHA-256 verwenden 32-Bit-Wörter und teilen die Nachricht in Blöcke zu 512 Bit. Sie verschlüsseln in 64 Runden unter Verwendung von vier logischen Funktionen und je Runde einer anderen Konstanten. Bei SHA-224 wird vom Endergebnis das achte 32-Bit-Wort weggelassen.

Die übrigen vier Varianten verwenden 64-Bit-Wörter und 1024-Bit-Nachrichtenblöcke und verschlüsseln in 80 Runden, im Wesentlichen mit dem gleichen Algorithmus. Es werden dafür 80 64-Bit-Konstanten verwendet. Der initiale Datenblock besteht entsprechend aus acht 64-Bit-Konstanten. Für SHA-384 sowie SHA-512/224 und SHA-512/256 wird vom Ergebnis nur ein Anfangsstück von 384, 224 bzw. 256 Bit als Hashwert genommen.

Die Konstanten werden aus den Nachkommastellen der Quadrat- oder Kubikwurzeln der ersten Primzahlen gebildet. Jede der sechs Varianten initialisiert den Datenblock mit unterschiedlichen Konstanten.[4]

Mit den 64-Bit-Varianten können theoretisch Daten bis zu einer Größe von 2128 Bit verarbeitet werden. In der Praxis sind Dateien mit mehr als 264 Bit jedoch unrealistisch.

Beispiel-Hashes[Bearbeiten | Quelltext bearbeiten]

Der Hash einer leeren Zeichenkette ist:

SHA224("") =
d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f
SHA256("") =
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
SHA384("") =
38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b
SHA512("") =
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e

Eine kleine Änderung der Nachricht erzeugt einen ganz anderen Hash. Diese Eigenschaft wird in der Kryptographie auch als Lawineneffekt bezeichnet.

SHA224("Franz jagt im komplett verwahrlosten Taxi quer durch Bayern") = 
49b08defa65e644cbf8a2dd9270bdededabc741997d1dadd42026d7b
SHA224("Frank jagt im komplett verwahrlosten Taxi quer durch Bayern") = 
58911e7fccf2971a7d07f93162d8bd13568e71aa8fc86fc1fe9043d1
SHA256("Franz jagt im komplett verwahrlosten Taxi quer durch Bayern") = 
d32b568cd1b96d459e7291ebf4b25d007f275c9f13149beeb782fac0716613f8
SHA256("Frank jagt im komplett verwahrlosten Taxi quer durch Bayern") = 
78206a866dbb2bf017d8e34274aed01a8ce405b69d45db30bafa00f5eeed7d5e
SHA384("Franz jagt im komplett verwahrlosten Taxi quer durch Bayern") = 
71e8383a4cea32d6fd6877495db2ee353542f46fa44bc23100bca48f3366b84e809f0708e81041f427c6d5219a286677
SHA384("Frank jagt im komplett verwahrlosten Taxi quer durch Bayern") = 
ef9cd8873a92190f68a85edccb823649e3018ab4da3aeff54215187c0972f7d77922c72f7c0d90fca01cf3e46af664d2
SHA512("Franz jagt im komplett verwahrlosten Taxi quer durch Bayern") = 
af9ed2de700433b803240a552b41b5a472a6ef3fe1431a722b2063c75e9f07451f67a28e37d09cde769424c96aea6f8971389db9e1993d6c565c3c71b855723c
SHA512("Frank jagt im komplett verwahrlosten Taxi quer durch Bayern") = 
90b30ef9902ae4c4c691d2d78c2f8fa0aa785afbc5545286b310f68e91dd2299c84a2484f0419fc5eaa7de598940799e1091c4948926ae1c9488dddae180bb80

Normen und Standards[Bearbeiten | Quelltext bearbeiten]

SHA-2 wurde zuerst vom NIST selber veröffentlicht...

...und später auch als RFC veröffentlicht:

  • RFC 4634 — (Juli 2006, erste Version, veraltet): US Secure Hash Algorithms (SHA and HMAC-SHA)
  • RFC 6234 — (Mai 2011, Nachfolger): US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Die Algorithmen SHA-1 und SHA-256 sind auch die Basis für die Blockverschlüsselung SHACAL.

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Federal Register Notice 2012-5400, Announcing Approval of FIPS Publication 180-4
  2. NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition. NIST, 2. Oktober 2012, abgerufen am 6. Dezember 2017 (englisch): „NIST considers SHA-2 to be secure and suitable for general use.“
  3. Bundesamt für Sicherheit in der Informationstechnik Technische Richtlinien – BSI TR-02102 Kryptographische Verfahren: Empfehlungen und Schlüssellängen
  4. FIPS PUB 180-4 – Secure Hash Standard (SHS). NIST, August 2015, abgerufen am 6. Dezember 2017 (pdf, englisch, S. 11, Abs. 4.2.2 SHA-224 and SHA-256 Constants; S. 12, Abs. 4.2.3 SHA-384, SHA-512, SHA-512/224 and SHA-512/256 Constants).