SHA-2

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

SHA-2 (von englisch secure hash algorithm, sicherer Hash-Algorithmus) ist die Bezeichnung für die vier kryptologischen Hashfunktionen SHA-224, SHA-256, SHA-384 und SHA-512, die 2001 vom US-amerikanischen NIST als Nachfolger von SHA-1 standardisiert wurden.

Geschichte[Bearbeiten]

Als Reaktion auf die bekanntgewordenen Angriffe gegen SHA-1 hielt das National Institute of Standards and Technology (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 (SHA-224, SHA-256, SHA-384, SHA-512). Um eine Hashfunktion mit einem andersartigen Konstruktionsprinzip zu erhalten, rief das NIST nach Vorbild des Advanced Encryption Standard (AES) zu einer Ausschreibung für SHA-3 auf. Die endgültige Wahl und Benennung fiel dann im Oktober 2012 auf den Algorithmus Keccak. SHA-2 wird aber weiterhin als sicher betrachtet und zur Benutzung empfohlen.[1]

Funktionsweise[Bearbeiten]

Aufbau einer Runde von SHA-2

NIST veröffentlichte im August 2002 die ersten drei Varianten des Algorithmus, SHA-256, SHA-384 und SHA-512 wobei die angefügte Zahl jeweils die Länge des Hash-Werts (in Bit) angibt. Mit SHA-384 und SHA-512 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. Im Februar 2004 wurde eine weitere Version, SHA-224, veröffentlicht.

Zur Erzeugung des Hash-Wertes bei SHA-256 werden die Quelldaten in 512-Bit-Blöcke bzw. 16 32-Bit-Wörter aufgeteilt und iterativ mit 64 Konstanten und sechs logischen Funktionen verrechnet. Dabei wird mit einem Start-Hash aus acht 32-Bit-Wörtern begonnen. Dazu werden die ersten 32 Bits des Nachkommateils der Quadratwurzeln der ersten acht Primzahlen (2 bis 19) verwendet.

Bei SHA-224 wird exakt der gleiche Algorithmus verwendet, der Initialhash wird jedoch mit acht anderen Werten gesetzt (Bits 33 bis 64 der Nachkommastellen der Quadratwurzeln der Primzahlen ab 23). Beim Endergebnis wird einfach das achte 32-Bit-Wort weggelassen.

Bei SHA-512 wird mit 1024-Bit-Blöcken und einer Wortbreite von 64 Bit gearbeitet. Es werden 80 64-Bit-Konstanten und sechs logische Funktionen verwendet. Der Initialhash besteht aus acht 64-Bit-Werten, wobei auch hier die Nachkommastellen der Quadratwurzeln der ersten acht Primzahlen herangezogen werden.

Für SHA-384 gilt der gleiche Algorithmus. Der Initialhash wird allerdings aus den 64 Nachkommabits der Quadratwurzeln der nachfolgenden Primzahlen (23, 29 usw.) berechnet. Am Ende werden vom Ergebnis nur die ersten sechs 64-Bit-Wörter genommen.

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

Beispiel-Hashes[Bearbeiten]

Der Hash eines Strings der Länge Null ist:

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

Eine kleine Änderung der Nachricht erzeugt einen komplett 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

Spezifikationen[Bearbeiten]

  • RFC 4634, US Secure Hash Algorithms (SHA and HMAC-SHA) (Juli 2006)
  • RFC 6234, US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF) (Mai 2011)

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition. NIST, 2. Oktober 2012, abgerufen am 12. April 2013 (englisch): „NIST considers SHA-2 to be secure and suitable for general use.“