← Todas as lacunas
💻 Software que não pode verificar

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.