Was ein Hash ist und wofür er dient
Eine Hash-Funktion nimmt eine Eingabe beliebiger Größe entgegen und erzeugt eine Zeichenkette fester Länge aus hexadezimalen Zeichen. Dieselbe Eingabe ergibt immer denselben Hash; ändert man ein einziges Byte, entsteht ein völlig anderer. Hashes lassen sich nicht umkehren, um die ursprüngliche Eingabe zurückzugewinnen.
Diese Kombination macht sie vor allem für eines nützlich: nachzuweisen, dass zwei Daten identisch sind, ohne sie direkt zu vergleichen. Laden Sie ein Linux-ISO herunter, bilden Sie den Hash, vergleichen Sie ihn mit der vom Projekt veröffentlichten Prüfsumme — und Sie wissen, ob die Datei unversehrt und unverändert angekommen ist. Das ist der alltägliche Einsatz, und dafür ist das Vergleichsfeld oben da.
Welchen Algorithmus sollten Sie verwenden?
| Algorithmus |
Ausgabe |
Status |
| MD5 | 32 Hex-Zeichen | Gebrochen. Nur für nicht sicherheitsrelevante Zwecke. |
| SHA-1 | 40 Hex-Zeichen | Gebrochen. Seit 2017 abgekündigt. |
| SHA-256 | 64 Hex-Zeichen | Sicher. Die Allzweck-Voreinstellung. |
| SHA-384 | 96 Hex-Zeichen | Sicher. |
| SHA-512 | 128 Hex-Zeichen | Sicher. Auf 64-Bit-Systemen oft schneller als SHA-256. |
Wenn Sie die Wahl haben und keine besondere Anforderung vorliegt, nehmen Sie SHA-256.
Warum MD5 und SHA-1 immer noch hier sind
Beide sind kryptografisch gebrochen, das heißt, es ist praktisch möglich, zwei verschiedene Eingaben zu konstruieren, die denselben Hash ergeben — eine Kollision. Bei MD5 ist das seit Jahren auf gewöhnlicher Hardware vorführbar. Für SHA-1 veröffentlichten Google und CWI Amsterdam 2017 die erste praktische Kollision, und der Angriff ist seither erheblich billiger geworden.
Eine Kollision zählt, wenn ein Hash als Echtheitsnachweis dient, denn ein Angreifer kann eine schädliche Datei bauen, die zum Hash einer legitimen passt. Sie zählt nicht, wenn der Hash als nicht-adversarische Prüfsumme dient — zufällige Beschädigungen erkennen, Dateien deduplizieren, Cache-Schlüssel erzeugen oder Datensätze auf Buckets verteilen. Deshalb sind beide Algorithmen weiterhin weit verbreitet und werden hier angeboten.
Die Regel ist einfach. Hätte ein Angreifer einen Vorteil davon, einen passenden Hash zu erzeugen, verwenden Sie weder MD5 noch SHA-1. Wehren Sie sich nur gegen einen beschädigten Download oder eine doppelte Zeile, ist beides in Ordnung.
Text hashen und Dateien hashen
Das Werkzeug beherrscht beides. Tippen oder fügen Sie Text ein und hashen Sie ihn direkt, oder wählen Sie eine Datei und hashen Sie deren Inhalt. Der Dateiweg dient dem Prüfsummenvergleich: Hashen Sie ein heruntergeladenes ISO, ein Installationsprogramm oder ein Archiv und fügen Sie die Prüfsumme des Anbieters in das Vergleichsfeld ein — eine Übereinstimmung wird bestätigt, andernfalls wird Ihnen das klar gesagt.
Eine Sache erwischt viele beim Hashen von Text: Nachgestellter Leerraum und Zeilenenden ändern das Ergebnis. Eine mit Windows-CRLF-Zeilenenden gespeicherte Datei hasht anders als derselbe Text mit Unix-LF-Enden, obwohl beides auf dem Bildschirm identisch aussieht. Passt ein Hash nicht und der Inhalt scheint gleich, prüfen Sie zuerst die Zeilenenden.
Alles läuft in Ihrem Browser. Weder der Text noch die Datei wird hochgeladen, und das zählt, wenn Sie etwas Vertrauliches hashen, um es zu überprüfen, statt es zu teilen.
Wofür Hashes nicht da sind
Zwei verbreitete Fehlanwendungen sind es wert, benannt zu werden.
Hashing ist keine Verschlüsselung. Verschlüsselung ist mit einem Schlüssel umkehrbar; Hashing ist überhaupt nicht umkehrbar. Wenn Sie die ursprünglichen Daten später wiederherstellen müssen, brauchen Sie Verschlüsselung und keinen Hash.
Reines SHA-256 ist nicht der Weg, Passwörter zu speichern. Schnelle Hash-Funktionen sind genau das falsche Werkzeug, denn ihre Geschwindigkeit ist es, die einem Angreifer Milliarden Rateversuche pro Sekunde gegen eine gestohlene Datenbank erlaubt. Passwortspeicherung erfordert einen bewusst langsamen, gesalzenen und eigens dafür entworfenen Algorithmus — bcrypt, scrypt oder Argon2. SHA-256 für Passwörter zu verwenden, ist ein bekannter und schwerwiegender Fehler.