Ir para o conteúdo

 Voltar a Segurança em...
Tela cheia

recursos de segurança , auditoria e anonimato

7 de Dezembro de 2011, 17:00 , por Desconhecido - | Ninguém seguindo este artigo por enquanto.
Visualizado 85 vezes

Tenho interesse em conhecer os recursos da ferramenta SAELE, que tratam da questão do anonimato do voto , auditoria dos dados , autenticação dos eleitores e também de conferência do voto ( por parte do eleitor ).

 Pois hoje basicamento os sistemas que se dispôem para  votação eletrônica , pelo menos para mim, não conferem a confiabilidade e transparência necessárias . Uma vez que o eleitor muitas vezes nem é autenticado, não tem a certeza do anonimato , muito menos que seu voto foi computado corretamente.

Grato pela atenção,

Alexandre Otto



Autor: Alexandre Otto


66 comentários

  • 33fd8244eb2128284e2194ca4d6105fd?only path=false&size=50&d=404JOSÉ LUIS MACHADO(usuário não autenticado)
    7 de Dezembro de 2011, 21:18

     

    Alexandre:

    destes 4 pontos que levantaste, acho que 3 avançamos bastante.

    - O anonimato do voto está plenamente garantido. Utilizamos duas estruturas de dados, separando votos de eleitores, de tal forma que não conseguimos relacioná-los. Além disso criptografamos os votos;

    - Quanto as auditorias dos dados criamos uma série de logs relacionando votos x eleitores e logins de forma que conseguimos, com estas ferramentas, detectar alguma invasão, ou mesmo se alguma operação saiu do padrão;

    - finalmente quanto a autenticação dos eleitores, na Ufrgs usamos o LDAP para autenticação. Esta mesma autenticação é usada em todos os nossos sistemas corporativos. Para o Saele deixamos aberto para que cada órgão instale seu instrumento de autenticação;

    O 4º ponto por ti levantado é que estamos caminhando para isto. Ou seja, a questão da conferencia de voto por parte do eleitor ainda estamos iniciando estudos para implementação de dispositivos que permitam ao eleitor ter certeza de que seu voto foi computado conforme sua opção. O Afonso, que nos assessora na parte de segurança, já fez estudos neste sentido.

    Pensamos para 2012 já implementar a parte mais simples que é garantir ao eleitor que seu voto foi computado. Esta garantia não é tão complexa e já sinalizará alguma garantia ao eleitor.

    Depois disso pensamos em implementar dispositivos mais complexos, já estudados pelo Afonso, em que permitam ao eleitor ter a garantia de que seu voto não só foi computado mas também garantir que o computado foi aquele em que ele optou. São algoritmos complexos mas que pretendemos implementá-los.

    Só para deixar claro, toda esta garantia é para o eleitor.

    Nos logs já implementados conseguimos detectar se a relação de logins, eleitores e votos estão corretos, o que permite ao gerente ter a garantia de que os eleitores que votaram estão com seus votos computados.

    • 8066adc64e65bef8332badafb20ed919?only path=false&size=50&d=404Alexandre Otto(usuário não autenticado)
      8 de Dezembro de 2011, 9:25

       

      Obrigado pelo esclarecimento José Luis.

      Fico satisfeito em saber que a UFRGS está implementando  esse sistema, uma vez que sou egresso da graduação e hoje ainda faço Pós na casa .

      O meu interesse é que seguidamente tenho participado de eleições eletrônicas ( Conselho de ENG e Sindicado ) , mas eu como eleitor com algum conhecimento de TI  não me sinto seguro com os sistemas que são apresentados. Inclusive  tenho alertado aos colegas que evitem , quando possivel o "voto pela internet", uma vez que não é possivel auditar nem ter as certezas que basearam os meus questionamentos nesse fórum.

      Mais uma questão: Caso o  sistema  seja  implementado para viabilizar o Voto pela Web de um grupo de eleitores cadastrados, quais as possiveis maneiras de garantir uma boa autenticação ?

      Grato,

      Alexandre Otto

      P.S.Sobre a coferência do voto no bolo uma vez em conversas com amigos da área do Software Livre, me recordo de que falaram do tal BitCoin ( moeda virtual ) , onde os valores  individuais e trasações são checados no "bolo" por algoritmos que utilizam criptografia( chaves pública e privadas )  etc...  o me paraceu bem interessante apesar do custo de procesamento ser elevado.

      • 33fd8244eb2128284e2194ca4d6105fd?only path=false&size=50&d=404JOSÉ LUIS MACHADO(usuário não autenticado)
        8 de Dezembro de 2011, 10:01

         

        Alexandre:

        Eu acho que esta questão da segurança pela internet nós, antigos da área, temos algumas restrições. Mas confesso, e falo por mim, que é apenas uma questão cultural, pois houve um avanço considerável nos sistemas web, inclusive no que toca a segurança.

        Eu já circulei pelas vias sindicais e, dentro da universidade, já participei de conselhos superiores. Logo, conheço a sistemática de votos manuais.

        Confesso para ti que quando me perguntam se tenho receio do voto pela internet eu coloco o contrário. Que eu tenho medo é do voto manual.

        Mas isso são divagações que tive durante estes 7 anos de sistema eletrônico.

        Sobre a questão da conferencia do voto por parte do eleitor eu não sei qual a ferramenta que o Afonso havia visto. Mas vou repassar mais esta opção para ele, caso ele não saiba.

        Zé Luis

      • 67e601f2a3278a93f7d94cbe42c3fce7?only path=false&size=50&d=404Afonso Araújo Neto(usuário não autenticado)
        9 de Dezembro de 2011, 18:07

         

        Caro Alexandre,

        Você toca em vários aspectos muito relevantes no que diz respeito a eleições eletrônicas. Nós temos uma visão bastante pragmática do assunto, principalmente porque eleição é um problema muito mais político do que técnico. Isso significa que "o que" está sendo votado muda completamente o nível e o tipo de garantias que o sistema deveria prover, a princípio. Infelizmente, do ponto de vista técnico, esse é um assunto ainda largamente não solucionado.

        Aliás, a comunidade internacional de segurança, na sua maioria, ainda não aceita eleições eletrônicas como uma alternativa garantidamente segura, e o faz com toda a asserção. Só que isso só representa o ponto de vista técnico. O problema é que antes mesmo de responder "quais as propriedades de segurança que o sistema deve fornecer", talvez uma pergunta mais básica seja "o que é necessário que o processo eleitoral contenha para que o perdedor genuinamente se convença de que perdeu", e confiança tem um papel muito importante no assunto. Isso explica porque o Brasil consegue usar urnas eletrônicas para eleição presidencial com sucesso, e países como os EUA nem cogitam a ideia. No Brasil, o sistema foi pensado com verificações suficientes para que o TSE tenha credibilidade suficiente para afirmar qual é o próximo presidente do Brasil, e os perdedores aceitem o resultado, mesmo com as dificuldades técnicas que existem. É até interessante perceber como as pesquisas de boca de urna servem como um feedback positivo para o próprio sistema: se as pesquisas de intenção no meio da campanha são completamente manipuláveis e frequentemente usadas maliciosamente, as pesquisas de boca de urna (feitas no dia da eleição) tem histórico incrivelmente preciso e praticamente nunca discordaram significativamente dos resultados oficiais. E são apenas estimativas. Por que, então não, fazemos apenas a estimativa, já que ela é tão precisa? Justamente porque o processo das pesquisas não transmitem confiança o suficiente para alguém se convencer de que perdeu. O nosso sistema eleitoral já transmite, mesmo com suas falhas. Perceba que essa discussão é completamente independente do processo usado. Aqui na UFRGS, estamos plenamente convencidos de que o processo eletrônico é muito mais confiável e muito menos propenso a erros que o manual.

        Posto isso, podemos conversar sobre os aspectos técnicos do SAELE. Esse sistema é um sistema funcional e relativamente simples, que tem por objetivo fundamental agregar e facilitar a contagem de votos de uma forma eletrônica. A votação é feita pela internet usando um browser, mas o objetivo disso é apenas permitir que o banco de dados esteja em um único lugar, e os postos de votação possam estar onde forem necessários. Note que se o voto será permitido de qualquer lugar (qualquer computador conectado a internet), ou então apenas de estações específicas pré-determinadas (simulando as urnas tradicionais) é uma decisão política, mas que diz respeito a dois fatores de segurança: possibilidade de coerção/compra de votos e potencial de manipulação do software no ambiente do cliente (duas questões que dependem fundamentalmente do tipo de eleição e das questões em jogo).

        Basicamente, a pessoa se autentica no sistema utilizando um mecanismo externo (no nosso caso, o LDAP) e, usando uma interface similar a urna eletrônica brasileira, indica o seu voto (várias opções de como expressar em o que as pessoas podem votar estão disponíveis). O sistema então armazena de forma descorrelacionada quem votou e em quem votou. Verifica também se o ponto de conexão de origem (por IP) é autorizado ou não, implementando então a política de voto aberto pela internet ou de estações fixas (simulando urnas físicas e permitindo um local privado de votação). a comunicação é feita por HTTPS/SSL, evitando ataques de sniffing e man-in-the-middle, e, no caso de urnas, utilizamos um live CD de boot para garantir que a estação sendo usada não contém vírus.

        Por decisão nossa, o software privilegia a anonimidade. Tem portanto, anonimidade incondicional. Isso permite que a comissão eleitoral (por decisão própria, isso não é imposto pelo sistema), posteriormente ao fechamento das urnas, publique o conteúdo completo das urnas como estavam (relatórios de informação são gerados, mas, em casos de desconfiança extrema, é possível publicar-se um dump do banco de dados). A base de dados vai conter, portanto, três informações úteis para de auditoria: 1) os votos individuais, 2) Os votantes, 3) Os eleitores habilitados, mas não votantes. Pelos votos não estarem criptografados, qualquer pessoas pode fazer a recontagem. É impossível ligar um votante ao voto, pois essa informação não é registrada. Se número de votos bate o número de votantes, e os votantes podem verificar que estão sendo contados no bojo de votos, sobram apenas duas alternativas para fraude: votar por um não votante (que dada uma autenticação bem feita, deve ser difícil) ou acessar diretamente a base de dados e inserir um voto inválido em nome de um não votante (modificando a informação do banco para registrar que uma pessoa que na verdade não, votou) ou alterar um voto já incluido. Para evitar isso temos algumas proteções.

        Numa instalação ótima, o software de aplicação do SAELE deve estar em um servidor isolado, e a base de dados (o banco de dados Postgres) em uma outra máquina separada, de preferência com o minimo de acesso externo possível. As operações do software no banco são todas completadas com um código MAC (para cada registro escrito) com uma senha que se encontra no software, e não na base de dados. A operação de contagem de votos detectaria qualquer mudança ou inclusão de registro que não fosse assinada pelo software. Isso torna automaticamente inofensivos quaisquer potenciais vulnerabilidades de SQL Injection que o software possa ter, porque o atacante não possui a senha de autenticação do banco (e o sql injection não manipula código executável PHP, somente passa transparentemente comandos SQL para a base de dados). Claro que qualquer vulnerabilidade descoberta deve ser corrigida, mas tomamos o máximo de cuidado nesse aspecto.

        Resta, então, como ponto crítico, a máquina de aplicação. Se um hacker tomar controle do SO desta máquina, sim, ele pode manipular a eleição. Porém, para usufruir disto, ele terá que injetar comandos SQL na máquina do banco de dados (executando as operações desejadas como se fosse o software). Da forma que nós o temos, o servidor de banco de dados gerará uma trilha de logs (armazenados em algum lugar não acessível pela própria máquina) de todas as operações feitas no mesmo, que é verificada depois para busca de incongruências (isso é feito pelo menos para as eleições mais complicadas). A probabilidade de alguém invadir o servidor de aplicações(ter controle do SO como root) e ao mesmo tempo manipular a base de dados para inserir/alterar votos sem ser detectado é bastante baixa, mas existe.

        A única pessoa que pode fazer isso de forma indetectável (por definição) é o administrador do servidor que executa o sistema (a comissão eleitoral também não consegue). Neste ponto, voltamos a questão da confiança. Hoje em dia é impossível não se confiar pelo menos em parte do sistema. No caso do SAELE, é necessário se confiar no administrador do computador que executa o software php. No nosso caso, como já temos tradição na comunidade da UFRGS, não é difícil obter essa confiança dos usuários. Para novos usuários do sistema, isso teria que ser pensado e pré-acordado antes mesmo de se pensar em usar o sistema. Como referência, mesmo em sistemas como o HELIOS, que é definitivamente o estado da arte em eleições eletrônicas, é necessário confiar no administrador do sistema, posso entrar em mais detalhes caso tenhas curiosidade.

        Temos alguns planos de aprimoramento do sistema, mas estes ainda estão em discussão no que diz respeito aos seus prós e contras.

        Quaisquer outros detalhes que queira saber ou discutir, pode perguntar.

        Afonso Araújo Neto

        P.S: O bitCoin usa criptografia homomórfica, assim como o Helios. Isso permite (através de protocolos bem chatos de explicar, como esquemas de compromisso e protocolos de conhecimento zero) verificabilidade universal. Porém, é importante perceber que os passos necessários para a verificabilidade universal não aumentam a confiança média dos eleitores leigos, justamente porque são muito complicados de entender e executar e dependem necessariamente de computações complicadas. Fora isso, é importante saber que verificabilidade universal e anonimidade incondicional são propriedades mutuamente exclusivas.

        PS.2: O melhor protocolo de votação eletrônica de ordem prática que eu tenho notícia é descrito neste paper (é o que menos impacta o eleitor).
        www.​spri​nger​link​.com​/con​tent​/t67​g03g​1v77​1538​4/
        Mesmo assim, os próprios autores assumem que ainda há vários problemas em aberto.

      • 67e601f2a3278a93f7d94cbe42c3fce7?only path=false&size=50&d=404Afonso Araújo Neto(usuário não autenticado)
        9 de Dezembro de 2011, 18:08

         

        (O sistema postou minha mensagem completamente desformatada, vou postar novamente.)

         

        Caro Alexandre,

        Você toca em vários aspectos muito relevantes no que diz respeito a eleições eletrônicas. Nós temos uma visão bastante pragmática do assunto, principalmente porque eleição é um problema muito mais político do que técnico. Isso significa que "o que" está sendo votado muda completamente o nível e o tipo de garantias que o sistema deveria prover, a princípio. Infelizmente, do ponto de vista técnico, esse é um assunto ainda largamente não solucionado.

        Aliás, a comunidade internacional de segurança, na sua maioria, ainda não aceita eleições eletrônicas como uma alternativa garantidamente segura, e o faz com toda a asserção. Só que isso só representa o ponto de vista técnico. O problema é que antes mesmo de responder "quais as propriedades de segurança que o sistema deve fornecer", talvez uma pergunta mais básica seja "o que é necessário que o processo eleitoral contenha para que o perdedor genuinamente se convença de que perdeu", e confiança tem um papel muito importante no assunto. Isso explica porque o Brasil consegue usar urnas eletrônicas para eleição presidencial com sucesso, e países como os EUA nem cogitam a ideia. No Brasil, o sistema foi pensado com verificações suficientes para que o TSE tenha credibilidade suficiente para afirmar qual é o próximo presidente do Brasil, e os perdedores aceitem o resultado, mesmo com as dificuldades técnicas que existem. É até interessante perceber como as pesquisas de boca de urna servem como um feedback positivo para o próprio sistema: se as pesquisas de intenção no meio da campanha são completamente manipuláveis e frequentemente usadas maliciosamente, as pesquisas de boca de urna (feitas no dia da eleição) tem histórico incrivelmente preciso e praticamente nunca discordaram significativamente dos resultados oficiais. E são apenas estimativas. Por que, então não, fazemos apenas a estimativa, já que ela é tão precisa? Justamente porque o processo das pesquisas não transmitem confiança o suficiente para alguém se convencer de que perdeu. O nosso sistema eleitoral já transmite, mesmo com suas falhas. Perceba que essa discussão é completamente independente do processo usado. Aqui na UFRGS, estamos plenamente convencidos de que o processo eletrônico é muito mais confiável e muito menos propenso a erros que o manual.

        Posto isso, podemos conversar sobre os aspectos técnicos do SAELE. Esse sistema é um sistema funcional e relativamente simples, que tem por objetivo fundamental agregar e facilitar a contagem de votos de uma forma eletrônica. A votação é feita pela internet usando um browser, mas o objetivo disso é apenas permitir que o banco de dados esteja em um único lugar, e os postos de votação possam estar onde forem necessários. Note que se o voto será permitido  de qualquer lugar (qualquer computador conectado a internet), ou então apenas de estações específicas pré-determinadas (simulando as urnas tradicionais) é uma decisão política, mas que diz respeito a dois fatores de segurança: possibilidade de coerção/compra de votos e potencial de manipulação do software no ambiente do cliente (duas questões que dependem fundamentalmente do tipo de eleição e das questões em jogo). 

        Basicamente, a pessoa se autentica no sistema utilizando um mecanismo externo (no nosso caso, o LDAP) e, usando uma interface similar a urna eletrônica brasileira, indica o seu voto (várias opções de como expressar em o que as pessoas podem votar estão disponíveis). O sistema então armazena de forma descorrelacionada quem votou e em quem votou. Verifica também se o ponto de conexão de origem (por IP) é autorizado ou não, implementando então a política de voto aberto pela internet ou de estações fixas (simulando urnas físicas e permitindo um local privado de votação). a comunicação é feita por HTTPS/SSL, evitando ataques de sniffing e man-in-the-middle, e, no caso de urnas, utilizamos um live CD de boot para garantir que a estação sendo usada não contém vírus. 

        Por decisão nossa, o software privilegia a anonimidade. Tem portanto, anonimidade incondicional. Isso permite que a comissão eleitoral (por decisão própria, isso não é imposto pelo sistema), posteriormente ao fechamento das urnas, publique o conteúdo completo das urnas como estavam (relatórios de informação são gerados, mas, em casos de desconfiança extrema, é possível publicar-se um dump do banco de dados). A base de dados vai conter, portanto, três informações úteis para de auditoria: 1) os votos individuais, 2) Os votantes, 3) Os eleitores habilitados, mas não votantes. Pelos votos não estarem criptografados, qualquer pessoas pode fazer a recontagem. É impossível ligar um votante ao voto, pois essa informação não é registrada. Se número de votos bate o número de votantes, e os votantes podem verificar que estão sendo contados no bojo de votos, sobram apenas duas alternativas para fraude: votar por um não votante (que dada uma autenticação bem feita, deve ser difícil) ou acessar diretamente a base de dados e inserir um voto inválido em nome de um não votante (modificando a informação do banco para registrar que uma pessoa que na verdade não, votou) ou alterar um voto já incluido. Para evitar isso temos algumas proteções. 

        Numa instalação ótima, o software de aplicação do SAELE deve estar em um servidor isolado, e a base de dados (o banco de dados Postgres) em uma outra máquina separada, de preferência com o minimo de acesso externo possível. As operações do software no banco são todas completadas com um código MAC (para cada registro escrito) com uma senha que se encontra no software, e não na base de dados. A operação de contagem de votos detectaria qualquer mudança ou inclusão de registro que não fosse assinada pelo software. Isso torna automaticamente inofensivos quaisquer potenciais vulnerabilidades de SQL Injection que o software possa ter, porque o atacante não possui a senha de autenticação do banco (e o sql injection não manipula código executável PHP, somente passa transparentemente comandos SQL para a base de dados). Claro que qualquer vulnerabilidade descoberta deve ser corrigida, mas tomamos o máximo de cuidado nesse aspecto. 

        Resta, então, como ponto crítico, a máquina de aplicação. Se um hacker tomar controle do SO desta máquina, sim, ele pode manipular a eleição. Porém, para usufruir disto, ele terá que injetar comandos SQL na máquina do banco de dados (executando as operações desejadas como se fosse o software). Da forma que nós o temos, o servidor de banco de dados gerará uma trilha de logs (armazenados em algum lugar não acessível pela própria máquina) de todas as operações feitas no mesmo, que é verificada depois para busca de incongruências (isso é feito pelo menos para as eleições mais complicadas). A probabilidade de alguém invadir o servidor de aplicações(ter controle do SO como root) e ao mesmo tempo manipular a base de dados para inserir/alterar votos sem ser detectado é bastante baixa, mas existe. 

        A única pessoa que pode fazer isso de forma indetectável (por definição) é o administrador do servidor que executa o sistema (a comissão eleitoral também não consegue). Neste ponto, voltamos a questão da confiança. Hoje em dia é impossível não se confiar pelo menos em parte do sistema. No caso do SAELE, é necessário se confiar no administrador do computador que executa o software php. No nosso caso, como já temos tradição na comunidade da UFRGS, não é difícil obter essa confiança dos usuários. Para novos usuários do sistema, isso teria que ser pensado e pré-acordado antes mesmo de se pensar em usar o sistema. Como referência, mesmo em sistemas como o HELIOS, que é definitivamente o estado da arte em eleições eletrônicas, é necessário confiar no administrador do sistema, posso entrar em mais detalhes caso tenhas curiosidade.

        Temos alguns planos de aprimoramento do sistema, mas estes ainda estão em discussão no que diz respeito aos seus prós e contras.

        Quaisquer outros detalhes que queira saber ou discutir, pode perguntar.

        Afonso Araújo Neto

        P.S: O bitCoin usa criptografia homomórfica, assim como o Helios. Isso permite (através de protocolos bem chatos de explicar, como esquemas de compromisso e protocolos de conhecimento zero) verificabilidade universal. Porém, é importante perceber que os passos necessários para a verificabilidade universal não aumentam a confiança média dos eleitores leigos, justamente porque são muito complicados de entender e executar e dependem necessariamente de computações complicadas. Fora isso, é importante saber que verificabilidade universal e anonimidade incondicional são propriedades mutuamente exclusivas.

        PS.2: O melhor protocolo de votação eletrônica de ordem prática que eu tenho notícia é descrito neste paper (é o que menos impacta o eleitor).

        www.​spri​nger​link​.com​/con​tent​/t67​g03g​1v77​1538​4/

        Mesmo assim, os próprios autores assumem que ainda há vários problemas em aberto.

        • 8066adc64e65bef8332badafb20ed919?only path=false&size=50&d=404Alexandre Otto(usuário não autenticado)
          10 de Dezembro de 2011, 16:24

           

          Caro Afonso.

          Agradeço pela extensa e esclarecedora  explanação sobre o tema, pois certamente vai ajudar muitos outros  usuários do sistema ou interessados nessas questões.

          Tenho visto movimentos globais que levantam a discussão Democracia Direta como uma saída ,  certamente as ferramentas para viabilizar essa participação eleitoral deverão entrar em pauta.

          Bom, seguimos a o debate.

           

Essa comunidade não possui posts nesse blog