6.2 Hash-Funktionen

Transcription

6.2 Hash-Funktionen
6.2
Hash-Funktionen
Ein besonders wichtiger Spezialfall der Einweg-Funktionen sind die HashFunktionen, auch Message Digest“ oder kryptographische Prüfsumme“ ge”
”
nannt.
Definition 1. Sei Σ ein Alphabet und n ∈ N eine feste natürliche Zahl ≥ 1.
Dann heißt eine Einweg-Funktion
h : Σ∗ −→ Σn
schwache Hash-Funktion über Σ.
Zeichenketten beliebiger Länge werden dabei also auf Zeichenketten vorgegebener fester Länge abgebildet. Da Σ∗ unendlich ist, ist gemeint, dass die
Einschränkung von h auf Σr für alle genügend großen r Einweg-Funktion
ist.
Definition 2. Eine Einweg-Funktion f : M −→ N heißt kollisionsfrei,
wenn es nicht effizient möglich ist, x1 , x2 ∈ M zu finden mit x1 6= x2 ,
aber f (x1 ) = f (x2 ).
Man könnte das auch als praktisch injektiv“ bezeichnen; injektive Einweg”
Funktionen sind natürlich kollisionsfrei. Ist #M > #N , so kann f nicht
injektiv, könnte aber durchaus kollisionsfrei sein.
Definition 3. Eine (starke) Hash-Funktion ist eine kollisionsfreie
schwache Hash-Funktion.
Für die praktische Anwendung (meistens mit Σ = F2 ) soll die Länge
n der Hashwerte klein sein. Da die Umkehrbarkeit aber nicht effizient sein
darf, will man kryptographische Sicherheit erreichen, muss n andererseits
auch genügend groß sein. Geht man davon aus, dass die Hash-Funktion
statistisch zufällig aussehende, gleichverteilte Werte liefert, so muss man bei
einer schwachen Hash-Funktion also sicher vor Exhaustion (vollständiger
Suche) sein. Das bedeutet, dass n = 80 als Untergrenze gerade nicht mehr
ausreichend ist, man also besser 128-Bit-Hashwerte verwenden sollte. Das
ist gerade die Länge bei den bekannten Verfahren MD2, MD4, MD5.
Bei praktisch allen Anwendungen ist aber auch die Kollisionsfreiheit
wichtig. Hier ist das Geburtstagsphänomen, siehe I.2.6, zu berücksichtigen: Um Kollisionen mit hinlänglicher Sicherheit unauffindbar zu machen,
ist etwa die doppelte Bitlänge nötig. Hashwerte von 160 Bit sind also gerade nicht mehr lang genug. Die noch gültigen Standard-Hashverfahren
SHA-1 und RIPEMD verwenden genau diese Länge, sollten also schleunigst ausgemustert werden. Im Kontext der AES-Standardisierung wurde
das Hash-Verfahren SHA-2 mit mindestens 256-Bit-Hashwerten eingeführt,
77
das dann auch passenderweise als SHA-256 usw. bezeichnet wird [siehe
http://csrc.nist.gov/publications/]. Für die MDx-Verfahren wurden
tatsächlich schon vor einiger Zeit systematisch Kollisionen gefunden [Dobbertin 1996ff.], für SHA-1 unlängst (2005). Ein Wettbewerb um den neuen
Standard SHA-3 – analog zum AES-Wettbewerb – startete 2008.
Anwendungen: (Starke) Hash-Funktionen verwendet man
• bei der digitalen Signatur. Eine lange Nachricht direkt mit dem
privaten Schlüssel zu verschlüsseln würde bei der Langsamkeit
der asymmetrischen Verfahren zu lange dauern. Daher signiert
man einen Hashwert der Nachricht. Damit das sicher ist, braucht
man eine kollisionsfreie Hash-Funktion. Sonst nämlich könnte ein
Angreifer sich auf folgende Weise ein beliebiges Dokument a von
Alice signieren lassen: Er fertigt ein unverdächtiges Dokument b
an, das Alice gerne unterschreibt. Von beiden Dokumenten stellt
er m = 2k Varianten a1 , . . . , am und b1 , . . . , bm her, indem er an k
verschiedenen Stellen jeweils ein Leerzeichen einfügt oder nicht.
Falls er eine Kollision findet, etwa h(ai ) = h(bj ), lässt er bj von
Alice signieren und hat dann eine gültige Signatur für ai .
• für die Umwandlung einer langen, für einen Menschen merkbaren Passphrase in einen (schwer merk- und eingebbaren) n-BitSchlüssel für eine symmetrische Chiffre.
78