Die Version 0.4 des Projekts gittuf ist jetzt verfügbar. Sie entwickelt ein hierarchisches System zur Überprüfung des Inhalts von Git-Repositories, das die Risiken bei der Kompromittierung einzelner Entwickler, die Zugriff auf das Repository haben, minimiert. Gittuf bietet eine zusätzliche Sicherheitsebene für Git und eine Sammlung von Tools zur Verwaltung der Schlüssel aller Entwickler, die Zugriff auf das Repository haben, sowie zur Festlegung von Zugriffsregeln für Branches, Tags und einzelne Dateien. Der Code des Projekts ist in Go geschrieben und wird unter der Lizenz Apache 2.0 verbreitet. Das Projekt befindet sich in der aktiven Entwicklungsphase und hat die Qualität eines Alpha-Releases, das für Experimente geeignet ist, aber noch nicht für den produktiven Einsatz bereit ist.
Information und Artefakte, die eine zusätzliche Verifizierung der vorgenommenen Änderungen ermöglichen, werden in einem Git-Objektspeicher innerhalb eines spezifischen Namensraums für gittuf gespeichert. Dies gewährleistet die Rückwärtskompatibilität mit bestehenden Werkzeugen und Diensten, einschließlich GitHub und GitLab. Wenn Werkzeuge ohne Unterstützung für gittuf verwendet werden, bleibt das Repository vollständig zugänglich, jedoch ist die erweiterte Verifizierung seiner Integrität eingeschränkt. Die Architektur von gittuf basiert auf bewährten Elementen des TUF (The Update Framework), das zum Schutz der Update-Entwicklungsprozesse in Projekten wie Docker, Fuchsia, AGL (Automotive Grade Linux) und PyPI eingesetzt wird.
Das Verifikationsmodell in Gittuf basiert auf einem hierarchischen System des Vertrauensaufbaus. Der Vertrauensanker (root of trust) gehört dem Repository-Besitzer, der Schlüssel für die Entwickler generieren und Regeln festlegen kann, nach denen die erstellten Schlüssel verwendet werden dürfen. Gittuf ermöglicht die Erstellung flexibler, granulärer Regeln, die die Befugnisse jedes Entwicklers und den Bereich des Repositories definieren, in dem er Änderungen vornehmen kann. Zum Beispiel kann ein Entwickler die Berechtigung erhalten, Tags zu erstellen, Änderungen an bestimmten Branches vorzunehmen oder nur einzelne Dateien im Repository zu ändern.
Entwickler und die von ihnen vorgenommenen Änderungen werden durch Schlüssel und digitale Signaturen identifiziert. Gittuf ermöglicht die Generierung neuer Schlüssel, die sichere Verbreitung von Schlüsseln, die regelmäßige Rotation von Schlüsseln, den Widerruf kompromittierter Schlüssel, das Management von Zugriffslisten (ACL) und von Namespaces in Git-Repositories. Gittuf führt auch das Führen eines Reference State Log (RSL) aller Änderungen durch, wobei Integrität und Schutz vor nachträglicher Veränderung durch eine baumartige Struktur namens Merkle-Baum gewährleistet werden – jeder Ast verifiziert alle darunter liegenden Äste und Knoten dank baumartiger Hashing-Methoden (mit einem Endhash kann der Benutzer die Korrektheit der gesamten Operationgeschichte sowie der vorherigen Zustände überprüfen).
Um digitale Signaturen für Commits und Tags zu verifizieren, erstellt und verbreitet der Repository-Eigentümer öffentliche Schlüssel, die direkt mit dem Repository verbunden sind. Um gegen die unbefugte Verbreitung von Änderungen, die nach dem Zugriff auf die Schlüssel zur Erstellung digitaler Signaturen einzelner Entwickler vorgenommen wurden, vorzugehen, kommen Widerrufs- und Schlüsselersetzungsmechanismen zum Einsatz. Die Schlüssel haben eine begrenzte Lebensdauer und erfordern ständige Aktualisierung, um zu verhindern, dass alte Schlüssel zur Signatur verwendet werden.
Quelle: opennet.ru
