SHA-1 (Secure Hash Algorithm 1) ist eine Hashfunktion mit 160-Bit-Ausgabe, die jahrzehntelang der Standard für digitale Signaturen, Zertifikate und Integritätsprüfungen war. Seit 2017 gilt sie als praktisch gebrochen — Kollisionen sind real berechenbar.

Technischer Hintergrund

SHA-1 wurde von der NSA entworfen und 1995 als FIPS 180-1 standardisiert. Es erzeugt aus beliebiger Eingabe einen 160-Bit-Digest (40 Hexadezimalzeichen), arbeitet nach der Merkle-Damgård-Konstruktion mit 512-Bit-Blöcken und 80 Runden. Lange Zeit signierten Webserver ihre Zertifikate mit SHA-1, und Git-Repositories verwenden SHA-1 bis heute intern zur Identifikation von Commits.

Die Kollisionsangriffe

Eine Hash-Kollision liegt vor, wenn zwei verschiedene Eingaben denselben Digest erzeugen. Für SHA-1 liegt die theoretische Geburtstagsschranke bei 2^80 Berechnungen — lange als uneinholbar angesehen. 2005 zeigten Wang et al. einen theoretischen Angriff mit 2^69 Schritten. 2017 gelang Google und dem CWI Amsterdam mit „SHAttered“ die erste praktische Kollision: zwei unterschiedliche PDF-Dateien mit identischem SHA-1-Hash, gefunden mit etwa 2^63,1 Berechnungen (6500 CPU-Jahren und 110 GPU-Jahren Rechenzeit).

Status heute

  • Chrome und andere Browser entfernten SHA-1-Zertifikate 2017; TLS-Server-Signaturen mit SHA-1 werden seit 2020 abgelehnt.
  • Für Sicherheitsanwendungen (Signaturen, TLS-Handshake, HMAC) ist SHA-1 nicht mehr akzeptabel — Nachfolger sind SHA-2 (etwa SHA-256) und SHA-3.
  • Als reine Prüfsumme gegen zufällige Übertragungsfehler bleibt SHA-1 verwendbar — genauso wie das ältere MD5.

Verwandte Grundlagen: Hashfunktion, MD5, SHA-256, Rainbow Table.