Projekt Redox OS zaprezentował menedżer pakietów pkgar, napisany w języku Rust

Deweloperzy systemu operacyjnego Redox, napisanego przy użyciu języka Rust oraz koncepcji mikrojądra, przedstawili nowego menedżera pakietów pkgar. W ramach projektu rozwijany jest nowy format pakietów, biblioteka z funkcjami zarządzania pakietami oraz narzędzie wiersza poleceń do tworzenia i wydobywania kryptograficznie zweryfikowanej kolekcji plików. Kod pkgar został napisany w języku Rust i rozpowszechniany na licencji MIT.

Format pkgar nie ma na celu uniwersalności i jest zoptymalizowany pod kątem specyfiki systemu operacyjnego Redox OS. Menedżer pakietów wspiera weryfikację źródła za pomocą podpisu cyfrowego oraz kontrolę integralności. Sumy kontrolne obliczane są przy użyciu funkcji haszującej blake3. Funkcjonalność pkgar związana z weryfikacją może być dostępna bez faktycznego zapisywania archiwum pakietu, manipulując jedynie częścią nagłówkową. W szczególności pakiet składa się z pliku nagłówkowego (.pkgar_head) i pliku z danymi (.pkgar_data). Poprawnie podpisany kompletny pakiet zbiorczy (.pkgar) można uzyskać poprzez proste dołączenie pliku nagłówka do pliku danych („cat example.pkgar_head example.pkgar_data > example.pkgar”).

Plik z nagłówkiem zawiera osobne sumy kontrolne dla nagłówka i struktur z parametrami z pliku z danymi, a także podpis cyfrowy do weryfikacji pakietu. Plik z danymi zawiera sekwencyjny wykaz wszystkich plików i katalogów dostarczanych w pakiecie. Przed każdym elementem danych umieszczana jest struktura z metadanymi, które zawierają sumę kontrolną dla samych danych, rozmiar, prawa dostępu, względną ścieżkę instalowanego pliku oraz przesunięcie parametrów kolejnego elementu danych. Jeżeli podczas aktualizacji niektóre pliki nie uległy zmianie i suma kontrolna się zgadza, są one pomijane i nie są ładowane.

Sprawdzić integralność źródła można uzyskując jedynie plik nagłówkowy, a poprawność wybranego pliku z danymi — pobierając jedynie struktury z parametrami tego pliku i upewniając się w ich zgodności z sumą kontrolną zatwierdzoną w pliku nagłówkowym. Same dane można zweryfikować po ich pobraniu, używając sumy kontrolnej ze struktury z parametrami, która preceduje dane.

Pakiety pierwotnie zakładają możliwość wielokrotnej budowy, co oznacza, że stworzenie pakietu dla określonego katalogu zawsze prowadzi do utworzenia identycznego pakietu. Po zainstalowaniu w systemie zachowywane są jedynie metadane, które wystarczają do rekonstrukcji pakietu z zainstalowanych danych (zawartość pakietu, sumy kontrolne, ścieżki i prawa dostępu znajdują się w metadanych).

Podstawowe cele pkgar:

  • Atomowość — aktualizacje są stosowane automatycznie, jeśli to możliwe.
  • Osobność transferu — dane są przesyłane przez sieć tylko przy zmianie hasha (podczas aktualizacji pobierane są tylko zmienione pliki).
  • Wysoka wydajność, wykorzystane są szybkie algorytmy kryptograficzne (blake3 obsługuje równoległe przetwarzanie danych przy obliczaniu hasha). Jeśli dane z repozytorium nie były wcześniej skanowane, hash dla pobieranych danych może być obliczany w czasie przetwarzania.
  • Minimalizm — w przeciwieństwie do innych formatów, pkgar zawiera jedynie metadane niezbędne do wydobycia pakietu.
  • Niezależność od katalogu instalacji — pakiet może być zainstalowany w dowolnym katalogu przez dowolnego użytkownika (użytkownik musi mieć prawo do zapisu w wybranym katalogu).
  • Bezpieczeństwo — pakiety zawsze są weryfikowane kryptograficznie, a weryfikacja jest przeprowadzana przed dokonaniem faktycznych operacji na pakiecie (najpierw ładowany jest nagłówek, a jeśli podpis cyfrowy jest poprawny, dane są ładowane do katalogu tymczasowego, które są przenoszone do katalogu docelowego po weryfikacji).

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster