Vývojáři operačního systému , pomocí jazyka Rust a konceptu mikrojádra, nový správce balíčků Projekt vyvíjí nový formát balíčků, knihovnu s funkcemi pro správu balíčků a nástroje příkazového řádku pro vytváření a extrakci kryptograficky ověřené kolekce souborů. Kód pkgar je napsán v Rustu a pod licencí MIT.
Formát pkgar není zamýšlen jako univerzální a je optimalizován pro specifika operačního systému Redox OS. Správce balíčků podporuje ověřování zdroje pomocí digitálního podpisu a kontrolu integrity. Kontrolní součty se počítají pomocí hašovací funkce. K ověřovacím funkcím balíčku pkgar lze přistupovat bez nutnosti ukládat archiv balíčku, a to pouze manipulací s jeho záhlaví. Balíček se konkrétně skládá ze záhlaví (.pkgar_head) a datového souboru (.pkgar_data). Správně podepsaný a kompletní balíček (.pkgar) lze získat pouhým připojením záhlaví k datovému souboru („cat example.pkgar_head example.pkgar_data > example.pkgar“).
Záhlaví souboru obsahuje samostatné kontrolní součty pro záhlaví a parametrické struktury z datového souboru a také digitální podpis pro ověření balíčku. Datový soubor obsahuje postupný seznam všech souborů a adresářů obsažených v balíčku. Každému datovému prvku předchází struktura metadat, která zahrnuje kontrolní součet pro samotná data, jejich velikost, přístupová práva, relativní cestu k instalovanému souboru a posun parametrů dalšího datového prvku. Pokud se jednotlivé soubory během procesu aktualizace nezměnily a jejich kontrolní součty se shodují, jsou přeskočeny a nestaženy.
Integritu zdroje lze ověřit získáním pouze hlavičkového souboru a správnost vybraného datového souboru lze ověřit načtením pouze parametrických struktur souboru a ověřením, zda odpovídají kontrolnímu součtu uvedenému v hlavičkovém souboru. Samotná data lze po načtení ověřit pomocí kontrolního součtu z parametrické struktury předcházející datům.
Balíčky jsou navrženy tak, aby byly opakovatelné, což znamená, že vytvoření balíčku pro daný adresář vždy vede k identickému balíčku. Po instalaci jsou v systému uložena pouze metadata, která jsou dostatečná k rekonstrukci balíčku z nainstalovaných dat (obsah balíčku, kontrolní součty, cesty a přístupová práva jsou obsaženy v metadatech).
Hlavní cíle pkgaru:
- Atomicity – aktualizace se aplikují automaticky, kdykoli je to možné.
- Úspora provozu - data se po síti přenášejí pouze při změně hashe (během aktualizace se stahují pouze změněné soubory).
- Vysoký výkon s využitím rychlých kryptografických algoritmů (blake3 podporuje paralelní zpracování dat během výpočtu hash). Pokud data z úložiště nebyla dříve uložena do mezipaměti, lze hash stažených dat vypočítat během stahování.
- Minimalismus - Na rozdíl od jiných formátů obsahuje pkgar pouze metadata potřebná k rozbalení balíčku.
- Nezávislost na instalačním adresáři - balíček může být nainstalován do libovolného adresáře libovolným uživatelem (uživatel musí mít oprávnění pro zápis do vybraného adresáře).
- Zabezpečení - pakety jsou vždy kryptograficky ověřovány a ověření se provádí před provedením skutečných operací s paketem (nejprve se stáhne hlavička a pokud je digitální podpis správný, stáhnou se data do dočasného adresáře, který se po ověření přesune do cílového adresáře).
Zdroj: opennet.ru
