Eine Hashfunktion ist eine Funktion, die aus einer beliebig langen Eingabe einen Digest (Hashwert) fester Länge berechnet. Eine kryptographische Hashfunktion erfüllt darüber hinaus Eigenschaften, die sie für Sicherheitsanwendungen geeignet machen: Sie ist deterministisch (gleiche Eingabe = gleicher Ausgabewert), extrem schnell zu berechnen und praktisch nicht umkehrbar.
Für die Speicherung von Passwörtern nimmt man jedoch keine schnellen Hashes, sondern spezielle Verfahren wie bcrypt, Argon2 oder PBKDF2 — sie sind absichtlich langsam und damit gegen Wörterbuch- und Brute-Force-Angriffe gehärtet.
Eigenschaften kryptographischer Hashfunktionen
- Preimage-Resistenz (Einweg-Eigenschaft): Zu einem gegebenen Hashwert ist es praktisch unmöglich, eine passende Eingabe zu finden.
- Zweite-Preimage-Resistenz: Zu einer gegebenen Eingabe ist es praktisch unmöglich, eine zweite Eingabe mit demselben Hashwert zu finden.
- Kollisionsresistenz: Es ist praktisch unmöglich, zwei verschiedene Eingaben mit demselben Hashwert zu finden.
- Avalanche-Effekt: Ändert sich ein einziges Bit der Eingabe, verändert sich der Hashwert vollständig und unvorhersagbar.
Bekannte Vertreter
Die SHA-Familie ist heute der Standard: SHA-256 und die übrigen SHA-2-Varianten sind kollisionsresistent und überall im Einsatz (TLS, Git, Signaturverfahren). SHA-3 nutzt statt der Merkle-Damgård-Konstruktion eine Sponge-Konstruktion. Die älteren Verfahren MD5 und SHA-1 gelten als gebrochen und dürfen für Sicherheitszwecke nicht mehr verwendet werden.
Anwendungen
- Passwort-Hashing: Passwörter werden nie im Klartext gespeichert, sondern als Hash mit Salt abgelegt.
- Integritätsprüfung: Datei-Downloads und Software-Pakete werden über ihren Hash verifiziert.
- Digitale Signaturen und HMAC bauen auf Hashfunktionen auf.
- Datenstrukturen: Die Hash-Tabelle nutzt eine (nicht notwendigerweise kryptographische) Hashfunktion für O(1)-Zugriffe.
- Merkle-Bäume in Blockchain und verteilten Systemen fassen viele Hashes zu einem Wurzel-Hash zusammen.
Verwandte Grundlagen: Hashing, Kryptographie, PKI.