Was ist ein Hash und warum ist er überall in der Technik?
Sie haben wahrscheinlich schon Zeichenketten wie diese gesehen:
e3b0c44298fc1c149afbf4c8996fb924
27ae41e4649b934ca495991b7852b855
Sie tauchen bei Software-Downloads auf („überprüfen Sie den SHA-256-Hash"), in Blockchain-Gesprächen, in Diskussionen über Passwortsicherheit und in zahllosen Entwicklertools. Aber was genau ist ein Hash, und warum ist er so grundlegend für moderne Technologie?
Das Konzept in einfachen Worten
Eine Hash-Funktion nimmt eine beliebige Eingabe — ein Wort, einen Satz, eine ganze Datei — und erzeugt eine Ausgabe fester Länge, den sogenannten Hash-Wert (auch Digest, Prüfsumme oder Fingerabdruck genannt). Die wichtigsten Eigenschaften sind:
- Deterministisch. Die gleiche Eingabe erzeugt immer die gleiche Ausgabe.
- Feste Länge. Egal wie groß die Eingabe ist, die Ausgabe hat immer dieselbe Größe.
- Einweg. Man kann die ursprüngliche Eingabe nicht aus der Hash-Ausgabe rekonstruieren.
- Lawineneffekt. Eine winzige Änderung in der Eingabe erzeugt einen völlig anderen Hash.
Stellen Sie sich das wie einen Fingerabdruck für Daten vor. So wie Ihr Fingerabdruck Sie eindeutig identifiziert, aber nicht dazu verwendet werden kann, Ihr Gesicht zu rekonstruieren, identifiziert ein Hash ein Datenstück eindeutig, kann aber nicht zur Rekonstruktion des Originals verwendet werden.
Ein einfaches Beispiel
Hier sehen Sie, was die SHA-256-Hash-Funktion mit zwei sehr ähnlichen Eingaben macht:
| Eingabe | SHA-256-Hash (erste 16 Zeichen) |
|---|---|
| "Hello" | 185f8db32271fe25... |
| "hello" | 2cf24dba5fb0a30e... |
| "hello!" | ce06092fb948d9ff... |
Die Änderung eines einzigen Zeichens (großes H zu kleinem h) oder das Hinzufügen eines Ausrufezeichens erzeugt einen komplett anderen Hash. Es gibt kein Muster, keine vorhersagbare Beziehung. Das ist der Lawineneffekt in Aktion.
Wussten Sie? Der SHA-256-Hash einer leeren Eingabe (buchstäblich nichts) ist e3b0c44298fc1c14.... Das ist eine bekannte Konstante. Jede SHA-256-Implementierung der Welt erzeugt für eine leere Eingabe exakt diese Ausgabe.
Gängige Hash-Algorithmen
MD5
- Ausgabe: 128 Bit (32 Hexadezimalzeichen)
- Status: Für Sicherheitszwecke gebrochen. Kollisionen (verschiedene Eingaben, die denselben Hash erzeugen) können in Sekunden generiert werden.
- Wird noch verwendet für: Dateiintegritätsprüfungen, bei denen Sicherheit keine Rolle spielt (z. B. Überprüfung, ob ein Download nicht beschädigt wurde).
SHA-1
- Ausgabe: 160 Bit (40 Hexadezimalzeichen)
- Status: Für Sicherheit veraltet. Kollisionen wurden nachgewiesen.
- Wird noch verwendet für: Legacy-Systeme, Git-Commit-Identifikatoren.
SHA-256
- Ausgabe: 256 Bit (64 Hexadezimalzeichen)
- Status: Aktueller Standard. Keine bekannten praktischen Angriffe.
- Verwendet für: Passwortspeicherung, digitale Signaturen, Blockchain, Dateiprüfung, TLS-Zertifikate.
SHA-512
- Ausgabe: 512 Bit (128 Hexadezimalzeichen)
- Status: Aktueller Standard. Noch größerer Sicherheitspuffer als SHA-256.
- Verwendet für: Hochsicherheitsanwendungen, einige Passwort-Hashing-Verfahren.
Warnung MD5 und SHA-1 sollten niemals für Sicherheitszwecke (Passwörter, digitale Signaturen, Zertifikate) verwendet werden. Sie sind kryptografisch gebrochen. Verwenden Sie SHA-256 oder SHA-512 für alles, was sicherheitsrelevant ist.
Wo Hashes verwendet werden
Passwortspeicherung
Wenn Sie ein Konto erstellen, speichert die Website nicht (oder sollte nicht) Ihr tatsächliches Passwort. Stattdessen speichert sie den Hash Ihres Passworts. Wenn Sie sich anmelden, hasht das System das eingegebene Passwort und vergleicht es mit dem gespeicherten Hash. Stimmen sie überein, sind Sie drin.
Das bedeutet, dass Angreifer bei einem Datenbank-Einbruch Hashes erhalten, keine Passwörter. Sie können den Hash nicht umkehren, um Ihr Passwort zu finden (obwohl sie versuchen können, es zu erraten, indem sie gängige Passwörter hashen und vergleichen).
Modernes Passwort-Hashing geht noch weiter mit Algorithmen wie bcrypt, scrypt und Argon2, die Salt (Zufallsdaten) hinzufügen und absichtlich langsam sind, um Brute-Force-Raten unpraktisch zu machen.
Dateiprüfung
Wenn Sie Software herunterladen, stellt die Website oft einen SHA-256-Hash der Datei bereit. Nach dem Download hashen Sie die Datei selbst und vergleichen. Stimmen die Hashes überein, ist die Datei genau das, was der Herausgeber beabsichtigt hat. Unterscheiden sie sich, wurde die Datei während des Downloads beschädigt oder manipuliert.
Erwartet: a1b2c3d4e5f6...
Ihre Datei: a1b2c3d4e5f6... ✓ Übereinstimmung — Datei ist authentisch
Blockchain und Kryptowährung
Jeder Block in einer Blockchain enthält den Hash des vorherigen Blocks und bildet so eine unzerbrechliche Kette. Wenn jemand versucht, eine vergangene Transaktion zu ändern, ändert sich der Hash dieses Blocks, was die Kette von diesem Punkt an bricht und Manipulationen sofort erkennbar macht.
Bitcoin-Mining ist im Grunde ein Wettbewerb, eine Eingabe zu finden, die einen SHA-256-Hash erzeugt, der mit einer bestimmten Anzahl von Nullen beginnt.
Digitale Signaturen
Wenn Sie ein Dokument digital signieren, verschlüsseln Sie nicht das gesamte Dokument mit Ihrem privaten Schlüssel. Stattdessen wird das Dokument gehasht und der Hash wird verschlüsselt. Das ist viel schneller und erzeugt eine kompakte Signatur.
Datendeduplizierung
Cloud-Speicherdienste verwenden Hashes, um doppelte Dateien zu erkennen. Wenn zwei Nutzer dieselbe Datei hochladen, hat sie denselben Hash, und der Dienst muss nur eine Kopie speichern.
Git-Versionskontrolle
Jeder Commit, jede Datei und jeder Baum in Git wird durch seinen SHA-1-Hash identifiziert. So weiß Git, ob sich eine Datei geändert hat, und so wird die gesamte Historie eines Projekts nachverfolgt.
Wussten Sie? Git migriert schrittweise von SHA-1 zu SHA-256. Die Umstellung begann, weil 2017 SHA-1-Kollisionen nachgewiesen wurden, die es theoretisch ermöglichten, zwei verschiedene Commits mit demselben Identifikator zu erstellen.
Das Unumkehrbarkeitsproblem (und warum es wichtig ist)
Die Einweg-Natur von Hashes ist sowohl ihre größte Stärke als auch eine häufige Quelle der Verwirrung.
Sie können einen Hash nicht „entschlüsseln". Ein Hash ist keine Verschlüsselung. Verschlüsselung ist bidirektional: mit einem Schlüssel verschlüsseln, mit einem Schlüssel entschlüsseln. Hashing ist einweg: Sie können den Hash aus der Eingabe berechnen, aber nicht die Eingabe aus dem Hash.
Die einzige Möglichkeit, einen Hash „umzukehren", ist, die ursprüngliche Eingabe zu raten, Ihre Vermutung zu hashen und zu prüfen, ob sie übereinstimmt. Für kurze, einfache Eingaben (wie gängige Passwörter) ist das machbar. Für lange, zufällige Eingaben ist es rechnerisch unmöglich.
Deshalb ist die Passwortlänge so wichtig. Der Hash von „password123" kann durch Ausprobieren gängiger Passwörter gefunden werden. Der Hash von „j8#kL9$mN2@pQ5&" würde länger brauchen als das Alter des Universums, um durch Raten gefunden zu werden.
Probieren Sie es selbst aus
Der beste Weg, Hashes zu verstehen, ist zu experimentieren. Hashen Sie ein Wort, ändern Sie dann ein Zeichen und sehen Sie, wie sich die Ausgabe komplett ändert. Hashen Sie eine Datei vor und nach einer Änderung und sehen Sie den Unterschied.
Tipp Generieren und überprüfen Sie Hashes für beliebigen Text oder Dateien: Hashes generieren und überprüfen. Probieren Sie SHA-256, MD5, SHA-512 und mehr — sofort, kostenlos, in Ihrem Browser.
Hashes praktisch erkunden:
Kostenlos, sofort und ohne Registrierung.