No hay forma de probar que el código es el código real
Aunque el software de votación esté publicado, eso por sí solo no es suficiente. También necesitas poder recompilarlo tú mismo y obtener exactamente el mismo programa que ejecuta la máquina. Sin eso, el código publicado podría no coincidir con la versión secreta y alterada realmente instalada.
Video explicativo próximamente
Un recorrido de 60 segundos en lenguaje accesible sobre esta brecha.
Qué sucedió realmente
Este es un principio bien establecido en la cadena de suministro de software. El proyecto de Reproducible Builds entre industrias existe precisamente porque leer código fuente no es suficiente — debes poder recompilarlo de forma independiente y confirmar que obtienes el programa idéntico, bit por bit. De lo contrario, 'aquí está nuestro código' y 'aquí está lo que se ejecuta' son dos cosas diferentes e inverificables.
Dónde estamos hoy
La mayoría de las jurisdicciones hoy en día ni siquiera requieren que el código fuente del software de votación sea público (ver 'Software que no se te permite verificar') — así que requerir una compilación reproducible que cualquiera pueda vincular a la máquina en ejecución es aún más raro. La cifra anterior refleja la ley actual.
Leer el menú no es lo mismo que probar la comida
Publicar el código fuente es como publicar la receta de un restaurante. Está bien — pero no prueba que la cocina haya cocinado realmente esa receta. Quizás la siguieron. Quizás no. No se puede saber solo con la receta.
Una compilación reproducible cierra esa brecha: cualquiera puede tomar el código fuente publicado, compilarlo por sí mismo, y verificar que obtiene exactamente el mismo programa — bit por bit — que está instalado en la máquina. Es cómo el mundo del software más amplio detecta código que fue alterado después de la revisión.
Por qué importa
Sin compilaciones reproducibles, "aquí está nuestro código abierto" y "aquí está lo que se ejecuta en la máquina" son dos afirmaciones separadas, y solo una se puede verificar. Una versión publicada limpia podría estar al lado de una versión alterada secreta, y ningún tercero podría probar la diferencia.
Cómo TrustVoting lo cierra
TrustVoting se compromete a compilaciones reproducibles: recompila el código fuente publicado, obtén el binario idéntico — entonces la capa de integridad (sumas de verificación + arranque atestiguado) prueba que la máquina está ejecutando exactamente ese binario. Código abierto → una compilación que cualquiera puede reproducir → una máquina que prueba que la está ejecutando.
Cómo TrustVoting la cierra
TrustVoting se compromete a compilaciones reproducibles: cualquiera puede tomar el código fuente publicado, recompilarlo, y confirmar que produce exactamente el binario que ejecuta la máquina — entonces la capa de integridad (sumas de verificación + arranque atestiguado) prueba que la máquina está ejecutando ese binario.