Zespół programistów dystrybucji NixOS ogłosił wdrożenie wsparcia dla weryfikacji integralności minimalnego obrazu iso (iso_minimal.x86_64-linux) za pomocą mechanizmu powtarzalnych kompilacji. Wcześniej powtarzalne kompilacje były dostępne na poziomie pojedynczych pakietów, a teraz zostały rozszerzone na cały obraz iso. Każdy użytkownik może stworzyć obraz iso, który jest całkowicie identyczny z dostępnym do pobrania obrazem iso, i upewnić się, że został zbudowany z dostarczonych źródeł i nie zawiera ukrytych zmian. W celu automatyzacji weryfikacji obrazu iso NixOS za pomocą powtarzalnych kompilacji przygotowano specjalny skrypt. W następnej kolejności planuje się zapewnienie powtarzalnych kompilacji dla pełnego obrazu iso z pulpitowym środowiskiem GNOME.
Powtarzalne kompilacje są ważnym elementem zapewnienia bezpieczeństwa, ponieważ umożliwiają samodzielne sprawdzenie, czy oferowane przez dystrybucję kompilacje bajt w bajt są zgodne z tymi, które zostały zbudowane osobiście z źródeł. Bez możliwości zweryfikowania tożsamości binarnej kompilacji użytkownik jest zmuszony ślepo zaufać cudzej infrastrukturze kompilacyjnym, której kompromitacja, kompilatora lub narzędzi kompilacyjnych może prowadzić do wprowadzania ukrytych backdoorów. Aby zapewnić powtarzalne kompilacje, konieczne jest odtworzenie zawartości i parametrów środowiska budowy, użycie identycznych wersji programów, zależności i komponentów rozruchowych, wykluczenie wprowadzania zmieniających się danych (znaków czasowych, losowych wypełniaczy itp.), a także zachowanie kolejności kompilacji plików i dostarczania pakietów w obrazie iso.
Przypominamy, że dystrybucja NixOS opiera się na menedżerze pakietów Nix i oferuje szereg własnych rozwiązań, które ułatwiają konfigurację i utrzymanie systemu. Na przykład w NixOS używany jest jednolity plik konfiguracji systemu (configuration.nix), dostępna jest możliwość szybkiego przywracania aktualizacji, wspierana jest zmiana pomiędzy różnymi stanami systemu, a użytkownicy mogą instalować indywidualne pakiety (pakiet instalowany jest w katalogu domowym) oraz może być jednoczesna instalacja kilku wersji tej samej aplikacji. Przy użyciu Nix pakiety są instalowane w osobnym drzewie katalogów /nix/store lub podkatalogu w katalogu użytkownika. Na przykład, pakiet jest instalowany jako /nix/store/f2b5…8a563-firefox-89.0.1/, gdzie „f2b5…” to unikalny identyfikator pakietu, używany do kontroli zależności.
Pakiety są zorganizowane w postaci kontenerów, zawierających niezbędne komponenty do działania aplikacji. Między pakietami możliwe jest definiowanie zależności, a do wyszukiwania obecności już zainstalowanych zależności wykorzystuje się skanowanie hash-identifierów w katalogu zainstalowanych pakietów. Możliwa jest zarówno pobieranie gotowych binarnych pakietów z repozytorium (przy instalacji aktualizacji do binarnych pakietów pobierane są tylko zmiany delta), jak i budowa z kodu źródłowego ze wszystkimi zależnościami. Kolekcja pakietów jest dostępna w specjalnym repozytorium Nixpkgs.
Źródło: opennet.ru
