Udgaven af projektet gittuf 0.4 er tilgængelig, som udvikler et hierarkisk system til verifikation af indholdet i Git-repositorier, hvilket minimerer risiciene i tilfælde af kompromittering af enkelte udviklere med adgang til repositoriet. Gittuf giver et ekstra lag af sikkerhed til Git og et sæt værktøjer til at administrere nøgler for alle udviklere, der har adgang til repositoriet, samt til at fastsætte adgangsregler til grene, tags og individuelle filer. Projektets kode er skrevet i Go og distribueres under Apache 2.0-licensen. Projektet er i aktiv udvikling og har kvalitet som en alfa-version, der er velegnet til eksperimenter, men endnu ikke klar til produktionsimplementering.
Oplysninger og artefakter, der giver ekstra verifikation af ændringer, gemmes i Git-objektlageret i et særskilt navnrum specifikt for gittuf, hvilket gør det muligt at bevare bagudkompatibilitet med eksisterende værktøjer og tjenester, herunder GitHub og GitLab. Ved brug af værktøjer uden support for gittuf er repositoriet stadig helt tilgængeligt, men muligheden for udvidet verifikation af dets integritet er begrænset. Arkitekturen af gittuf er baseret på velprøvede elementer fra TUF-rammeværket (The Update Framework), der anvendes til at beskytte opdateringsprocesser i projekter som Docker, Fuchsia, AGL (Automotive Grade Linux) og PyPI.
Verifikationsmodellen i gittuf er baseret på anvendelsen af et hierarkisk system for tillidsspredning. Roden af tillid (root of trust) tilhører ejeren af repositoriet, der kan generere nøgler til udviklingsdeltagere og fastlægge regler, hvorefter de oprettede nøgler kan anvendes. Gittuf giver mulighed for at oprette fleksible, granulære regler, der definerer hver udviklers beføjelser og det område af repositoriet, hvor de har mulighed for at foretage ændringer. For eksempel kan en udvikler være autoriseret til at oprette tags, foretage ændringer i bestemte grene eller ændre kun enkelte filer i repositoriet.
Udviklere og de ændringer, de laver, identificeres ved nøgler og digitale underskrifter. Gittuf giver mulighed for at generere nye nøgler, sikkert fordele nøglerne, udføre periodisk nøglerotation, tilbagekalde kompromitterede nøgler, administrere adgangslister (ACL) og navnerum i Git-repositorier. Gittuf fører også en referencelog over alle ændringer (RSL - Reference State Log), hvis integritet og beskyttelse mod retroaktiv forvrængning sikres ved hjælp af en træstruktur kaldet 'Merkle Tree' – hver gren verificerer alle underliggende grene og noder takket være træhashing (ved at have den endelige hash kan brugeren sikre sig, at hele historien over operationer er korrekt, samt at tidligere tilstande er korrekte).
For at verificere de digitale underskrifter af commits og tags genererer og distribuerer ejeren af repositoriet offentlige nøgler, der direkte er knyttet til repositoriet. For at modvirke promovering af ændringer af ondsindede aktører, der er skabt efter adgang til nøglerne til at danne digitale underskrifter for individuelle udviklere, anvendes mekanismer til tilbagekaldelse og udskiftning af nøgler. Nøglerne har en begrænset levetid og kræver konstant opdatering for at beskytte mod underskrivning med gamle nøgler.
Kilde: opennet.ru
