|
Hash
|
Funktionsweise und Beispiel
Hash-Funktionen berechnen für Zeichenketten, also Worte oder Buchstaben oder Zahlen, einen Hash. Hashes sind sehr zufällig zusammengewürfelt anmutende Zeichenketten. Bei Hash-Funktionen sind diese Zeichenketten für jede Eingabe gleich lang - egal ob man gar kein oder nur ein Zeichen "hasht" oder gar ein ganzes Buch. Eine wichtige Eigenschaft von Hashes ist, dass man aus ihnen ihre Eingabe nicht zurück rechnen kann.
Der Grund ist, einfach erklärt, folgender: Dadurch dass die Hashes immer gleich lang sind, gibt es natürlich nur eine begrenzte Anzahl von ihnen (zur besseren Vorstellung: Es gibt ja auch nur eine feste Anzahl von 5-stelligen Zahlen). Angenommen eine Hashfunktion berechnet Hashes mit der Länge von nur 2 Zeichen, wobei sie als Zeichen nur A und B nutzt, dann kann diese Funktion nur 2^2 = 4 verschiedene Ergebnisse liefern: AA, AB, BA oder BB. Nun kann aber diese Hashfunktion jede beliebige Eingabe erhalten, und derer sind es unendlich viele Möglichkeiten. Wie gesagt, es kann sich dabei ja um einzelne Buchstaben oder ganze Wörter handeln. Und alle werden in eine der vier Möglichkeiten umgerechnet. Nun wird deutlich, dass es nicht möglich ist, aus dem Hash "AA" herauszufinden, wer ihn generiert hat. Es gibt unendlich viele Möglichkeiten. Daher sind Hashes nicht umkehrbar.
Genutzt werden Hashes aufgrund dieser Eigenschaft beispielsweise, um in Datenbanken Passwörter zu speichern. Angenommen, jemand (ein Angreifer oder einfach der Administrator) hat Zugriff auf die Datenbank. Dann sollte er dennoch nicht die Passwörter der Nutzer auslesen können. Also steht da nur ein Hash drin. Da dieser nicht umkehrbar ist, kann er das Passwort nicht ermitteln. Kommt hingegen der Nutzer, gibt sein Passwort ein, wird der Hash dazu generiert und dieser mit dem in der Datenbank stehenden verglichen: Bei richtiger Eingabe sind sie gleich. Nun hätte der Fremde bei unserer Beispielfunktion leichtes Spiel: Er bräuchte nur eine Eingabe finden, die den gleichen Hash-Wert wie den in der Datenbank erzeugt, und das wären ja im Durchschnitt jede vierte Möglichkeit. Deshalb sind in der Realität die Hashes sehr viel komplexer, sodass ein Durchprobieren von Eingaben ("Brute Force") zu schwer wird. Der lange als sicher geglaubte MD5-Hash, der auch heute noch in sehr vielen Bereichen Anwendung findet, hat 128 Bit (2 Zeichen, 128 Stellen), und damit 2^128 (etwa 3,4 * 10^38, also mehr als eine 3 mit 38 Nullen) Möglichkeiten von Hashes, was selbst die schnellsten Computer nicht in annehmbarer Zeit durchprobieren können.
Eine zweite Eigenschaft ist oft, dass sich Hashes sehr stark voneinander unterscheiden, man also nicht sagen kann: Ah, der dieser sieht jenem sehr ähnlich, also muss auch die Eingabe ähnlich sein. Selbst, wenn man nur einen einzigen Buchstaben im Eingabetext ändert, wir der Hash meist komplett verändert.
Es gibt immer wieder neue Hash-Funktionen, die die Sicherheit stetig erhöhen, in dem ihre Berechnungen noch "undurchsichtiger" werden und deren Ausgaben immer länger werden.
Beispiele:
MD5("Geocaching") = 6acb9296d8d3758f6817558a07b95d85
MD5("GeoCaching") = f67b62ba5809b02c4f242c4fe6ae6555
Bedienung
Diese Funktion stellt die Berechnung von 22 verschiedenen Hash-Funktionen zur Verfügung. Alle sind in ihrer Bedienung identisch.
Eingabe
-
Eingabe des zu verschlüsselnden Textes
Folgende Hash-Funktionen sind wählbar:
- MD2: Message Digest Algorithm 2
- MD4: Message Digest Algorithm 4
- MD5: Message Digest Algorithm 5
- SHA-1: Secure Hash Algorithm 160 Bit
- SHA-160: ist der SHA-1 unter anderem Namen
- SHA-256: Secure Hash Algorithm 256 Bit
- SHA-384: Secure Hash Algorithm 384 Bit
- SHA-512: Secure Hash Algorithm 512 Bit
- RIPEMD-128: RACE (Research and Development in Advanced Communications Technologies in Europe) Integrity Primitives Evaluation Message Digest 128 Bit
- RIPEMD-160: RACE Integrity Primitives Evaluation Message Digest 160 Bit
- Tiger Algorithmus
- Whirlpool Algorithmus
- AP: Arash Partrow Algorithmus
- BKDR: Brian Kernighan/Dennis Ritchie Algorithmus
- BP Algorithmus
- DEK: Donald Ervin Knuth Algorithmus
- DJB: Daniel Julius Bernstein Algorithmus
- ELF: UNIX Executable and Linking Format Algorithmus
- FNV: Fowler/Noll/Vo Algorithmus
- JS: Justin Sobel Algorithmus
- PJW: Peter Jay Weinberger Algorithmus
- RS: Robert Sedgewick Algorithmus
- SDBM: Simple DataBase Algorithm
Ausgabe
Gemäß ausgewählter Hash-Funktion errechneter Hash
wert.