Análise do Aplicativo Prévias PSDB 2021

Overview

Análise do Aplicativo Prévias PSDB 2021

Com a recente polêmica sobre o aplicativo usado nas Prévias do PSDB de 2021, fiquei curioso para saber como era o fluxo de registro e votação, a fim de inferir se o aplicativo seguia algumas das boas práticas para votações pela internet.

Para isso, baixei o aplicativo na Play Store e extraí o base.apk do meu celular. Não vou distribuir esse arquivo para não correr o risco de violar os direitos autorais de ninguém. Para verificar se você tem a mesma versão que eu, confira os hashes:

$ md5sum base.apk
c558a1b54505ae97dd4c6a6ebd428a56  base.apk
$ sha1sum base.apk
9ea63858973d58b9001ca5af4adb5f6315ecb93d  base.apk
$ sha256sum base.apk
25f2b4b3ed1bd356246b8eed21b43208a15cc205f04f30be6b038f12f5e7a456  base.apk

Para testar o fluxo de votação no seu próprio computador, copie o arquivo base.apk para o diretório client. Em seguida, execute make dentro do diretório client em um terminal, e make dentro do diretório server em outro. Por fim, acesse http://localhost:8080. Coloque seu navegador em modo de desenvolvimento mobile se quiser ver as telas da forma como ficariam formatadas em um celular.

Telas do aplicativo

Importante: Não sou detentor dos direitos autorais do layout das telas ou dos logotipos abaixo exibidos. Estes são de propriedade exclusiva do PSDB, reproduzidos aqui apenas para fins de estudo, crítica ou polêmica. Fotos do cachorro são de propriedade da Netflix, retiradas da obra Cowboy Bebop. Fotos do Darth Miau usadas com autorização.

Fluxo de registro do eleitor

  1. O eleitor insere o número do título de eleitor

  1. O aplicativo informa que se trata do primeiro acesso

  1. O eleitor preenche zona, UF e telefone celular

  1. O aplicativo pede para o eleitor enviar foto da frente e do verso do documento, além de uma foto segurando o documento

  1. Uma vez carregadas as fotos, é possível avançar e concluir o registro

Fluxo de votação

  1. O eleitor insere o número do título de eleitor

  1. O eleitor tira uma selfie

  1. O eleitor preenche um código recebido por SMS

  1. Aparece o menu principal

  1. O eleitor seleciona uma eleição

  1. O eleitor escolhe um candidato

  1. O eleitor confirma o candidato escolhido

  1. O eleitor tira novamente uma selfie

  1. O eleitor preenche novamente um código recebido por SMS

  1. Aparece um comprovante de voto

Análise e discussão

Importante: A análise abaixo é pautada exclusivamente no comportamento do cliente que foi observado interagindo com um servidor local mockado de minha própria autoria. Em momento algum tive acesso ao código fonte do servidor ou a respostas de requisições ao servidor real. É importante ressaltar que as críticas abaixo realizadas não implicam necessariamente na possibilidade de violar a votação ou de se passar por eleitores em larga escala.

Autenticação do eleitor

As seguintes informações são enviadas para o servidor e podem estar sendo usadas para autenticar o eleitor (é impossível afirmar com certeza quais estão sendo de fato usadas sem observar o comportamento do servidor):

  • UUID da instalação do aplicativo gerado usando Math.random().
  • Informações do dispositivo, contendo fabricante, sistema operacional, versão do SO.
  • Título de eleitor.
  • Selfie do eleitor.
  • Código recebido por SMS no celular do eleitor.

Podemos mencionar algumas limitações a respeito do uso dessas informações para autenticação:

  • A função Math.random() não é criptograficamente segura.
  • Informações do dispositivo podem ser inferidas se você souber qual o modelo de celular do eleitor ou convencê-lo a acessar determinado site.
  • O TSE costumava publicar (link quebrado) uma lista com o título de eleitor de todos os filiados de cada partido.
  • O servidor dispõe de poucas informações para treinar um algoritmo de reconhecimento facial, provavelmente só a selfie tirada com o documento ao realizar o registro na votação. Isso significa que o algoritmo ou é extremamente tolerante (deixa passar qualquer rosto minimamente parecido com o eleitor), ou extremamente rígido (não aceita nem uma selfie legítima do eleitor).

No entanto, o uso de múltiplo fator de autenticação é um ponto positivo da solução implementada.

Registro do voto

O servidor tem acesso ao voto às claras, em outras palavras, o servidor tem acesso a informações suficientes para inferir (dependendo do software ou hardware que estiver instalado nele) qual voto foi depositado pelo eleitor:

A chave de verificação que consta no comprovante de voto não tem correlação com o candidato escolhido pelo eleitor, logo não é possível ter certeza que o voto contabilizado realmente corresponde à escolha do eleitor.

Em resumo, trata-se de um sistema similar a um sistema de enquetes.

Conclusões

Diante das críticas apresentadas acima, recomenda-se ao PSDB substituir o aplicativo atualmente utilizado por uma plataforma consagrada, de código aberto e verificável fim-a-fim, como o Helios Voting, para realizar suas Prévias. No Brasil, há larga experiência no uso dessa plataforma em universidades como o IFSC, a UFSCar, a USP, a Unicamp, dentre diversas outras.

A verificabilidade fim-a-fim é considerada um requisito essencial para um sistema de votação online. Sistemas verificáveis fim-a-fim, como o Helios, fornecem um código de rastreamento que provê uma garantia criptográfica ao eleitor de que seu voto foi realmente contabilizado no resultado final.

Owner
Paulo Matias
Assistant Professor of Computer Science and Engineering at @ufscar. Obtained my PhD at @neurobiofisica. Ham radio operator PU2UID. CTF player for @epicleet.
Paulo Matias
Structured, dependable legos for Starknet development.

cairomate • Structured, dependable legos for starknet development. Directory Structure contracts ├─ defi │ ├─ ChainlinkPriceOracle — "Simple price or

andreas 127 Nov 23, 2022
Controller state monitor plugin for EVA ICS

eva-plugin-cmon Controller status monitor plugin for EVA ICS Monitors connected controllers status in SFA and pushes measurements into an external Inf

Altertech 1 Nov 06, 2021
propuestas electorales de los candidatos a constituyentes, Chile 2021

textos-constituyentes propuestas electorales de los candidatos a constituyentes, Chile 2021 Programas descargados desde https://elecciones2021.servel.

Sergio Lucero 6 Nov 19, 2021
Tracking development of the Class Schedule Siri Shortcut, an iOS program that checks the type of school day and tells you class scheduling.

Class Schedule Shortcut Tracking development of the Class Schedule Siri Shortcut, an iOS program that checks the type of school day and tells you clas

3 Jun 28, 2022
CNKD - Minimalistic Windows ransomware written in Python

CNKD Minimalistic Windows ransomware written in Python (Still a work in progress

Alex 2 May 27, 2022
Dump Data from FTDI Serial Port to Binary File on MacOS

Dump Data from FTDI Serial Port to Binary File on MacOS

pandy song 1 Nov 24, 2021
A python tool that creates issues in your repos based on TODO comments in your code

Krypto A neat little sidekick python script to create issues on your repo based on comments left in the code on your behalf Convert todo comments in y

Alex Antoniou 4 Oct 26, 2021
Kivy program for identification & rotation sensing of objects on multi-touch tables.

ObjectViz ObjectViz is a multitouch object detection solution, enabling you to create physical markers out of any reliable multitouch solution. It's e

TangibleDisplay 8 Apr 04, 2022
Dyson Sphere Program Blueprint Toolkit

dspbptk This is dspbptk, the Dyson Sphere Program Blueprint toolkit. Dyson Sphere Program is an amazing factory-building game by the incredibly talent

Johannes Bauer 22 Nov 15, 2022
Airbrake Python

airbrake-python Note. Python 3.4+ are advised to use new Airbrake Python notifier which supports async API and code hunks. Python 2.7 users should con

Airbrake 51 Dec 22, 2022
UdemyPy is a bot that hourly looks for Udemy free courses and post them in my Telegram Channel: Free Courses.

UdemyPy UdemyPy is a bot that hourly looks for Udemy free courses and post them in my Telegram Channel: Free Courses. How does it work? For publishing

88 Dec 25, 2022
Persian Kaldi profile for Rhasspy built from open speech data

Persian Kaldi Profile A Rhasspy profile for Persian (fa). Installation Get started by first installing Vosk: # Create virtual environment python3 -m v

Rhasspy 12 Aug 08, 2022
Search and Find Jobs in Ethiopia

✨ EthioJobs ✨ Search and Find Jobs in Ethiopia Easy start critical warning Use pycharm No vscode No sublime No Vim No nothing when you want to use

Abdimk 12 Nov 09, 2022
A deployer and package manager for OceanBase open-source software.

OceanBase Deploy OceanBase Deploy (简称 OBD)是 OceanBase 开源软件的安装部署工具。OBD 同时也是包管理器,可以用来管理 OceanBase 所有的开源软件。本文介绍如何安装 OBD、使用 OBD 和 OBD 的命令。 安装 OBD 您可以使用以下方

OceanBase 59 Dec 27, 2022
emoji-math computes the given python expression and returns either the value or the nearest 5 emojis as measured by cosine similarity.

emoji-math computes the given python expression and returns either the value or the nearest 5 emojis as measured by cosine similarity.

Andrew White 13 Dec 11, 2022
Data-driven Computer Science UoB

COMS20011_2021 Data-driven Computer Science UoB Staff Laurence Aitchison [ 6 May 16, 2022

basic tool for NFT. let's spam, this is the easiest way to generate a hell lotta image

NFT generator this is the easiest way to generate a hell lotta image buckle up and follow me! how to first have your image in .png (transparent backgr

34 Nov 18, 2022
How to use Microsoft Bing to search for leaks?

Installation In order to install the project, you need install its dependencies: $ pip3 install -r requirements.txt Add your Bing API key to bingKey.t

Ernestas Kardzys 2 Sep 21, 2022
Persistent/Immutable/Functional data structures for Python

Pyrsistent Pyrsistent is a number of persistent collections (by some referred to as functional data structures). Persistent in the sense that they are

Tobias Gustafsson 1.8k Dec 31, 2022
Simple control of Thorlabs Elliptec devices from Python.

Elliptec Simple control of Thorlabs Elliptec devices. No docs yet » Get started · Report a bug · Request a feature About The Project ThorLabs Elliptec

David Roesel 8 Sep 22, 2022