Gravação de vídeo de auditoria para as Eleições Gerais de Reitor e Diretores Gerais do IFSP - 2020

Softwares utilizados:
Sistema de virtualização: VMware vSphere versão 6.5 compilação 7967591
Sistema Operacional: Windows 10 versão 2004 compilação 19041.572
Software de Captura: OBS versão 26.0.2
Navegador: Google Chrome versão 86.0.4240.111

1) Introdução

Este documento tem por objetivo elencar os recursos técnicos e atividades utilizadas para realizar a gravação de vídeo de auditoria do sistema Helios Voting, utilizado nas eleições gerais para Diretor e Reitor do IFSP em 2020.

Todos os passos abaixo foram concebidos e utilizados para a realização da gravação de vídeo de auditora das eleições gerais para Diretor e Reitor do IFSP em 2020 e solicitados pela Comissão Técnica para as Eleições de Reitor e Diretores Gerais de 2020.

2) Preparação do ambiente

Para realizar as gravações de forma a não receber qualquer estímulo externo, de que seja acessível a equipe responsável pela execução da tarefa (e somente ela) assim como se certificar de que o sistema operacional instalado esta em seu estado padrão de fábrica (sem influência de software de terceiros alheios as necessidades da gravação), foram executadas as seguintes tarefas:

3) Criação de máquina Virtual em rede e servidor seguros dentro do Data-Center do IFSP

A máquina virtual possui diversas vantagens para casos como este, ela é isolada do resto da infraestrutura, pode ser feito backup e restauro rápido da estação em caso de falhas nos softwares e também é possível a migração de servidor em caso de falha no Hardware.

Hardware físico selecionado para atividade:

Modelo: Dell PowerEdge R730
Processador: (2X) Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
Memória: 256GB DDR4 @ 2400MHz
Rede: Placa QuadPort @ 1Gbit
Storage: EMC Unity 400 - 18TB

Hardware virtual selecionado para a atividade:

Compatiblidade: ESXi 6.5 and later (VM version 13)
Processodor: 8 vCPUs
Memória: 16GB
Disco: 120 GB
Rede: E1000E @ 1Gbit

4) Instalação do Sistema Operacional

A instalação do Sistema Operacional deve ser realizada utilizando o arquivo ISO baixado diretamente do site oficial da desenvolvedora, no caso, a Microsoft.
Após a instalação foram realizadas as etapas de configuração de endereçamento de rede e a aplicação de todos os updates do sistema operacional disponíveis na data.
O acesso a máquina virtual após a instalação foi feito via RDP dentro de conexão VPN.

O sistema deve ser configurado com uma conta local e não com uma conta Microsoft.

A resolução do monitor foi configurada para 1920 x 1080 para se adequar a resolução da gravação do vídeo e evitar um custoso redimensionamento.

5) Instalação de utilitários de Máquina Virtual

Utilitários de máquina virtual, tais como o VMware Tools (utilizado no nosso caso), incluem os drivers e softwares de integração necessários para o melhor desempenho e controle da maquina virtual e são importantes para o bom funcionamento do software de gravação.

A instalação destes utilitários pode variar de acordo com o sistema de virtualização utilizado, no caso da VMware ele é integrado ao Hypervisor da VMware através de uma mídia ISO anexada automaticamente a VM.

6) Instalação e configuração do software de gravação de vídeos

O Software de gravação de vídeos escolhido foi o Open Broadcaster.
Entre os motivos da escolha deste software foi sua natureza Open-Source e seu reconhecimento no mercado.
A instalação é bastante simples e intuitiva, não requerendo um tutorial para tal, sua única peculiaridade é que após a primeira inicialização, o software irá questionar para qual ambiente suas configurações devem ser otimizadas, escolha a opção "Otimizar somente para gravação, eu não farei transmissão".
Após a instalação foi adicionado o objeto da "captura de tela" na aba "Fontes", conforme imagem abaixo:

image-1604527385358.png

Feita a inserção do objeto, passamos para a janela de configurações, onde pudemos definir as especificações para a gravação do vídeo:

image-1604527407525.png

image-1604527420398.png

image-1604527434417.png

A partir deste ponto basta clicar em "iniciar gravação" para que uma captura da tela atual se inicie.

7) Objetos a serem apresentados na gravação de vídeo

O objetos e serem demonstrados estão sujeitos as definições da Comissão Técnica para as Eleições e podem variar.
No caso do IFSP, a comissão determinou que a gravação deveria demonstrar:

7.1) Mostrar a hora certa da gravação acessando o site ntp.br e mostrando a Hora Certa do mesmo

Esta parte foi modificada de forma a englobar, além do site NTP sitado, também o site da "Hora Legal Brasileira" do Ministério da Ciência e Tecnologia (LINK).

7.2) Executar o comando 'traceroute' a partir do console do servidor onde está a instalação do Helios Voting para uma autoridade certificadora.
Adicionalmente usar 'traceroute' ou 'tracert' da máquina local para a URL do site de votação;

O Software do Helios Voting foi instalado em um container Docker, cujo console é acessível via interface de gerenciamento web fornecida pelo software Portainer.

Para esta tarefa, demonstramos a execução dos seguintes comandos em vídeo, estendendo o solicitado:

No console do container Docker Linux que hospeda o serviço do Helios Voting:

traceroute -I globalsign.com
traceroute -I helios.ifsp.edu.br

Em sequencia sinalizamos a saída do comando.

E na estação de gravação Windows:

tracert globalsign.com
tracert -4 golbalsign.com
tracert helios.ifsp.edu.br
tracert -4 helios.ifsp.edu.br

Em sequencia sinalizamos a saída do comando.

7.3) Executar o script/comando de 'hash' sobre a instalação do Helios Voting em execução

Foi desenvolvido um script de geração de Hash pela equipe de instalação do Helios Voting, este script gera uma Hash dos arquivos do container em questão e estes deveriam bater com o hash gerado durante a implantação do container via CI/CD a partir do seu código armazenado no GitLab.

O Código do script em questão:

find . -path ./sitestatic -prune -o -type f \( -name '*.py' -o -name '*.js' -o -name '*.html' \) -print0 | sort -z | xargs -0 sha256sum | sha256sum 2>&1 | tee SHA256SUMS.txt

Para realizar esta demanda durante o vídeo, acessamos a interface de gerenciamento do Portainer e através dela nos conectamos ao container do Hélios Voting, especificamente o container que hospeda o código em Django.
A partir dai executamos um comando "cat" no script citado acima para mostrar seu conteúdo.
Em sequencia executamos o script e demonstramos sua saída, esta deve bater com o hash armazenado no GitLab.

7.4) Enviar o hash para o email da comissão técnica.

A Comissão Técnica para as Eleições deve fornecer um email para que o hash demonstrado no vídeo seja copiado e enviado para registro.

7.5) Disposição dos itens na tela

Com exceção do prompt de comando (ou Powershell) do Windows, utilizado para executar o comando de "tracert" listado no item 7.2, todas as outras interfaces são acessíveis via Navegador.
A disposição das janelas foi definida de forma a facilitar a visualização do espectador, todas as janelas foram ancoradas conforme a imagem abaixo, facilitadas pela utilização do recurso "Snap" do Windows:

image-1604527447562.png

A escala de zoom das janelas superiores e laterais da direita foram ajustavas para 80% para facilitar a visualização

8) Backup e armazenamento das Bases de Dados

A Comissão Técnica para as Eleições solicitou também a realização de Backups das databases utilizadas pelo Helios Voting durante as eleições, estes backups deveriam ser realizados em sequencia a cada gravação de vídeo (consultar frequência no item 9).

9) Da frequência das gravações

As urnas ficaram disponíveis para votação durante 24 horas, das 12:00 do primeiro dia até as 12:00 do segundo dia de votação.
Os procedimentos de gravação citados acima deverão ser executados três vezes, sendo a primeira vez dentro de 30 minutos após o início da votação, a intermediária na noite do primeiro dia (21:00), e a última nos 30 minutos antes do encerramento da votação.

Sugerimos adicionar gravações também 30 minutos antes da abertura das urnas e outra 30 minutos antes do encerramento.

10) Da disponibilização das gravações

Segundo a Comissão Técnica para as Eleições, as gravações deverão ser disponibilizadas à comunidade em site público sem necessidade de cadastro.
Devido a informações sensíveis a segurança da informação do IFSP, foi criado um documento de responsabilidade e as gravações foram apresentadas e disponibilizadas somente ao membros da Comissão Técnica para as Eleições.

Após a conclusão de cada gravação de vídeo, utilizamos o conversor do próprio OBS para converter o vídeo no formato "MP4" a partir do padrão gerado pelo programa (MKV) e o armazenamos em uma pasta segura no nosso sistema de armazenamento de arquivos.
A conversão visa tornar o vídeo mais "acessível", utilizando um formato mais difundido na indústria.

Para converter o vídeo para MP4, clique no menu "Arquivo (F)" -> "Converter Gravações (M)", em seguida selecione o arquivo a ser convertido e clique em "Converter":

image-1604527464596.png

11) Script de gravação do vídeo

Nesta seção iremos sumarizar todas as etapas explicadas acima em um script de gravação.

11.1) Da preparação do ambiente

Antes de começar Devemos preparar as janelas do ambiente para se adequarem ao descrito no item 7.5, porém, além destas janelas, optamos por adicionar uma janela de navegador em tela cheia com a página do sistema SUAP aberta, ao logar no sistema o operador da gravação poderá garantir sua identificação, já que terá de utilizar seu usuário e senha para se logar no sistema.

Lembre-se de já deixar o usuário de administração de cada sistema utilizado previamente autenticado para facilitar o processo.

As gravações realizadas no IFSP durante as eleições gerais de 2020 não possuíam gravação de voz, para chamar a atenção para algum detalhe ou frisar algum item, simplesmente o circulávamos com o mouse.

11.2) Etapas

11.2.1) Após clicar no botão Gravar, certifique-se de mostrar o programa OBS, frisando a versão do programa e a configuração de gravação de tela definida.

11.2.2) Em seguida, minimize a janela do OBS e mostre a janela do SUAP (ou outro sistema que comprove a identidade do operador), você deve fazer a recarga da página e em seguida logar-se no sistema, frisando sua identificação.

11.2.3) Em seguida, minimize a janela do SUAP e já diretamente a janela do "ntp.br", faça a recarga da janela e frise a hora mostrada e principalmente o indicador que mostra "A hora do seu computador está correta".

11.2.4) Prossiga para a janela do "Hora-Certa" do MCT, posicione o mouse na aba do navegador de forma a mostra a URL da pagina por alguns segundos.
Na sequencia, recarregue a página e frise a data e hora mostrada, frisando também o relógio do sistema Windows, mostrando que estão iguais.

11.2.5) Em seguida, prossiga para as janelas da direita, mostrando as páginas do "Gitlab/Helios-Voting", frisando suas URLs e fazendo suas recargas.
Na sequencia acesse na janela superior direita e acesse a área "Repository" -> "Tags" do projeto, frisando em seguida a tag da versão do sistema utilizada para construir o container utilizado na votação, dê atenção especial ao hash da tag.
Após isto volte sua atenção a janela inferior direita, nela você deve acessar a área "CI/CD" -> "Jobs".
Nesta janela, mostre que você está a demonstrar o processo de build da mesma tag da janela acima, frise isto.
Ao clicar na tag, procure no log exibido a seção que irá mostrar a execução do script de hash durante a construção do container, frise que os HASHs de ambas as janelas coincidem.

11.2.6) Volte sua atenção para a janela do Portainer (ou do sistema que for utilizar para acessar o console do container do Helios Voting), nela frise que você está a acessar o container do Helios Voting com a mesma tag mostrada nas janelas anteriores.
Após a abertura do console do container, realize os comandos listados nos itens 7.2 e 7.3, lembrando-se sempre de frisar suas saídas e comparar a saída do HASH.

11.2.7) Neste momento você pode frisar que irá interromper a gravação, reabrindo a janela do OBS e clicando em "Parar Gravação".

11.2.8) Para finalizar, você pode executar as tarefas dos itens 7.4, 8 e 10.