Kryptologische Hashfunktionen

Kryptologische Hashfunktionen sind Algorithmen, welche in der Informationstechnik für vielerlei Aufgaben verwendet werden. Zwei der wichtigsten Verwendungszwecke sind die Überprüfung, ob Daten korrekt übertragen wurden und die Verschlüsselung von Passworten. Bei beiden ist sind es dieselben Algorithmen die zum Zuge kommen.

 

Hashfunktionen sind Einwegfunktionen. Dies sind Algorithmen, welche aus mathematischen Operationen aufgebaut sind, welche in einer Richtung sehr einfach, rückwärts aber sehr schwer zu vollbringen sind. Als anschauliches Beispiel kann zum Beispiel die Multiplikation zweier Primzahlen verwendet werden: Wenn z.B. 11 mit 17 (beides Primzahlen) multipliziert wird, ist das Ergebnis einfach als 187 zu bestimmen. Da die Faktoren beides Primzahlen waren gibt es keine andere Möglichkeit, 187 durch eine Multiplikation zu erhalten. Soll nun aber ausgehend von 187 herausgefunden werden, welches die Faktoren waren, ist dies deutlich schwieriger. Und wenn dann z.B. noch viel grössere Primzahlen verrechnet werden, wird die Aufgabe selbst für Computerprogramme sehr zeitaufwendig. 

 

Hashfunktionen bedienen sich zwar nicht unbedingt der Multiplikation von Primzahlen, aber die angewendeten Prinzipien sind dennoch ähnlich. Eine gute Hashfunktion wandelt einen Input in einen sogenannten Hash um, einen Datensatz, welcher eindeutig zu den originalen Daten gehört, aber aus welchem diese Originaldaten nicht wiedergewonnen werden können. Da Hashes häufig kürzer als die Ausgangsdaten sind, ist es ebenfalls ein Qualitätsmerkmal einer Hashfunktion, wie gross das Risiko ist, dass zwei unterschiedliche Eingaben denselben Hash erzeugen.

 

Somit lässt sich auch der Umstand erklären, wie es möglich ist, dass die grossen Webseiten wie Facebook, Youtube und Co. die Passwörter ihrer Benutzer nicht kennen. Dort wird nämlich nur das verschlüsselte Passwort gespeichert, welches von niemandem entschlüsselt werden kann. Die Authentifizierung klappt dennoch, da bei jedem Login das Passwort wieder neu verschlüsselt wird und immer denselben Hash ergibt.

 

Es gibt für dieses System viele Erweiterungen, etwa, das Passwort mit einem sogenannten "Salt" zu versehen. Das Problem, das damit zu beheben versucht wird ist folgendes: Da ein bestimmtes Passwort immer denselben Hash erzeugt, kann alleine durch Betrachten der Hashes herausgefunden werden, dass mehrere Benutzer dasselbe Passwort haben. Als Lösung wird vor dem Verschlüsseln eine zufällige Zeichenkette (der "Salt") an das Passwort gehängt. Dieser Salt wird unverschlüsselt mit dem Hash gespeichert. Wenn jetzt mehrere Benutzer dasselbe Passwort wählen, werden alle mit einem unterschiedlichen Salt verschlüsselt und erhalten somit unterschiedliche Hashes.