Las compilaciones reproducibles , también conocidas como compilación determinista, son un proceso de compilación de software que garantiza que se pueda reproducir el código binario resultante . El código fuente compilado mediante compilación determinista siempre generará el mismo binario. [1] [2]
Las construcciones reproducibles pueden actuar como parte de una cadena de confianza ; [1] el código fuente se puede firmar y la compilación determinista puede probar que el binario se compiló a partir de un código fuente confiable.
Métodos
Para que el proceso de compilación sea determinista, la entrada al compilador debe ser la misma, independientemente del entorno de compilación utilizado. Normalmente, esto implica la normalización de variables que pueden cambiar, como el orden de los archivos de entrada, las marcas de tiempo , las configuraciones regionales y las rutas .
Además, los compiladores no deben introducir ellos mismos el no determinismo. Esto sucede a veces cuando se utilizan tablas hash con un valor de semilla hash aleatorio. También puede suceder cuando se usa la dirección de variables porque varía de la distribución aleatoria del espacio de direcciones (ASLR).
Los sistemas de construcción , como Bazel y Gitian, [3] se pueden utilizar para automatizar procesos de construcción deterministas.
Historia
El Proyecto GNU utilizó compilaciones reproducibles a principios de la década de 1990. Los registros de cambios de 1992 indican el esfuerzo en curso. [4]
Uno de los proyectos más antiguos [5] para promover compilaciones reproducibles es el proyecto Bitcoin con Gitian. Más tarde, en 2013, el proyecto Tor (red de anonimato) comenzó a usar Gitian para sus compilaciones reproducibles. [6]
En julio de 2013, el proyecto Debian comenzó a implementar compilaciones reproducibles en todo su archivo de paquetes. [7] [8]
En julio de 2017, se ha demostrado que más del 90% de los paquetes en el repositorio se compilan de manera reproducible. [9]
En noviembre de 2018, el proyecto Reproducible Builds se unió a Software Freedom Conservancy . [10]
F-droid utiliza compilaciones reproducibles para garantizar que los APK distribuidos utilicen el código fuente gratuito reclamado . [11]
El sistema operativo portátil Tails utiliza compilaciones reproducibles y explica a otros cómo verificar su distribución. [12]
NixOS afirma que la construcción es 100% reproducible en junio de 2021. [13]
Referencias
- ^ a b "reproducible-builds.org" . reproducible-builds.org . Archivado desde el original el 20 de mayo de 2016 . Consultado el 22 de agosto de 2016 .
Las compilaciones reproducibles son un conjunto de prácticas de desarrollo de software que crean una ruta verificable desde el código fuente legible por humanos hasta el código binario utilizado por las computadoras ... el sistema de compilación debe hacerse completamente determinista: la transformación de una fuente determinada siempre debe generar el mismo resultado.
- ^ Ratliff, Emily (4 de abril de 2016). "Establecer correspondencia entre una aplicación y su código fuente | SecurityWeek.com" . www.securityweek.com . SecurityWeek. Archivado desde el original el 20 de septiembre de 2016 . Consultado el 22 de agosto de 2016 .
- ^ "Gitian: un método seguro de distribución de software" . gitian.org . Consultado el 10 de enero de 2018 .
- ^ "Correo electrónico que describe las compilaciones reproducibles de GNU" .
- ^ "LICENCIA-archivo del Proyecto Gitian" . Consultado el 3 de diciembre de 2019 .
- ^ Deterministic Builds Part Two: Detalles técnicos. 04 de octubre de 2013
- ^ "Hablar de compilaciones reproducibles en Debian" .
- ^ "Historial de construcciones reproducibles" .
- ^ "Linux-Distributionen: Mehr als 90 Prozent der Debian-Pakete reproduzierbar - Golem.de" (en alemán). 2017-07-24 . Consultado el 30 de octubre de 2018 .
- ^ "Reproducible Builds se une a Software Freedom Conservancy" . Consultado el 15 de diciembre de 2018 .
- ^ "Construcciones reproducibles" . F-Droid.
- ^ "Verificación de la reproducibilidad de una imagen de Tails" . Cruz.
- ^ "¡El iso_minimal.x86_64-linux de Nixos-unstable es 100% reproducible!" . Discurso de NixOS . 2021-06-20 . Consultado el 21 de junio de 2021 .
enlaces externos
- reproducible-builds.org
- Compilaciones reproducibles de Debian