Eine Hash-Funktion ist ein Rechenverfahren, das aus beliebig großen Daten einen Prüfwert fester Länge bildet. Das Ergebnis heißt Hash oder Hashwert.
- Hash-Funktion
Ein Rechenverfahren, das aus beliebig großen Daten einen Prüfwert fester Länge bildet.
Beispiel: „Die Hash-Funktion liefert für eine Datei von einem Gigabyte denselben kurzen Wert wie für ein einzelnes Wort.“Auch: Hashfunktion, in einem Wort. Eine, die den kryptografischen Anforderungen genügt, heißt kryptografische Hash-Funktion.
Abgrenzung zur einfachen Prüfsumme: Eine Prüfsumme erkennt Übertragungsfehler. Eine kryptografische Hash-Funktion soll zusätzlich absichtliche Manipulation erkennbar machen.
Die drei Eigenschaften einer Hash-Funktion
Einwegeigenschaft, Kollisionsresistenz und Lawineneffekt. Einweg heißt, dass sich aus dem Prüfwert die Eingabe nicht zurückrechnen lässt. Kollisionsresistent heißt, dass sich praktisch keine zwei verschiedenen Eingaben finden lassen, die denselben Wert ergeben. Der Lawineneffekt sorgt dafür, dass ein einziges geändertes Zeichen einen völlig anderen Prüfwert erzeugt. Fällt eine dieser Eigenschaften, ist das Verfahren für sicherheitsrelevante Zwecke unbrauchbar.
Warum eine Kollision gefährlich ist
Weil eine Signatur den Hash bestätigt und nicht das Dokument. Wer zu einem harmlosen Vertrag ein zweites Dokument mit demselben Prüfwert bauen kann, kann die Unterschrift vom einen auf das andere übertragen. Das BSI schreibt dazu, bereits eine einzige Kollision könne zur Unsicherheit bei Signaturverfahren führen. Genau deshalb gilt SHA-1 heute als unbrauchbar.
Welche Verfahren heute gelten
Die Familien SHA-2 und SHA-3. Beide stuft das BSI in der Technischen Richtlinie TR-02102-1 vom 23.01.2026 als kryptografisch stark ein und sieht bei klassischen Angriffen keinen praktisch relevanten Unterschied zwischen ihnen. Für Passwörter gilt etwas anderes: Dort ist eine schnelle Hash-Funktion ein Nachteil, und es kommen eigens verlangsamte Verfahren zum Einsatz.
Familie | Empfohlene Längen | Einschätzung des BSI |
|---|---|---|
SHA-2 | SHA-256, SHA-384, SHA-512, SHA-512/256 | Empfohlen |
SHA-3 | SHA3-256, SHA3-384, SHA3-512 | Empfohlen |
SHA-1 | 160 Bit | Nie als sichere Hashfunktion verwenden |
MD5 | 128 Bit | Steht nicht in der Richtlinie |
Die feste Länge gilt unabhängig davon, was hineingeht. Drei Aufrufe zeigen das: ein kurzer Satz, ein langer und gar nichts.
# 37 Zeichen hinein
$ printf 'Die Rechnung geht an die Muster GmbH.' | shasum -a 256
5a65fecba98423670316642633a5e482dc52fc0e1221715658dac707f063b92c -
# 142 Zeichen hinein
$ printf 'Die Rechnung geht an die Muster GmbH. Sie umfasst zwölf Positionen und ist am 30. November fällig; bei Rückfragen meldet sich die Buchhaltung.' | shasum -a 256
46f8eea6c18785cddc424d7fb9d402e19225e4f994368e7e95174a18b116b826 -
# gar nichts hinein
$ printf '' | shasum -a 256
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 -Jedes Mal 64 Zeichen, also 256 Bit. Der letzte Wert ist der bekannteste von allen: Er gehört zur leeren Eingabe und taucht in Datenbanken überall dort auf, wo ein Feld gehasht wurde, das niemand ausgefüllt hat.
Daraus folgt für die Praxis: SHA-256 ist die richtige Wahl, wenn nichts anderes vorgegeben ist. MD5 und SHA-1 tauchen in Altsystemen noch auf und gehören dort ersetzt, sobald sie etwas absichern sollen.