Die Entwickler des NixOS-Distributions haben die Unterstützung zur Verifizierung der Integrität des minimalen ISO-Images (iso_minimal.x86_64-linux) mithilfe des Mechanismus der reproduzierbaren Builds implementiert. Zuvor waren reproduzierbare Builds nur auf Paketebene verfügbar, jetzt wurden sie auch auf das gesamte ISO-Image erweitert. Jeder Benutzer kann ein ISO-Image erstellen, das vollständig identisch mit dem bereitgestellten Download-ISO-Image ist, und sicherstellen, dass es aus den bereitgestellten Quellcodes erstellt wurde und keine versteckten Änderungen enthält. Um die Überprüfung des NixOS-ISO-Images mithilfe reproduzierbarer Builds zu automatisieren, wurde ein spezielles Skript vorbereitet. In der nächsten Phase wird angestrebt, reproduzierbare Builds auch für das vollständige ISO-Image mit GNOME-Desktop bereitzustellen.
Wiederholbare Builds sind ein entscheidendes Element der Sicherheit, da sie es ermöglichen, selbst zu überprüfen, dass die vom Distribution angebotenen Builds byte-per-byte mit den Builds übereinstimmen, die persönlich aus den Quelltexten erstellt wurden. Ohne die Möglichkeit, die Identität der Binärbuilds zu überprüfen, bleibt dem Benutzer nur das blinde Vertrauen in die Build-Infrastruktur anderer, deren Kompromittierung des Compilers oder der Build-Tools zu versteckten Hintertüren führen kann. Um wiederholbare Builds sicherzustellen, müssen die Inhalte und Parameter der Build-Umgebung nachgebildet, identische Versionen von Software, Abhängigkeiten und Boot-Komponenten verwendet, wechselnde Daten (Zeitstempel, zufällige Füller usw.) ausgeschlossen und die Reihenfolge der Dateikonstruktion sowie die Bereitstellung der Pakete im ISO-Abbild beibehalten werden.
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. In NixOS wird beispielsweise eine einheitliche Datei für die Systemkonfiguration (configuration.nix) verwendet, es gibt eine Möglichkeit für schnelle Rollbacks von Updates, es wird die Unterstützung für das Wechseln zwischen verschiedenen Systemzuständen bereitgestellt, und Benutzer können individuelle Pakete installieren (Pakete werden im Home-Verzeichnis installiert). Außerdem ist die gleichzeitige Installation mehrerer Versionen eines Programms möglich. Bei der Verwendung von Nix werden Pakete in einem separaten Verzeichnisbaum /nix/store oder in einem Unterverzeichnis im Benutzerverzeichnis installiert. Beispielsweise wird ein Paket als /nix/store/f2b5…8a563-firefox-89.0.1/ installiert, wobei "f2b5…" eine eindeutige Paket-ID ist, die zur Kontrolle von Abhängigkeiten verwendet wird.
Pakete werden als Container bereitgestellt, die die für den Betrieb von Anwendungen erforderlichen Komponenten enthalten. Zwischen den Paketen können Abhängigkeiten definiert werden, wobei Hash-Identifikatoren in dem Verzeichnis der installierten Pakete zur Überprüfung auf bereits installierte Abhängigkeiten gescannt werden. Es besteht die Möglichkeit, sowohl vorgefertigte Binärpakete aus dem Repository herunterzuladen (bei der Installation von Updates zu Binärpaketen werden nur Delta-Änderungen heruntergeladen) als auch aus Quelltexten mit allen Abhängigkeiten zu bauen. Die Sammlung von Paketen ist in einem speziellen Nixpkgs-Repository verfügbar.
Quelle: opennet.ru
