Hashfunktionen und Kollisionen Definition Hashfunktion Eine Hashfunktion ist ein Paar (Gen, H) von pt Algorithmen mit 1 Gen: s Gen(1 n ). Gen ist probabilistisch. 2 H: H s berechnet Funktion {0, 1} {0, 1} l. H s ist deterministisch. Spiel HashColl A,Π (n) 1 s Gen(1 n ) 2 (x, x ) A(s) 3 HashColl A,Π (n) = { 1 falls H s (x) = H s (x ) und x x 0 sonst. Definition Kollisionsresistenz Eine Hashfunktion Π heißt kollisionsresistent, falls für alle ppt A gilt Ws[HashColl A,Π (n) = 1] negl(n). Krypto I - Vorlesung 12-09.01.2012 () Sicherheit Merkle-Damgard, NMAC und HMAC mittels Hashfunktionen 132 / 149
Spiel HashColl s Gen(1 n ) HashColl A,Π (n) Ausgabe: { 1 falls H s (x) = H s (x ) 0 sonst (1 n, s) (x, x ) A Berechne: x x {0, 1} Krypto I - Vorlesung 12-09.01.2012 () Sicherheit Merkle-Damgard, NMAC und HMAC mittels Hashfunktionen 133 / 149
Schwächere Sicherheitskonzepte 2.Urbild Resistenz Gegeben: Gesucht: s, x x x mit H s (x ) = H s (x) Satz Kollisionresistenz impliziert 2.Urbild Resistenz Sei Π kollisionsresistent. Dann ist Π 2.Urbild resistent. Beweis: Sei A ein 2.Urbild Angreifer auf Π = (Gen, H) mit Erfolgsws ɛ(n). Algorithmus Angreifer A auf Kollisionsresistenz EINGABE: s 1 Wähle x {0, 1}. 2 x A(s, x) AUSGABE: x, x Offenbar gilt Ws[HashColl A,Π] = ɛ(n) Krypto I - Vorlesung 12-09.01.2012 () Sicherheit Merkle-Damgard, NMAC und HMAC mittels Hashfunktionen 134 / 149
Schwächere Sicherheitskonzepte Urbild Resistenz Gegeben: s, y = H s (x) Gesucht: x mit H s (x ) = y Satz 2.Urbild Resistenz impliziert Urbild Resistenz Sei Π 2.Urbild resistent und komprimierend. Dann ist Π Urbild resistent Beweisskizze: Sei A ein Urbild Angreifer auf Π mit Erfolgsws ɛ. Algorithmus Angreifer A auf 2.Urbild EINGABE: s, x 1 Berechne y = H s (x). 2 x A(s, y) AUSGABE: x, x falls x x Es gilt x x mit signifikanter Ws, falls H seine Eingabe komprimiert, d.h. der Urbildraum ist größer als der Bildraum. Damit ist Kollisionsresistenz der stärkste Sicherheitsbegriff. Krypto I - Vorlesung 12-09.01.2012 () Sicherheit Merkle-Damgard, NMAC und HMAC mittels Hashfunktionen 135 / 149
Geburtstagsangriff auf Hashfunktionen Algorithmus Geburtstagsangriff EINGABE: s mit H s : {0, 1} {0, 1} l 1 Wähle verschiedene x 1,..., x q {0, 1} für geeignetes q. 2 Berechne y i = H s (x i ) für i = 1,..., q und sortiere die y i. 3 Finde in der sortierten Liste x i, x j mit y i = y j. AUSGABE: x i, x j mit H s (x i ) = H s (x j ) Anmerkungen: Annahme: y i sind zufällig gleichverteilt in {0, 1} l. Geburtstagsproblem: Für q = 2 l 2 + 1 erhalten wir mit Ws mind 1 e 1 2 eine Kollision y i = y j in Schritt 3. (Übung) Die Auswertung von H s koste konstante Laufzeit O(1). Dann besitzt der Algorithmus Laufzeit O(q log q) = O(l 2 l 2 ). Konsequenz für Hashfunktionen: Wir benötigen mindestens Ausgabelänge l = 160 Bit. Krypto I - Vorlesung 12-09.01.2012 () Sicherheit Merkle-Damgard, NMAC und HMAC mittels Hashfunktionen 136 / 149
Merkle-Damgard Transformation Ziel: Konstruiere H : {0, 1} {0, 1} l aus h : {0, 1} 2l {0, 1} l. Algorithmus Merkle-Damgard Konstruktion Sei (Gen, h) eine kollisionsresistente Hashfunktion mit h : {0, 1} 2l {0, 1} l. Wir konstruieren (Gen, H) wie folgt. 1 Gen: s Gen(1 n ). 2 H: Bei Eingabe s und x {0, 1} L : Erweitere x mit Nullen, bis die Länge ein Vielfaches von l ist. Schreibe x = x1... x B mit x i {0, 1} l und B = L l. Setze xb+1 = L (binär kodiert). Initialisiere z 0 := 0 l, berechne z i := h s (z i 1 x i ) für i = 1,..., B + 1. Ausgabe des Hashwerts H s (x) := z B+1. Krypto I - Vorlesung 12-09.01.2012 () Sicherheit Merkle-Damgard, NMAC und HMAC mittels Hashfunktionen 137 / 149
Merkle Damgard Konstruktion x 1 x 2 x B+1 = L z 0 = 0 n h s z 1 h s z 2... zb h s H s (x) Krypto I - Vorlesung 12-09.01.2012 () Sicherheit Merkle-Damgard, NMAC und HMAC mittels Hashfunktionen 138 / 149
Sicherheit der Merkle-Damgard Konstruktion Satz Sicherheit der Merkle-Damgard Konstruktion Sei Π h = (Gen, h) kollisionsresistent. Dann ist auch Π H = (Gen, H) kollisionsresistent. Beweis: Sei A ein Angreifer für H s mit Erfolgsws ɛ(n). Wir konstruieren einen Angreifer A für h s. Algorithmus Angreifer A EINGABE: s 1 (x, x ) A(s). Sei x {0, 1} L und x {0, 1} L. Seien x 1... x B und x 1... x B die mit Nullen erweiterte Darstellung von x, x. 2 Falls L L, setze y := z B x B+1 = z b L, y := z B x B +1 = z B L 3 Sonst sei i maximal mit z i 1 x i z i 1 x i (existiert wegen x x ). Setze y := z i 1 x i und y := z i 1 x i. AUSGABE: (y, y ) mit h s (y) = h s (y ) Krypto I - Vorlesung 12-09.01.2012 () Sicherheit Merkle-Damgard, NMAC und HMAC mittels Hashfunktionen 139 / 149
Sicherheit der Merkle-Damgard Konstruktion Korrektheit: Wir zeigen h s (y) = h s (y ) für y y. Damit folgt negl(n) Ws[HashColl A,Π h (n) = 1] = Ws[HashColl A,ΠH (n) = 1] = ɛ(n). Fall 1: L L Dann gilt x B+1 x B+1 und H s (x) = z B+1 = h s (z B x }{{ B+1 ) = h } s (z B x B +1) = }{{} z B +1 = H s(x ). y y Fall 2: L = L Sei i maximal mit z i 1 x i z i 1 x i. Aus der Maximalität von i folgt z i = z i. Damit gilt z i = h s (z i 1 x }{{} i ) = h s (z i 1 x i ) = }{{} z i. y y Krypto I - Vorlesung 12-09.01.2012 () Sicherheit Merkle-Damgard, NMAC und HMAC mittels Hashfunktionen 140 / 149
Hashfunktionen in der Praxis Praktische Hashfunktionen verwenden gewöhnlich kein s. Damit sind sie im theoretischen Sinne nicht kollisionsresistent, da ein trivialer Angriff existiert, der eine Kollision ausgibt. Trotzdem können die besten bekannten Angriffe natürlich Komplexität Ω(2 n 2 ) 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. Krypto I - Vorlesung 12-09.01.2012 () Sicherheit Merkle-Damgard, NMAC und HMAC mittels Hashfunktionen 141 / 149
Effizienten MAC-Konstruktion mittels Hashfunktionen Idee von NMAC: Hashe m {0, 1} auf einen Hashwert in {0, 1} n. Verwende Π MAC3 für Nachrichten fixer Länge auf dem Hashwert. Wir konstruieren Π MAC3 mittels schlüsselabhängiger Hashfunktion, bei der ein Teil des Hasharguments aus dem Schlüssel besteht. Algorithmus MAC Π MAC3 für Nachrichten fester Länge n Sei (Gen h, h) eine kollisionsresistente Hashfkt h : {0, 1} 2n {0, 1} n. 1 Gen: s Gen h (1 n ), s kann öffentlich sein. Wähle k 1 R {0, 1} n. 2 Mac: Bei Eingabe (s, k 1 ) und m {0, 1} n, berechne t := h s (k 1 m). 3 Vrfy: Bei Eingabe (s, k 1 ) und (m, t) {0, 1} n {0, 1} n, verifiziere t? = h s (k 1 m). Krypto I - Vorlesung 12-09.01.2012 () Sicherheit Merkle-Damgard, NMAC und HMAC mittels Hashfunktionen 142 / 149
NMAC Notation: Sei Hs IV eine Merkle-Damgard Hashfunktion, bei der der Initialisierungsvektor auf den Wert IV gesetzt ist. Algorithmus NMAC (Nested MAC) Sei Π h = (Gen h, h), Π MAC3 = (Gen, Mac, Vrfy ) wie zuvor. Sei (Gen h, H) die Merkle-Damgard Transformation von (Gen h, h). 1 Gen: s Gen h (1 n ). Wähle Schlüssel k 1, k 2 R {0, 1} n. 2 Mac: Bei Eingabe (s, k 1, k 2 ) und m {0, 1} n, berechne t := Mac s,k 1 (H k 2 s (m)) = h s (k 1 H k 2 s (m)). 3 Vrfy: Bei Eingabe (s, k 1, k 2 ) und (m, t) {0, 1} {0, 1} n, { 1 falls t = Mac s,k1,k Ausgabe = 2 (m). 0 sonst Praxis-Variante: Fixiere s, d.h. einzelne Hash-Funktion (z.b. SHA-1). Anmerkung: Wir können auch k 2 = 0 n setzen. Vorteil von Schlüssel k 2 : Sicherheit kann auch unter schwächerer Annahme gezeigt werden. Krypto I - Vorlesung 12-09.01.2012 () Sicherheit Merkle-Damgard, NMAC und HMAC mittels Hashfunktionen 143 / 149
NMAC m 1 m 2 L k 2 h s h s... h s k 1 h s t Krypto I - Vorlesung 12-09.01.2012 () Sicherheit Merkle-Damgard, NMAC und HMAC mittels Hashfunktionen 144 / 149
Sicherheit von NMAC Satz Sicherheit von NMAC Sei Π h = (Gen h, h) kollisionsresistent und sei Π MAC3 sicher. Dann ist auch NMAC sicher. Beweisskizze: Sei A ein Angreifer für NMAC. A stelle Mac( ) Orakelanfragen aus Q = {m 1,..., m q }. Anschließend gebe A gültiges (m, t) aus mit m / Q. Fall 1: Es existiert ein j [q] mit H k 2 s (m) = H k 2 s (m j ). Wegen m m j ist (m, m j ) eine Kollision für H k 2 s. Nach Merkle-Damgard Konstruktion liefert dies Kollision für h s. Fall 2: Es gilt H k 2 s (m) H k 2 s (m i ) für alle i [q]. Sei Q = {H k 2 s (m) m Q}. Es gilt H k 2 s (m) / Q. Damit ist (H k 2 s (m), t) eine gültige Fälschung für Π MAC3. Krypto I - Vorlesung 12-09.01.2012 () Sicherheit Merkle-Damgard, NMAC und HMAC mittels Hashfunktionen 145 / 149
HMAC Hash-Based MAC Nachteil von NMAC: Benötigen das Setzen von IV in H. Idee von HMAC: Erzeuge k 1, k 2 durch Vorschalten einer Anwendung von h s. Definieren Konstanten opad, ipad und berechnen k 1 = h s (IV k opad) und k 2 = h s (IV k ipad). Algorithmus HMAC Sei (Gen h, H) wie zuvor. Seien opad, ipad {0, 1} n konstant. 1 Gen: s Gen h (1 n ). Wähle k R {0, 1} n. 2 Mac: Für (s, k) und m {0, 1} berechne Mac s,k (m) = H s (k opad H s (k ipad m)). 3 Vrfy: Für (s, k) und (m, t) {0, 1} {0, 1} n, verifiziere t? = Mac s,k (m). Anmerkung: Mac s,k (m) = H s (k opad H s (k ipad m) ) = Hs k1 (H k 2 s (m)). }{{} Krypto I - Vorlesung 12-09.01.2012 () Sicherheit Merkle-Damgard, NMAC k 2 und HMAC mittels Hashfunktionen 146 / 149
HMAC k ipad m 1 L IV h s h s... h s k opad h s IV h s t Krypto I - Vorlesung 12-09.01.2012 () Sicherheit Merkle-Damgard, NMAC und HMAC mittels Hashfunktionen 147 / 149
HMAC ist eine Variante von NMAC Wir berechnen beim HMAC den MAC-Wert H k 1 s (H k 2 s (m)). D.h. die äußere Hashfunktion H k 1 s wird stets auf einen Nachrichtenblock H k 2 s (m) {0, 1} n fester Länge angewendet. Daher ist das Anhängen der Nachrichtenlänge bei H k 1 s unnötig. Entspricht der Berechnung von h k 1 s (H k 2 s (m)), analog zu NMAC. D.h. HMAC ist ein Spezialfall von NMAC, wobei k 1 und k 2 aus k mittels Anwendung von h s abgeleitet werden. Wir definieren den folgenden Pseudozufallsgenerator G(k) = h s (IV k opad) h }{{} s (IV k ipad). }{{} k 1 k 2 Korollar Sicherheit von HMAC mittels Sicherheit von NMAC Sei G ein Pseudozufallsgenerator, (Gen, h) kollisionsresistent und Π MAC3 sicher. Dann ist die HMAC-Konstruktion sicher. Krypto I - Vorlesung 12-09.01.2012 () Sicherheit Merkle-Damgard, NMAC und HMAC mittels Hashfunktionen 148 / 149
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. Krypto I - Vorlesung 12-09.01.2012 () Sicherheit Merkle-Damgard, NMAC und HMAC mittels Hashfunktionen 149 / 149