Cryptography Reference
In-Depth Information
8.5
Die SHA-Familie
Eine Reihe von in der Praxis häufig eingesetzten Hashfunktionen sind bekannt unter dem
Namen secure hash functions , abgekürzt auch SHA. Zu dieser Familie zählen: SHA (auch
SHA-0 genannt), SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, wobei man die letzten
vier Hashfunktionen häufig zu SHA-2 zusammenfasst.
SHA-0 wurde am 31. 1. 1992 vom NIST ( National Institute of Standards and Techno-
logy ) im Rahmen eines Vorschlags für einen entsprechenden Standard definiert und dann
am 11. 5. 1993 als Standard publiziert. Die Notwendigkeit für einen solchen Vorschlag
wurde mit der Einführung eines Standards für digitale Signaturen begründet. Der Stan-
dard wurde bald, aufgrund eines nicht veröffentlichten »schweren Fehlers«, durch einen
neuen ersetzt, der eine verbesserte Hashfunktion, SHA-1, definierte. Es folgten dann In-
ternetstandards für die anderen vier oben genannten Hashfunktionen. Mittlerweile gilt
aber auch SHA-1 als unsicher (siehe die Bemerkungen in Abschnitt 8.7). Wir werden uns
im Folgenden die Funktionsweise von SHA-2 genauer ansehen. Die unter diesem Namen
zusammengefassten Hashfunktionen gelten, zumindest bisher, als sicher.
Genauer werden wir die Hashfunktion SHA-256 vorstellen. Diese Hashfunktion lie-
fert Hashwerte der Länge 256. Sie folgt dem Merkle-Damgård-Prinzip und nutzt eine
(256 , 512) -Kompressionsfunktion und eine MD-kompatible (256 , 512) -Füllfunktion. Da-
bei ist die Füllfunktion genau die Füllfunktion, die wir in Definition 8.4.4 kennengelernt
haben.
Die Kompressionsfunktion zu SHA-256 ist durch Algorithmus 8.2 gegeben. Die Wort-
länge beträgt dabei 32 Bits und es werden folgende Funktionen und Konstanten verwen-
det:
1. Die Funktionen
stehen, wie üblich, für das bitweise exklusive Oder, das
bitweise Und sowie das bitweise Komplement. Sie werden in SHA-256 immer auf
32-Bitwörter angewendet.
2. Die Funktion
, & und
·
: { 0 , 1 } 32 ×{ 0 , 1 } 32 →{ 0 , 1 } 32 ist die Addition modulo 2 32 ,wobei
Argumente und Ergebnisse in Binärdarstellung ggf. mit führenden Nullen dargestellt
werden.
3. rotRight i :
} 32 ist die Funktion, die einen gegebenen Bitvektor der
Länge 32 um i Bits nach rechts rotiert und links wieder einschiebt.
4. shiftRight i : { 0 , 1 } 32 →{ 0 , 1 } 32 ist die Funktion, die einen gegebenen Bitvektor der
Länge 32 um i Bits nach rechts verschiebt und links Nullen wieder einschiebt.
5. Das Wort k i besteht aus den ersten 32 Bits des Nachkommaanteils der Binärent-
wicklung der Kubikwurzel der ( i +1) -ten Primzahl.
} 32 →{
{
0 , 1
0 , 1
Mit den Bezeichnungen aus den Definitionen 8.4.4 und 8.4.5 ist die Hashfunktion SHA-
256 insgesamt wie folgt definiert:
SHA-256 ( x )= h f SHA ,p 512 , 64
< 2 64 ,
( x )
für alle x ∈{ 0 , 1 }
MD
H
} 256 und H i aus
den ersten 32 Bits des Nachkommaanteils der Binärentwicklung der Quadratwurzel der
( i +1) -ten Primzahl besteht.
wobei der Initialisierungsvektor H definiert ist als H 0 ·
H 1 ·
...
·
H 7 ∈{
0 , 1
Search WWH ::




Custom Search