Carta feita por @dfaranha, @pedroysb, @tncardoso, @caioluders, @thotypous
Dia 1 de Julho de 2018
Após ouvir o “Nerdcast 626: Como funciona o Brasil: Urna Eletrônica” nós sentimos a necessidade de esclarecer alguns pontos discutidos. Como este não é nosso primeiro email esperamos passar pelo filtro do Azaghal e, consequentemente, atingir uma parte da audiência que ouviu o cast original. Como a comunidade científica não dispõe dos mesmos recursos de marketing que um grande orgão governamental, contamos com o apoio de pessoas que tenham o conhecimento técnico para informar e educar os leigos que são extremamente vulneráveis em um processo eleitoral puramente digital. Acreditamos que audiência do Jovem Nerd é o público ideal por ser composta por pessoas técnicas e críticas.
É importante salientar que o ponto defendido por nós, e por grande parte da comunidade científica, não é o abandono dos avanços da urna eletrônica. O que defendemos é a necessidade de se adicionar uma forma de auditoria não relacionada ao meio digital. O voto impresso não é uma lembrança para ser levado para casa, tampouco algo que fere o sigilo de voto, e sim, uma forma para qualquer cidadão, leigo ou não, auditar e verificar sua participação no nosso processo eleitoral.
Supor que os mecanismos existentes são suficientes para garantir a transparência e a corretude de uma eleição são uma falácia conhecida por qualquer desenvolvedor de software. Durante todas as edições dos Testes Públicos de Segurança foram encontradas falhas na urna, sendo que em 2017 foi demonstrada a mais grave: o comprometimento completo da integridade do software da urna. Nossa demonstração mostrou a possibilidade de se alterar o software de qualquer maneira desejada, sem restrições. Esse tipo de falha tem impacto tão relevante que grandes empresas como Paypal pagam até US$ 100.000,00 por uma prova de conceito – e eles não pedem que você demonstre que é possível transferir saldo entre contas, basta mostrar que você consegue executar um “Hello world” no servidor do Paypal ;-).
Outro ponto importante diz respeito à auditoria de código. Se realmente fosse possível escrever código 100% correto e detectar bugs apenas por auditoria de código, todo investimento realizado em testes de software seria um desperdício (o que não é a realidade que vemos nas empresas). Existem diversos casos de bugs que foram descobertos mais de 10 anos após serem introduzidos em softwares de código aberto (que são auditados por milhares de pessoas, e não por dezenas como a urna).
Por fim, o modelo de urna utilizado no Brasil foi abandonado por quase todos os países que já o utilizaram. A maioria desses países migraram para equipamentos que permitem a auditoria independente de software pelo uso de um registro físico. Argumentar que o Brasil tem uma grande área e complexidade não é suficiente, uma vez que países como a Índia conseguiram adotar este tipo de tecnologia com sucesso. A transparência e auditabilidade de uma eleição são requisitos (e não características desejáveis) para uma democracia forte e justa.
Encorajamos todos os ouvintes a lerem nosso relatório (em inglês / em português) e o relatório oficial do TSE para tirar suas próprias conclusões, lembrando que se trata de um sistema crítico em operação há mais de duas décadas. Terminamos este email com o detalhamento a respeito de cada tópico discutido no Nerdcast 626 e links para o material relevante.
Sobre automação das eleições e urnas desconectadas da Internet
Sem dúvida houve progresso com a introdução da urna eletrônica em se eliminar fraudes de pequena escala na apuração de cédulas eleitorais. O resultado frequentemente ignorado é que esse risco terminou por se concentrar, com escala massivamente ampliada, em um seleto grupo de programadores que trabalha na Justiça Eleitoral. E não precisaria ser assim — daí nossas frequentes críticas e sugestões. Atualmente, um fraudador interno que trabalha no TSE tem acesso privilegiado ao software de votação, infraestrutura de totalização e todos os demais componentes do sistema. Observe que o custo e impacto de fraudes montadas com manipulação de votos individuais é muito diferente de manipular o software de votação diretamente. Felizmente as urnas eletrônicas não foram projetadas para se conectar à Internet, mas continuam conectados os computadores de desenvolvedores do TSE e os sistemas de transmissão do software de votação e de resultados, logo ataques remotos não podem ser totalmente descartados.
Sobre o voto impresso
Como o Nerdcast 626 foi gravado em Maio, a decisão do STF de suspender o voto impresso não foi contemplada, mas é importante abordá-la.
O voto impresso é uma prova conferível pelo eleitor e passível de auditoria pelo cidadão leigo de que o sistema está se comportando de maneira honesta durante a votação. Ele não traz de volta os problemas que existiam com as cédulas de papel. O próprio protótipo divulgado pelo TSE em artigo científico revisado por pares mostra que cada registro físico do voto recebe uma assinatura digital da urna eletrônica para autenticação. Assim, torna-se possível detectar ataques não-especializados que ocorriam de forma impune na época da votação em cédulas, como acrescentar, trocar ou subtrair papéis.
É irônica a decisão de suspender o voto impresso alegando que ele pode ser substituído pelo Registro Digital do Voto (RDV). Ao passo que a afirmação de que o voto impresso prejudicaria o sigilo do voto não passa de uma mera suspeita infundada, o prejuízo ao sigilo causado pelo RDV é um fato amparado por evidências científicas. O RDV é um segundo arquivo gerado pela urna que, em vez de conter os totais, contém uma lista de votos embaralhados. O grande problema do RDV é que o arquivo é produzido pelo software de votação que procura proteger, sendo também afetado caso o software de votação seja adulterado. Caso a adulteração seja realizada no software, qualquer recontagem do RDV irá produzir o mesmo resultado fraudulento. Como não serve para recontagem, o RDV termina existindo apenas para fragilizar o sigilo do voto, como demonstramos nos testes de segurança de 2012.
Sobre voto eletrônico em outros países
A adoção de voto eletrônico sem registro físico dos votos está rapidamente sumindo do planeta. O único país a insistir no equívoco em escala nacional é o Brasil. O último país a corrigir esse equívoco foi a Índia, que começou seu piloto de introdução do voto impresso em 2014, após uma demonstração da equipe do professor Halderman interferir com o funcionamento do software de uma única urna. Note que, após demonstrarmos um ataque análogo no Brasil, porém com poder de amplificação para 50 urnas por cartão manipulado, não sensibilizamos as autoridades brasileiras da forma como o professor Halderman sensibilizou as indianas. Aparentemente, apenas 7 de um total de 50 Estados dos EUA utilizam máquinas sem registro físico do voto adquiridas há mais de uma década, havendo enorme pressão da comunidade técnica local para que esses equipamentos sejam abandonados. Até o ex-presidente Clinton manifestou-se a respeito, dada a urgência da questão. França e Itália chegaram a adotar voto eletrônico no início do século em projetos pilotos já abandonados e eleições municipais, gerando na ocasião uma boa dose de controvérsia. Há várias fontes que facilmente contradizem as alegações dos entrevistados de que outros países utilizam urnas similares às brasileiras. O único país da Europa que utiliza máquinas de votar em escala considerável é a Bélgica, mas todas com registro físico do voto.
Sobre os testes de segurança
A alegação de que especialistas não conseguiram violar a segurança do equipamento nos testes do TSE é completamente falsa. Foram quatro edições até hoje e, em todas elas, surgiu alguma vulnerabilidade afetando importantes propriedades de segurança do equipamento. Falhas cada vez mais graves foram descobertas ao longo do tempo, à medida que os participantes familiarizavam-se com o sistema e aprendiam a contornar as restrições dos testes. Para citar algumas dessas restrições, são apenas três dias para examinar dezenas de milhões de linhas de programação, e é proibido anotar trechos de código em papel ou usar as próprias máquinas (tomando enorme tempo para preparar um ambiente de trabalho). Há recursos que ainda persistem fora de escopo dos testes mesmo após funcionar em produção por 10 anos, como a identificação biométrica. Mesmo com esses obstáculos, os testes têm detectado vulnerabilidades e erros de projeto, sem exigir conhecimento além do trivial para um profissional de segurança.
- Na edição de 2009, um pesquisador independente mostrou como quebrar o sigilo do voto com a captura de frequências de rádio emitidas pelas diferentes teclas da urna.
- Na edição de 2012, primeira com acesso ao código-fonte, Diego Aranha coordenou o time que mostrou como quebrar o sigilo do voto de autoridades ou seções eleitorais inteiras utilizando apenas informação pública para recuperar os votos de maneira ordenada. O time também detectou falhas em outros mecanismos de segurança, como compartilhamento massivo e armazenamento inseguro de segredos para proteção do sistema (as chaves criptográficas). Para uma analogia com o mundo real, considere um cadeado que imediatamente perde sua segurança caso a chave seja roubada. No caso da urna, o segredo estava armazenado no próprio código-fonte, de forma análoga a embaixo do tapete.
- A próxima edição aconteceu apenas anos mais tarde, em 2016, quando investigadores mostraram como adulterar resultados de eleições em pequena escala utilizando o Sistema de Apuração, acionado em caso de contingência para digitação manual de resultado parcial da urna. Este foi o primeiro ataque com sucesso à integridade dos resultados.
- A maior surpresa estava reservada para 2017, quando duas equipes alcançaram objetivos inéditos. Peritos da Polícia Federal conseguiram recuperar chaves criptográficas ao inicializar o sistema em uma máquina virtual. O nosso time, composto por Diego Aranha (Unicamp), Pedro Barbosa (UFCG), Thiago Cardoso, Caio Lüders (UFPE) e Paulo Matias (UFSCar), explorou uma série de vulnerabilidades para executar software malicioso na urna e adulterar o comportamento do software de votação, que é muito mais grave que um ataque contra a integridade dos resultados. Injetamos pequenos programas de nossa autoria para demonstrar as diversas implicações dessa capacidade de ataque, como violar o sigilo do voto de eleitores específicos, inserir mensagens na tela para fazer boca de urna, e interferir com o armazenamento dos votos. Chegamos a escrever um programa para desviar votos entre candidatos e a demonstrar seu funcionamento em um simulador de urna nos últimos minutos dos testes, porém não foi permitido que testássemos a carga desse programa no hardware real da urna, procedimento que leva cerca de 1 hora. Nossa abordagem foi pensada para um fraudador que captura os cartões de memória que instalam software nas urnas antes das eleições, sabendo que cada cartão instala até 50 máquinas. Uma das vulnerabilidades utilizadas foi o armazenamento inseguro de segredos, detectado lá em 2012 e ainda não totalmente resolvido.
Por fim, vale ressaltar que o Brasil não é o único país a realizar testes de segurança, com experiências menos restritas já observadas na Alemanha (sistema de totalização) e na Voting Village da DEFCON (à qual o TSE inclusive assistiu no ano passado). É bem verdade que os testes da DEFCON são promovidos por iniciativa independente do governo, mas isso só é possível pois lá o cidadão comum possui livre acesso ao equipamento utilizado nas eleições e pode adquiri-lo comercialmente, o que não ocorre no Brasil.
Sobre os testes de confirmação
Em Maio, foram realizados os chamados “testes de confirmação”. Vale lembrar que o edital dos testes não permitia procurar novas falhas durante essa etapa, apenas repetir os procedimentos que haviam obtido sucesso nos testes de Novembro. Nossa equipe nem ao menos chegou a repetir esses procedimentos, limitando-se a ler o código fonte e opinar a respeito das modificações implementadas pelo TSE, por uma série de motivos: apenas 1 dia de testes com a equipe desfalcada por 2 membros; só poderíamos repetir o ataque de decifração dos cartões de memória se houvéssemos levado para o TSE equipamento de bancada de eletrônica, cuja necessidade não prevíamos antes de sermos informados a respeito da decisão do TSE de mover chaves criptográficas do código-fonte para o hardware; o TSE recusou a possibilidade de demonstrarmos em hardware real o ataque de desvio de votos na versão vulnerável do sistema examinada em Novembro, apesar de admitir, em ofício, que era conclusão lógica e natural da capacidade de adulterar o software.
Sobre a possibilidade de auditar o código-fonte
Mesmo com todas as restrições e a impossibilidade de se fazer uma análise de segurança completa do sistema, os testes produzem relatórios dos problemas encontrados, com recomendações de ajuste. Desta forma, a equipe de desenvolvimento do TSE tenta determinar qual o melhor modo de mitigar ou resolver os problemas. Ainda assim, algumas falhas são estruturais e exigem esforço importante de reformulação, que às vezes toma anos. Também não há garantia de que a correção persistirá, já que o desenvolvimento continua até bem perto da eleição, passando pela janela em que os partidos políticos podem inspecionar o código. Nada impede que existam outras vulnerabilidades mais graves ou que correções sejam acidentalmente revertidas. Esta é a natureza de qualquer software, e é por isso que a comunidade técnica não acha boa ideia realizar eleições utilizando apenas programas de computador, situação agravada pela necessidade de auditar dezenas de milhões de linhas de código (“linha a linha”, segundo o TSE). Segundo nosso levantamento em 2017, a base de código do software que vai na urna possui 24 milhões de linhas de código. Mesmo que apenas 5% dessa base seja crítica, por receber, processar e armazenar votos individuais; ou implementar mecanismos de segurança, ainda restam mais de 1 milhão de linhas de código. Perdão, mas nenhuma equipe especializada é capaz de verificar que esse volume inteiro de código funciona corretamente e resiste a tentativas de manipulação. E mesmo que o código-fonte do software seja “blindado” por uma assinatura digital antes da votação, conforme alegado pelo TSE, continua extremamente simples para um fraudador interno introduzir trechos de código na fase de compilação, após a inspeção dos partidos e antes das eleições acontecerem.
O TSE alega que o objetivo dos testes não é um desafio, mas um esforço de colaboração. Gostaríamos então de entender por que as chaves criptográficas foram deliberadamente apagadas da base de código antes dos testes de 2017 começarem, sendo apresentada uma versão incompleta para os investigadores, “para aumentar o desafio”, nas palavras de um dos técnicos responsáveis. Por que houve então a introdução, ainda que apenas na edição de 2016, de um Termo de Sigilo que obrigava investigadores a guardar segredos por toda a vida? Importante também explicar porque os resultados são sempre divulgados de maneira desonesta, muitas vezes em espaços que não oferecem a possibilidade do contraditório, como a própria alegação anterior de que especialistas não conseguem violar barreiras de segurança durante os testes. O papel dos testes já ficou muito claro: convidar especialistas apenas para justificar a versão oficial de que o sistema é seguro e exemplo para o mundo, e qualquer posição discordante é tratada com hostilidade.
Sobre o sistema ser auditável
Além das vulnerabilidades já encontradas, há um problema ainda maior, que termina ofuscado. Conforme demonstrado na tentativa inconclusiva de auditoria após a eleição de 2014, o sistema de votação falha em uma de suas principais finalidades: provar para a sociedade que o resultado está correto. Eventuais auditorias ficam restritas a especialistas que precisam examinar toneladas de arquivos produzidos pelas urnas, sem a garantia de que funcionaram honestamente. O grande problema é que uma fraude minimamente sofisticada em escala razoável, especialmente se montada com colaboração interna, pode terminar indetectável.
Nossa posição
Defendemos que o modelo atual de votação eletrônica adotado no Brasil seja gradualmente transicionado para um sistema que produza registro físico do voto conferível pelo eleitor, seja nos moldes propostos pelo artigo publicado pelo TSE ou por algum dos projetos alternativos que vem sendo discutidos pela comunidade acadêmica. O que não podemos é depositar fé que o sistema atual seja suficientemente seguro, dadas as evidências técnicas em contrário, e adiar indefinidamente uma mudança, como vem acontecendo desde 2009, em uma batalha infindável entre o Legislativo e o Judiciário.
Grupo 1 participante nos Testes Públicos de Segurança 2017