SHA-256
Kurz: Ein weit verbreiteter Hashing-Algorithmus aus der SHA-2-Familie, der aus beliebigen Eingabedaten einen 256-Bit (32-Byte) langen Hash-Wert erzeugt.
Genauer: SHA-256 steht für “Secure Hash Algorithm, 256 Bit” und gilt aktuell als kryptografisch sicher (im Gegensatz zum veralteten SHA-1). Typische Einsatzgebiete: Integritätsprüfung von Downloads (Checksummen), Passwort-Hashing (meist kombiniert mit einem Salt), Zertifikate und digitale Signaturen, sowie Blockchain-Systeme wie Bitcoin. Die Zahl im Namen gibt die Länge des Ausgabewerts an — SHA-512 erzeugt entsprechend einen 512-Bit-Hash.
Im Detail
Feste Ausgabelänge, egal wie groß die Eingabe
SHA-256 erzeugt für jede Eingabe (egal ob 1 Byte oder mehrere Gigabyte) immer genau 256 Bit, dargestellt als 64 Hexadezimal-Zeichen:
$ echo -n "" | sha256sum
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
$ echo -n "Emzett" | sha256sum
a1f7d3c2... (Beispiel — jede noch so kleine Eingabe ergibt einen fixen 256-Bit-Hash)Selbst der Hash der leeren Zeichenkette (oben) ist ein feststehender, weltweit identischer Wert — jeder, der SHA-256 auf nichts anwendet, bekommt exakt denselben 64-stelligen Hex-Wert, was praktisch als eine Art “Fingerabdruck der leeren Eingabe” in vielen Systemen als Referenzwert dient.
Praktische Einsatzgebiete
Praktisch wird SHA-256 in sehr unterschiedlichen Kontexten eingesetzt: Beim Download großer Dateien wird oft ein SHA-256-Hash veröffentlicht, damit man nach dem Herunterladen prüfen kann, ob die Datei unversehrt und unverändert angekommen ist (sha256sum -c checksums.txt). Git verwendete lange SHA-1 für Commit-Hashes und migriert schrittweise zu SHA-256, weil SHA-1 als kollisionsanfällig gilt (siehe die SHAttered-Kollision, siehe Hashing). Bitcoin nutzt SHA-256 gleich zweifach hintereinander (SHA-256d) als Kern des Proof-of-Work-Mining-Algorithmus — Miner müssen dabei durch massenhaftes Durchprobieren einen Eingabewert finden, dessen Hash mit einer bestimmten Anzahl führender Nullen beginnt, was praktisch nur durch rohe Rechenleistung (nicht durch Cleverness) lösbar ist und so den Konsens-Mechanismus absichert.
Interne Funktionsweise (vereinfacht)
SHA-256 verarbeitet die Eingabe in 512-Bit-Blöcken über eine sogenannte Merkle-Damgård-Konstruktion: Die Nachricht wird in Blöcke aufgeteilt (mit definiertem Padding am Ende, damit die Gesamtlänge immer ein Vielfaches von 512 Bit ergibt), und jeder Block durchläuft 64 Kompressionsrunden, die den internen 256-Bit-Zustand schrittweise mit den Nachrichtendaten vermischen — bitweise Rotationen, XOR-Verknüpfungen und modulare Additionen sorgen dafür, dass sich Änderungen an irgendeiner Stelle der Eingabe am Ende über den gesamten Ausgabewert verteilen (Lawineneffekt). Der finale interne Zustand nach dem letzten Block ist der ausgegebene Hash.
Unterschied zu Verschlüsselung
Ein wichtiger Unterschied zu Verschlüsselung: SHA-256 selbst wird NICHT zum Verschlüsseln von Passwörtern verwendet, sondern zum Hashen — bei echten Login-Systemen kommt aber meist nicht direkt SHA-256 zum Einsatz, sondern absichtlich langsamere, für Passwörter optimierte Algorithmen wie bcrypt oder Argon2 (siehe Hashing für die Details, warum Geschwindigkeit hier ein Nachteil ist). Ein Angreifer mit spezialisierter Hardware kann SHA-256 milliardenfach pro Sekunde berechnen — für Prüfsummen ist das ein Vorteil (schnelle Verifikation), für Passwort-Hashing ein Sicherheitsproblem, weshalb dort bewusst langsamere Verfahren gewählt werden.
Der Avalanche-Effekt in der Praxis
Ein besonders anschauliches Merkmal von SHA-256 ist der bereits erwähnte Lawineneffekt: Selbst die kleinstmögliche Änderung der Eingabe (ein einziges umgekipptes Bit) führt zu einem völlig anderen, nicht vorhersehbaren Hash-Ausgabewert — es gibt keine “ähnlichen” Hashes für “ähnliche” Eingaben. Das lässt sich leicht selbst nachvollziehen:
$ echo -n "Emzett" | sha256sum
# ergibt Hash A
$ echo -n "emzett" | sha256sum
# ergibt Hash B - komplett anders, obwohl nur EIN Buchstabe (Groß-/Kleinschreibung) geändert wurdeDiese Eigenschaft ist essenziell für die Sicherheit: Gäbe es eine Korrelation zwischen ähnlichen Eingaben und ähnlichen Hashes, könnte ein Angreifer systematisch nach passenden Eingaben suchen, statt komplett zufällig raten zu müssen — der Lawineneffekt verhindert genau das und zwingt einen Angreifer, jede mögliche Eingabe praktisch unabhängig durchzuprobieren.