Die Unternehmen Red Hat und Google haben in Zusammenarbeit mit der Purdue University das Projekt Sigstore ins Leben gerufen, das darauf abzielt, Werkzeuge und Dienste zur Verifizierung von Software mithilfe digitaler Signaturen und zur Führung eines öffentlichen Logs zur Bestätigung der Authentizität (Transparency Log) zu entwickeln. Das Projekt wird unter der Schirmherrschaft der gemeinnützigen Organisation Linux Foundation fortgeführt.
Das vorgeschlagene Projekt wird die Sicherheit der Verteilungskanäle für Software erhöhen und vor Angriffen schützen, die auf die Manipulation von Softwarekomponenten und Abhängigkeiten (Supply Chain) abzielen. Eine der zentralen Sicherheitsherausforderungen in der Open-Source-Software besteht in der Komplexität der Überprüfung der Quelle sowie der Verifizierung des Build-Prozesses. Beispielsweise nutzen die meisten Projekte zur Überprüfung der Integrität eines Releases Hashes, aber oft werden die für die Authentifizierung benötigten Informationen in unsicheren Systemen und öffentlichen Repositories mit Code gespeichert, sodass Angreifer durch deren Kompromittierung die erforderlichen Dateien zur Verifizierung austauschen und so unbemerkt schadhafte Änderungen einführen können.
Nur ein kleiner Teil der Projekte verwendet Digitale Signaturen beim Verteilen von Releases, da das Management von Schlüsseln, die Verteilung von öffentlichen Schlüsseln und die Rücknahme kompromittierter Schlüssel komplex sind. Damit die Verifizierung sinnvoll ist, muss auch ein zuverlässiger und sicherer Prozess zur Verteilung von öffentlichen Schlüsseln und Prüfziffern organisiert werden. Selbst bei vorhandener digitaler Signatur ignorieren viele Benutzer die Überprüfung, da sie Zeit damit verbringen müssen, den Verifizierungsprozess zu lernen und zu verstehen, welcher Schlüssel vertrauenswürdig ist.
Sigstore wird als das Äquivalent zu Let’s Encrypt für Code präsentiert, das Zertifikate zur Bestätigung von Code mit digitalen Signaturen und Werkzeuge zur Automatisierung der Überprüfung bereitstellt. Mit Sigstore können Entwickler digitale Signaturen für anwendungsgelagerte Artefakte erstellen, wie z. B. Release-Dateien, Container-Images, Manifeste und ausführbare Dateien. Das Besondere an Sigstore ist, dass das Material, das zur Signierung verwendet wird, in einem manipulationssicheren öffentlichen Log erfasst wird, das zur Überprüfung und zum Audit genutzt werden kann.
Anstelle von permanenten Schlüsseln verwendet Sigstore kurzlebige, ephemerale Schlüssel, die basierend auf Berechtigungen generiert werden, die von OpenID Connect-Anbietern bestätigt werden (zum Zeitpunkt der Schlüsselerzeugung zur digitalen Signatur identifiziert sich der Entwickler über den OpenID-Anbieter mit einer E-Mail-Erkennung). Die Authentizität der Schlüssel wird über ein öffentliches zentrales Protokoll überprüft, das sicherstellt, dass der Unterzeichner tatsächlich die Person ist, die er vorgibt zu sein, und dass die Signatur von demselben Teilnehmer erstellt wurde, der für frühere Releases verantwortlich war.
Sigstore bietet sowohl einen einsatzbereiten Service, der bereits genutzt werden kann, als auch eine Sammlung von Werkzeugen, um ähnliche Services auf eigener Hardware bereitzustellen. Der Service ist für alle Entwickler und Softwareanbieter kostenlos und wird auf einer neutralen Plattform — der Linux Foundation — betrieben. Alle Komponenten des Services sind Open Source, in Go geschrieben und unter der Apache 2.0-Lizenz erhältlich.
Unter den entwickelten Komponenten sind folgende hervorzuheben:
- Rekor — die Implementierung eines Logs zur Speicherung von bescheinigten, digital signierten Metadaten, die Informationen über Projekte wiederspiegeln. Um die Integrität zu gewährleisten und Datenverfälschungen nachträglich zu verhindern, wird die baumartige Struktur "Merkle-Baum" (Merkle Tree) eingesetzt, in der jeder Zweig alle abhängigen Zweige und Knoten verifiziert, dank des gemeinsamen (baumartigen) Hashing. Mit einem endgültigen Hash kann der Nutzer die Richtigkeit der gesamten Transaktionshistorie sowie der korrekten früheren Zustände der Datenbank bestätigen (der Wurzel-Hash des neuen Zustands der Datenbank wird unter Berücksichtigung des früheren Zustands berechnet). Für die Verifizierung und das Hinzufügen neuer Einträge steht eine Restful API sowie eine CLI-Schnittstelle zur Verfügung.
- Fulcio (SigStore WebPKI) — ein System zur Erstellung von Zertifizierungsstellen (Root-CA), die kurzlebige Zertifikate auf Basis von E-Mail ausstellen, die über OpenID Connect authentifiziert sind. Die Lebensdauer des Zertifikats beträgt 20 Minuten, innerhalb derer der Entwickler eine digitale Signatur erstellen muss (wenn das Zertifikat später in die Hände eines Angreifers gelangt, ist es bereits abgelaufen).
- Cosign (Container Signing) — ein Werkzeug zur Erstellung von Signaturen für Container, zur Überprüfung von Signaturen und zur Bereitstellung signierter Container in OCI (Open Container Initiative)-kompatiblen Repositories.
Quelle: opennet.ru
