Vývojáři operačního systému , s využitím jazyka Rust a konceptu mikrojádra, nový balíčkový manažer . V rámci projektu se vyvíjí nový formát balíčků, knihovna s funkcemi pro správu balíčků a nástroj příkazového řádku pro vytváření a extrakci kryptograficky ověřené kolekce souborů. Kód pkgar je napsán v jazyce Rust a je licencován pod MIT licencí.
Formát pkgar si neklade za cíl univerzálnost a je optimalizován s ohledem na specifika operačního systému Redox OS. Balíčkový manažer podporuje ověřování zdroje pomocí digitálního podpisu a kontrolu integrity. Kontrolní součty se počítají pomocí hash funkce . S funkčností spojenou s ověřováním pkgar lze pracovat bez skutečného ukládání archivu balíčku, a to manipulací pouze s hlavičkovou částí. Konkrétně balíček tvoří hlavičkový soubor (.pkgar_head) a soubor s daty (.pkgar_data). Správně podepsaný kompletní souhrnný balíček (.pkgar) lze získat jednoduchým připojením hlavičkového souboru k souboru s daty („cat example.pkgar_head example.pkgar_data > example.pkgar“).
Hlavičkový soubor obsahuje jednotlivé kontrolní součty pro hlavičku a struktury s parametry ze souboru s daty, stejně jako digitální podpis pro ověření balíčku. Soubor s daty zahrnuje sekvenční výčet všech souborů a adresářů dodávaných v balíčku. Před každým datovým prvkem je uvedena struktura s metadaty, která zahrnují kontrolní součet pro samotná data, velikost, přístupová práva, relativní cestu k instalovanému souboru a posunutí parametrů následujícího datového prvku. Pokud se vybrané soubory během aktualizace nezměnily a kontrolní součet se shoduje, jsou přeskočeny a nebudou načteny.
Ověření integrity zdroje lze provést získáním pouze hlavičkového souboru, a správnost vybraného souboru s daty – načtením pouze struktur s parametry tohoto souboru a ověřením jejich shody s kontrolním součtem, který je podepsán v hlavičkovém souboru. Samotná data lze ověřit po jejich načtení, pomocí kontrolního součtu ze struktury s parametry, která předchází datům.
Balíčky původně předpokládají možnost opakované sestavy, což znamená, že vytvoření balíčku pro určité katalogy vždy vede k vytvoření identického balíčku. Po instalaci v systému se uchovávají pouze metadata, která jsou dostatečná pro rekonstrukci balíčku z nainstalovaných dat (sestava balíčku, kontrolní součty, cesty a přístupová práva jsou obsažena v metadatech).
Hlavní cíle pkgar:
- Atomárnost — aktualizace se aplikují automaticky, jak to jen jde.
- Úspora dat — data se přenášejí po síti pouze v případě změny hashe (při aktualizaci se stahují pouze změněné soubory).
- Vysoký výkon, využívají se rychlé kryptografické algoritmy (blake3 podporuje paralelní zpracování dat při výpočtu hash). Pokud data z repozitáře nebyla předtím mezipaměťována, hash pro stahovaná data může být vypočten během stahování.
- Minimalismus — na rozdíl od jiných formátů, pkgar zahrnuje pouze metadata potřebná pro extrakci balíčku.
- Nezávislost na instalačním katalogu — balíček může být nainstalován do libovolného katalogu, jakýmkoli uživatelem (uživatel musí mít právo k zápisu do vybraného katalogu).
- Bezpečnost — balíčky jsou vždy kryptograficky ověřovány a ověření se provádí před provedením skutečných operací s balíčkem (nejprve se stáhne hlavička a pokud je digitální podpis správný, tak se do dočasného katalogu stáhnou data, která se po ověření přesunou do cílového katalogu).
Zdroj: opennet.ru
