Hashfunktionen und Kollisionen
DefinitionHashfunktion
EineHashfunktionist ein Paar(Gen,H)von pt Algorithmen mit
1 Gen:s←Gen(1n).Genist probabilistisch.
2 H:Hsberechnet Funktion{0,1}∗ → {0,1}`.Hs ist deterministisch.
SpielHashCollA,Π(n)
1 s←Gen(1n)
2 (x,x0)← A(s)
3 HashCollA,Π(n) =
(1 fallsHs(x) =Hs(x0)undx 6=x0
0 sonst .
DefinitionKollisionsresistenz
Eine HashfunktionΠheißtkollisionsresistent, falls für alle pptAgilt Ws[HashCollA,Π(n) =1]≤negl(n).
Spiel HashColl
HashCollA,Π(n)
s←Gen(1n) (1n, s)
Ausgabe:
(1 fallsHs(x) =Hs(x0)
0 sonst
A
Berechne:
x6=x0∈ {0,1}∗ (x, x0)
Schwächere Sicherheitskonzepte
2.Urbild Resistenz Gegeben: s,x
Gesucht: x0 6=x mitHs(x0) =Hs(x)
SatzKollisionresistenz impliziert 2.Urbild Resistenz SeiΠkollisionsresistent. Dann istΠ2.Urbild resistent.
Beweis:
SeiAein 2.Urbild Angreifer aufΠ = (Gen,H)mit Erfolgsws(n).
Algorithmus AngreiferA0 auf Kollisionsresistenz EINGABE:s
1 Wählex ∈ {0,1}∗.
2 x0 ← A(s,x) AUSGABE:x,x0
Offenbar giltWs[HashCollA0,Π] =(n)
Schwächere Sicherheitskonzepte
Urbild Resistenz
Gegeben: s,y =Hs(x) Gesucht: x0 mitHs(x0) =y
Satz2.Urbild Resistenz impliziert Urbild Resistenz
SeiΠ2.Urbild resistent und komprimierend. Dann istΠUrbild resistent Beweisskizze:SeiAein Urbild Angreifer aufΠmit Erfolgsws. Algorithmus AngreiferA0 auf 2.Urbild
EINGABE:s,x
1 Berechney =Hs(x).
2 x0 ← A(s,y)
AUSGABE:x,x0 fallsx 6=x0
Es giltx 6=x0 mit signifikanter Ws, fallsH seine Eingabe komprimiert, d.h. der Urbildraum ist größer als der Bildraum.
Damit ist Kollisionsresistenz derstärkste Sicherheitsbegriff.
Geburtstagsangriff auf Hashfunktionen
Algorithmus Geburtstagsangriff EINGABE:smitHs:{0,1}∗ → {0,1}`
1 Wähle verschiedenex1, . . . ,xq∈ {0,1}∗ für geeignetesq.
2 Berechneyi =Hs(xi)füri=1, . . . ,qund sortiere dieyi.
3 Finde in der sortierten Listexi,xj mityi =yj. AUSGABE:xi,xj mitHs(xi) =Hs(xj)
Anmerkungen:
Annahme:yi sind zufällig gleichverteilt in{0,1}`.
Geburtstagsproblem: Fürq=2`2 +1 erhalten wir mit Ws mind 1−e−12 eine Kollisionyi =yj in Schritt 3. (Übung)
Die Auswertung vonHs koste konstante LaufzeitO(1).
Dann besitzt der Algorithmus LaufzeitO(qlogq) =O(`·2`2).
Konsequenz für Hashfunktionen:
Wir benötigen mindestens Ausgabelänge`=160 Bit.
Merkle-Damgard Transformation
Ziel:KonstruiereH :{0,1}∗ → {0,1}` aush:{0,1}2` → {0,1}`. Algorithmus Merkle-Damgard Konstruktion
Sei(Gen,h)eine kollisionsresistente Hashfunktion mit h:{0,1}2`→ {0,1}`. Wir konstruieren(Gen,H)wie folgt.
1 Gen:s←Gen(1n).
2 H:Bei Eingabesundx ∈ {0,1}L:
I Erweiterex mit Nullen, bis die Länge ein Vielfaches von`ist.
I Schreibex =x1. . .xBmitxi ∈ {0,1}`undB=dL`e.
I SetzexB+1=L(binär kodiert). Initialisierez0:=0`, berechne zi :=hs(zi−1||xi)füri =1, . . . ,B+1.
Ausgabe des HashwertsHs(x) :=zB+1.
Merkle Damgard Konstruktion
z0 = 0n x1
hs z1
x2
hs z2. . . zB
xB+1=L
hs Hs(x)
Sicherheit der Merkle-Damgard Konstruktion
SatzSicherheit der Merkle-Damgard Konstruktion
SeiΠh= (Gen,h)kollisionsresistent. Dann ist auchΠH = (Gen,H) kollisionsresistent.
Beweis:
SeiAein Angreifer fürHs mit Erfolgsws(n).
Wir konstruieren einen AngreiferA0fürhs. Algorithmus AngreiferA0
EINGABE:s
1 (x,x0)← A(s). Seix ∈ {0,1}Lundx0 ∈ {0,1}L0. Seienx1. . .xB undx10. . .xB00 die mit Nullen erweiterte Darstellung vonx,x0.
2 FallsL6=L0, setzey :=zB||xB+1=zb||L,y0:=zB00||xB00+1=zB00||L0
3 Sonst seii maximal mitzi−1||xi 6=zi−10 ||xi0 (existiert wegenx 6=x0).
Setzey :=zi−1||xi undy0:=zi−10 ||xi0. AUSGABE:(y,y0)miths(y) =hs(y0)
Sicherheit der Merkle-Damgard Konstruktion
Korrektheit:Wir zeigenhs(y) =hs(y0)füry 6=y0. Damit folgt negl(n)≥Ws[HashCollA0,Πh(n) =1] =Ws[HashCollA,ΠH(n) =1] =(n).
Fall 1:L6=L0
Dann giltxB+16=xB+10 und Hs(x) =zB+1=hs(zB||xB+1
| {z }
y
) =hs(zB00||xB00+1
| {z }
y0
) =zB00+1=Hs(x0).
Fall 2:L=L0
Seii maximal mitzi−1||xi 6=zi−10 ||xi0. Aus der Maximalität voni folgtzi =zi0. Damit giltzi =hs(zi−1||xi
| {z }
y
) =hs(zi−10 ||xi0
| {z }
y0
) =zi0.
Hashfunktionen in der Praxis
Praktische Hashfunktionen verwenden gewöhnlich keins.
Damit sind sie im theoretischen Sinne nicht kollisionsresistent, da ein trivialer Angriff existiert, der eine Kollision ausgibt.
Trotzdem können die bestenbekanntenAngriffe natürlich KomplexitätΩ(2n2)besitzen.
Fast alle Hashfunktionen verwenden eine Kompressionsfunktion in Kombination mit der Merkle-Damgard Transformation.
Als kollisionsresistent in der Praxis gelten derzeit z.B. SHA-2, TIGER, Whirlpool, FORK-256.
Als nicht kollisionsresistent gelten: SHA-0, SHA-1, MD4, MD5, RIPEMD, Snefru, HAVAL, PANAMA, SMASH, etc.
Kryptanalyse 2004 für SHA-0, SHA-1, MD4, MD5 von Wang et al.
Seit 2008 Hash Algorithm Competition für neuen NIST-Standard.
Finalisten (Dez 2010): BLAKE, Grøstl, JH, Keccak, Skein.
Effizienten MAC-Konstruktion mittels Hashfunktionen
Idee von NMAC:
Hashem∈ {0,1}∗auf einen Hashwert in{0,1}n.
VerwendeΠMAC3für Nachrichten fixer Länge auf dem Hashwert.
Wir konstruierenΠMAC3mittels schlüsselabhängiger Hashfunktion, bei der ein Teil des Hasharguments aus dem Schlüssel besteht.
Algorithmus MACΠMAC3 für Nachrichten fester Längen Sei(Genh,h)eine kollisionsresistente Hashfkth:{0,1}2n→ {0,1}n.
1 Gen:s←Genh(1n),skann öffentlich sein. Wählek1∈R{0,1}n.
2 Mac:Bei Eingabe(s,k1)undm∈ {0,1}n, berechne t :=hs(k1||m).
3 Vrfy:Bei Eingabe(s,k1)und(m,t)∈ {0,1}n× {0,1}n, verifiziere t=? hs(k1||m).
NMAC
Notation:SeiHsIV eine Merkle-Damgard Hashfunktion, bei der der Initialisierungsvektor auf den WertIV gesetzt ist.
Algorithmus NMAC (Nested MAC)
SeiΠh= (Genh,h),ΠMAC3= (Gen0,Mac0,Vrfy0)wie zuvor. Sei (Genh,H)die Merkle-Damgard Transformation von(Genh,h).
1 Gen:s←Genh(1n). Wähle Schlüsselk1,k2∈R {0,1}n.
2 Mac:Bei Eingabe(s,k1,k2)undm∈ {0,1}n, berechne t :=Macs,k0
1(Hsk2(m)) =hs(k1||Hsk2(m)).
3 Vrfy:Bei Eingabe(s,k1,k2)und(m,t)∈ {0,1}∗× {0,1}n, Ausgabe=
(1 fallst=Macs,k1,k2(m)
0 sonst .
Praxis-Variante:Fixieres, d.h. einzelne Hash-Funktion (z.B. SHA-1).
Anmerkung:Wir können auchk2=0nsetzen. Vorteil von Schlüssel k2: Sicherheit kann auch unter schwächerer Annahme gezeigt werden.
NMAC
k2
m1
hs m2
hs . . . L
hs
k1 hs t
Sicherheit von NMAC
SatzSicherheit von NMAC
SeiΠh= (Genh,h)kollisionsresistent und seiΠMAC3sicher. Dann ist auch NMAC sicher.
Beweisskizze:
SeiAein Angreifer für NMAC.
AstelleMac(·)Orakelanfragen ausQ={m1, . . . ,mq}.
Anschließend gebeAgültiges(m,t)aus mitm∈/ Q.
Fall 1:Es existiert einj ∈[q]mitHsk2(m) =Hsk2(mj).
Wegenm6=mj ist(m,mj)eine Kollision fürHsk2.
Nach Merkle-Damgard Konstruktion liefert dies Kollision fürhs. Fall 2:Es giltHsk2(m)6=Hsk2(mi)für allei∈[q].
SeiQ0 ={Hsk2(m)|m∈Q}. Es giltHsk2(m)∈/ Q0. Damit ist(Hsk2(m),t)eine gültige Fälschung fürΠMAC3.
HMAC – Hash-Based MAC
Nachteil von NMAC:Benötigen das Setzen von IV inH.
Idee von HMAC:
Erzeugek1,k2durch Vorschalten einer Anwendung vonhs. Definieren Konstantenopad,ipad und berechnen
k1=hs(IV||k⊕opad)undk2=hs(IV||k⊕ipad).
Algorithmus HMAC
Sei(Genh,H)wie zuvor. Seienopad,ipad ∈ {0,1}nkonstant.
1 Gen:s∈Genh(1n). Wählek ∈R{0,1}n.
2 Mac:Für(s,k)undm∈ {0,1}∗berechne
Macs,k(m) =Hs(k ⊕opad||Hs(k ⊕ipad||m)).
3 Vrfy:Für(s,k)und(m,t)∈ {0,1}∗× {0,1}n, verifiziere t=? Macs,k(m).
Anmerkung:
Macs,k(m) =Hs(k ⊕opad||Hs(k ⊕ipad||m)
| {z }
Hk2(m)
) =Hsk1(Hsk2(m)).
Krypto I - Vorlesung 12 - 09.01.2012 () Sicherheit Merkle-Damgard, NMAC und HMAC mittels Hashfunktionen 146 / 149
HMAC
IV k⊕ipad
hs
m1
hs . . . L
hs
k⊕opad
hs
IV hs t
HMAC ist eine Variante von NMAC
Wir berechnen beim HMAC den MAC-WertHsk1(Hsk2(m)).
D.h. die äußere HashfunktionHsk1 wird stets auf einen
NachrichtenblockHsk2(m)∈ {0,1}nfester Länge angewendet.
Daher ist das Anhängen der Nachrichtenlänge beiHsk1 unnötig.
Entspricht der Berechnung vonhks1(Hsk2(m)), analog zu NMAC.
D.h. HMAC ist ein Spezialfall von NMAC, wobeik1undk2ausk mittels Anwendung vonhs abgeleitet werden.
Wir definieren den folgenden Pseudozufallsgenerator G(k) =hs(IV||k ⊕opad)
| {z }
k1
||hs(IV||k ⊕ipad)
| {z }
k2
.
KorollarSicherheit von HMAC mittels Sicherheit von NMAC SeiGein Pseudozufallsgenerator,(Gen0,h)kollisionsresistent und ΠMAC3sicher. Dann ist die HMAC-Konstruktion sicher.
Praktische Bedeutung von HMAC
Anwendung von HMAC:
Vorgestellt 1996 von Bellare, Canetti und Krawczyk.
HMAC wird in der Praxis oft in Kombination mit SHA-1 verwendet.
HMAC findet Anwendung z.B. in den Protokollen Internet Protocol Security (IPSec) und Transport Layer Security (TLS).
Wurde 1998 standardisiert und ist weitverbreitet in der Praxis.
HMAC ist im Vergleich zum CBC-MAC deutlich schneller.