Dostępna jest wersja projektu gittuf 0.4, rozwijająca hierarchiczny system weryfikacji zawartości repozytoriów Git, umożliwiająca minimalizację ryzyk w sytuacji kompromitacji poszczególnych programistów mających dostęp do repozytorium. Gittuf zapewnia dodatkową warstwę bezpieczeństwa dla Git oraz zestaw narzędzi do zarządzania kluczami wszystkich programistów mających dostęp do repozytorium i definiowania zasad dostępu do gałęzi, tagów oraz poszczególnych plików. Kod projektu jest napisany w języku Go i dystrybuowany na licencji Apache 2.0. Projekt jest w fazie aktywnego rozwoju i ma jakość wersji alfa, odpowiedniej do eksperymentów, ale jeszcze niegotowej do wdrożeń produkcyjnych.
Informacje oraz artefakty zapewniające dodatkową weryfikację wprowadzanych zmian są przechowywane w magazynie obiektów Git w oddzielnej, specyficznej dla gittuf przestrzeni nazw, co pozwala zachować zgodność wsteczną z istniejącymi narzędziami i usługami, w tym GitHub i GitLab. Przy używaniu narzędzi bez wsparcia gittuf, repozytorium pozostaje całkowicie dostępne, jednak możliwość rozszerzonej weryfikacji jego integralności jest ograniczona. Architektura gittuf opiera się na sprawdzonych elementach frameworka TUF (The Update Framework), stosowanego do ochrony procesów tworzenia aktualizacji w takich projektach, jak Docker, Fuchsia, AGL (Automotive Grade Linux) oraz PyPI.
Model weryfikacji w gittuf oparty jest na zastosowaniu hierarchicznego systemu rozdzielania zaufania. Korzeń zaufania (root of trust) należy do właściciela repozytorium, który może generować klucze dla uczestników rozwoju i określać zasady, według których utworzone klucze mogą być stosowane. Gittuf umożliwia tworzenie elastycznych, granulowanych zasad definiujących uprawnienia każdego programisty oraz obszar repozytorium, w którym ma on możliwość wprowadzania zmian. Na przykład, programista może być upoważniony do tworzenia tagów, wprowadzania zmian w określonych gałęziach lub zmiany tylko poszczególnych plików w repozytorium.
Deweloperzy oraz wprowadzane przez nich zmiany są identyfikowane za pomocą kluczy i podpisów cyfrowych. Gittuf umożliwia generowanie nowych kluczy, bezpieczne ich rozpowszechnianie, okresową rotację kluczy, odwoływanie skompromitowanych kluczy, zarządzanie listami dostępu (ACL) oraz przestrzeniami nazw w repozytoriach Git. Gittuf prowadzi także etalonowy log wszystkich zmian (RSL – Reference State Log), a integralność i ochrona przed fałszowaniem wstecznym jest zapewniana przy użyciu struktury drzewa Merkle (Merkle Tree) – każda gałąź weryfikuje wszystkie poniższe gałęzie i węzły dzięki drzewiastej haszowaniu (mając końcowy hasz, użytkownik może upewnić się o poprawności całej historii operacji oraz poprawności wcześniejszych stanów).
Aby zweryfikować podpisy cyfrowe komitetów i tagów, właściciel repozytorium formuje i rozpowszechnia klucze publiczne, które są bezpośrednio związane z repozytorium. Aby przeciwdziałać wprowadzaniu złośliwych zmian wykonanych po uzyskaniu dostępu do kluczy do tworzenia podpisów cyfrowych poszczególnych deweloperów, stosowane są mechanizmy odwoływania i wymiany kluczy. Klucze mają ograniczony czas życia i wymagają ciągłej aktualizacji w celu ochrony przed generowaniem podpisu starymi kluczami.
Źródło: opennet.ru
