Hash-Funktion

Eine Hash-Funktion bildet beliebig große Eingabedaten deterministisch auf eine Ausgabe fester Länge ab, aus der sich die ursprünglichen Daten nicht zurückrechnen lassen.

Kurz erklärt

Eine kryptografische Hash-Funktion nimmt beliebige Eingabedaten - ein einzelnes Wort oder eine ganze Datei - entgegen und erzeugt daraus einen Hashwert fester Länge, etwa 256 Bit bei SHA-256. Drei Eigenschaften machen sie nützlich: Dieselbe Eingabe erzeugt immer denselben Hashwert (deterministisch), schon eine minimale Änderung der Eingabe führt zu einem völlig anderen Hashwert (Lawineneffekt), und aus dem Hashwert lässt sich die ursprüngliche Eingabe praktisch nicht zurückrechnen (Einwegfunktion).

Beispiel

Ein Server speichert beim Anlegen eines Nutzerkontos nicht das Passwort selbst, sondern nur dessen Hashwert. Beim Login wird das eingegebene Passwort erneut gehasht und der resultierende Wert mit dem gespeicherten Hashwert verglichen - stimmen beide überein, war die Eingabe korrekt, ohne dass das Passwort selbst je im Klartext gespeichert werden musste.

Warum ist das relevant?

Hash-Funktionen sind eine stille, aber allgegenwärtige Grundlage moderner Systeme: Sie sichern Passwörter (idealerweise mit zusätzlichem Salt und einem für Passwörter geeigneten, absichtlich langsamen Verfahren wie bcrypt oder Argon2, nicht mit einer schnellen Allzweck-Hash-Funktion), machen die Signatur eines JWT fälschungssicher, identifizieren jeden Commit in Git eindeutig über seinen Hashwert, und dienen als Prüfsumme, um zu erkennen, ob eine heruntergeladene Datei unterwegs verändert wurde.

Häufige Missverständnisse

Hashing ist keine Verschlüsselung und damit nicht dasselbe wie Verschlüsselung: Eine Hash-Funktion ist absichtlich nicht umkehrbar, während Verschlüsselung mit dem richtigen Schlüssel gezielt wieder rückgängig gemacht werden kann. Auch die Annahme, ein Hashwert sei absolut eindeutig, stimmt streng genommen nicht - da der Ausgaberaum fest und begrenzt, der Eingaberaum aber unbegrenzt ist, können theoretisch zwei unterschiedliche Eingaben denselben Hashwert ergeben (Kollision). Bei kryptografisch sicheren Hash-Funktionen ist das Finden einer solchen Kollision aber praktisch nicht durchführbar - für als gebrochen geltende ältere Verfahren wie MD5 oder SHA-1 ist das dagegen inzwischen möglich, weshalb sie für sicherheitsrelevante Zwecke nicht mehr eingesetzt werden sollten.

Weiterführende Inhalte

Quellen & Dokumentation