La version 0.4 du projet gittuf est désormais disponible. Elle développe un système hiérarchique de vérification du contenu des dépôts Git, permettant de minimiser les risques en cas de compromission de certains développeurs ayant accès au dépôt. Gittuf fournit une couche de sécurité supplémentaire à Git ainsi qu'un ensemble d'outils pour gérer les clés de tous les développeurs ayant accès au dépôt et établir des règles d'accès aux branches, tags et fichiers spécifiques. Le code du projet est écrit en Go et distribué sous la licence Apache 2.0. Le projet est en phase de développement actif et a la qualité d'un version alpha, adaptée aux expérimentations, mais pas encore prête pour des déploiements en production.
Les informations et artefacts permettant une vérification supplémentaire des modifications apportées sont stockés dans le référentiel d'objets Git dans un espace de noms spécifique à gittuf. Cela permet de maintenir la compatibilité avec les outils et services existants, y compris GitHub et GitLab. Lors de l'utilisation d'outils ne prenant pas en charge gittuf, le dépôt reste entièrement accessible, mais la capacité de vérification avancée de son intégrité est limitée. L'architecture de gittuf se base sur des éléments éprouvés du cadre TUF (The Update Framework), utilisé pour sécuriser les processus de mise à jour dans des projets tels que Docker, Fuchsia, AGL (Automotive Grade Linux) et PyPI.
Le modèle de vérification dans gittuf repose sur l'application d'un système hiérarchique de diffusion de la confiance. La racine de confiance appartient au propriétaire du dépôt, qui peut générer des clés pour les participants au développement et définir les règles selon lesquelles les clés créées peuvent être appliquées. Gittuf permet de créer des règles granulaires flexibles déterminant les pouvoirs de chaque développeur et la zone du dépôt dans laquelle il peut effectuer des modifications. Par exemple, un développeur peut être autorisé à créer des tags, à apporter des modifications à certaines branches ou à modifier seulement certains fichiers dans le dépôt.
Les développeurs et les modifications qu'ils apportent sont identifiés par des clés et des signatures numériques. Gittuf permet de générer de nouvelles clés, de les diffuser en toute sécurité, d'effectuer une rotation périodique des clés, de révoquer les clés compromises, de gérer les listes d'accès (ACL) et les espaces de noms dans les dépôts Git. Gittuf maintient également un journal de référence de tous les changements (RSL - Reference State Log), dont l'intégrité et la protection contre la falsification rétroactive sont assurées par la structure arborescente « arbre de Merkle » (Merkle Tree) - chaque branche vérifie toutes les branches et nœuds inférieurs grâce au hachage arborescent (en ayant un hachage final, l'utilisateur peut s'assurer de la validité de l'ensemble de l'historique des opérations et des états précédents).
Pour la vérification des signatures numériques des commits et des tags, le propriétaire du dépôt forme et distribue des clés publiques qui sont directement associées au dépôt. Pour contrer la promotion des modifications par des malfaiteurs, créées après avoir eu accès aux clés pour générer des signatures numériques de développeurs individuels, des mécanismes de révocation et de remplacement de clés sont appliqués. Les clés ont une durée de vie limitée et nécessitent une mise à jour constante pour se prémunir contre la production de signatures par d'anciennes clés.
Source : opennet.ru
