Zum Hauptinhalt springen

Hashfunktionen

Hashfunktion

«Eine Hashfunktion ist eine Abbildung, die eine grosse Eingabemenge auf eine kleinere Zielmenge abbildet.»

Da eine Eingabe beliebiger Länge auf eine Ausgabe mit fester Länge abgebildet wird, ist die Umkehrung (vom Ausgabewert auf den Eingabewert zu schliessen... wird auch "Injektivität" genannt) unmöglich. Die Eingabemenge ist folglich unendlich gross (Texte, Videos und Tonaufnahmen beliebiger Länge, Bilder beliebiger Grösse, ...). Die Ausgabemenge ist allerdings endlich, da die Hashwerte eine fixe Länge haben.

Hashfunktion
Hashfunktion@

Hashfunktion

In der Abbildung oben sieht man, dass die Menge der Passwörter nur eine Teilmenge aller theoretisch möglichen Eingaben darstellt. Es ist im Beispiel Oben nicht zu verhindern, dass Kollisionen auftreten.

Kollisionsresistenz

Um genügend Sicherheit zu bieten, soll eine gute kryptographische Hashfunktion folglich kollisionsresistent sein. Das heisst, es soll praktisch unmöglich sein, Kollisionen zu finden.

Hashwert

Die Ausgabe der Hashfunktion wird Hashwert genannt.

Man kann einen Hashwert mit einem Fingerabdruck vergleichen, weil er gewissermassen eindeutig zu einem Passwort passt wie ein Fingerabdruck zu einem Menschen. So wie mit einem Fingerabdruck nicht auf die Persönlichkeit/Charakter einer Person geschlossen werden kann, lässt sich auch nicht von einem Hashwert auf das Passwort schliessen.

Ein Hashwert ist wie ein Fingerabdruck
Ein Hashwert ist wie ein Fingerabdruck@

Aktuelle Beispiele

Es gibt verschiedene aktuelle Hashfunktionen. Nachfolgend ein Tool, welches SHA-2 Hashes (Secure Hash Algorithm Version 2) berechnet.

SHA-2 Hash

Input

SHA-2 Hash

Aufgabe
  1. Halten Sie den SHA-2 Hash ihres Namens und ihrer E-Mail Adresse fest.

  2. Wie viele Buchstaben ändern sich, wenn Sie einen einzigen Tippfehler machen?

Finding

Die letzten beiden Beispiele zeigen, dass bereits kleinste Änderungen zu komplett anderen Hashwerten führen. Kryptographische Hashfunktion sind so konstruiert, dass bei einer Änderung an einem Bit min. 50% der Hashwert-Bits ändern.