bk99.de entertain the web since 1997

SHA-1 ist gebrochen

Zusammenfassung

Am 15. Februar 2005 meldete Bruce Schneier in seinem Blog, dass ein Team um Xiaoyun Wang Kollisionen für die vollständige Hashfunktion SHA-1 mit etwa 2 hoch 69 Operationen finden kann, statt der 2 hoch 80, die ihre Länge versprach. Damit war SHA-1 für digitale Signaturen nicht mehr sicher, auch wenn die Rechnung noch zu teuer für einen praktischen Angriff war. Bis zur ersten tatsächlich berechneten Kollision vergingen trotzdem zwölf Jahre.

Was Schneier meldete

Das Team von Xiaoyun Wang, Yiqun Lisa Yin und Hongbo Yu, überwiegend von der Shandong-Universität, hatte ein Paper in Umlauf gebracht: Kollisionen in vollem SHA-1 mit 2 hoch 69 Operationen, in SHA-0 mit 2 hoch 39 und in einer auf 58 Runden verkürzten SHA-1-Variante mit 2 hoch 33. Schneier nannte das ein bedeutendes Ergebnis der Kryptoanalyse, das SHA-1 für Signaturen praktisch erledige.

Wichtig war Schneiers Einschränkung: Verfahren wie HMAC, bei denen Kollisionen keine Rolle spielen, seien nicht betroffen. Dasselbe Team hatte ein halbes Jahr zuvor die ersten praktischen Kollisionen für MD5 vorgelegt.

Ideen

  • Ein theoretischer Bruch reicht, um ein Verfahren für Signaturen aufzugeben.
  • Nicht jede Verwendung einer Hashfunktion hängt an Kollisionsresistenz.
  • Angriffe werden nur besser, nie schlechter.
  • Der Abschied von einem Standard dauert länger als sein Bruch.

Einsichten

  • Zwischen Schneiers Warnung 2005 und der ersten berechneten Kollision SHAttered im Februar 2017 lagen zwölf Jahre, in denen SHA-1 vielerorts weiterlief, bis hin zu Zertifikaten und Git.
  • Die Lehre aus MD5 und SHA-1 ist dieselbe: Wer erst bei einer praktischen Kollision umsteigt, steigt zu spät um.

Fakten

  • Die erste tatsächlich berechnete SHA-1-Kollision, SHAttered, wurde im Februar 2017 veröffentlicht.

Referenzen

Bemerkungen

  • Schneier schrieb den Beitrag, bevor das Paper öffentlich war, und betonte, die Ergebnisse noch nicht selbst prüfen zu können.

Empfehlungen

  • SHA-1 aus Signaturen, Zertifikaten und neuen Protokollen entfernen; SHA-256 oder SHA-3 verwenden.
  • Bei Git die Umstellung auf SHA-256-Repositorys beobachten.

Originalbeitrag lesen

Im Webarchiv suchen