Przedstawiono twórców systemu operacyjnego Redox niedawno które wprowadzili nowy menedżer pakietów pkgar, które będą używane w systemie.
Dla tych, którzy nie wiedzą o Redox który to system operacyjny oferuje nasz konfigurator Jego głównym celem jest to, że jego rozwój wykorzystuje język Rust i koncepcję mikrojądra gdzie tylko interakcja między procesami i zarządzaniem zasobami jest zapewniona na poziomie jądra, a wszystkie inne funkcje są przenoszone do bibliotek, które mogą być używane zarówno przez jądro, jak i agenty użytkownika.
W ramach projektu opracowywany jest nowy format pakietu, biblioteka z funkcjami zarządzania pakietami i narzędziem wiersza poleceń do tworzenia i wyodrębniania kolekcji plików zweryfikowanych kryptograficznie.
Format pkgar nie ma być uniwersalny i jest zoptymalizowany pod kątem specyfiki systemu operacyjnego Redox OS.
Menedżer pakietów obsługuje weryfikację źródła poprzez podpis cyfrowy i kontrolę integralności. Sumy kontrolne są obliczane za pomocą funkcji skrótu blake3. Dostęp do funkcji sprawdzania pkgar można uzyskać bez faktycznego zapisywania pliku pakietu, manipulując tylko częścią nagłówka.
W szczególności pakiet składa się z pliku nagłówkowego (.pkgar_head) i plik danych (.pkgar_data). Prawidłowo podpisany pełny pakiet skrótu (.pkgar) można uzyskać, po prostu dołączając plik nagłówkowy do pliku danych.
Plik nagłówkowy zawiera osobne sumy kontrolne dla nagłówka i sparametryzowanej struktury pliku danych, a także podpis cyfrowy do weryfikacji pakietu.
Plik danych zawiera sekwencyjną listę wszystkich dostarczonych plików i katalogów w paczce. Przed każdym elementem danych znajduje się struktura z metadanymi, która zawiera sumę kontrolną samych danych, rozmiar, prawa dostępu, względną ścieżkę pliku do zainstalowania oraz przesunięcie parametrów następnego elementu danych.
Jeśli podczas procesu aktualizacji poszczególne pliki nie uległy zmianie, a suma kontrolna się zgadza, to są one pomijane i nie są pobierane.
Integralność źródła można zweryfikować, pobierając tylko plik nagłówkowy, a poprawność wybranego pliku danych, ładując tylko struktury z parametrami z tego pliku i upewniając się, że pasują one do sumy kontrolnej sprawdzonej w pliku nagłówkowym.
Bezpośrednio same dane można zweryfikować po ich pobraniu, wykorzystując sumę kontrolną struktury z parametrami poprzedzającymi dane.
Początkowo pakiety zakładają możliwość powtarzalnego składania, co oznacza, że utworzenie pakietu dla określonego katalogu zawsze prowadzi do powstania identycznego pakietu. Po instalacji w systemie zapisywane są tylko metadane, co wystarcza do odbudowania pakietu z zainstalowanych danych (skład pakietu, sumy kontrolne, ścieżki i prawa dostępu są dostępne w metadanych).
Główne cele PKGAR:
- Atomowy: aktualizacje stosować, gdy tylko jest to możliwe automatycznie.
- Oszczędność ruchu: dane są przesyłane przez sieć tylko wtedy, gdy zmienia się hash (podczas aktualizacji pobierane są tylko zaktualizowane pliki).
- Wykorzystywane są szybkie algorytmy kryptograficzne o wysokiej wydajności (blake3 obsługuje zrównoleglenie przetwarzania danych podczas obliczania skrótu). Jeśli dane repozytorium nie były wcześniej buforowane, można obliczyć skrót dla pobranych danych w czasie rozruchu.
- Minimalizm: W przeciwieństwie do innych formatów, pkgar zawiera tylko metadane niezbędne do wyodrębnienia pakietu.
- Niezależność od katalogu instalacyjnego: Każdy użytkownik może zainstalować pakiet w dowolnym katalogu (użytkownik musi mieć uprawnienia do zapisu w wybranym katalogu).
- bezpieczeństwo: pakiety są zawsze weryfikowane kryptograficznie, a weryfikacja jest przeprowadzana przed wykonaniem faktycznych operacji na pakietach (najpierw ładowany jest nagłówek, a jeśli podpis cyfrowy jest poprawny, dane są przenoszone do katalogu tymczasowego, który po weryfikacji jest przenoszony do katalogu docelowego).