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