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.