Zum Hauptinhalt Zur Navigation Zur Suche

Hashfunktion: Git 2.29 unterstützt SHA-256

Nach praktischen Angriffen auf SHA-1 musste auch Git seine Technik ändern. Nun gibt es ersten experimentellen Support für SHA-256.
/ Sebastian Grüner
2 Kommentare News folgen (öffnet im neuen Fenster)
Git 2.29 ist erschienen. (Bild: Github)
Git 2.29 ist erschienen. Bild: Github

Die aktuelle Version 2.29 des Versionskontrollsystems Git ist erschienen. Diese Version enthält erstmals experimentelle Unterstützung für die Nutzung der Hashfunktion SHA-256 statt des bisher genutzten SHA-1. Darauf weist der Code-Hoster Github in seiner Ankündigung(öffnet im neuen Fenster) hin. Der Wechsel wurde notwendig, nachdem Forscher einen erfolgreichen Kollisionsangriff auf SHA-1 durchgeführt hatten. Das Git-Team arbeitet deshalb schon jahrelang an dem Wechsel auf SHA-256.

Sämtliche Objekte, die Git speichert, wie die Dateien im Repository, die interne Baumstruktur, einzelne Beiträge und anderes, werden über die Hashwerte referenziert. Zusätzlich dazu war die Länge der SHA-1-Hashwerte von 160 Bit an mehreren Stellen mit einem 20 Byte großem Array fest codiert.

Die Idee, diese Arrays und überhaupt auch die Repräsentation der Hashwerte in einen generischen Objekttyp zu überführen, stammt bereits aus dem Jahr 2014. Die grundlegenden Arbeiten dazu sind bereits länger abgeschlossen und Git theoretisch in der Lage, SHA-256 für neue Objekte zu nutzen und so ein ganzes Repository auf Grundlage der neuen Hashfunktion aufzubauen. Dazu musste auch das Repository-Format erweitert werden.

Noch nicht interoperabel

Mit der aktuellen Version 2.29 kann nun eben erstmals ein neues Repository mit dem neuen Objektformat auf Basis von SHA-256 erzeugt und genutzt werden. Laut Ankündigung lässt sich mit dem neuen Format vollständig in Git arbeiten. Ebenso werden natürlich bestehende SHA-1-Repositorys unterstützt.

Eine Interoperabilität existiert derzeit aber explizit noch nicht, so muss also entweder mit SHA-1 oder mit dem neuen SHA-256 gearbeitet werden. Erschwerend kommt hinzu, dass große Hosting-Dienste wie Github das neue Format noch nicht auf ihren Servern unterstützen. Eine Interoperabilität ist jedoch für künftige Versionen von Git vorgesehen.

Neu in der aktuellen Version 2.29 von Git ist außerdem ein verbesserter Umgang mit den sogenannten Refspecs, der Shortlog kann nun auch mit Gruppenarbeiten umgehen und bietet viele weitere Verbesserungen. Eine Liste aller Neuerungen(öffnet im neuen Fenster) bieten die Release Notes.


Relevante Themen