Nenhuma forma de provar que o código é o código real
Mesmo que o software de votação seja publicado, isso sozinho não é suficiente. Precisa também de conseguir reconstruir você próprio e obter o programa exato que a máquina executa. Sem isso, o código publicado pode não corresponder à versão alterada e secreta que está realmente instalada.
Vídeo explicativo em breve
Um walkthrough de 60 segundos, em linguagem clara, desta lacuna.
O que realmente aconteceu
Este é um princípio bem estabelecido na cadeia de fornecimento de software. O projeto Reproducible Builds entre indústrias existe precisamente porque ler código-fonte não é suficiente — deve conseguir reconstruir de forma independente e confirmar que obtém o programa idêntico, bit a bit. Caso contrário, "aqui está o nosso código-fonte" e "aqui está o que está a correr" são duas coisas diferentes e não verificáveis.
Como está hoje
A maioria das jurisdições hoje não exige sequer que o código-fonte do software de votação seja público (veja 'Software que não lhe é permitido verificar') — por isso exigir uma build reprodutível que qualquer um possa corresponder à máquina em execução é ainda mais raro. O número acima reflete a lei atual.
Ler o menu não é provar a comida
Publicar código-fonte é como partilhar a receita de um restaurante. Bom — mas não prova que a cozinha realmente cozinhou essa receita. Talvez tenham seguido. Talvez não. Não se consegue saber só pela receita.
Uma build reprodutível fecha essa lacuna: qualquer um pode pegar no código-fonte publicado, compilá-lo ele próprio e verificar que obtém exatamente o mesmo programa — bit a bit — que está instalado na máquina. É assim que o mundo do software mais amplo deteta código que foi alterado depois da revisão.
Por que é importante
Sem builds reprodutíveis, "aqui está o nosso código aberto" e "aqui está o que está a correr na máquina" são duas afirmações separadas, e apenas uma delas pode ser verificada. Uma versão publicada limpa poderia estar ao lado de uma versão alterada secreta, e nenhuma parte externa conseguiria provar a diferença.
Como TrustVoting o resolve
TrustVoting compromete-se com builds reprodutíveis: reconstruir o código-fonte publicado, obter o binário idêntico — depois a camada de integridade (checksums + arranque atestado) prova que a máquina está a executar exatamente esse binário. Código aberto → uma build que qualquer um consegue reproduzir → uma máquina que prova que a está a executar.
Como o TrustVoting a fecha
TrustVoting compromete-se com builds reprodutíveis: qualquer um pode pegar no código-fonte publicado, reconstruir, e confirmar que produz o binário exato que a máquina executa — depois a camada de integridade (checksums + arranque atestado) prova que a máquina está a executar esse binário.