Una de las muchas ventajas de disponer del código fuente de los programa es poder analizarlo para saber cómo funcionar y estar seguros de que lo que se ejecuta en nuestros ordenadores es realmente lo que esperamos. Pero ¿qué ocurre cuando la mayor parte del software libre que usamos viene en paquetes precompilados?
Existen grupos y desarrolladores que se dedican a auditar código fuente para asegurarse de que este no incluye elementos poco deseables como programas espías.
Esto esta muy bien cuando es uno mismo el que compilar sus programas: el usuario descarga el código previamente auditado (o comprobado por él mismo), lo compila y lo ejecuta. Pero la inmensa mayoría del software libre que se ejecuta viene precompilado en forma de paquetes que ofrecen las distintas distribuciones. La cuestión es de qué forma se puede asegurar el usuario de que el código compilado que está ejecutando proviene, efectivamente, del código fuente del que dice provenir sin haber recibido modificaciones por el cambio. Es decir, ¿de qué sirve tener este control sobre el software si después tan solo se usan archivos precompilados del que no se puede asegurar su procedencia?
Hasta ahora, las distros se han basado en la confianza de los usuarios. Los usuarios confían en que los desarrolladores y empaquetadores no hagan trampas a la hora de compilar el software introduciendo modificaciones (posiblemente maliciosas) al software que distribuyen, pero no existe ninguna forma de asegurarse de que el proceso de compilado ha sido limpio.
Debian está a punto de culminar su proyecto «ReproducibleBuilds» cuyo fin es que «debería se posible reproducir, byte a byte, cada compilación de cada paquete en Debian».
El estado de los paquetes se puede consultar en la siguientes gráfica:
El proyecto ofrece las especificaciones de un nuevo archivo de control con extensión .buildinfo que registra el entorno de compilado a la hora de realizarse este. También se han desarrollado un conjunto de herramientas que pueden realizar compilaciones reproducibles de bastantes paquetes fuente.
Además se ha creado la herramienta debbindiff, que permite a los desarrolladores detectar los cambios que se producen entre paquetes generados por dos compilaciones distintas del mismo paquete.
Para saber más sobre este proyecto, se puede visitar la web de ReproducibleBuilds. Vía TuxDiary.