
Hash (Kryptografie)
Ein Hash ist eine kurze Zeichenfolge, die aus einer beliebig langen Datei oder Nachricht berechnet wird und wie ein Fingerabdruck für genau diesen Inhalt funktioniert. Ändert sich am Inhalt auch nur ein einziges Zeichen, sieht der Hash völlig anders aus – deshalb dient er zur Prüfung, ob Daten unverändert sind.
Ein Hash ist eine kurze Zeichenfolge, die aus beliebigen Daten berechnet wird. Die Daten können ein einzelnes Wort sein, ein Vertrag oder ein zwei Stunden langer Film. Das Ergebnis hat trotzdem immer dieselbe Länge, zum Beispiel 64 Zeichen. Diese Rechnung läuft nur in eine Richtung: Aus den Daten bekommt man den Hash, aus dem Hash aber nicht die Daten zurück. Man kann sich das wie einen Fingerabdruck vorstellen. Er ist viel kleiner als der Mensch, identifiziert ihn aber eindeutig – und aus einem Fingerabdruck lässt sich kein Mensch nachbauen.
Der Fingerabdruck als Echtheitsnachweis
Der praktische Nutzen liegt im Vergleich. Wer eine Datei aus dem Internet lädt, kann ihren Hash selbst berechnen. Stimmt er mit dem Wert überein, den der Anbieter veröffentlicht hat, ist die Datei unterwegs nicht verändert worden. Schon ein einziges umgekipptes Bit führt zu einem völlig anderen Hash. Manipulationen fallen dadurch sofort auf.
Der zweite große Einsatzbereich sind Passwörter. Seriöse Dienste speichern Passwörter nie im Klartext, sondern nur deren Hash. Beim Anmelden wird die Eingabe erneut gehasht und mit dem gespeicherten Wert verglichen. Wird die Datenbank gestohlen, hat der Angreifer nur eine Liste von Hashes. Das eigentliche Passwort lässt sich daraus nicht einfach zurückrechnen.
Ein verbreiteter Irrtum ist, Hashen sei dasselbe wie Verschlüsseln. Verschlüsselte Daten kann man mit dem passenden Schlüssel wieder lesbar machen. Ein Hash dagegen ist endgültig. Die ursprüngliche Information ist darin gar nicht mehr vollständig enthalten.
Warum die Rückrichtung nicht funktioniert
Eine Hashfunktion zerlegt die Eingabe in Blöcke und mischt sie in vielen Runden durcheinander. Dabei werden Bits vertauscht, verschoben und miteinander verrechnet. Das Verfahren ist öffentlich bekannt und enthält kein Geheimnis. Trotzdem ist es praktisch unmöglich, die Schritte rückwärts zu gehen, weil bei jeder Runde Information verlorengeht und sich vermischt.
Eine gute Hashfunktion muss drei Eigenschaften erfüllen. Erstens darf man aus dem Ergebnis die Eingabe nicht rekonstruieren können. Zweitens soll sich eine winzige Änderung der Eingabe auf etwa die Hälfte aller Ausgabezeichen auswirken. Drittens dürfen keine zwei verschiedenen Eingaben denselben Hash ergeben. Ein solcher Zufall heißt Kollision und würde das ganze Verfahren wertlos machen.
Genau daran sind ältere Verfahren gescheitert. Für MD5 und SHA-1 fanden Forscher Wege, absichtlich Kollisionen zu erzeugen. Damit ließen sich gefälschte Dokumente bauen, die denselben Hash haben wie echte. Heute gilt vor allem SHA-256 als sicher, dessen Ergebnis 256 Bit lang ist. Bei Passwörtern nutzt man zusätzlich absichtlich langsame Verfahren wie bcrypt, damit Angreifer nicht Milliarden Versuche pro Sekunde durchprobieren können.
Von Bitcoin bis zum Download-Button
Am bekanntesten sind Hashes durch Kryptowährungen. In einer Blockchain enthält jeder Block den Hash des vorherigen Blocks. Wer einen alten Eintrag fälschen wollte, müsste alle folgenden Blöcke neu berechnen. Beim sogenannten Mining suchen Computer außerdem eine Zahl, die zusammen mit den Daten einen Hash mit einer bestimmten Form ergibt. Das kostet enorm viel Strom und ist der Grund, warum in News über Bitcoin ständig von Rechenleistung die Rede ist.
Auch abseits von Krypto begegnet einem das Prinzip täglich, meist unsichtbar. Jede verschlüsselte Webseitenverbindung nutzt Hashes, um digitale Signaturen zu prüfen. Messenger wie Signal zeigen einen Sicherheitscode an, der auf demselben Prinzip beruht. Softwarehersteller veröffentlichen Prüfsummen neben ihren Downloads.
In der KI-Branche tauchen Hashes an einer weiteren Stelle auf. Bilddienste vergleichen Hashes, um bekanntes illegales Material zu erkennen, ohne die Bilder selbst zu speichern. Und beim Training großer Modelle nutzt man sie, um doppelte Texte aus riesigen Datensammlungen zu entfernen. Ein Vergleich von Zeichenfolgen ist dabei viel schneller als ein Vergleich ganzer Dokumente.