De release van het project gittuf 0.4 is beschikbaar, dat een hiƫrarchisch verificatiesysteem ontwikkelt voor de inhoud van Git-repositories, waardoor de risico's in situaties van compromittering van individuele ontwikkelaars met toegang tot de repository worden geminimaliseerd. Gittuf biedt een extra beveiligingslaag voor Git en een set hulpmiddelen voor het beheer van de sleutels van alle ontwikkelaars met toegang tot de repository, en voor het instellen van toegangsregels voor takken, tags en individuele bestanden. De code van het project is geschreven in de programmeertaal Go en wordt verspreid onder de Apache 2.0-licentie. Het project is in actieve ontwikkeling en heeft de kwaliteit van een alfaberelease, die geschikt is voor experimenten, maar nog niet gereed is voor operationele implementaties.
Informatie en artefacten die extra verificatie van aangebrachte wijzigingen mogelijk maken, worden opgeslagen in de Git-objectenopslag in een aparte namespace die specifiek is voor gittuf, wat de backward compatibility met bestaande tools en services, inclusief GitHub en GitLab, behoudt. Bij het gebruik van tools zonder ondersteuning voor gittuf blijft de repository volledig toegankelijk, maar is de mogelijkheid voor uitgebreide verificatie van de integriteit beperkt. De architectuur van gittuf is gebaseerd op beproefde elementen van het TUF (The Update Framework)-framework, dat wordt gebruikt ter bescherming van de updateprocessen in projecten zoals Docker, Fuchsia, AGL (Automotive Grade Linux) en PyPI.
Het verificatiemodel in gittuf is gebaseerd op een hiƫrarchisch systeem van vertrouwensverspreiding. De root of trust behoort toe aan de eigenaar van de repository, die sleutels voor ontwikkelingsleden kan genereren en regels kan bepalen volgens welke de aangemaakte sleutels kunnen worden toegepast. Gittuf maakt het mogelijk om flexibele, gedetailleerde regels op te stellen die de bevoegdheden van elke ontwikkelaar en het gedeelte van de repository waarin hij wijzigingen kan aanbrengen, bepalen. Zo kan een ontwikkelaar gemachtigd worden om tags aan te maken, wijzigingen aan te brengen in bepaalde takken of alleen specifieke bestanden in de repository te wijzigen.
Ontwikkelaars en de door hen aangebrachte wijzigingen worden geĆÆdentificeerd door sleutels en digitale handtekeningen. Gittuf maakt het mogelijk om nieuwe sleutels te genereren, sleutels veilig te verspreiden, periodiek sleutels te roteren, gecompromitteerde sleutels in te trekken, toegangsbeheer (ACL) uit te voeren en namespaces in Git-repositories te beheren. Gittuf houdt ook een referentielogboek van alle wijzigingen bij (RSL - Reference State Log), waarbij de integriteit en bescherming tegen manipulatie achteraf wordt gewaarborgd door een boomstructuur genaamd 'Merkle Tree' ā elke tak verifieert alle onderliggende takken en knooppunten dankzij boom-hashing (met een eindige hash kan de gebruiker de correctheid van de hele operatiegeschiedenis en de juistheid van eerdere toestanden verifiĆ«ren).
Voor de verificatie van digitale handtekeningen van commits en tags genereert en verspreidt de eigenaar van de repository openbare sleutels die direct zijn geassocieerd met de repository. Om te voorkomen dat kwaadwillenden wijzigingen doorvoeren die zijn gemaakt na het verkrijgen van toegang tot de sleutels voor het genereren van digitale handtekeningen van individuele ontwikkelaars, worden mechanismen voor het intrekken en vervangen van sleutels toegepast. Sleutels hebben een beperkte levensduur en vereisen voortdurende updates om te beschermen tegen het ondertekenen met oude sleutels.
Bron: opennet.ru
