Hash-Funktion
Hashfunktionen sind im Bereich der Kryptographie zum Beispiel für die chiffrierte Speicherung der Passwörter in einer Datenbank bedeutsam.
Eine Hashfunktion ist eine mathematische Funktion, in welcher eine unbestimmte Menge X auf eine endliche Menge Z abgebildet wird. Die Hashfunktion h(x) muss für alle Eingabedaten x (x ist Element von X) anwendbar sein und die Ausgabe von h(x) muss immer die gleiche Länge haben.
weitere Kriterien:
- diese Funktion soll effizient (schnell berechenbar)
- leicht zu implementieren
- chaotisch sein: Eine geringfügige Veränderung der Eingabedaten soll eine enorme Änderung der Ausgabedaten als Folge haben.
- eine Hash-Funktion soll eine Einwegfunktion sein, das heißt, dass es praktisch unmöglich sein sollte, zu einem Ausgabewert h(x)=z einen Eingabewert x zu finden
- sie sollten kollisionsresistent sein:
- d. h. zwei verschiedene Eingabewerte dürfen nicht das gleiche Ergebnis haben (weak + strong collision resistance)
Es gibt zwei grundsätzliche Wege um Hashfunktionen anzugreifen:
- Die collision attack (für zwei beliebige Eingabewerte einen gleichen Ausgabewert zu finden)
- und die preimage attack (zu einem bestimmten Input einen weiteren Input zu finden)
Auf Grund des Geburtstagsparadoxons ist die Wahrscheinlichkeit der Durchführung einer erfolgreichen preimage attack wesentlich geringer.
Der Einsatz von rainbow tables ist eine weitere effiziente Methode, entwickelt von Philippe Oechslin, um Hashes zu brechen. Rainbow tables sind im Voraus berechnete Hash-Tabellen. Zwei verschiedene Algorithmen sind für diese Datenstruktur bedeutsam: Zum einen der für die Generierung dieser, zum anderen der zum Finden des Klartextes (lookup) mit Hilfe dieser Datenstruktur.
Dieser Abschnitt ist nach der CC-BY-SA v2.0 lizensiert Quelle Kap. 2.1.2 Hashfunktionen