Udviklerne af operativsystemet , ved hjælp af Rust og mikrokerne-konceptet, den nye pakkehåndterer . I projektet udvikles et nyt pakkeformat, et bibliotek til pakkehåndtering og et kommandolinjeværktøj til at oprette og udtrække en kryptografisk verificeret samling af filer. Koden til pkgar er skrevet i Rust og under MIT-licensen.
Pkgar-formatet gør ikke krav på universalitet og er optimeret til Redox OS's specifikationer. Pakkehåndtereren understøtter verifikation af kilden via digital signatur og integritetskontrol. Tjeksummen beregnes ved hjælp af hash-funktionen . Funktionen relateret til verifikation i pkgar kan tilgås uden faktisk at gemme pakkearkivet ved kun at manipulere header-delen. Specifikt udgøres pakken af en headerfil (.pkgar_head) og en datafil (.pkgar_data). En korrekt signeret komplet opsummeringspakke (.pkgar) kan opnås ved en simpel sammensætning af headerfilen med datafilen ("cat example.pkgar_head example.pkgar_data > example.pkgar").
Headerfilen indeholder separate checksums for headeren og strukturerne med parametre fra datafilen samt en digital signatur til pakkeverifikation. Datafilen inkluderer en sekventiel liste over alle filer og kataloger, der leveres med pakken. For hvert dataelement er der en struktur med metadata, som omfatter checksummen for selve dataene, størrelse, adgangsrettigheder, den relative sti til den installerede fil og offset for parameterne af det næste dataelement. Hvis individuelle filer ikke er ændret under opdateringen, og checksummen stemmer overens, undlades de og uploades ikke.
Integriteten af kilden kan verificeres blot ved at få fat i headerfilen, mens korrektheden af den valgte datafil kan sikres ved kun at downloade strukturerne med parametre for denne fil og bekræfte, at de stemmer overens med checksummen underskrevet i headerfilen. Selve dataene kan verificeres efter download ved hjælp af checksummen fra parameterstrukturen, der går forud for dataene.
Pakkerne er oprindeligt designet til at muliggøre gentagen opbygning, hvilket betyder, at oprettelsen af et pakket til en bestemt katalog altid resulterer i dannelsen af et identisk pakke. Efter installationen gemmes kun metadata i systemet, hvilket er tilstrækkeligt til at rekonstruere pakken ud fra de installerede data (pakketets indhold, kontrolsummer, stier og adgangsrettigheder findes i metadataene).
De primære mål for pkgar:
- Atomaritet — opdateringer anvendes automatisk, når det er muligt.
- Data besparelse — data overføres over netværket kun ved ændring af hash (ved opdatering downloades kun de ændrede filer).
- Høj ydeevne, hurtige kryptografiske algoritmer anvendes (blake3 understøtter parallellisering af databehandling ved hash-beregning). Hvis data fra depotet ikke tidligere er blevet cached, kan hash for de downloadede data beregnes under download.
- Minimalisme — i modsætning til andre formater inkluderer pkgar kun metadata, der er nødvendige for at udtrække pakken.
- Uafhængighed af installationskatalog — pakken kan installeres i ethvert katalog af enhver bruger (brugeren skal have skriveadgang til det valgte katalog).
- Sikkerhed — pakker verificeres altid kryptografisk, og verificeringen udføres inden de faktiske operationer med pakken udføres (først downloades headeren, og hvis den digitale signatur er korrekt, downloades data til en midlertidig katalog, som flyttes til målatalogen efter verificering).
Kilde: opennet.ru
