Cryptography Reference
In-Depth Information
Die Funktion F i hängt vom Runden-Index i ab. Nach jeweils 16 aufeinander folgenden Runden
wechselt die Funktion F i . Durch die Operatoren OR, AND und NOT ist die F i nicht-linear.
In den ersten 16 Runden (i = 0...15) werden die 16 Wörter w j eines Blocks in der ursprüngli-
chen Reihenfolge verarbeitet (M i = w i ). In den nächste 16 Runden (i = 16...31) werden die 16
Wörter w j nochmals verarbeitet, aber in einer permutierten Reihenfolge. Entsprechend werden
in den Runden (i = 32...47) und (i = 48...63) die Wörter w i nochmals in unterschiedlich permu-
tierter Reihenfolge verarbeitet.
F (B, C, D)
+*,+
(B
C)
(
B
D)
für
i
1...15
i
+*+,
(B
D)
(C
D)
für
i
16...31
B
C
D
für
i
32...47
(3.3-2)
*,
C
(B
D)
für
i
48...63
(Es bedeuten :
: Addition mod 2 (XOR ),
*
: OR,
+
: AND,
,
: NOT, je stellenweise)
Der Wert der Konstanten K i ist rundenspezifisch. Die 32-Bit-Konstanten K i werden nach dem
Standard von einer sin-Funktion abgeleitet. Für die zyklischen Links-Shifts (<<<s) um s Stel-
len ist der Wert von s durch den Standard rundenspezifisch festgelegt.
In dem Standard werden ein Durchlauf durch das Schema von Abb. 3-3 als „Operation“ und
16 Operationen als „Runde“ bezeichnet. Dem entgegen wird hier ein einziger Durchlauf durch
das Schema von Abb. 3-3 als Runde bezeichnet, damit dieser Begriff für MD5 und SHA eine
einheitlicher Bedeutung hat.
Der MD5 zeigte gravierende Schwächen (z.B. [WY05]) gegenüber einer differentiellen Kryp-
toanalyse. Kollisionen konnten innerhalb einer Stunde (und inzwischen noch schneller) auf
einem PC gefunden werden. Als plausibler Grund ist zu vermuten, dass die 4fache Verarbei-
tung der unveränderten Wörter w j nicht für genügend „Durchmischung“ sorgt. Für neue Ent-
wicklungen kommt MD5 nicht mehr in Betracht. Weitere Details für den MD5-Algorithmus
finden sich in den Standards oder in umfangreicheren Darstellungen, [RFC1321], [Schn96],
[FS03].
3.3.2 SHA-1
Bei SHA-1 wird die Nachricht, für die der Hashwert ermittelt werden soll, ebenfalls in Blöcke
von jeweils 512 Bit unterteilt. Der letzte Block wird durch Padding und eine Längenangabe
aufgefüllt. Jeder 512-Bit-Block enthält 16 Wörter w i (i=0...15) zu je 32 Bit. Ein Block wird in
80 Runden verarbeitet. Dazu werden die 16 Wörter w i (i=0...15) intern auf 80 Wörter w i
(i=0...79) expandiert, (3.3-3). In der Runde i wird das Wort w i (i=0...79) verarbeitet.
w
leftrotate.1(w
w
w
w
)
für i
16...79
i
i
3
i
8
i 14
i
16
(3.3-3)
bedeutet Addition stellenweise mod 2 (XOR)
Der zyklische Links-Shift um eine Stelle („leftrotate.1“) in (3.3-3) wurde gegenüber der Vor-
gängerversion SHA-0 eingeführt und hat die Resistenz gegenüber Angriffen wesentlich ver-
bessert. Ohne den „leftrotate.1“ würde z.B. die erste Stelle innerhalb der Wörter w i (i=16...79)
Search WWH ::




Custom Search