Was ist eine Hashfunktion?
Eine Hashfunktion wandelt jeden Inhalt — einen Satz, ein Programm, eine Sicherung von mehreren Gigabyte — in eine Zeichenkette fester Länge um, genannt Hash-Wert oder Digest. Drei Eigenschaften definieren ihn: Die Ausgabe hat immer dieselbe Größe, unabhängig von der Eingabe, derselbe Inhalt erzeugt immer denselben Hash-Wert, und vom Hash-Wert zurück zur Eingabe zu kommen, muss praktisch unmöglich sein. Erst dieser dritte Punkt unterscheidet ein kryptografisches Hash von einer Prüfsumme wie CRC32.
Konkret bestimmen zwei Anwendungen den Großteil der Praxis. Integrität prüfen : Der Herausgeber veröffentlicht den Hash seiner Datei, Sie berechnen ihn neu — die Übereinstimmung beweist, dass der Download nicht verändert wurde. Inhalte vergleichen : Statt die Dokumente selbst aufzubewahren, bewahrt man ihre Hash-Werte auf — sind sie identisch, sind es auch die Inhalte, ohne etwas über ihre Natur zu verraten.
Welchen Algorithmus heute wählen?
SHA-256 ist die Standardantwort: von der NSA standardisiert, dann überall übernommen, in jeder Sprache implementiert und ohne bekannte Kollision. SHA-512 eignet sich für große Datenmengen, wenn der Prozessor 64 Bit breit ist, und ist auf dieser Architektur oft schneller als sein Vetter. SHA-384 bringt über eine längere Variante hinaus nichts Besonderes. Für die Signatur einer Nachricht mit Schlüssel ist der HMAC-SHA-256 die Referenz: Er verbindet geheimen Schlüssel und Hash, sodass nur der Besitzer des Schlüssels denselben Wert erzeugen kann.
Der MD5 und der SHA-1 bleiben für nicht sensible Prüfungen nützlich — ein Index, ein Cache, eine Duplikaterkennung — dort, wo Geschwindigkeit mehr zählt als Widerstandsfähigkeit. Der CRC32, welcher dagegen kein kryptografisches Hash ist: Er erkennt zufällige Veränderungen, doch eine absichtliche Veränderung ist in wenigen Sekunden erstellt.
Warum gelten MD5 und SHA-1 als gebrochen?
Weil Forscher für jeden von ihnen zwei verschiedene Dokumente mit demselben Hash hergestellt haben. Für MD5 reicht die Demonstration bis 2004 zurück; für SHA-1 wurde 2017 eine echte Kollision unter dem Namen SHAttered erzeugt. Eine Kollision genügt, um eine Signatur zu brechen: Wenn der Angreifer das Dokument wählt und der Herausgeber es nur hash, kann er ein harmlos wirkendes Dokument liefern, das in Wahrheit einen anderen Inhalt signiert. Aus diesem Grund haben TLS-Zertifikate, Software-Updates und Paketsignaturen diese Algorithmen aufgegeben.
Was Hashing nicht leistet
Hashen ist nicht Verschlüsseln: Ein Hash ist von Grund auf unwiderruflich, aber er schützt den Inhalt nicht, indem er ihn unlesbar macht. Hashing verschlüsselt nichts, ersetzt weder TLS noch einen Schlüssel und schützt auch nicht allein ein Passwort — das ist Aufgabe von bcrypt, scrypt oder Argon2, die bewusst langsam sind. Und zweimal zu hashen verstärkt nichts: Algorithmen aneinanderzureihen fügt nur eine schwache Schicht hinzu, wo eine einzige ungebrochene Funktion ausreicht.
Empfohlen für
Systemadministratoren und IT-Leiter, die Prüfsummen von Distributionen kontrollieren, Entwickler, die Artefakte versiegeln oder Webhooks authentisieren, Auditoren und Compliance-Verantwortliche, die die Integrität von Sicherungen prüfen, Journalisten und Analysten, die Dokumente vergleichen, ohne sie zu verbreiten, Studierende der Kryptografie, die es mit den Begriffen Hash, Kollision und Salt zu tun haben — und alle, die einen Inhalt hashen schnell und spurlos möchten, ergänzt durch den Passwort-Generator, denBase64-Encoder und -Decoder, den JWT-Decoder, den Regex-Test und der Zeichenzähler.