Het Redox OS-project introduceerde de pkgar-pakketbeheerder, geschreven in Rust

Ontwikkelaars van besturingssystemen redox, geschreven met behulp van de Rust-taal en het microkernel-concept, ingediend nieuwe pakketbeheerder pkgar. Het project ontwikkelt een nieuw pakketformaat, een pakketbeheerbibliotheek en een opdrachtregeltoolkit voor het maken en ophalen van een cryptografisch geverifieerde verzameling bestanden. De pkgar-code is geschreven in Rust en gedistribueerd door onder de MIT-licentie.

Het pkgar-formaat pretendeert niet universeel te zijn en is geoptimaliseerd rekening houdend met de specifieke kenmerken van het Redox OS-besturingssysteem. De pakketbeheerder ondersteunt bronverificatie met behulp van een digitale handtekening en integriteitscontrole. Controlesommen worden berekend met behulp van een hashfunctie blake3. De verificatiegerelateerde functionaliteit van pkgar is toegankelijk zonder het pakketarchief daadwerkelijk op te slaan, door alleen het headergedeelte te manipuleren. Het pakket bestaat met name uit een headerbestand (.pkgar_head) en een gegevensbestand (.pkgar_data). Een correct ondertekend compleet samenvattingspakket (.pkgar) kan worden verkregen door eenvoudigweg het headerbestand aan het gegevensbestand toe te voegen (“cat example.pkgar_head example.pkgar_data > example.pkgar”).

Het headerbestand bevat afzonderlijke controlesommen voor de header en structuren met parameters uit het gegevensbestand, evenals een digitale handtekening om het pakket te verifiëren. Het gegevensbestand bevat een opeenvolgende lijst van alle bestanden en mappen die in het pakket worden geleverd. Elk data-element wordt voorafgegaan door een structuur met metadata die een controlesom bevat voor de gegevens zelf, de grootte, toegangsrechten, het relatieve pad van het bestand dat wordt geïnstalleerd en de offset van de parameters van het volgende data-element. Als tijdens het updateproces individuele bestanden niet zijn gewijzigd en de controlesom overeenkomt, worden ze overgeslagen en niet geladen.

U kunt de integriteit van de bron controleren door alleen het headerbestand te ontvangen, en de juistheid van het geselecteerde gegevensbestand door alleen de structuren met de parameters van dit bestand te laden en ervoor te zorgen dat ze voldoen aan de controlesom die in het headerbestand is gecertificeerd. De gegevens zelf kunnen worden gecontroleerd nadat deze zijn geladen, met behulp van de controlesom uit de structuur met parameters die aan de gegevens voorafgaan.

Pakketten zijn inherent herhaalbaar, wat betekent dat het maken van een pakket voor een specifieke directory altijd zal resulteren in een identiek pakket. Na installatie worden alleen metadata in het systeem opgeslagen, wat voldoende is om het pakket te reconstrueren uit de geïnstalleerde gegevens (de samenstelling van het pakket, checksums, paden en toegangsrechten zijn vastgelegd in de metadata).

Belangrijkste doelstellingen van pkgar:

  • Atomicity: updates worden waar mogelijk automatisch toegepast.
  • Verkeersbesparingen - gegevens worden alleen via het netwerk verzonden als de hash verandert (tijdens het updaten worden alleen gewijzigde bestanden gedownload).
  • Er worden krachtige, snelle cryptografische algoritmen gebruikt (blake3 ondersteunt parallelle gegevensverwerking bij het berekenen van hashes). Als de gegevens uit de repository nog niet eerder in de cache zijn opgeslagen, kan tijdens het downloaden een hash voor de gedownloade gegevens worden berekend.
  • Minimalistisch - In tegenstelling tot andere formaten bevat pkgar alleen de metagegevens die nodig zijn om het pakket uit te pakken.
  • Onafhankelijkheid van de installatiedirectory - het pakket kan door elke gebruiker in elke directory worden geïnstalleerd (de gebruiker moet schrijfrechten hebben voor de geselecteerde directory).
  • Beveiliging - Pakketten worden altijd cryptografisch geverifieerd en verificatie wordt uitgevoerd voordat daadwerkelijke bewerkingen op het pakket worden uitgevoerd (de header wordt eerst geladen en als de digitale handtekening correct is, worden de gegevens in een tijdelijke map geladen, die daarna naar de doelmap wordt verplaatst verificatie).

Bron: opennet.ru

Voeg een reactie