280 mil pessoas já tinham votado online antes de alguém notar o buraco
Durante uma eleição ao vivo com 280 mil votos já contabilizados, dois investigadores encontraram uma falha que a revisão de segurança oficial tinha perdido — e o sistema de verificação que deveria apanhá-la estava também danificado.
É março de 2015, e em algum lugar de Nova Gales do Sul, um eleitor abre um navegador, segue uma ligação, e vota numa eleição estadual. Todo o processo demora alguns minutos. Sem filas. Sem cabine de votação. Apenas um formulário, um clique, e uma mensagem de confirmação.
O que esse eleitor não sabe — o que ninguém fora de uma pequena equipa de investigadores sabe ainda — é que o código a correr sob o seu navegador está a ser carregado através de uma ligação com uma fraqueza de segurança conhecida. Um atacante na rede, colocado entre o eleitor e o servidor, poderia, em princípio, ter alterado esse código antes da página carregar. Que o serviço de verificação telefónica separado que o sistema oferecia como verificação de integridade poderia ele próprio ser manipulado. E que uma revisão de segurança anterior tinha analisado este sistema e não tinha encontrado nenhum disto.
Quando os investigadores J. Alex Halderman e Vanessa Teague tornaram isto público, aproximadamente 280 mil votos já tinham sido contabilizados.
O sistema que se limpou a si próprio
O sistema iVote não era uma experiência marginal nem um improviso feito à pressa. Nova Gales do Sul tinha investido nele deliberadamente, oferecendo-o a eleitores que eram cegos ou tinham deficiências visuais, remotos, ou simplesmente preferiam a conveniência de votar online. Tinha passado uma revisão de segurança pré-eleitoral oficial. As autoridades conheciam os riscos da votação pela internet — tinham revisto o sistema para eles. Concluíram que estava pronto.
Uma revisão fechada que limpa um sistema não é a mesma coisa que esse sistema ser seguro.
Eis o que a revisão oficial não apanhou, de acordo com o artigo revisado por pares que Halderman e Teague publicaram na E-Vote-ID 2015: iVote carregava JavaScript externo — código que corre no navegador do eleitor — a partir de um servidor de análises através de uma ligação vulnerável aos ataques FREAK e Logjam. Estas eram fraquezas TLS conhecidas e documentadas que tinham sido publicamente divulgadas. Um atacante posicionado na rede, explorando essa fraqueza, poderia ter injetado código malicioso na página iVote antes de chegar ao eleitor, potencialmente manipulando como um voto era registado sem o conhecimento do eleitor. O atacante não precisaria de se introduzir nos próprios servidores da comissão eleitoral. Apenas precisava de estar na posição certa na rede.
Os investigadores também examinaram o serviço de verificação telefónica do iVote — a funcionalidade que o sistema oferecia como forma de os eleitores confirmarem que o seu voto tinha sido registado corretamente. O que encontraram foi que o serviço era ele próprio suscetível a manipulação de uma forma que poderia fazer um voto alterado parecer verificado. A verificação estava a verificar contra uma fonte que também poderia ser alterada.
Isto não é uma rede de segurança. É a ilusão de uma.
O que "após uma revisão anterior o ter limpado" realmente significa
Vamos ser precisos sobre a sequência de eventos, porque a sequência é toda a história.
Uma revisão de segurança foi realizada antes da eleição. A revisão não encontrou as vulnerabilidades que Halderman e Teague encontraram. A eleição começou. Os votos acumularam-se — eventualmente atingindo aproximadamente 280 mil. Depois dois investigadores independentes, a trabalhar fora da comissão eleitoral e fora dos seus revisores contratados, analisaram o sistema em execução e encontraram falhas graves. Divulgaram os problemas. Uma correção foi implementada enquanto a votação estava ainda em curso.
Por outras palavras: a revisão oficial pré-eleitoral deu uma limpeza. Dois pessoas de fora, sem nenhuma motivação institucional na resposta, encontraram o que a revisão oficial tinha perdido. Os problemas foram descobertos não porque o processo funcionou, mas porque investigadores independentes decidiram olhar — por sua própria iniciativa, durante uma eleição ao vivo.
"Passou na sua revisão de segurança" é uma afirmação sobre uma fotografia num instante. Não é uma afirmação sobre o sistema que funciona no dia da eleição.
Este é o problema da fotografia de certificação. Uma revisão é realizada num ponto no tempo, sobre o código e configuração que existe nesse momento, usando o plano de teste e modelo de ameaça que os revisores trouxeram consigo. Se o modelo de ameaça perdeu uma classe de ataque TLS conhecida, essas vulnerabilidades não aparecem no relatório. O sistema muda ligeiramente — uma biblioteca de análises de terceiros atualiza, um parâmetro de configuração muda — e a revisão já não cobre o que está realmente a funcionar.
O Tribunal Constitucional Alemão confrontou uma versão deste problema em 2009, quando decidiu que a votação eletrónica é apenas constitucionalmente legítima quando cidadãos comuns podem verificar cada passo essencial sem conhecimento especializado. Eleitores a verificarem um ecrã depois de clicar em "Enviar" e recebem uma mensagem de confirmação não podem fazer isto. Nem, conclui-se, pode uma equipa de segurança pré-eleitoral que não acontece estar a olhar para uma dependência externa específica carregada através de TLS.
O mecanismo de verificação que não verificou
O detalhe que merecia ficar consigo por um momento é a verificação telefónica.
iVote deu aos eleitores uma forma de ligar e verificar que o seu voto tinha sido registado conforme pretendido. Este é o instinto certo. A verificabilidade ponta-a-ponta — a capacidade de um eleitor confirmar que o seu voto foi capturado corretamente — é um requisito de segurança genuíno, não uma funcionalidade de marketing. Noruega, Estónia e Suíça têm todos grappled seriamente com como fornecê-lo. O sistema de 2019 dos Correios Suíços usava provas criptográficas para oferecer o que chamava verificabilidade universal, até que investigadores independentes encontraram uma porta-traseira no mixnet que poderia gerar uma prova de aparência convincente enquanto ocultava votos alterados.
O impulso para dar aos eleitores uma verificação do sistema é exatamente certo. O problema vem quando essa verificação funciona na mesma infraestrutura que a coisa que está a verificar — ou quando pode ser manipulada pelo mesmo atacante que pode manipular o voto.
Este não é um risco hipotético. Halderman e Teague documentaram que a verificação telefónica do iVote era ela própria suscetível a manipulação que poderia produzir uma confirmação falsa. Um eleitor a ligar para verificar o seu voto ouviria que estava tudo bem. Um eleitor cujo voto tinha sido alterado por um atacante na rede também ouviria que estava tudo bem. O serviço de verificação e a vulnerabilidade viviam no mesmo ecossistema.
Um mecanismo de verificação que pode ser enganado pelo mesmo ataque que o sistema subjacente verifica nada. Fornece conforto, e conforto não é uma propriedade de segurança.
Por que "independente" está a fazer todo o trabalho
Eis a verdade desconfortável sobre o episódio de NSW: ninguém na cadeia oficial apanhou isto.
Não o fornecedor. Não a equipa da comissão eleitoral. Não os revisores de segurança contratados. Foi apanhado por dois académicos que não foram pedidos, não foram pagos, e não tiveram acesso especial a um ambiente de teste. Eles analisaram o sistema de produção — o que manipulava votos reais de eleitores reais — e encontraram o que o processo oficial não tinha.
Washington, D.C. em 2010 é a comparação útil mais próxima. Antes de implementar um sistema de devolução de voto pela internet para eleitores no estrangeiro, D.C. realizou um teste público aberto e explicitamente convidou o público a atacá-lo. Uma equipa da Universidade de Michigan liderada por Halderman ganhou quase controlo completo do servidor piloto em aproximadamente 48 horas, mudou votos que tinham sido contabilizados, e deixou a canção de luta a tocar como evidência do seu acesso. D.C. desistiu do sistema. Nenhum voto real foi afetado. As vulnerabilidades foram apanhadas porque o teste era explicitamente aberto — qualquer pessoa podia tentar, e a equipa que tentou encontrou o que testes internos fechados não tinham.
O caso de NSW é a imagem espelhada. Nenhum teste público aberto. Uma revisão fechada que limpou o sistema. Vulnerabilidades encontradas mesmo assim, por investigadores independentes, depois de votos reais já estarem no sistema.
A diferença entre um desastre e uma falha apanhada é frequentemente apenas se alguém de fora aconteceu de olhar.
Essa é uma frase desconfortável, porque significa que a segurança de uma eleição pode depender da iniciativa de investigadores que não são parte do processo oficial e que facilmente poderiam não ter olhado. Também significa que quando eles olham e encontram algo, a resposta oficial deveria ser "obrigado e aqui está o que mudámos" — não "a nossa revisão já tinha limpado o sistema."
A revisão a limpar o sistema é o ponto de dados que deveria preocupá-lo, não tranquilizá-lo. Diz-lhe que uma revisão fechada não encontrou o que a revisão aberta mais tarde encontrou. A resposta apropriada é perguntar o que mais a revisão fechada poderia não ter encontrado.
O problema da fotografia vai mais fundo
Cada sistema de votação certificado no mundo foi certificado num momento que está agora no passado.
A Comissão de Assistência Eleitoral dos EUA certifica sistemas de votação contra as Diretrizes Voluntárias de Sistemas de Votação. Um relatório do GAO de 2005 descobriu que mesmo a infraestrutura básica para esse programa de certificação era incompleta, anos após a Lei de Ajuda America Vote o ter mandatado. Os padrões são construídos. Os sistemas são testados contra eles. A certificação é emitida.
Depois o tempo passa. Novas classes de ataque são descobertas. As dependências são atualizadas. As configurações derivam. E a certificação, que era uma fotografia de um sistema contra um padrão num ponto no tempo, permanece na parede como uma fotografia emoldurada de um edifício que entretanto foi renovado.
O problema mais profundo é que nenhum processo de certificação pode contar para classes de ataque que não estavam no modelo de ameaça quando a revisão foi realizada. FREAK e Logjam eram fraquezas publicamente conhecidas quando iVote estava a funcionar. Estavam na literatura académica. Tinham nomes. E aparentemente não estavam no plano de teste que limpou o sistema.
Isto não é um argumento contra certificação — é um argumento que a certificação é necessária mas não suficiente, e que a sua suficiência degrada-se ao longo do tempo. A versão honesta de "este sistema é certificado" é: "este sistema passou uma revisão contra um padrão específico, realizada por uma equipa específica, usando um modelo de ameaça específico, num ponto específico no tempo. Nenhuma daquelas coisas tem garantia de permanecer atual."
A solução não é uma fotografia melhor. A solução é verificabilidade contínua, aberta, independente — para que a pergunta não seja "passou na revisão?" mas "pode mostrar-me a matemática?"
O que "independentemente verificável" realmente requer
A história NSW iVote termina com uma correção implementada a meio da eleição e um sistema que continuou a funcionar. A eleição não foi interrompida. Os 280 mil votos já contabilizados não foram refeitos. Não havia nenhum mecanismo para confirmar retrospetivamente se algum desses votos tinha sido alterado antes da correção.
Esta é a parte difícil da história que não resolve de forma ordeira.
O sistema i-voting estoniano, que a equipa de Springall, Finkbeiner, e Halderman analisou em 2014, pelo menos oferecia código-fonte parcial para exame independente. Os investigadores encontraram fraquezas graves de segurança operacional e concluíram que um atacante bem-recursos poderia alterar votos de forma indetectável. A Estónia contestou as conclusões. O sistema continuou a funcionar. Disputa e continuação não são a mesma coisa que resolução.
O sistema de 2019 dos Correios Suíços foi ainda mais longe — publicou o seu código-fonte completo para escrutínio público antes da implementação em eleições vinculativas. Investigadores independentes encontraram a porta-traseira na prova de embaralhamento. As autoridades suíças suspenderam o sistema. Isso é a coisa mais próxima de uma história de sucesso neste espaço: código publicado, falha encontrada, sistema interrompido antes de votos reais serem afetados.
A progressão de NSW para Estónia para Suíça é uma progressão em direção à abertura. NSW: revisão fechada, falhas encontradas durante uma eleição ao vivo, nenhum mecanismo para eleitores verificarem retrospetivamente. Estónia: abertura parcial, análise independente, conclusões contestadas. Suíça: publicação completa, falha criptográfica encontrada antes da utilização vinculativa, sistema suspenso.
A direção importa. Mas note o que a Suíça exigiu para funcionar: não apenas publicação, mas criptógrafos com as ferramentas e conhecimento para detetar uma porta-traseira subtil numa prova de mixnet. Vanessa Teague — que trabalhou tanto na análise NSW como na análise dos Correios Suíços — é uma de um número pequeno de pessoas no mundo que pode ler uma prova de embaralhamento e notar que algo nela está errado.
"Independentemente verificável" não é a mesma coisa que "tecnicamente possível para qualquer cidadão verificar." Para votação pela internet criptográfica, verificabilidade independente genuína requer envolvimento ativo e aberto de pessoas qualificadas de fora — e um processo que o solicia ativamente, não um que apenas o tolera depois de investigadores decidirem por sua própria iniciativa de olhar.
O tribunal eleitoral do Brasil executa um programa de teste de segurança público oficial a cada ciclo eleitoral, convidando qualquer cidadão qualificado a tentar quebrar o sistema e corrigindo o que encontram. Isto não é um modelo perfeito — testa sistemas específicos em configurações específicas em pontos específicos no tempo, e os problemas que não apareceram no teste podem ainda existir no sistema de produção. Mas é estruturalmente melhor que uma revisão fechada, porque é aberta, adversarial, e institucionalizada em vez de ocasional e acidental.
O que ainda não é verificável
Eis o que nem a revisão pós-eleitoral oficial NSW nem o artigo de investigação independente podem dizer-lhe: se algum dos 280 mil votos contabilizados antes da correção ser implementada foi alterado.
Não porque de má fé. Não porque alguém está a esconder algo. Mas porque o sistema não foi desenhado para permitir que essa pergunta seja respondida depois do facto. Não há nenhum registo verificável pelo eleitor que foi comprometido antes do voto ser enviado e que pode ser comparado depois. Não há nenhuma pista de auditoria criptográfica que um eleitor possa examinar para confirmar que o seu voto foi contado conforme enviado. O serviço de verificação telefónica que poderia ter servido essa função podia ela própria ter sido comprometida.
Este é o vazio que nenhuma declaração oficial pode preencher. As autoridades podem dizer — e disseram — que não têm conhecimento de nenhum voto ter sido alterado. Essa é uma afirmação sincera. É também uma que não é falsificável. "Sem conhecimento de" e "não aconteceu" são separados pela largura inteira da pergunta.
O padrão do Tribunal Constitucional Alemão merece ser repetido aqui, porque se aplica com plena força: uma eleição é apenas legítima quando os passos essenciais da cédula para o resultado podem ser verificados por cidadãos sem conhecimento especializado. Para um voto online que carrega código através de uma ligação vulnerável, o eleitor não pode verificar que o código que recebeu era o código que o servidor enviou. Para um serviço de verificação que pode ela própria ser manipulada, o eleitor não pode confirmar que a confirmação é real. Para um sistema sem nenhuma pista de auditoria retrospetiva, os funcionários que o realizaram não podem confirmar que nenhum voto foi mudado.
A pergunta certa não é "encontrámos alguma evidência de manipulação?" A pergunta certa é: "alguém teria podido encontrá-la se manipulação tivesse ocorrido?"
Se a resposta à segunda pergunta é não, a primeira pergunta fornece nenhuma garantia em absoluto.
Explore como este vazio aparece em sistemas ao redor do mundo →
Leia a versão de dois minutos →
Veja o padrão completo em casos documentados →
Fontes
- Halderman, Teague — The New South Wales iVote System: Security Failures and Verification Flaws in a Live Online Election, E-Vote-ID 2015 (arXiv:1504.05646)
- Wolchok, Wustrow, Halderman, Prasad — Attacking the Washington, D.C. Internet Voting System, Financial Cryptography 2012
- Springall, Finkbeiner, Durumeric, Kitcat, Hursti, MacAlpine, Halderman — Security Analysis of the Estonian Internet Voting System, ACM CCS 2014
- Lewis, Pereira, Teague — Ceci n'est pas une preuve (trapdoor commitments in the Scytl-SwissPost Internet voting system), 2019
- Bundesverfassungsgericht, Judgment of 3 March 2009, 2 BvC 3/07 and 2 BvC 4/07 (English translation)
- GAO-05-956, 'Elections: Federal Efforts to Improve Security and Reliability of Electronic Voting Systems Are Under Way, but Key Activities Need to Be Completed' (Sept. 21, 2005)