GitHub hat einen Vorschlag zur EinfĂŒhrung des Sigstore-Dienstes zur Verifizierung von Paketen durch digitale Signaturen und zur FĂŒhrung eines öffentlichen Protokolls zur BestĂ€tigung der AuthentizitĂ€t bei der Verbreitung von Releases zur Diskussion gestellt. Der Einsatz von Sigstore ermöglicht einen zusĂ€tzlichen Schutz gegen Angriffe, die auf die Manipulation von Softwarekomponenten und -abhĂ€ngigkeiten (Supply Chain) abzielen. Beispielsweise schĂŒtzt die eingefĂŒhrte Ănderung die Quelltexte von Projekten im Falle einer Kompromittierung des Entwicklerkontos einer der AbhĂ€ngigkeiten in NPM und der Erstellung eines Updates durch einen Angreifer mit bösartigem Code.
Dank des neuen Schutzniveaus können Entwickler das erstellte Paket an den verwendeten Quellcode und die Build-Umgebung binden und den Benutzern die Möglichkeit bieten, sicherzustellen, dass der Inhalt des Pakets mit dem Inhalt der Quelltexte im Hauptrepository des Projekts ĂŒbereinstimmt. Der Einsatz von Sigstore vereinfacht den Prozess der SchlĂŒsselverwaltung erheblich und beseitigt die Komplikationen im Zusammenhang mit Registrierung, Widerruf und Verwaltung von kryptografischen SchlĂŒsseln. Sigstore wird als Pendant zu Letâs Encrypt fĂŒr Code angesehen und bietet Zertifikate zur Beglaubigung von Code durch digitale Signaturen sowie Werkzeuge zur Automatisierung der ĂberprĂŒfung.
Anstelle von permanenten SchlĂŒsseln verwendet Sigstore kurzlebige, ephemeral SchlĂŒssel, die basierend auf Berechtigungen generiert werden. Das zur Signatur verwendete Material wird in einem unverĂ€nderbaren öffentlichen Protokoll festgehalten, das sicherstellt, dass der Signaturgeber tatsĂ€chlich die Person ist, fĂŒr die er sich ausgibt, und dass die Signatur von demselben Teilnehmer erstellt wurde, der auch fĂŒr frĂŒhere Releases verantwortlich war. Zur GewĂ€hrleistung der IntegritĂ€t und zum Schutz vor nachtrĂ€glicher Datenmanipulation wird eine baumartige Struktur, das âMerkle-Baumâ, verwendet, in der jeder Ast alle unteren Ăste und Knoten durch gemeinsames (baumartiges) Hashing verifiziert. Mit dem endgĂŒltigen Hash kann der Benutzer die Richtigkeit der gesamten Transaktionshistorie sowie den korrekten Zustand der Datenbank (der Wurzel-Hash des neuen Zustands der Datenbank wird unter BerĂŒcksichtigung des vorherigen Zustands berechnet) bestĂ€tigen.
Quelle: opennet.ru
