/logs-transparentes

Transparency and auditability of electoral data

Primary LanguageJavaScript

Logs Transparentes para transparência dos dados

Sistema baseado em árvores de Merkle para promover maior transparência e auditabilidade dos dados.

Visão geral

Esse protótipo é aplicado à eleição brasileira. Assim, armazena de forma transparente os Boletins de Urna (resultado dos votos registrados na urna), e permite verificar a sua integridade. Também permite recontabilizar o resultado da eleição.

Instalação

Instruções para instalação e inicialização da ferramenta nas distribuições linux Ubuntu:

Dependências

1. nodejs

sudo apt update
sudo apt -y install curl dirmngr apt-transport-https lsb-release ca-certificates
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs

2. Mongodb

curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt update
sudo apt install mongodb-org
sudo systemctl start mongod.service
sudo systemctl start mongod

3. Python3, pip e dependências

O Ubuntu a partir da versão 20.04 vêm com o Python3 pré-instalado.

sudo apt install python3
sudo apt install python3-pip
pip install -r bu_json_maker/requirements.txt

4. Git

sudo apt-get install git

Download

git clone https://github.com/larc-tse/logs-transparentes.git

Inicialização

O sistema é composto por 4 diferentes partes que atuam em conjunto. Abrindo um terminal no diretório do projeto para cada módulo, execute:

1. Back-end

cd bu_backend/
npm install
npm start

2. Merkle Tree

cd merkleTree/
npm install
npm start

3. Front-end

Requisitos: node versão 10.19.0

cd bu_frontend/
npm install
npm start

Utilização

Na tela inicial, é possível visualizar o resultado parcial da eleição. É possível também visualizar a raiz atual da árvore de Merkle, utilizada nas provas de inclusão e consistência.

Outras funcionalidades podem ser acessadas no menu lateral

  • Consultar BU
  • Consultar Cidade
  • Histórico da árvore
  • Recontabilizar

Entretanto, antes de utilizá-las, é preciso inserir alguns dados na aplicação

Popular árvore e BD

O protótipo oferece suporte a dados reais das eleições brasileiras, para isso, consultar a documentação para inserção de dados reais.

cd bu_json_maker
python3 bu_bd_scripts.py

Consultar e Verificar BU

Essa funcionalidade permite ao usuário encontrar o BU desejado, selecioná-lo, e acessar informações adicionais sobre ele (e.g., votos registrados na urna).

Também é possível fazer a sua prova de inclusão, verificando a sua integridade. O resultado é evidenciado pelas imagens abaixo:

Prova válida Prova Inválida
cad-verde cad-vermelho

bu_verificar

Consultar cidade

Essa interface permite que o usuário selecione uma cidade de preferência e verifique o resultado da eleição nela.

Assim que selecionado, é feita uma verificação parcial cujo resultado é explicitado pela imagem dos cadeados, da mesma forma que em "Consultar e verificar BU". Ao clicar no cadeado, é possível visualizar os dados referentes a prova, como na imagem:

Consultar cidade

Também é disponível ao usuário um botão que redireciona a uma prova completa dos BUs referente a cidade selecionada.

Histórico da árvore

Essa funcionalidade permite aos monitores que realizem as provas de consistência na Merkle Tree, desse modo monitorando as alterações na raiz da árvore.

Ao clicar em "Verificar integridade", a aplicação validará todas as provas de consistência publicadas pelo backend. A cada publicação verificada, o resultado será renderizado na tela, como na imagem:

Histórico da árvore

Abaixo da tabela, é mostrado os dados referentes a cada prova de consistência verificada.

Reapuração

Essa funcionalidade permite recalcular os votos da eleição. Ao se iniciar a recontabilização, todos os BUs serão baixados do banco de dados. Então, as seguintes verificações serão realizadas:

  • Prova de inclusão do BU;
  • Comparação entre a quantidade de BUs recebidas com a quantidade de folhas na Merkle Tree.

Se não houver erros, o resultado final será exibido.

recontabilizacao