Die Entwickler der NixOS-Distribution haben die Unterstützung für die Überprüfung der Integrität des minimalen ISO-Abbilds (iso_minimal.x86_64-linux) durch die Verwendung des Mechanismus der wiederholbaren Builds implementiert. Zuvor waren wiederholbare Builds auf der Ebene einzelner Pakete verfügbar, und nun wurden sie auf das gesamte ISO-Abbild ausgeweitet. Jeder Benutzer kann ein ISO-Abbild erstellen, das vollständig identisch mit dem zum Herunterladen bereitgestellten ISO-Abbild ist, und sich vergewissern, dass es aus den bereitgestellten Quelltexten erstellt wurde und keine versteckten Änderungen enthält. Um die Überprüfung des NixOS-ISO-Abbilds mithilfe von wiederholbaren Builds zu automatisieren, wurde ein spezielles Skript vorbereitet. In der nächsten Phase wird angestrebt, wiederholbare Builds für das vollständige ISO-Abbild mit der Desktopumgebung GNOME bereitzustellen.
Wiederholbare Builds sind ein wichtiges Element der Sicherheitsgewährleistung, da sie es ermöglichen, selbst zu überprüfen, dass die vom Distribution angebotenen Builds bytegenau mit den Builds übereinstimmen, die persönlich aus den Quelltexten erstellt wurden. Ohne die Möglichkeit, die Identität des binären Builds zu überprüfen, bleibt dem Benutzer nur, blind auf die Build-Infrastruktur anderer zu vertrauen, deren Kompromittierung des Compilers oder des Build-Tools zu versteckten Backdoors führen kann. Um wiederholbare Builds zu gewährleisten, ist es erforderlich, die Inhalte und Parameter der Build-Umgebung zu reproduzieren, identische Versionen von Programmen, Abhängigkeiten und Boot-Komponenten zu verwenden, die Einführung sich ändernder Daten (Zeitstempel, zufällige Füllwerte usw.) auszuschließen sowie die Reihenfolge der Dateibauten und die Bereitstellung von Paketen im ISO-Abbild beizubehalten.
Wir erinnern daran, dass die NixOS-Distribution auf dem Paketmanager Nix basiert und eine Reihe eigener Entwicklungen bietet, die die Konfiguration und Wartung des Systems erleichtern. Zum Beispiel verwendet NixOS eine einzelne Systemkonfigurationsdatei (configuration.nix), ermöglicht ein schnelles Zurücksetzen von Updates, unterstützt den Wechsel zwischen verschiedenen Systemzuständen, ermöglicht es einzelnen Benutzern, individuelle Pakete zu installieren (das Paket wird im Home-Verzeichnis installiert) und erlaubt die gleichzeitige Installation mehrerer Versionen eines Programms. Bei der Verwendung von Nix werden Pakete in einem separaten Verzeichnisbaum /nix/store oder in einem Unterverzeichnis des Benutzerverzeichnisses installiert. Beispielsweise wird ein Paket als /nix/store/f2b5…8a563-firefox-89.0.1/ installiert, wobei „f2b5…“ eine eindeutige Paket-ID ist, die zur Überwachung von Abhängigkeiten verwendet wird.
Pakete werden in Form von Containern bereitgestellt, die die notwendigen Komponenten für den Betrieb von Anwendungen enthalten. Zwischen den Paketen können Abhängigkeiten definiert werden, wobei zur Überprüfung vorhandener Abhängigkeiten das Scannen von Hash-IDs im Verzeichnis installierter Pakete verwendet wird. Sowohl das Herunterladen von fertigen Binärpaketen aus dem Repository (bei der Installation von Updates für Binärpakete werden nur Delta-Änderungen heruntergeladen) als auch der Bau aus Quelltexten mit allen Abhängigkeiten sind möglich. Die Paketsammlung ist in einem speziellen Nixpkgs-Repository dargestellt.
Quelle: opennet.ru
