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
디텍션 유틸 모음

Object detection utils 유틸모음 설명 링크 convert convert 관련코드 https://github.com/AI-infinyx/ob_utils/tree/main/convert crawl 구글, 네이버, 빙 등 크롤링 관련 https://gith

codetest 41 Jan 22, 2021
Covid-19-Trends - A project that me and my friends created as the CSC110 Final Project at UofT

Covid-19-Trends Introduction The COVID-19 pandemic has caused severe financial s

1 Jan 07, 2022
Random pass word generator made with python. PyQt5 module is used to design GUI.

Differences in this GUI program : Default titlebar removed Custom Minimize,Maximize and Close Buttons Drag & move window from any point Program work l

Dimuth De Zoysa 1 Jan 26, 2022
World Happiness Report is a publication of the Sustainable Development Solutions Network

World-Happiness-Report We are going to visualise what are the factors and which

Shubh Almal 1 Jan 03, 2023
A simple app that helps to train quick calculations.

qtcounter A simple app that helps to train quick calculations. Usage Manual Clone the repo in a folder using git clone https://github.com/Froloket64/q

0 Nov 27, 2021
Model synchronization from dbt to Metabase.

dbt-metabase Model synchronization from dbt to Metabase. If dbt is your source of truth for database schemas and you use Metabase as your analytics to

Mike Gouline 270 Jan 08, 2023
redun aims to be a more expressive and efficient workflow framework

redun yet another redundant workflow engine redun aims to be a more expressive and efficient workflow framework, built on top of the popular Python pr

insitro 372 Jan 04, 2023
Comics/doujinshi reader application. Web-based, will work on desktop and tablet devices with swipe interface.

Yomiko Comics/doujinshi reader application. Web-based, will work on desktop and tablet devices with swipe interface. Scans one or more directories of

Kyubi Systems 26 Aug 10, 2022
Boamp-extractor - Script d'extraction des AOs publiés au BOAMP

BOAMP Extractor BOAMP-Extractor permet d'extraire les offres de marchés publics publiées au bulletin officiel des annonces des marchés publics (BOAMP)

Julien 3 Dec 09, 2022
This is an implementation of PEP 557, Data Classes.

This is an implementation of PEP 557, Data Classes. It is a backport for Python 3.6. Because dataclasses will be included in Python 3.7, any discussio

Eric V. Smith 561 Dec 06, 2022
In this project , I play with the YouTube data API and extract trending videos in Nigeria on a particular day

YouTubeTrendingVideosAnalysis In this project , I played with the YouTube data API and extracted trending videos in Nigeria on a particular day. This

1 Jan 11, 2022
My custom Fedora ostree build with sway/wayland.

Ramblurr's Sway Desktop This is an rpm-ostree based minimal Fedora developer desktop with the sway window manager and podman/toolbox for doing develop

Casey Link 1 Nov 28, 2021
Build a grocery store management application.

python_projects_grocery_webapp In this python project, we will build a grocery store management application. It will be 3 tier application, Front end:

codebasics 54 Dec 29, 2022
This program can calculate the Aerial Distance between two cities.

Aerial_Distance_Calculator This program can calculate the Aerial Distance between two cities. This repository include both Jupyter notebook and Python

InvisiblePro 1 Apr 08, 2022
Yandex Media Browser

Браузер медиа для плагина Yandex Station Включайте музыку, плейлисты и радио на Яндекс.Станции из Home Assistant! Скриншот Корневой раздел: Библиотека

Alexander Ryazanov 35 Dec 19, 2022
A python script made for personal use to monitor for sports card restocks on target.com since they are sold out often

TargetProductMonitor A python script made for personal use to monitor for sports card resocks on target.com since they are sold out often. When a rest

Bryan Lorden 2 Jul 31, 2022
Delayed iteration for polling and retries.

Does Python need yet another retry / poll library? It needs at least one that isn't coupled to decorators and functions. Decorators prevent the caller

A. Coady 22 Dec 29, 2022
A python script for practicing Toki Pona.

toki.py A python script for practicing Toki Pona. Modified from a hirigana script by ~vilmibm. Example of the script running: $ ./toki.py This script

Dustin 2 Dec 09, 2021
Simple AoC helper program you can use to develop your own solutions in python.

AoC-Compabion Simple AoC helper program you can use to develop your own solutions in python. Simply install it in your python environment using pip fr

Alexander Vollmer 1 Dec 20, 2021
Custom component to calculate estimated power consumption of lights and other appliances

Custom component to calculate estimated power consumption of lights and other appliances. Provides easy configuration to get virtual power consumption sensors in Home Assistant for all your devices w

Bram Gerritsen 552 Dec 28, 2022