Los desarrolladores de la distribución NixOS han informado sobre la implementación del soporte para la verificación de la integridad de la imagen iso mínima (iso_minimal.x86_64-linux) mediante el mecanismo de compilaciones repetibles. Anteriormente, las compilaciones repetibles estaban disponibles a nivel de paquetes individuales, pero ahora se han ampliado a toda la imagen iso. Cualquier usuario puede generar una imagen iso completamente idéntica a la proporcionada para su descarga y asegurarse de que se haya creado a partir de los códigos fuente proporcionados y no contenga cambios ocultos. Se ha preparado un script especial para automatizar la verificación de la imagen iso de NixOS mediante compilaciones repetibles. En la siguiente etapa, se planea proporcionar compilaciones repetibles para la imagen iso completa con el entorno de escritorio GNOME.
Las compilaciones repetibles son un eslabón importante en la garantía de seguridad, ya que permiten verificar por sí mismos que las compilaciones ofrecidas por la distribución coinciden byte a byte con las compilaciones realizadas personalmente a partir de los códigos fuente. Sin la posibilidad de verificar la identidad de la compilación binaria, el usuario solo puede confiar ciegamente en la infraestructura de compilación de otros, que puede estar comprometida, donde la corrupción del compilador o las herramientas de compilación podría llevar a la inserción de puertas traseras ocultas. Para garantizar compilaciones repetibles, es necesario reproducir la configuración y los parámetros del entorno de compilación, utilizar versiones idénticas de programas, dependencias y componentes de arranque, excluir la inclusión de datos cambiantes (marcas de tiempo, rellenos aleatorios, etc.), así como mantener el orden de construcción de archivos y entrega de paquetes en la imagen iso.
Recordemos que la distribución NixOS se basa en el gestor de paquetes Nix y ofrece una serie de desarrollos propios que simplifican la configuración y el mantenimiento del sistema. Por ejemplo, NixOS utiliza un único archivo de configuración del sistema (configuration.nix), permite la rápida reversión de actualizaciones, soporta el cambio entre diferentes estados del sistema, permite la instalación de paquetes individuales por usuarios distintos (el paquete se instala en el directorio personal) y la instalación simultánea de múltiples versiones de un mismo programa. Al utilizar Nix, los paquetes se instalan en un árbol de directorios separado /nix/store o en un subdirectorio en el directorio del usuario. Por ejemplo, un paquete se instala como /nix/store/f2b5…8a563-firefox-89.0.1/, donde «f2b5…» es un identificador único del paquete utilizado para el control de dependencias.
Los paquetes se organizan en contenedores que contienen los componentes necesarios para el funcionamiento de las aplicaciones. Es posible definir dependencias entre los paquetes, y para verificar la existencia de dependencias ya instaladas se utiliza el escaneo de los identificadores hash en el directorio de paquetes instalados. Se puede tanto descargar paquetes binarios listos desde el repositorio (al instalar actualizaciones de paquetes binarios, solo se descargan los cambios delta), como compilar desde los textos fuente con todas las dependencias. La colección de paquetes se presenta en un repositorio especial llamado Nixpkgs.
Fuente: opennet.ru
