Hash
Aus ProgrammingWiki
Hashfunktionen
Hashfunktionen dienen der Zuordnung von beliebig langen Zeichenketten (z.B Passwörtern) zu Zeichenketten festgeschriebener Länge, den sogenannten Hashwerten. Sie 'zerhackt' (engl.: to hash) also die Zeichenkette um eine oftmals kleinere zu erhalten. Eigenschaften
Inhaltsverzeichnis |
Eigenschaften

Anwendung
Integritätsschutz
Bei Downloads aus dem Internet kann der Hashwert der heruntergeladenen Datei berechnet werden und dann mit dem der Originaldatei verglichen werden (meist vom Anbieter angegeben). Sollten die Hashwerte dabei voneinander abweichen, wurde die Datei während des Downloads verändert/manipuliert (funktioniert nur wenn bei beiden Hashwerten dieselbe Hashfunktion benutzt wurde). Sollte der Anbieter die Hashwerte nicht veröffentlicht haben, so kann die Datei auch ein zweites Mal heruntergeladen werden und die Hashwerte beider Downloads können verglichen werden.
Digitale Signatur
Wenn man ein Dokument digital unterschreiben möchte, so berechnet man zunächst den Hashwert des Dokuments und verschlüsselt diesen mit einem private key. Diese digitale Signatur wird dem Empfänger ebenfalls zugesendet und der entschlüsselt diese mit dem entsprechenden public key und berechnet ebenfalls den Hashwert des Dokuments. Sollte dieser mit der entschlüsselten Signatur übereinstimmen, so kann der Empfänger sichergehen, dass das Dokument unverändert bei ihm ankam und die Signatur ist somit rechtsgültig (sofern rechtmäßig vorgeschriebene Verschlüsselungsverfahren und Hashfunktionen verwendet wurden)
Passwortspeicherung
Beim Speichern von Passwörtern wird selten der Klartext gespeichert sondern nur der Hashwert des Passworts, damit mögliche Angreifer die Passwörter nicht einsehen können und durch die Unumkehrbarkeit der Hashfunktionen auch nicht berechnen können. Wenn jetzt jemand sein Passwort eingibt wird der Hashwert der Eingabe berechnet und mit dem gespeicherten Hashwert verglichen, bei Übereinstimmung dieser wurde das korrekte Passwort eingegeben.
Sicherheit
Häufig genutzte Hashfunktionen wie MD5 und SHA-1 gelten zwar immer noch als sicher, dennoch sollten neuere (z.B. SHA-2) diesen vorgezogen werden. So wurden unter anderem einige zufällige Kollisionen in den letzten jahren gefunden und das trotz der unzähligen Hashwerte (ca. 3,4*10^38 bei MD5). Außerdem werden für häufige Passwörter die Hashwerte berechnet und in sogenannten 'rainbow tables' (Regenbogentabellen) festgehalten, wodurch bei einem erfolgreichen Angriff die Hashwerte häufiger Passwörter einem entsprechenden Klartext zugeordnet werden können. Da diese 'rainbow tables' mit der Zeit immer weiter erweitert werden sind somit neuere Hashfunktionen deutlich sicherer, abgesehen davon, dass sie auch mehr mögliche Hashwerte besitzen als ältere Funktionen. Desweiteren gilt für Hashfunktionen wie auch allen anderen Algorithmen dass die Wahrscheinlichkeit fürs Knacken dieser mit steigender Rechenleistung der Computer immer wahrscheinlicher wird.
Zusammenfassung
Hashfunktionen dienen nicht der Verschlüsselung von Daten. Sie dienen vor allem zur Prüfung der Unversehrtheit von Daten und zur sicheren Speicherung von Daten, die selbst im Falle eines Angriffs uneinsehbar bleiben sollen. Ihre Sicherheit nimmt mit der Zeit ab, weshalb neuere Hashfunktionen den älteren vorgezogen werden sollten.