Abo
  • Services:
Anzeige
"Shattered" taufte Google seinen Angriff auf SHA-1 - in vielen Protokollen und Softwareprodukten wird SHA-1 jedoch immer noch genutzt.
"Shattered" taufte Google seinen Angriff auf SHA-1 - in vielen Protokollen und Softwareprodukten wird SHA-1 jedoch immer noch genutzt. (Bild: Google)

Hashfunktion: Der schwierige Abschied von SHA-1

"Shattered" taufte Google seinen Angriff auf SHA-1 - in vielen Protokollen und Softwareprodukten wird SHA-1 jedoch immer noch genutzt.
"Shattered" taufte Google seinen Angriff auf SHA-1 - in vielen Protokollen und Softwareprodukten wird SHA-1 jedoch immer noch genutzt. (Bild: Google)

Die Hashfunktion SHA-1 ist seit kurzem endgültig gebrochen. Doch an vielen Stellen ist sie noch im Einsatz. Beispielsweise in Git, in Bittorrent und, was manche überraschen wird, auch in TLS.
Von Hanno Böck

Das Schicksal der Hashfunktion SHA-1 ist vor kurzem endgültig besiegelt woden. Der Kryptograph Marc Stevens erzeugte in einem Kooperationsprojekt mit Google zwei unterschiedliche PDF-Dateien, die den selben SHA-1-Hash besitzen. Damit verletzt SHA-1 eine wichtige Eigenschaft kryptographischer Hashfunktionen: die sogenannte Kollisionsresistenz.

Anzeige

Doch SHA-1 aus der Welt zu schaffen, wird nicht ganz einfach. In vielen Softwareprodukten erfüllt sie wichtige Funktionen, und ein Austausch ist aus Kompatibilitätsgründen oft nicht trivial. Und die möglichen Probleme wurden lange Zeit von vielen Entwicklern heruntergespielt und ignoriert.

Unsichere Hashes in Git

Ein prominenter Nutzer von SHA-1-Hashes ist das Versionskontrollsystem Git. Es wurde von Linus Torvalds für die Bedürfnisse der Kernel-Community entwickelt. Inzwischen ist Git das mit Abstand beliebteste Werkzeug zur Verwaltung von Quellcodes.

Git nutzt intern ein sogenanntes Content-addressable Storage-System. Ein Git-Repository besteht aus verschiedenen Objekten. Die eigentlichen Dateien in einem Repositor sind als "Blob"-Objekte abgelegt. Daneben gibt es verschiedene andere Objekte, die die Struktur abbilden. Tree-Objekte enthalten eine Liste von Dateien, sie bilden also Verzeichnisse ab. Daneben gibt es Commits, die eine Änderung des Repository-Inhalts beschreiben und Tag-Objekte, die einen bestimmten Zustand des Repositories festhalten.

Alle diese Objekte werden mit einem Header versehen gehasht. Anhand ihres Hashes werden die Objekte gespeichert. Sichtbar ist das im .git/objects-Verzeichnis, das sich in jedem Git-Repository befindet. Darin befinden sich Unterverzeichnisse, die mit den ersten beiden Hexadezimalwerten des Hashes benannt sind, und darin die eigentlichen Objektdateien, die vorher noch mit Zlib gepackt werden. Ein Objekt mit dem Hash e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 landet also im Verzeichnis .git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391. Bei größeren Repositories findet man dort jedoch nicht alle Objekte, da manchmal mehrere Objekte gepackt und anders abgelegt werden.

Linus Torvalds hatte in der Vergangenheit mehrfach gesagt, dass die Sicherheitseigenschaften von SHA-1 für Git nicht relevant sind. An anderer Stelle hatte er diese Ansicht jedoch auch wieder relativiert. Denn es gibt durchaus Angriffsszenarien.

PGP-signierte Commits nur so sicher wie SHA-1

Ein Feature von Git ist es, Commits mittels OpenPGP zu signieren. Signiert werden dabei aber eben nur Commit-Objekte, die wiederum nur Referenzen auf die SHA-1-Hashes von Tree-Objekten und indirekt Blobs enthalten. Somit ist die Sicherheit der Signaturen direkt von der Sicherheit von SHA-1 abhängig.

Ein denkbarer Angriff: Jemand könnte zwei Dateien erstellen, die innerhalb von Git den selben SHA-1-Hash erhalten. Dabei könnte es sich etwa um Bilder oder PDF-Dateien handeln. Bei reinen Text-Dateien ist ein Angriff nicht direkt machbar, zumindest Teile des Dokuments müssen beliebige Daten enthalten können, die beim Interpretieren ignoriert werden. Die von Google bereitgestellten Dateien lassen sich für so einen Angriff nicht nutzen, da Git jedem Objekt noch einen Header voranstellt.

Eine der Dateien ist harmlos und kann an jemanden geschickt werden, der ein Git-Repository betreibt. Wenn dieser die Datei in das Repository signiert eincheckt, ist diese Signatur auch für eine bösartige Kopie des Repositories gültig, das die andere Datei enthält.

Das ist nur ein denkbarer Angriff. Problematisch ist ebenfalls die Nutzung von Submodulen, die über ihre Hashes identifiziert werden, oder die Deduplikation von Services wie Github.

Hardcodierte Arrays werden entfernt

Die Nutzung von alternativen Hash-Algorithmen war in Git nie vorgesehen. An vielen Stellen im Code werden Arrays mit einer fest eingestellten Größe von 20 Bytes für die Hashes verwendet, was genau für die 160 Bit von SHA-1 reicht. Sichere Hash-Funktionen nutzen üblicherweise 256 oder 512 Bit. Git-Entwickler Brian Carlson fing bereits vor einigen Jahren damit an, diesen Code auf einen generischen Objekttyp umzustellen, doch diese Arbeiten sind längst nicht abgeschlossen.

Aber diese Restrukturierung des Codes ist nur der allererste Schritt einer Migration. Relativ einfach wäre es, neue Repositories zu erstellen, die ein neues Datenformat und eine sichere Hashfunktion nutzen. Aber es gibt unzählige bestehende Repositories. Und der Umgang mit diesen ist nicht trivial. Linus Torvalds hat in einer E-Mail einen groben Plan zur Umstellung vorgestellt.

Der Content-addressable Storage sorgt dafür, dass eine Datei an einer eindeutigen Stelle abgelegt ist. Wie würde das jedoch nach einer Umstellung aussehen? Sollen alle Dateien zusätzlich mit einem besseren Hash an anderer Stelle abgelegt werden? Torvalds Plan sieht das vor. Demnach wäre es bei allen neuen Tree- und Commit-Objekten verboten, alte Objekte zu referenzieren. Das dürfte einmalig dazu führen, dass Repositories in ihrer Größe deutlich anwachsen, da viele Objekte dann doppelt vorgehalten werden müssen.

Die Probleme hätten leicht vermieden werden können. Denn Git ist nicht so alt. Die erste Version wurde 2005 veröffentlicht. Damals waren die Schwächen von SHA-1 bereits bekannt. John Gilmore hatte bereits früh darauf hingewiesen, Linus Torvalds ignorierte die Warnungen jedoch und machte sich über sie lustig.

Übrigens: Bei den Konkurrenten zu Git sieht es überwiegend nicht viel besser aus. Auch Mercurical nutzt SHA-1. Selbst Subversion, das nach außen überhaupt keine Hashes nutzt, hatte Ärger mit Hashkollisionen. Beim Versuch des Webkit-Teams, zu Testzwecken die kollidierenden PDF-Dateien einzuchecken, verursachte Subversion einen Fehler und das Repository wurde unbenutzbar.

Bittorrent mit Backdoor 

eye home zur Startseite
drdoolittle 03. Apr 2017

Der meint scheinbar auch, die Weisheit mit Löffeln gefressen zu haben. Eingebildeter...

Themenstart

FreiGeistler 02. Apr 2017

Verwendet das auch SHA-1?

Themenstart

cebewee 01. Apr 2017

Das ist nur der kleinere Teil des Problems: Du willst ja auch weiterhin mit alten...

Themenstart

Rocky Horror... 01. Apr 2017

Der Fingerprint ist keine Signatur. Für die Signatur kann GPG außerdem folgende Hashes...

Themenstart

Heinzel 31. Mär 2017

Als git noch recht frisch war hat Linus einen Vortrag gehalten und dargelegt warum ihm...

Themenstart

Kommentieren



Anzeige

Stellenmarkt
  1. Daimler AG, Sindelfingen
  2. Deutsche Telekom AG, Bonn, Trier, Saarbrücken, Münster
  3. Deutsche Telekom AG, Bonn, Darmstadt
  4. Bertrandt Services GmbH, Nürnberg


Anzeige
Top-Angebote
  1. 49,99€
  2. 125,00€
  3. (65B6D für 2.799,00€ und 65C6D für 2.999,00€)

Folgen Sie uns
       


  1. UEFI-Update

    Agesa 1004a lässt Ryzen-Boards schneller booten

  2. Sledgehammer Games

    Call of Duty WWII spielt wieder im Zweiten Weltkrieg

  3. Mobilfunk

    Patentverwerter klagt gegen Apple und Mobilfunkanbieter

  4. Privatsphäre

    Bildungsrechner spionieren Schüler aus

  5. Raumfahrt

    Chinesischer Raumfrachter Tanzhou 1 dockt an Raumstation an

  6. Die Woche im Video

    Kein Saft, kein Wumms, keine Argumente

  7. Windows 7 und 8

    Github-Nutzer schafft Freischaltung von neuen CPUs

  8. Whitelist umgehen

    Node-Server im Nvidia-Treiber ermöglicht Malware-Ausführung

  9. Easy S und Easy M

    Vodafone stellt günstige Einsteigertarife ohne LTE vor

  10. UP2718Q

    Dell verkauft HDR10-Monitor ab Mai 2017



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Creators Update im Test: Erhöhter Reifegrad für Windows 10
Creators Update im Test
Erhöhter Reifegrad für Windows 10
  1. Microsoft Zwei große Updates pro Jahr für Windows 10
  2. Windows 10 Version 17xx-2 Stromsparmodus kommt für die nächste Windows-Version
  3. Windows as a Service Die erste Windows-10-Version hat noch drei Wochen Support

Moto G5 und Moto G5 Plus im Test: Lenovo kehrt zur bewährten Motorola-Tradition zurück
Moto G5 und Moto G5 Plus im Test
Lenovo kehrt zur bewährten Motorola-Tradition zurück
  1. Miix 720 Lenovos High-End-Detachable ist ab 1.200 Euro erhältlich
  2. Lenovo Händler nennt Details des Moto G5
  3. Miix 320 Daten zu Lenovos neuem 2-in-1 vorab veröffentlicht

Miniatur Wunderland: Schiffe versenken die schönsten Pläne
Miniatur Wunderland
Schiffe versenken die schönsten Pläne
  1. Transport Üo, der fahrbare Ball
  2. Transport Sea Bubbles testet foilendes Elektroboot
  3. Verkehr Eine Ampel mit Kamera und Gesichtserkennung

  1. Re: GA-AB350-Gaming3 teils verschlimmbessert

    laserbeamer | 15:51

  2. Warum nicht?

    Berner Rösti | 15:51

  3. Re: Call of Battlefield ....

    TC | 15:47

  4. Re: Weltveränderung

    teenriot* | 15:42

  5. Re: Bootzeit?

    red creep | 15:39


  1. 12:40

  2. 11:55

  3. 15:19

  4. 13:40

  5. 11:00

  6. 09:03

  7. 18:01

  8. 17:08


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel