Como a criptografia protege o voto em mobilidade

NERV (português)
11 min readJul 30, 2022

“O maior desafio do voto em mobilidade é alcançar alto nível de segurança num ambiente não controlado e plataforma insegura. As propriedades de votação online e muitas classificações diferentes que definem os requisitos mínimos já estão estabelecidas. Algumas dessas classificações são exatamente as mesmas propriedades sob diferentes nomes como: confidencialidade, integridade, privacidade, democracia, universalidade, verificabilidade, etc.. De quaisquer das formas, o objetivo é sempre conciliar duas propriedades aparentemente mutuamente exclusivas: verificabilidade e privacidade.”

A ideia fundamental por trás da votação online (termo vulgar ), ou votação em mobilidade (termo académico), é precisamente verificabilidade no sentido em que os votos devem ser criptografados e tornados públicos, de forma a que se possa convencer os eleitores sem margem para dúvidas de que todo o procedimento de votação e contagem dos votos foram realizados como pretendido. Vamos aprofundar neste artigo como isto pode ser alcançado recorrendo a criptografia aka matemágica.

Antes de ler o restante do artigo, sugerimos que assista à apresentação do professor Ron Rivest[1] até aos 5m:07s. Uma vez terminada, comecemos:​

Tabela pública criada após a votação e publicada numa blockchain tem este aspecto. Qualquer pessoa pode aceder-lhe e nelas estão encriptadas tanto as identidades dos eleitores como os seus votos.

Os eleitores conhecem univocamente a entrada correspondente ao seu voto e podem desencripta-la por forma a verificar que o seu nome se encontra representado correctamente.

Aqui v são os votos encriptados com a chave privada e E(v) é a criptografia adicional. Apenas E(v) é público e nunca v desencriptado!

E agora vem a matemágica…

Usando criptografia homomórfica em E(v1), E(v2), E(v3) e E(v4) podemos demonstrar que:

E(v1)+ E(v2) + E(v3) + E(v4) = E(v1+v2+v3+v4)

A contagem final é, portanto, D( E(v1+v2+v3+v4) ) onde D é a função inversa de E e que pode ser calculada por qualquer pessoa sem a necessidade de acessar v individualmente: D(E(v1) ), D(E( v2) ) etc., que só podem ser descriptografados usando as chaves privadas…

Criptografia de chave pública

Apenas os próprios eleitores podem descriptografar v individualmente e realmente verificar se seu próprio voto está registrado corretamente! Ou seja, os eleitores podem verificar ambos o seu voto de forma individual e a contagem final com privacidade e precisão!

Criptografia homomórfica

Uau! Posso verificar se o meu voto está correto! Mas como posso ter certeza de que os votos de outras pessoas também são legais sem usar as suas chaves privadas?

Digamos que atribuímos o valor 0 para designar reprovação de uma determinada proposta política que está sendo referendada e 1 para concordância, formando um conjunto de respostas possíveis {0,1}. Um verificador, que pode ser qualquer pessoa, pode querer ter a certeza de que todas as entradas publicadas na tabela correspondem a um elemento válido no conjunto de respostas possíveis e nada mais, como o seria uma entrada com valor 100. As provas de conhecimento zero (zero-knowledge proof) permitem precisamente isto. Para entender como podem ajudar primeiro será bom averiguar o que são então as ZKPs. “Em criptografia, uma prova de conhecimento zero ou protocolo de conhecimento zero é um método pelo qual uma parte (o provador) pode provar à outra parte (o verificador) que uma determinada afirmação é verdadeira, sem transmitir qualquer informação além do fato de que a afirmação é realmente verdadeira. A essência das provas de conhecimento zero é que é trivial provar que alguém possui conhecimento de certas informações simplesmente revelando-as. O desafio é provar tal posse sem revelar a própria informação ou qualquer informação adicional.”[2]

Pode parecer contraditório mas com ZKPs (provas de conhecimento zero) qualquer eleitor pode provar inequivocamente a validade do seu voto pois no digital, o voto nada mais é que um elemento de entre um conjunto que representa escolhas possíveis. Para aprofundar como as ZKPs podem e devem ser aplicadas ao voto em mobilidade sugerimos uma olhadela nos seguintes artigos [3], [4] pois abordam esta questão com mais detalhes. No fundo:

A técnica pode então ser estendida para incluir conjuntos maiores que {0,1}, preservando ainda assim as propriedades matemáticas da criptografia homomórfica e das provas de conhecimento zero simultaneamente (matemágica!), permitindo assim votações mais complexas do que as simples respostas sim, não / concordo, discordo, o que leva a usos interessantes, tais como eleições com vários candidatos, referendos que podem ter diferentes propostas de solução para um único problema, questionários em pesquisas de mercado, etc..

Acabamos de discutir como qualquer pessoa pode verificar a contagem final, se seu voto é o pretendido e se todos os outros votos foram legais, ao mesmo tempo, preservando a privacidade dos eleitores! A maneira como estes algoritmos são misturados preservando as suas propriedades criptográficas de forma mútua é uma questão complexa e requer um profundo conhecimento de criptografia. Todos os resultados criptográficos podem, e devem, ser demonstrados como matematicamente verdadeiros.[5]

Existem ainda outros detalhes e técnicas relativos à votação em mobilidade tais como o uso de endereços furtivos[6], necessários pelo menos em blockchains que mantêm todas as transações registadas publicamente, como Ethereum por exemplo. Estes endereços especiais são usados para evitar vincular eleitores e as suas carteiras. Mas consideramos isto um detalhe técnico, de interesse apenas dos desenvolvedores de software e não algo que todos os utilizadores de votação em mobilidade devam ter em mente, ao contrário dos outros protocolos mencionados anteriormente cujo conhecimento ajuda a construir confiança no sistema.

Como são as chaves privadas geradas e entregues ao eleitor sem comprometer a cibersegurança?

Em última análise, as chaves privadas precisam estar vinculadas à verdadeira identidade do usuário para evitar votação dupla. A primeira abordagem é simplesmente usar as PKIs fornecidas por autoridades confiáveis, como é o caso da identidade digital, eID, emitida pelos estados nações e embutida nos cartões inteligentes de identidade nacional… Até porque, certamente… As instituições públicas pensaram em seus próprios mecanismos para manter estas chaves seguras, certo?

De qualquer forma esta é uma questão mais relacionada com a própria identidade digital do que verificabilidade do processo de votação em si e iremos analisa-la num próximo artigo por forma a poupar o leitor de demasiados detalhes e manter a informação o mais organizada possível. Por agora basta notar que, embora identidade digital em si seja uma questão complexa, existem já maneiras de garantir com relativa confiança que a cada pessoa é atribuída uma única identidade digital através do cruzamento de informação entre várias entidades ditas confiáveis encumbidas da tarefa de atestar a identidade de uma pessoa (certidão de nascimento x passaporte x notários, etc.). Uma frase imortalizada em música por Bob Marley descreve com precisão o argumento que sustenta a confiança mínima nestas arquitecturas legacy:

“Você pode enganar algumas pessoas algumas vezes, mas você não pode enganar todas as pessoas o tempo todo”

O que acontece se um eleitor detectar fraude ou se for coagido fisicamente a votar de uma determinada maneira?

A primeira medida a ser tomada é disponibilizar um canal onde as pessoas possam denunciar estas situações por forma a que as ocorrências sejam levadas em consideração. Se forem marginais, representando 0,01% da totalidade dos votos, por exemplo, não representarão uma situação problemática realmente, a menos que se trate de um referendo muito sensível e que exija que os valores democráticos sejam absolutamente defendidos, onde a contagem final esteja próxima ao equivalente de uma situação 50/50. Ainda assim, poderia mitigar-se o problema exigindo que o consenso da maioria seja superior, como 55/45 por exemplo, para que uma determinada votação seja considerada válida.

No cenário em que alguém observe que o seu voto foi publicado incorretamente, assumindo que todo o aparato é suportado por blockchain e, portanto, não está sob o controle de um determinado administrador de sistema ou prestador do serviço, a abordagem mais razoável é assumir que a própria máquina dos eleitores está comprometida e não toda a rede blockchain em si (embora não seja impossível enquanto houver monopólio dos fabriantes de chips). As medidas de proteção mais diretas a serem tomadas são então o eleitor trocar a sua máquina e/ou SO.

Este tipo de problemas estão relacionados com ameaças de segurança cibernética mais comuns tais como engenharia social e malware. O uso de hardware e software de código aberto é portanto recomendado, bem como o uso de um sistema operacional amnésico[7]. O software amnésico retorna sempre ao seu estado inicial quando desligado e portanto, mesmo que os eleitores instalem malware involuntariamente clicando e executando um vírus por exemplo, a reinicialização da máquina reverte o software para uma configuração inalterada, mitigando efetivamente estas ocorrências.

Outra situação que pode ser considerada é uma situação em que o eleitor é coagido a votar de uma certa maneira, seja fisicamente ou por chantagem. A única abordagem para se defender contra a coerção que não seja viver numa sociedade decente é permitir que a revotação ocorra durante uma mesma votação. Existem pesquisas[8] nesta área que propõem soluções neste sentido pese embora ainda não existam formas de mesclar esta técnica com todas as outras mencionadas em cima, pelo menos do nosso conhecimento. Certamente haverá um caminho. Alternativamente reabrir a fase de votação e anular o referendo é sempre uma possibilidade face a um cenário apocalíptico. Deve-se notar ainda que impedir a coerção também impediria a venda de votos, por razões óbvias.

Em retrospectiva, a votação em mobilidade em cibersegurança pode até ser mais confiável do que a votação em papel por causa das suas propriedades de verificabilidade. Na votação em papel, depois de votar, o eleitor não tem como verificar a contagem final a não serem os membros da mesa de voto. A fraude é algo que acontece conforme relatado pela The Heritage Foundation nos EUA, por exemplo[9] ou conforme relatado na televisão nacional em Portugal[10] ou muito recentemente exposto por uma cidadã em Angola[11]. Na China, a votação, em papel ou online, é simplesmente inexistente. A Austrália também não escapa.[12] Este é um problema que abrange todos os continentes. Outro argumento convincente a favor do voto em mobilidade é considerar a informação contida no relatório Democratic Index publicado pela divisão Intelligence Unit (EIU) do jornal The Economist, que afirma que apenas 8,4% da população mundial vive em um regime que pode ser considerado ser uma democracia plena.[13]

Não defendemos o abandono completo do voto em papel mas antes somos a favor da coexistência de ambos. A adoção do voto em mobilidade na política como uma ferramenta complementar seria capaz de gerar consenso muito mais rapidamente e sem causar o desconforto de ter que se deslocar à urna, sendo ao mesmo tempo uma fonte alternativa confirmando os resultados da votação em papel.

Estaremos prontos?

Como o cientista de computação Jeffrey Dean afirmou de forma eloquente:

“A força motriz por trás das cifras de computador modernas não é a segurança, mas a eficiência. A questão não é se você pode criar uma cifra segura. Você pode. A questão é se você pode criar uma cifra que funcione eficientemente em grandes conjuntos de dados ou em hardware limitado”

O desafio da tecnologia blockchain é precisamente a sua capacidade de escalar à medida que a base de utilizadores e consequentemente a demanda por computação crescem. As implementações atuais de algoritmos criptográficos em votação online apoiadas em blockchain estimam os custos em cerca de $10 por voto, conforme experiências em Ethereum.[14] Aqui na NERV acreditamos que melhorias podem ser feitas para reduzir este valor abaixo dos $1 fazendo uso de uma blockchain mais rápida e barata, como Algorand, bem como ajustando os algoritmos matemáticos subjacentes.

Ao longo da história a criptografia desempenhou um papel importante na mudança de curso dos eventos. A cifra de César, uma das criptografias mais simples é famosa por ter sido usada pelo imperador romano, há dois milênios. A capacidade dos Aliados de interceptar e descifrar mensagens encriptadas pela máquina de codificação japonesa Purple e pela alemã Enigma foi crucial para fornecer a vantagem chave necessária para acabar a Segunda Guerra Mundial.

Para aqueles que sabem programar e estão interessados em aprender mais, sugerimos a leitura de um artigo de pesquisa da nossa autoria.[15] Sugerimos também brincar com o código aberto CryptoBallot para se familiarizar com este tipo de software.[16]

Em conclusão, o voto em mobilidade em cibersegurança não é apenas possível, mas altamente necessário. A sua adoção no espaço político tem o potencial de ser um dos eventos mais disruptivos das nossas vidas como foi o aparecimento da internet… Tudo o que você precisa é confiar nos algoritmos executados no seu computador e na rede blockchain e, se não confiar, sempre poderá fazer as contas com uma caneta e papel você mesmo.

Referências:

[1] “Was YOUR vote counted? (feat. homomorphic encryption)” pelo professor Ron Rivest, Numberphile, no YouTube, 2016. https://www.youtube.com/watch?v=BYRTvoZ3Rho

[2] Prova de conhecimento zero entrada na Wikipedia, https://pt.wikipedia.org/wiki/Prova_de_conhecimento_zero

[3] “How to use ZKP to prove set membership without exposing the set or the member” por Anders Borch, blogue do autor, 2019. https://blog.cyborch.com/how-to-use-cryptographic-accumulators-to-prove-set-membership-without-exposing-the-set-or-the-member/

[4] “Zero-Knowledge Proofs for Set Membership” por Dario Fiore, em ZKProof Standards, 2020. https://zkproof.org/2020/02/27/zkp-set-membership/

[5] “Non-interactive Zero-Knowledge from Homomorphic Encryption” por Ivan Damg ̊ard et al., Theory of Cryptography Conference, 2006. https://cs.nyu.edu/~nicolosi/papers/NonIntSi.pdf

[6] “O que é um endereço furtivo?” por Javier Ricardo, pagina Economia e Negocios, 2021. https://economiaenegocios.com/o-que-e-um-endereco-furtivo/

[7] Tails (operating system) entrada na Wikipedia, https://pt.wikipedia.org/wiki/Tails_(Linux)

[8] “VoteAgain: A scalable coercion-resistant voting system” por Wouter Lueks et al., Spring Labs, Universidad Carlos III de Madrid, 2020. https://arxiv.org/pdf/2005.11189.pdf

[9] The Heritage Foundation, https://www.heritage.org/

[10] “Ainda mais indícios de fraude nas Legislativas 2022?” entrada no YouTube, Portugal, 2022. https://www.youtube.com/watch?v=L8fA9aOuR9k

[11] “AnaKarina denuncia “FRAUDE ELEITORAL” por parte da CNE” entrada no YouTube, Angola, 2022. https://www.youtube.com/watch?v=hLm8ocLgXCU

[12] “Frequently Asked Questions — Voter Fraudhttps://www.voteaustralia.org.au/faq_voter_fraud

[13] “Democracy Index 2020: In sickness and in health?” relatório pelo The Economist Intelligence Unit, 2020. https://www.eiu.com/n/campaigns/democracy-index-2020/

[14] “ethVote: Towards secure voting with distributed ledgers” por Johannes Mols et Emmanouil Vasilomanolakis, Aalborg University, Denmark, 2020. https://www.researchgate.net/publication/341000573_ethVote_Towards_secure_voting_with_distributed_ledgers

[15] “Remote e-voting overview” pela NERV, uma submissão para a conferência 14a ICEGOV em 2021, https://ia601401.us.archive.org/33/items/remote-e-voting-overview/Remote%20e-voting%20overview.pd

[16] CryptoBallot, https://github.com/cryptoballot/cryptoballot

--

--