Gli sviluppatori della distribuzione NixOS hanno annunciato l'implementazione del supporto per la verifica dell'integrità dell'immagine iso minimale (iso_minimal.x86_64-linux) tramite il meccanismo delle builds ripetibili. In precedenza, le builds ripetibili erano disponibili a livello di singoli pacchetti, ma ora sono state estese a tutta l'immagine iso. Qualsiasi utente può generare un'immagine iso completamente identica a quella fornita per il download e verificare che sia stata costruita a partire dai sorgenti forniti e non contenga modifiche nascoste. Per automatizzare la verifica dell'immagine iso di NixOS tramite builds ripetibili è stato preparato uno script speciale. Nella fase successiva, si prevede di garantire builds ripetibili per l'immagine iso completa con il desktop GNOME.
Le builds ripetibili sono un anello cruciale per garantire la sicurezza, poiché consentono di verificare autonomamente che le builds offerte dalla distribuzione coincidano byte per byte con quelle create personalmente dai sorgenti. Senza la possibilità di verificare l'identità della build binaria, l'utente deve fidarsi ciecamente delle infrastrutture di build altrui, la compromissione del compilatore o degli strumenti di build può portare all'inserimento di backdoor nascoste. Per garantire le builds ripetibili è necessario riprodurre la configurazione e i parametri dell'ambiente di build, utilizzare versioni identiche di programmi, dipendenze e componenti di avvio, escludere l'inserimento di dati variabili (timestamp, riempitivi casuali, ecc.), e mantenere l'ordine di build dei file e la fornitura dei pacchetti nell'immagine iso.
Ricordiamo che la distribuzione NixOS si basa sul gestore di pacchetti Nix e offre una serie di sviluppi proprietari che semplificano la configurazione e la manutenzione del sistema. Ad esempio, in NixOS viene utilizzato un unico file di configurazione di sistema (configuration.nix), è possibile effettuare un rapido rollback degli aggiornamenti, è presente il supporto per il passaggio tra diversi stati del sistema, è supportata l'installazione di pacchetti individuali da parte di singoli utenti (il pacchetto viene installato nella home directory) e può avvenire l'installazione simultanea di più versioni di un programma. Quando si utilizza Nix, i pacchetti vengono installati in un albero di directory separato /nix/store o in una sottodirectory nella directory dell'utente. Ad esempio, un pacchetto viene installato come /nix/store/f2b5…8a563-firefox-89.0.1/, dove «f2b5…» è un identificatore unico del pacchetto, utilizzato per il controllo delle dipendenze.
I pacchetti sono formati da contenitori che contengono i componenti necessari per il funzionamento delle applicazioni. È possibile definire dipendenze tra i pacchetti, utilizzando la scansione degli identificatori hash nella directory dei pacchetti installati per verificare la presenza di dipendenze già installate. È possibile sia il download di pacchetti binari pronti dal repository (quando si installano aggiornamenti ai pacchetti binari vengono scaricate solo le modifiche delta), sia la compilazione dai sorgenti con tutte le dipendenze. La collezione di pacchetti è presentata in un repository speciale, Nixpkgs.
Fonte: opennet.ru
