Folgerung
Seih:X→Zeine Hashfunktion mit#Z= 2k.
Im Zufallsorakelmodell kann man also eine Kollision nach ca.s=√ n Anfragen an das Hashorakel mit guter Wahrscheinlichkeit finden.
Auf der anderen Seite ist diese Wahrscheinlichkeit durchs2/nnach oben beschr ¨ankt. Benutzt man weniger Orakelanfragen, nimmt die Wahrscheinlichkeit einer Kollision z ¨ugig ab.
Ein inkpolynomieller Angreifer kann folglich auf eine Kollision nur mit vernachl ¨assigbarer Wahrscheinlichkeit poly(k)/2khoffen. Seine Erfolgswahrscheinlichkeit ist damit insgesamt ebenfalls
vernachl ¨assigbar.
3 4. Mai 2004
Folgerung
Damit sind Hashfunktionen im Zufallsorakelmodell auch kollisionsresistent, wenn gleich der Aufwand zum Finden einer Kollision wesentlich geringer ist als der, Urbilder zu berechnen.
Im Zufallsorakelmodell ergibt sich zusammenfassend:
•kBit Sicherheit bez ¨uglich der Einweg-Eigenschaft.
•Nurk/2Bit Sicherheit bez ¨uglich Kollisionsresistenz.
Von einer
”guten“ Hashfunktion fordert man daher im Standardmodell (d.h. nicht im Zufallsorakelmodell), daß Urbilder und Kollisionen nur mit Aufwand ungef ¨ahr2kbzw.2k/2berechnet werden k ¨onnen sollen.
In der Praxis fordert man zur Zeitk≥160.
4 4. Mai 2004
Floyd’s Algorithmus
Speicherbedarf sehr groß. K ¨onnen auch noch besser vorgehen:
Floyd’s Algorithmus zum Finden von Zykeln.
h:X→ZHashfunktion.
AnnahmeZ⊆X,x0∈X\Z.
Berechnexi+1=h(xi).
Es gibt minimaleα<βmitxα=xβundxα−16=xβ−1.
Dann auchxα+i=xβ+if ¨ur allei, damit Zykell ¨angeδ=β−α.
Alsoxi+δ=xif ¨uri≥αundxi=x2i⇔i=rδ≥α.
F ¨urxα−1giltxα−16=xα−1+rδundxα=xα+rδ.
1 4. Mai 2004
Floyd’s Algorithmus
Daraus ergibt sich folgendes Vorgehen:
•Berechne(x1,x2),(x2,x4), . . . bisxi=x2i. Setzeδ0←i.
•Berechne(x0,xδ0),(x1,xδ0+1), . . . bisxi=xi+δ0.
•Dannxi−16=xi+δ0−1undh(xi−1) =h(xi+δ0−1).
Im Zufallsorakelmodell erfolgt eine Kollision nach1.18√
nvielen Hashwertenximit Wahrscheinlichkeit≥1/2.
Folglichα,δ≤1.18√
n. Außerdemδ0≤2αwegen der Minimalit ¨at von δ0=rδ≥α. Daher ergeben sich ungef ¨ahr3.54√
nOrakelaufrufe und konstanter Speicherbedarf.
2 4. Mai 2004
Konstruktion von Hashfunktionen
Neben Einwegeigenschaft und Kollisionsresistenz sollen Hashwerte von langen Nachrichten effizient ohne großen Speicheraufwand berechnet werden k ¨onnen (Magnetband, ...).
Allgemeines Prinzip: Iterierung.
Nachricht mit Bitstring0d oder10d−1und Nachrichtenl ¨ange padden, dann in geeignete Bl ¨ockemiaufteilen.
Bei der Berechnung des Hashwerts eine Zustandsvariablehi
mitf ¨uhren. Erster Zustand isth0=IV, letzter Zustandhnist Hashwert.
In jedem Schritt eine Kompressionsfunktion aufmiundhianwenden, lieferthi+1.
Ahnlich wie im CBC Mode f ¨ur Blockchiffren.¨
7 4. Mai 2004
Davies-Meyer Kompressionsfunktion
Man benutzt einen Blockchiffre, um eine Kompressionsfunktion zu erhalten.
BlockchiffreE:{0,1}k× {0,1}b→ {0,1}bmit Schl ¨ussell ¨angekund Blockl ¨angeb.
Liefert:
Kompressionsfunktion f :{0,1}k+b→ {0,1}b mit f(K||m) =E(K,m)⊕m.
Ist nicht sehr effizient (E bietet zuviel Funktionalit ¨at). Man verwendet daher meist andere Kompressionsfunktionen.
Ansonsten gibt es noch andere Varianten. Man kann auch die Blockl ¨ange verdoppeln etc.
8 4. Mai 2004
Vergleich der Sicherheitseigenschaften
Die folgenden zwei Reduktionen sind im Standardmodell g ¨ultig.
Seih:X→Zeine Hashfunktion.
K ¨onnen wir zweite Urbilder berechnen, so k ¨onnen wir Kollisionen berechnen:
•W ¨ahlex∈X zuf ¨allig.
•Berechne ein zweites Urbildx06=xmith(x0) =h(x).
•Ausgabe vonx,x0.
Resistenz gegen Kollisionen impliziert also Resistenz gegen schwache Kollisionen.
5 4. Mai 2004
Vergleich der Sicherheitseigenschaften
Seih:X→Y eine Kompressionsfunktion mit#X≥2#Y.
K ¨onnen wir Urbilder berechnen, so k ¨onnen wir Kollisionen berechnen:
•W ¨ahlex∈X zuf ¨allig.
•Berechne ein Urbildx0vonh(x).
•Ausgabe vonx,x0, wennx6=x0. Sonst Fehler.
SeiC={h−1({h(x)})|x∈X}. Die (mittlere) Erfolgswahrscheinlichkeit ist P= (1/#X)
∑
x∈X
(#h−1({h(x)})−1)/#h−1({h(x)})
= (1/#X)
∑
c∈C
∑
x∈c
(#c−1)/#c= (1/#X)
∑
c∈C
(#c−1)
≥(#X−#Y)/#X≥(#X−#X/2)/#X≥1/2.
Resistenz gegen Kollisionen impliziert also die Einweg-Eigenschaft.
6 4. Mai 2004
Effiziente Hashfunktionen
MD5 (Message Digest 5):
•Von Ron Rivest, 1992. Recht weit verbreitet.
•128 Bit Hashwerte, daher nicht sehr sicher.
•Dar ¨uberhinaus wurden Kollisionen der drunterliegenden Kompressionsfunktion gefunden ...
SHA-1 (Secure Hash Algorithm):
•Von der NSA.
•160 Bit Hashwerte (interne Blockgr ¨oße 512 Bit).
•Am weitesten verbreitete Hashfunktion.
•Im ISO/IEC 10118-3 und FIPS180-1 standardisiert.
11 4. Mai 2004
Effiziente Hashfunktionen
RIPEMD-160:
•Europ ¨aisches Design (K. U. Leven und BSI).
•160 Bit Hashwerte (interne Blockgr ¨oße 512 Bit).
•Im ISO/IEC 10118-3 standardisiert.
SHA-256, SHA-384, SHA-512:
•Im FIPS180-2.
•256, 384 und 512 Bit Hashwerte.
•Recht neu (2001).
12 4. Mai 2004
Merkle-Damgard Konstruktion
Hashfunktionh:{0,1}∗→ {0,1}naus Kompressionsfunktion bauen.
Sei f :{0,1}m→ {0,1}neine Kompressionsfunktion undr=m−n≥2.
Der Hashwert vonx∈ {0,1}∗ wird dann wie folgt ausgerechnet:
•xhinten mit Nullen und der Bitl ¨ange vonxbin ¨ar geschrieben padden und insBl ¨ockexi∈ {0,1}rmit0≤i≤s−1aufteilen.
•h0=IV f ¨ur einen festen Initialwert.
•hi+1=f(hi||xi)f ¨ur0≤i≤s−1.
•Der Hashwert isths.
Sollte das Padding mehrere Bl ¨ocke beanspruchen, so f ¨ugen wir ein weiteres Padding an, welches die Anzahl der im vorhergehenden Padding verwendeten Bl ¨ocke enth ¨alt usw., bis das letzte Padding in einen Block paßt. Es existieren hier auch andere Varianten.
9 4. Mai 2004
Merkle-Damgard Konstruktion
Thm: F ¨ur eine kollisionsresistente Kompressionsfunktion f ist auch die durch die Merkle-Damgard erhaltene Hashfunktionh
kollisionsresistent.
Bew: Seih(x) =h(x0)mitx6=x0. Definierexi,x0i,s,s0,hi,h0iwie in der Konstruktion. Wir k ¨onnens≤s0annehmen. Es gilths=h0s0. Gilt (hs−j,xs−j) = (h0s0−j,x0s0−j)f ¨ur alle1≤ j≤s, so folgts=s0wegen dem Padding und dannx=x0im Widerspruch zur Annahme. Sei also j minimal mit1≤ j≤sund(hs−j,xs−j)6= (h0s0−j,x0s0−j). Dann gilt hs−j+1=h0s0−j+1und eine Kollision ist gefunden.
10 4. Mai 2004
SHA-1
•F ¨urt←0, . . . ,79:
y←ROTL5(A) +ft(B,C,D) +E+Wt+Kt. E←D,D←C,C←ROTL30(B).
B←A,A←y.
•H0←H0+A,. . .,H4←H4+E.
•AusgabeH0||. . .||H4. SHA-1:
•Eingabex∈ {0,1}∗.
•x←SHA-1 Padding(x).
•Schreibex=M1||. . .||MnmitMi∈ {0,1}512.
•H←67452301 EFCDAB89 98BADCFE 10325476 C3D2E1F0.
•F ¨uri←1, . . . ,n:H←f(Mi,H).
•Ausgabe vonH.
15 4. Mai 2004
SHA-1
Eingabexmuß Bitl ¨ange|x| ≤264−1haben.
SHA-1 Padding:
•Eingabex. Setzed←(447− |x|) mod 512.
•l←Bin ¨ardarstellung von|x|, wobei|l|= 64.
•y←x||1||0d||l. Ausgabey.
∨logisches Oder,∧logisches Und,¯·Negation.
80Funktionen:
fi(B,C,D) =
(B∧C)∨( ¯B∧D) f ¨ur0≤i≤19 B⊕C⊕D f ¨ur20≤i≤39 (B∧C)∨(B∧D)∨(C∧D) f ¨ur40≤i≤59 B⊕C⊕D f ¨ur60≤i≤79.
13 4. Mai 2004
SHA-1
80Konstanten:
Ki=
5A827999 f ¨ur0≤i≤19 6ED9EBA1 f ¨ur20≤i≤39 8F1BBCDC f ¨ur40≤i≤59 CA62C1D6 f ¨ur60≤i≤79.
ROTLx=zyklischer Shift umxBits nach Links.+Addition modulo232. Kompressionsfunktion f :{0,1}512× {0,1}160→ {0,1}160:
•EingabeM∈ {0,1}512,H∈ {0,1}160.
•SchreibeM=W0||. . .||W15mitWi∈ {0,1}32.
•SchreibeH=H0||. . .||H4mitHi∈ {0,1}32.
•F ¨urt←16, . . . ,79:Wt←ROTL1(Wt−3⊕Wt−8⊕Wt−14⊕Wt−16).
•A←H0,. . .,E←H4.
14 4. Mai 2004