Firmy Red Hat i Google, we współpracy z Uniwersytetem Purdue, założyły projekt Sigstore, którego celem jest stworzenie narzędzi i usług do weryfikacji oprogramowania za pomocą podpisów cyfrowych oraz prowadzenia publicznego rejestru w celu potwierdzenia autentyczności (transparency log). Projekt będzie rozwijany pod egidą organizacji non-profit Linux Foundation.
Proponowany projekt pozwoli zwiększyć bezpieczeństwo kanałów dystrybucji oprogramowania oraz ochronić przed atakami mającymi na celu zamianę komponentów oprogramowania oraz zależności (supply chain). Jednym z kluczowych problemów bezpieczeństwa w otwartym oprogramowaniu jest trudność w weryfikacji źródła pochodzenia programu oraz weryfikacji procesu budowy. Na przykład, aby sprawdzić integralność wydania, większość projektów wykorzystuje hashe, ale często potrzebne do weryfikacji informacje znajdują się w niezabezpieczonych systemach i w publicznych repozytoriach kodu, co prowadzi do sytuacji, w której atakujący mogą zamienić niezbędne pliki do weryfikacji i, nie budząc podejrzeń, wprowadzić złośliwe zmiany.
Jedynie niewielka część projektów korzysta z podpisów cyfrowych przy dystrybucji wydań z powodu trudności w zarządzaniu kluczami, dystrybucji kluczy publicznych i wycofywaniu skompromitowanych kluczy. Aby weryfikacja miała sens, konieczne jest również zorganizowanie niezawodnego i bezpiecznego procesu dystrybucji kluczy publicznych i sum kontrolnych. Nawet przy obecności podpisu cyfrowego wielu użytkowników ignoruje weryfikację, ponieważ muszą poświęcić czas na zrozumienie procesu weryfikacji oraz ustalenie, który klucz zasługuje na zaufanie.
Sigstore jest przedstawiane jako odpowiednik Let’s Encrypt dla kodu, oferujący certyfikaty do certyfikowania kodu za pomocą podpisów cyfrowych oraz narzędzia do automatyzacji weryfikacji. Dzięki Sigstore deweloperzy będą mogli tworzyć podpisy cyfrowe dla powiązanych z aplikacją artefaktów, takich jak pliki z wydaniami, obrazy kontenerów, manifesty i pliki wykonywalne. Cechą charakterystyczną Sigstore jest to, że materiał użyty do podpisania jest odzwierciedlany w zabezpieczonym przed zmianami publicznym rejestrze, który może być wykorzystywany do weryfikacji i audytu.
Zamiast stałych kluczy w Sigstore stosowane są krótkoterminowe klucze efemeryczne, generowane na podstawie uprawnień potwierdzonych przez dostawców OpenID Connect (w momencie generowania kluczy do podpisu cyfrowego, deweloper identyfikuje się przez dostawcę OpenID z powiązanym adresem email). Autentyczność kluczy jest weryfikowana w publicznym, centralnym dzienniku, który pozwala upewnić się, że autor podpisu jest tym, za kogo się podaje i że podpis został stworzony przez tego samego uczestnika, który odpowiadał za wcześniejsze wydania.
Sigstore oferuje zarówno gotowy serwis, z którego można już korzystać, jak i zestaw narzędzi umożliwiających wdrożenie podobnych usług na własnym sprzęcie. Serwis jest bezpłatny dla wszystkich deweloperów i dostawców oprogramowania oraz jest hostowany na neutralnej platformie - Linux Foundation. Wszystkie komponenty serwisu są open-source, napisane w języku Go i udostępniane na licencji Apache 2.0.
Wśród rozwijanych komponentów można wyróżnić:
- Rekor — realizacja dziennika do przechowywania poświadczonych podpisami cyfrowymi metadanych, odzwierciedlających informacje o projektach. Aby zapewnić integralność oraz chronić przed nieautoryzowanymi zmianami danych w przeszłości, stosowana jest struktura drzewiasta „Drzewo Merkle'a” (Merkle Tree), w której każda gałąź weryfikuje wszystkie dolne gałęzie i węzły, dzięki wspólnemu (drzewiastemu) hashowaniu. Posiadając końcowy hash, użytkownik może upewnić się co do poprawności całej historii operacji, a także co do poprawności przeszłych stanów bazy danych (koronowy hash kontrolny nowego stanu bazy obliczany jest z uwzględnieniem przeszłego stanu). Do weryfikacji i dodawania nowych wpisów udostępniane jest Restful API oraz interfejs CLI.
- Fulcio (SigStore WebPKI) — system do tworzenia urzędów certyfikujących (Root-CA), wydających krótkoterminowe certyfikaty na podstawie emaila, uwierzytelnianego przez OpenID Connect. Czas trwania certyfikatu wynosi 20 minut, w ciągu których deweloper musi zdążyć stworzyć podpis cyfrowy (jeśli w późniejszym czasie certyfikat wpadnie w ręce złodzieja, stanie się on już nieważny).
- Cosign (Container Signing) — narzędzie do tworzenia podpisów dla kontenerów, weryfikacji podpisów i umieszczania podpisanych kontenerów w repozytoriach zgodnych z OCI (Open Container Initiative).
Źródło: opennet.ru
