Saltar para: Posts [1], Pesquisa [2]

Anders Bateva

Nonfiction Litblog. Fichamentos / clippings / recortes de não-ficção. Prospecções literárias em: Ciências Sociais; Informática; e Ciências Ambientais.

Anders Bateva

Nonfiction Litblog. Fichamentos / clippings / recortes de não-ficção. Prospecções literárias em: Ciências Sociais; Informática; e Ciências Ambientais.

🖥️ Switches Gigabit Ethernet: 🔎 comparativo 2020

Role para o lado usando as teclas ← e → para visualizar todos os atributos dos modelos.

Switches com mais portas Gigabit Ethernet do quê portas Fast Ethernet (e empatados)
Marca Linha Modelo Portas RJ45 fixas
(slots foram desconsiderados)
Capacidade
de comutação
"backplane"
(Gbps)
IEEE 802.3 (Ethernet)
Fast Eth.
(10/100)
Gigabit Eth.
(10/100/1000)
Total 802.3u
[1995]
(100BASE-TX)
802.3x
[1997]
(Full-Duplex
& Flow Control)
802.3ab
[1999]
(1000BASE-T)
Mersusys MS108G 8 8 ?
Multilaser RE128 8 8 16
Intelbras Gerenciáveis SG 5204 MR L2+ 48 48 104
SG 2404 MR L2+ 28 28 56
SG 1002 MR L2+ 8 8 20
SG 2404 MR 24 24 48
SG 1002 MR 8 8 20
SG 5200 MR 48 48 104
SG 2404 PoE 24 24 48
Não-gerenciáveis SG 800 Q+ 8 8 16
SG 2400 QR 24 24 48
Tenda For home SG108 8 8 16
For business TEG1109P-8-102W 9 9 18
TEG3224P 24 24 56
TEG3210P 8 8 20
TEG1024D v7 24 24 48
TEG1016D v6 16 16 32
D-Link Residencial DGS-1024D 24 24 48
DGS-1016D 16 16 32
DGS-1008A 8 8 16
Empresarial DGS-3000-10L 8 8 20 ?
DGS-1510-52L/ME 48
(só 1000?)
48 104 ?
DGS-1510-28LP/ME 24 24 56 ?
DGS-1510-28L/ME 24
(só 1000?)
24 56 ?
DGS-1210-52/ME 48 48 104 ?
DGS-1210-28/ME 24 24 56 ?
DGS-1510-52XMP 48 48 176
DIS-100G‑5W 5
(só 100/1000?)
5 ? ?
DIS-100G‑5SW 4
(só 100/1000?)
4 ? ?
DIS-100G-5PSW 4
(só 100/1000?)
4 ? ?
DIS-300G-12SW 8
(só 100/1000?)
8 ? ?
DIS-300G-8PSW 6
(só 100/1000?)
6 ? ?
DIS-300G-14PSW 10
(só 100/1000?)
10 ? ?
DIS-700G-28XS ? ?
DGS-1210-10P 8 8 20
DGS-1210-28P 24 24 56
DGS-1210-52 48 48 104
DGS-1510-28P 24 24 92
DGS-1510-28XMP 24 24 128
DGS-1510-52X 48 48 176
DGS-1510-28X 24 24 128
DGS-1210-28 24 24 56
TP-Link SOHO TL-SG1005D 5 5 16
TL-SG105 5 5 10
TL-SG108 8 8 16
TL-SG1008D 8 8 10
Easy Smart TL-SG105E 5 5 10
TL-SG108E 8 8 16
Managed T2600G-28TS (TL-SG3424) 24 24 56
T2500G-10TS (TL-SG3210) 24 24 48
T2600G-28SQ 128
T2600G-28MPS (TL-SG3424P) 24 24 56
T2600G-52TS (TL-SG3452) 48 48 104
TL-SG3216 16 16 32
Smart T1700G-28TQ 24 24 128
T1600G-28PS (TL-SG2424P) 24 24 56
T1600G-28TS (TL-SG2424) 24 24 56
T1500G-8T (TL-SG2008) 8 8 16
T1500G-10PS (TL-SG2210P) 8 8 20
T1600G-52TS (TL-SG2452) 48 48 104
T1500G-10MPS 8 8 20
T1600G-52PS (TL-SG2452P) 48 48 104
Unmanaged TL-SG1008MP 8 8 16
TL-SG1005D 5 5 10
TL-SG105 5 5 10
TL-SG1008D 8 8 16
TL-SG1008P 8 8 16
TL-SG1008PE 8 8 16
TL-SG108 8 8 16
TL-SG1016 16 16 32
TL-SG1016D 16 16 32
TL-SG1024D 24 24 48
TL-SG1048 48 48 96

🐧 Debian 9: como instalar TL-WN823N v2 (TP-LINK)

300Mbps Mini Wireless N USB Adapter
Marca: TP-LINK
Modelo: TL-WN823N(EU)
Versão:2.0

Neste tutorial, ensinarei como instalar este dongle USB para wireless no Debian 9. Mas não simplesmente entregar um passo-a-passo, eu quero que você entenda o que está fazendo, e seus conhecimentos expandam-se, consequentemente.

O problema

O manual do produto diz que há suporte oficial para o Linux, pela TP-LINK, porém não existe suporte de verdade pela TP-LINK, e eu penei um bocado para fazê-lo funcionar. Trago então minha solução para você!

O driver oficial, do site da TP-LINK, está obsoleto! O que há ali é o código, a partir do qual você deve compilar (produzir) o driver especificamente para seu sistema, não é só dar 2 cliques. Mas para compilar, você precisa ter o ambiente adequado, isto é, seu sistema tem de possuir algumas características específicas. A característica crucial nesse caso é o kernel do Linux: o site oficial diz que o driver é compatível com as versões 2.6.18 até a 3.10.10. Legal, mas o suporte para a versão 3.10 acabou em novembro de 2017, e já estamos em 2018... O Debian que uso, segundo o comando lsb_release -r é a 9.5, e o kernel, segundo o comando uname -r, é o 4.9.0-7-amd64 (suportado até janeiro de 2019). Então este driver não dá suporte ao Debian 9, apenas versões mais antigas...

Obtendo o firmware

Os repositórios oficiais do Debian 9 incluem o pacote firmware-realtek, que por sua vez inclui o firmware do chipset Realtek rtl8192eu, que é o que está dentro do dongle. Os repositórios do Debian 8 incluem um pacote de mesmo nome (firmware-realtek), que porém, não dá suporte ao chipset em questão (rtl8192eu). Então faça um upgrade do seu sistema, se ainda não estiver usando a versão 9.

Dado que o pacote firmware-realtek não é software livre, é necessário alterar sua lista de repositórios para "tornar visíveis" os pacotes de software proprietário:

  1. em um terminal root, abra a lista de repositórios no editor de texto nano: nano /etc/apt/sources.list;
  2. adicione non-free (com um espaço antes) após cada linha escrita no arquivo;
  3. salve as alterações com ^O (CTRL+O), e depois feche o editor de texto com ^X (CTRL+X);
  4. atualize sua lista de fontes de software com apt update, e instale o firmware com apt install firmware-realtek;
  5. reinicie o computador, para que o firmware seja carregado na próxima inicialização do sistema e entre em ação.

Encontrando redes sem-fio

Após reiniciar, você já deve ser capaz de encontrar as redes sem-fio das redondezas. Por exemplo, se você tiver o network-manager-gnome instalado, o nm-applet (um ícone na barra de aplicativos que exibe informações de rede) deve mostrar-lhe uma lista de redes wireless disponíveis, se você clicar nele. Se você consegue essa geração de lista de redes, você tem o firmware adequado para o seu dongle, e o passo-a-passo anterior teve sucesso em seu objetivo.

Escanear o ar buscando redes sem fio é necessário, mas não suficiente. Tente conectar-se a alguma, mesmo uma sem senha e sem segurança - se não tiver uma assim por perto, você pode configurar seu roteador para tal. O nm-applet roda, roda, mas não conecta? Então ainda tem algo errado.

Conectando-se a redes sem segurança, e WEP

Buscando na internet, vi quais configurações adicionais devem ser feitas:

  1. abra um terminal root;
  2. desabilite o modo de economia de energia do wifi, e também a auto-suspensão do USB com echo "options 8192eu rtw_power_mgnt=0 rtw_enusbss=0" | tee /etc/modprobe.d/8192eu.conf. Estas duas opções geram falha de comunicação do sistema com o dongle;
  3. digite echo "blacklist rtl8xxxu" | tee /etc/modprobe.d/rtl8xxxu.conf;
  4. reinicie o computador. Se ainda assim não funcionar, dê modprobe rtl8xxxu no terminal.

Após configurar o dispositivo assim, tente novamente se conectar a uma rede sem senha e sem segurança, ou com segurança WEP. Conseguiu? Ótimo. Mas e as conexões WPA, WPA2, e WPA-WPA2, funcionam? Se não, siga adiante o tutorial.

Conectando-se a redes WPA, WPA2, e WPA-WPA2

As proteções WPA, WPA2 e WPA-WPA2 são mais recentes que a WEP, já obsoleta devido à falta de segurança. Por isto mesmo, funcionam diferente e exigem configuração adicional.

Conferindo nos logs do sistema (comando nano /var/log/messages como root), constatei que existem quatro "apertos de mão" (4-way handshake) entre o dongle e o roteador sem fio, compondo uma etapa de negociação. É esta etapa que falha e impede e a conexão, registrando no log, após a troca de mensagens "eapol", que a autenticação falhou pela "razão 15". O protocolo do "eapol" é uma inovação das tecnologias WPA e WPA2 (não existiam na WEP). E a razão 15 significa que o handshake estourou o tempo-limite.

O que faz o handshake falhar é a aleatorização do endereço MAC do dongle, pelo que pesquisei. Esse recurso é importante para previnir que clientes wireless sejam identificados pessoalmente quando usarem wifis públicos: a cada conexão, um endereço MAC diferente é usado pelo aparelho, dando certa privacidade. Mas isso não funciona bem com o dongle TL-WN823N(EU) v2.0, e o recurso precisa ser desabilitado. Isso é simples de resolver:

  1. abra um terminal root, e edite o gerenciador de redes no editor de textos nano, com nano /etc/NetworkManager/NetworkManager.conf;
  2. adicione as linhas ao arquivo:[device]wifi.scan-rand-mac-address=no
  3. salve as alterações com ^O (CTRL+O), e depois feche o editor de texto com ^X (CTRL+X);
  4. reinicie o computador.

Voilà! Resolvido. Agora o dongle deve funcionar perfeitamente. Se para você, ainda assim não estiver dando certo, deixe um comentário neste post explicando o que deu errado, e talvez eu possa lhe ajudar.

Licença Creative CommonsO texto deste post de Anders Bateva está licenciado com uma Licença Creative Commons - Atribuição 4.0 Internacional.

🇪🇺🇺🇸 Dieselgate: Volkswagen frauda Diesels

Resumido de: Wikipedia, the free encyclopedia.

Iniciado em 18/09/2015, quando a EPA dos EUA emitiu uma notificação de violação para o Volkswagen Group. Foi constatado pela agência que a Volkswagen havia programado motores Diesel TDI, intencionalmente, para ativar alguns controles de emissões somente durante os testes de emissões em laboratório. Tal fraude fazia os veículos cumprirem as normas de emissões de NOx os EUA, ao mesmo tempo em que, em condições reais de uso, emitiam até 40x além do permitido. Tal programação fraudulenta foi aplicada em cerca de 11 milhões de carros mundialmente, sendo 500 mil deles nos EUA, entre 2009 e 2015.

O caso todo veio à tona devido a discrepâncias nos resultados das emissões dos veículos nos EUA e na Europa, conforme medido de forma independente por múltiplos indivíduos ao longo do tempo, e compilado por estudo encomendado pelo ICTT (Concelho Internacional em Transporte Limpo). As conclusões foram entregues para o CARB (Autoridade Californiana de Poluição Aérea) em maio de 2014.

Múltiplas autoridades reguladoras, de vários países, abriram investigação contra a Volkswagen. As ações da empresa perderam 1/3 do valor imediatamente, o CEO Martin Winterkorn se demitiu, e vários diretores foram suspensos.

O caso da Volkswagen teve o efeito interessante de revelar que os outros fabricantes estavam fazendo a mesma burla, e até com muito mais intensidade... Outro estudo, encomendado pela ICTT, mostrou que Volvo, Renault, Jeep, Hyundai, Citroën, e FIAT, todos fabricam carros Diesel que, em condições reais, poluem mais que o permitido, e mais que a Volkswagen. Isto pode levar a novos escândalos... O da Volkswagen continua sendo o principal, no momento.

Houve um ponto debatido, nisto tudo, de que maquinário controlado por software seria geralmente propenso a abusos, e que a solução seria abrir o código-fonte para inspeção geral pelo público.

Dinheiro

Em abril de 2017, um juiz federal decretou multa de US$2.8 bilhões para a Volkswagen, por preparar motores Diesel diretamente para o objetivo de fraudar testes federais de emissões. A Volkswagen, em algum momento, anunciou planos de gastar US$7,3 bilhões na retificação dos problemas de emissões, incluindo campanha de recall dos veículos em fraude. O valor planejado depois foi ampliado para US$18.32 bilhões.

Licença Creative CommonsO texto deste post de Anders Bateva está licenciado com uma Licença Creative Commons - Atribuição 4.0 Internacional. Deriva-se do artigo na Wikipedia anglófona Volkswagen Emissions Scandal

🆓💬 GNU Social: ¿o que é?

Autora: Mariana Fossatti. Tradução por Anders Bateva.

O que é GNU Social?

O GNU Social é um projeto de rede social que está em desenvolvimento há alguns anos. Originalmente implementado através do serviço Identi.ca, logo evoluiu quando a Free Software Foundation se juntou em seu desenvolvimento. Trata-se de uma rede social de aparência muito similar ao Twitter, porém com algumas vantagens, como a possibilidade de enviar mensagens de mais de 140 caracteres, participar de grupos, e seguir usuários de outras instâncias que utilizem os mesmos padrões abertos.

Diferente do Twitter, que é um serviço centralizado, o GNU Social é um software livre que pode ser instalado em qualquer servidor. Cada instância da rede social inter-opera com as demais de maneira horizontal, formando assim uma rede distribuída onde os participantes não dependem das políticas corporativas de uma única empresa, e aonde a adoção de novas funcionalidades é livre, desde que siga-se os protocolos de comunicação.

Como é de se imaginar, existem muitos serviços "públicos" de GNU Social. Alguns dos mais conhecidos são: Quitter.se, Quitter.es e lamatriz.org; porém, existem muitos outros, que você pode conferir no site Fediverse.org. Mesmo estando em um nó qualquer, é possível conectar-se às demais instâncias e assim inter-conectar-se com os outros usuários também.

Licença Creative CommonsEste post de Anders Bateva está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Não Adaptada.Baseado no trabalho disponível em Ártica Online.

Google: protótipo pelos fundadores (1998)

Artigo em que os fundadores do Google apresentaram seu protótipo, em 1998. Explicam quais eram os problemas dos mecanismos de busca da época, e como se propunham a resolvê-lo, principalmente com o algoritmo PageRank. Também, considerações sobre o modelo de negócios baseado em propagandas, e que complicações podem surgir do funcionamento de um web crawler.

The Anatomy of a Large-Scale Hypertextual Web Search Engine - Sergey Brin e Lawrence Page
Universidade de Stanford - 1998

Neste artigo, nós apresentamos o Google, um protótipo de um mecanismo de busca de larga-escala que faz uso pesado da estrutura presente no hypertexto. O Google foi projetado para fazer crawling e indexar a Web eficientemente, e produzir resultados de busca muito mais satisfatórios do quê os sistemas existentes. O protótipo, com um texto completo e banco de dados de hyperlinks com pelo menos 24 milhões de páginas, está disponível em http://google.stanford.edu/ . 
— trecho do Resumo.

Já deu pra sentir a relevância do artigo? Simplesmente é o artigo acadêmico onde os fundadores do Google apresentam este projeto da universidade deles como atividade do curso que faziam. Abaixo, resumo o que é apresentado no texto. Não me preocupei em resumir a Seção 4 "Anatomia do Google", pois são detalhes de funcionamento interno que não são exatamente relevantes para o usuário normal.

Dados: o banco de dados de 24 milhões de páginas requeria apenas 147GB de espaço em disco, ou 53,5GB quando comprimido - o que já era barato na época. Foi gerado em aproximadamente 9 dias (incluindo todo o tipo de erro que atrasou o processo). O total de links em 24 milhões de páginas era 322 milhões.


Problemas na época:

  • as pessoas usam listas de sites (como o Yahoo!) cuja manutenção é humana, e por isso são subjetivas, caras de construir e manter, lentas de melhorar, e não podem cobrir todos os tópicos "exotéricos";
  • mecanismos de busca automatizados que baseiam-se em palavras-chave normalmente retornam muitos resultados de baixíssima qualidade, e anunciantes tomam medidas para enganar esses mecanismos e ganhar a atenção das pessoas.
Por exemplo, nós vimos um grande mecanismo de busca retornar uma página contendo apenas "Bill Clinton é ruim" e uma foto, a partir de uma busca por "Bill Clinton". Alguns argumentam que, na web, os usuários deveriam especificar com maior precisão o que eles querem, e adicionar mais palavras a suas buscas. Nós discordamos veementemente desta posição. Se um usuário realizar uma busca tal como "Bill Clinton", ele deveria receber resultados razoáveis, dada a existência de enorme quantia de informação de alta qualidade disponível sobre este assuntos. Considerando exemplos como esse, nós acreditamos que o trabalho padrão de recuperação de informação precisa ser extendido para lidar efetivamente com a web. 
—Seção 3.1: Recuperação de Informação.

Soluções do Google:

  • PageRank: dá uma pontuação de qualidade para cada página web baseado na estrutura de links;
  • links são utilizados para melhorar resultados de busca.

PageRank

O gráfico de citações (links) da web foi considerado importante por Sergey Brin e Lawrence Page, e era algo largamente não-utilizado. Tais mapas de links entre as páginas permitem o cálculo do PageRank, uma medida objetiva da importância de citação, que corresponde bem, disseram eles, com a ideia subjetiva de importância que as pessoas têm. Isso permitia ao PageRank priorizar bem as buscas por palavras-chave, comparado ao que havia na época: em assuntos mais populares, uma simples busca por coincidência de texto nos títulos das páginas gera bons resultados. E também ajuda muito em buscas por texto completo das páginas, tal como no Google.

O PageRank pega o conceito de citação acadêmica (aonde um artigo menciona o outro como referência), e expande para a web. Porém, de forma diferente, as citações não têm todas o mesmo valor: é feita uma relação entre o número de citações feitas para a página, e o número de citações que a página fez, e isso determina o valor de cada citação.

Por exemplo, compare a informação de uso de uma grande página inicial, como a do Yahoo, que atualmente recebe milhões de visualizações a cada dia, com um artigo histórico obscuro que pode receber uma visualização a cada 10 anos. Claramente, estes dois itens devem ser tratados bem diferentemente por um mecanismo de busca. 
—Seção 3.2: Diferenças Entre a Web e Coleções Bem-Controladas.

A fórmula usada pelo PageRank foi apresentada assim:

PR(A) = (1-d) + d (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn))

A ideia é que o PageRank seja um modelo de comportamento de usuário: o PageRank (PR) é a probabilidade de um surfista web aleatório visite uma página, e o fator "dampening" seria a probabilidade deste surfista aleatório, em cada página, se entediar e requisitar outra página aleatória. Uma variação seria adicionar esse fator "d" a uma única página, ou um grupo de páginas, permitindo personalização e tornando "praticamente impossível" que alguém deliberadamente engane o sistema para ganhar um ranking mais alto.

Dado: calcular o PageRank de 26 milhões de páginas podia ser feito em poucas horas com uma workstation de tamanho médio.

Links

Links dão descrições melhores da página para a qual levam, do quê as próprias páginas dariam de si mesmas. Também, links permitem indexar conteúdos que normalmente não poderiam sê-lo por mecanismos de busca textuais, como imagens, programas, e bancos de dados.

Copiando a Web

Rodar um web crawler é uma tarefa desafiadora. Há problemas capciosos de desempenho e confiabilidade, e mais importantemente, há problemas sociais. Crawling é a aplicação mais frágil, dado que envolve interagir com centenas de milhares de servidores web, e vários servidores de nomes de domínio, estando todos além do controle do sistema.

[...]

Ocorre que rodar um crawler que conecta-se a mais de meio milhão de servidores, e gera dezenas de milhares de entradas de log, gera uma boa quantia de e-mails e chamadas telefônicas. Por conta do vasto número de pessoas vindo à linha, há sempre aquelas que não sabem o que um crawler é, pois este é o primeiro que viram. Quase que diariamente, nós recebemos um e-mail como "Uau, você olhou um bocado de páginas no meu website. Que achou dele?". Há também algumas pessoas que não conhecem o protocolo de exclusão de robôs, e pensam que suas páginas devem estar protegidas de serem indexadas por conta de uma declaração como "Esta página é protegida por copyright e não deve ser indexada", o que, não é nem necessário dizer, é difícil para web crawlers entenderem. [...] Uma vez que sistemas grandes e complexos como crawlers irão invariavelmente causar problemas, é preciso haver significantes recursos dedicados a ler os e-mails e solucionar estes problemas conforme apareçam.

— Seção 4.3: Rodando um Web Crawler.

Propaganda e conflitos de interesse

Atualmente, o modelo de negócios predominante para mecanismos de busca comerciais é a propaganda. Os objetivos do modelo de negócios de propaganda não sempre corresponde a prover busca de qualidade para os usuários. Por exemplo, em nosso mecanismo de busca prototípico, um dos principais resultados para uma busca por "telefone celular" é "O Efeito do Uso de Telefone Celular Sobre a Atenção dos Motoristas", um estudo que explica em grande detalhe as distrações e riscos associados com conversar num celular enquanto dirige. Este resultado de busca veio em primeiro, devido à sua alta importância conforme julgada pelo algoritmo PageRank, uma aproximação da importância de citação na web. É claro que um mecanismo de busca que estivesse recebendo dinheiro para exibir propagandas de telefones celulares teria dificuldade em justificar a página que nosso sistema retornou, para os seus anunciadores pagantes. Por este tipo de razão, e experiência história com outra mídia, nós expectamos que mecanismos de busca financiados por propagandas serão inerentemente enviesados rumo aos anunciantes, e distante das necessidades dos consumidores.

Dado que é bem difícil, mesmo para especialistas, avaliar mecanismos de busca, o viés de mecanismos de busca é particulamente insidioso. Um bom exemplo foi o OpenText, que reportadamente vendia a companhias o ireito de ser listada no topo de resultados de busca para pesquisas específicas. Este tipo de viés é muito mais insidioso do quê a propaganda, pois não é claro quem "merece" estar ali, e quem está disposto a pagar dinheiro para ser listado. Este modelo de negócios resultou em uma revolta, e o OpenText deixou de ser um mecanismo de busca viável.

Mas, vieses menos gritantes têm a probabilidade de serem tolerados pelo mercado. Por exemplo, um mecanismo de busca poderia adicionar um pequeno fator para resultados de busca de companhias "amigáveis", e subtrair um fator de resultados dos competidores. Este tipo de viés é bem difícil de detectar, mas poderia ainda assim ter um efeito significativo no mercado. Além disto, faturamentos de propaganda com frequência provêem um incentivo para prover resultados de busca de má qualidade.

Por exemplo, nós notamos que um grande mecanismo de busca não retornava a página inicial de uma companhia aérea quando o nome desta companhia era inserido numa busca. Aconteceu então que a companhia aérea colocou uma propaganda cara, linkada à busca que consistia de seu nome. Um mecanismo de busca melhor não iria requerer esta propaganda, e possivelmente resultaria em perda de rendimentos da companhia aérea para o mecanismo de busca.

No geral, poderia ser argumentado que, do ponto de vista do consumidor, quão melhor for o mecanismo de busca, tanto menos propagandas serão necessárias para o consumidor encontrar o que ele deseja. Isto, é claro, erode o modelo de negócio suportado por propagandas dos mecanismos de busca existentes. Entretanto, sempre haverá dinheiro dos anunciantes que querem que um cliente mude de produtos, ou tenha algo que é genuinamente novo. Mas nós acreditamos que o problema da propaganda causa conflito de interesses o bastante para que seja crucial ter um mecanismo de busca competitivo que seja transparente e no âmbito acadêmico

— Apêndice A.

🇧🇷🗳️ ¿Urna eletrônica ∋ voto 🔒 secreto?

Este post consiste de um resumo do artigo a seguir:

Vulnerabilidades no software da urna eletrônica brasileira – Diego F. Aranha, Marcelo Monte Karam, André de Miranda, Felipe Scarel
Universidade de Brasília – 2013

O artigo detalha as conclusões e experimentos feitos pelo grupo, que participou da 2ª edição de Testes Públicos de Segurança da urna eletrônica, evento organizado pelo TSE em 2012.

Durante o evento, foram detectadas vulnerabilidades no software que permitiram a recuperação em ordem dos votos computados. Apresentamos cenários onde as vulnerabilidades permitem a possibilidade de fraude eleitoral e sugestões para se restaurar a segurançaa dos mecanismos afetados.

Este post sobre o artigo foi feito depois o estudo ter sido mencionado em uma palestra do Diego Aranha na CryptoRave 2014, já publicada aqui; daí que fiquei sabendo da existência da publicação. Busquei assim poder pegar, e dar, mais informações sobre o que foi dito naquela ocasião.

Limitações do estudo

Os experimentos foram feitos apenas em software pois os autores do artigo não são especialistas em hardware; também, foram feitos testes apenas em uma pequena parte do código-fonte da urna (durante 5 horas), e excluindo qualquer sistema externo à urna em si (como o totalizador de votos, que soma os votos das urnas), devido a limitações nas regras do evento (até mesmo a formatação como competição), e na disponibilidade de tempo dos autores do artigo. Essas limitações acabaram por permitir que a equipe que publicou o artigo só pudesse testar a identificação do voto do eleitor, e não a possibilidade do voto dado poder ser fraudado (adulterado), como pretendiam.

Sem a possibilidade de se efetuar testes extensos e sem qualquer tipo de restrição, seguindo metodologia cientı́fica, não é possı́vel afirmar que o formato atual do evento colabora significativamente para o incremento da segurança da urna eletrônica. Permite apenas encontrar vulnerabilidades pontuais que permitam ataques de fácil execução, mas com efeitos limitados.

Seção "Resumo"

Já na seção "resumo" do artigo, apresenta-se aproximadamente isto:

  • sigilo fraco do voto: é fácil quebrar o sigilo, ou seja, colocar os votos computados em ordem, permitindo então saber quem votou em quem. Basta ter o resultado público da votação e um acesso mínimo ao código-fonte da urna, aos quais os partidos têm acesso;
  • criptografia sem grande utilidade: a chave criptográfica da urna está na própria urna, em uma parte sem criptografia, e a mesma chave criptográfica é usada para TODAS as urnas do país;
  • hash obsoleto: o algoritmo que gera o hash criptográfico (SHA-1) não deveria ser usado há 6 anos (ou seja, desde 2006), pois já foi avisado que ele não tem segurança suficiente;
  • vulnerável a atacantes internos: o modelo de segurança é focado em ataques externos, mas quem gera mais risco é quem está dentro do esquema de votação;
  • processo de desenvolvimento mal-feito: falhas podem ser inseridas, acidentalmente ou propositalmente, devido a práticas inseguras no desenvolvimento;
  • auto-verificação de integridade: a urna verifica a si mesma para saber se foi adulterada, sendo que, se foi adulterada, o próprio sistema de verificação estaria comprometido. Era necessário ter verificão externa! De qualquer forma, essa verificação só serve para dar certeza de que o programa veio do TSE, não que os milhões de linhas de código funcionam como deveria.
pode-se observar de antemão que vários dos recursos implementados no software da urna eletrônica não representam mecanismos de segurança, mas apenas de ofuscação, não resistindo a colaboradores internos ou atacantes persistentes. Como vários dos problemas encontrados resultam de falhas arquiteturais ou premissas inadequadas de projeto, é improvável que a intervenção pontual em algumas dessas questões resolva as causas fundamentais para a sua ocorrência.

O sigilo do voto

Os testes feitos pela equipe conseguiram pôr na ordem de votação os 950 votos (vereador e prefeito) de 475 eleitores fictícios usados no teste.

Registrar os votos inseridos pelo eleitor de forma desordenada é um procedimento crı́tico para se proteger o sigilo do voto. Fica claro, portanto, que a metodologia da equipe permitiu derrotar o único mecanismo utilizado pela urna eletrônica para proteger o sigilo do voto.

Esse tipo de vulnerabilidade não deixa rastro ou vestígio ao ser abusada, pois não é preciso abrir a urna eletrônica e adulterá-la, basta usar os produtos públicos da votação... Mas não é dada a identidade dos eleitores diretamente, apenas a ordem do voto. As identidades de quem votou precisariam ser adquiridas externamente, para ser feita a correlação. Numa situação de voto de cabresto, em que um agente coloque as pessoas em uma ordem específica, por exemplo, dá pra verificar quem votou em quem.

O problema parte do Registro Digital de Voto (RDV), uma tabela com colunas para os cargos que armazena os números dos candidatos votados, mas fora da ordem de voto. Em 2002, foi instituída a impressão do voto, para permitir a verificação do voto em relação ao sistema eletrônico, mas em 2003 foi extinguido, e trocado pelo RDV. O RDV existe para permitir verificar que o Boletim de Urna (BU), que entrega o resultado parcial da urna, está certo, mas isso é inútil, pois é o mesmo software que gera tanto o BU quanto o RDV, e por isso a adulteração do programa alteraria ambos os "documentos". Além disso, se implementado errado, permite quebrar o sigilo do voto!

Com a adoção do voto impresso pela Índia, o Brasil permanece como o único paı́s no mundo a adotar sistema de votação sem verificação independente de resultados.

Números aleatórios

Um bom embaralhamento dos resultados, ou seja, um suficientemente aleatório, precisa de rigor criptográfico, e o desenvolvedor precisa de suficiente entendimento de Segurança Computacional para poder perceber isto e fazer certo. O que ocorre é que a urna usa números pseudo-aleatórios, e além disso foi decidido usar o geramento padrão da linguagem C: rand()/srand()! Esse processo de geração não tem qualidade criptográfica, aceita apenas sementes muito curtas, de até 32-bit. Além disso, a semente é simplesmente a combinação hora, minuto e segundo obtida pela função time(), que pega a representação Unix do calendário UTC.

O calendário UTC é um fuso horário que a Era Unix segue, e essa contagem da era é feita em segundos desde o seu começo, representados em um valor de 32-bit (exemplo: 1466404014).

Como o sistema de votação tem que ser ligado entre as 7AM e as 8AM, isso dá 3600s de variação máxima, então 3600 valores diferentes de semente (dia, mês, ano obviamente já são conhecidos por todos, se não, como as pessoas iriam até a urna votar?). Para completar, a semente é publicada no LOG (público para os partidos ao fim da eleição) e na zerésima (imediatamente pública), essa sendo a "comprovação" de que há zero votos na urna no começo da eleição.

Ou seja, qualquer um que pegue a zerésima (pública) saberá a hora, e portanto a semente de geração de números pseudo-aleatórios, e poderá assim determinar a ordem certa dos votos. Tanto o LOG quanto a zerésima são assinados digitalmente, e à mão pelos fiscais, então fica confirmado: 'os números são embaralhados seguindo essa semente!'. O padrão de posições vazias no RDV, mais o total (público) de eleitores que compareceram à votação, permite comparar o resultado da geração de números aleatórios, vendo se coincidem os espaços vazios, ou seja, se foi deduzido certo.

Solução

A forma mais segura para se efetuar a correção é substituir o gerador pseudo-aleatório atualmente utilizado por outro gerador pseudo-aleatório com propriedades estatı́sticas superiores. Exemplos de geradores assim são documentados em padrões e podem ser encontrados em bibliotecas criptográficas de uso geral.

Esse gerador pseudo-aleatório melhorado apenas precisaria de uma semente mais segura, i.e. não algo que está impresso e divulgado em todo lado. Para resultados realmente aleatórios, seria preciso um gerador em hardware, que depende de algum processo físico conhecido. Nada demais também, os modelos de urna fabricados de 2009 em diante já têm uma CPU AMD Geode que faz isto! Note-se que isso não extingue a necessidade de testes para essas soluções também...

¿VeraCrypt →((🔑 senhas ∧ 🔑 keyfiles) ⊃ RAM)?

Este post consiste de um resumo do artigo a seguir:

ANÁLISE DA MEMÓRIA DE ACESSO RANDÔMICO: ARQUIVOS MAPEADOS PELO VERACRYPT - Anderson Luís Moreira
Universidade Católica de Brasília - 2015


O VeraCrypt é um sistema de software para a criação e manutenção de volumes criptografados (containers) on-the-fly-encrypted. Ou seja, os dados são criptografados automaticamente antes de serem salvos e decodificados logo após serem carregados, sem intervenção do usuário. Nenhum dado armazenado em um container pode ser lido (descriptografado) sem a utilização das chaves de criptografia corretas, como senha e key-file(s) este último se existir. O software criptografa o sistema de arquivo inteiro, como por exemplo: Nomes de arquivos, nomes de pastas, o conteúdo de cada arquivo, espaço livre, metadados, etc. Os arquivos são automaticamente descriptografados (em memória / RAM) enquanto são lidos ou copiados. Da mesma forma, os arquivos que estão sendo gravados ou copiados para o container VeraCrypt são automaticamente criptografados on-the-fly (antes de serem escritos no disco) na RAM.
— Anderson Luís

O artigo visa analisar se é possível pegar as chaves criptográficas dos containers criados pelo VeraCrypt enquanto este programa está em execução, afinal, a memória RAM (memória temporária volátil) é o único local onde não há criptografia dos dados manipulados pelo programa enquanto ele está em execução. Após ser finalizado, os dados que estavam na RAM podem ser apagados (aleatoriamente) e aí restariam apenas os dados criptografados no disco rígido. Em outros termos, a memória RAM parece ser o ponto mais fraco de todo o processo.

Para copiar a memória RAM do computador periciado, foi usado o programa DumpIt (para Windows), e para copiar uma imagem do disco, o software dcfldd (para UNIX e similares) - criado pelo Laboratório de Forênsica Computacional do Departamento de Defesa dos EUA. Para analisar a memória RAM, foi usado o programa forense código-aberto Volatility. O processo foi feito 4 vezes, para garantir um padrão no funcionamento do VeraCrypt.

De forma relativamente simples, as keyfiles do volume criptografado foram encontradas, com base em comparação de datas de acesso a arquivos e execução de programas - lembrando que isso apenas porquê esses registros foram tirados diretamente da memória RAM - . As keyfiles, conforme a documentação própria do VeraCrypt, são arquivos que, usados em combinação com as senhas, provêem mais segurança à criptografia, pois sem os arquivos certos não é possível montar o volume. Tendo o realizador do estudo encontrado as keyfiles, pôde montar o volume.

Porém, para de fato acessar o volume, é preciso saber também a senha! A senha não é guardada em forma pura, como texto simples, mas como hash. Ou seja, estão codificadas de uma maneira "praticamente impossível" de reverter, só sendo usável se o usuário digitar a mesma senha no programa, este gerar o mesmo hash, comparar com o hash guardado e eles coincidirem. O desenvolvedor do estudo tentou encontrá-la na memória RAM, onde ficaria armazenada, mas observou que o VeraCrypt em particular tem o devido cuidado de sobrescrever esses dados, impedindo que a senha pura ou os hashes sejam encontráveis nesse tipo de análise posterior.

Dentre os fatores que a equipe de desenvolvimento do VeraCrypt se propôs a melhorar [em relação ao TrueCrypt], o tratamento dos dados armazenados temporariamente na memória RAM foi um ponto de fundamental importância para o presente artigo.
— Anderson Luís

A única alternativa a encontrar a senha ou hash seria quebrá-la na força bruta (tentativas sucessivas exaustivas), mas o uso de derivação de chaves torna isso imprático... se o usuário seguiu a boa prática de usar senha adequada. Se a senha for fraca, ainda pode ser possível! Mas é tema para outros estudos...

Licença Creative CommonsO texto deste post de Anders Bateva está licenciado com uma Licença Creative Commons - Atribuição 4.0 Internacional.

Corrupção na 🌐🧩 Wikipédia: "Esquema Quintinense" desvendado

Em março desse ano saiu o resultado da longa e intensa investigação do Esquema Quintinense, considerado pelos verificadores (investigadores) da Wikipédia como um dos mais graves e escabrosos casos de corrupção, formação de conluio, troca de favores e meatpuppetry da história da Wikipédia lusófona. Esse Esquema foi delatado por Raimundo57br, um dos envolvidos, em janeiro, alegando que o Quintinense usou-o e depois o descartou.

Quintinense é um usuário fantocheiro banido indefinidamente em 2010 por fraude processual, devido ao seu uso de contas falsas (fantoches) para ganhar votações inflando artificialmente o número de opositores à eliminação de artigos de seu interesse (escolas de samba, espécies de Pokémon...). Posteriormente, passou a fazer alterações nas mais diversas nas políticas e decisões da Wikipédia, tentando direcionar o projeto sozinho, o que vai contra o espírito colaborativo do mesmo.

Contas comprometidas

Meatpuppetry: um tipo de fantocharia que consiste do uso de contas de outras pessoas para passar a agenda do fantocheiro.

  1. Raimundo57br: réu confesso, mantido o filtro no domínio Wikipédia (impedimento de editar nas páginas que decidem o rumo do projeto);
  2. Matheus Faria (ex-administrador): réu confesso, banido indefinidamente. Depois de chegar ao cargo, devido a estreitas relações com outro fantoche do Quintinense, Maria Madalena, um sockpuppet (conta mantida pelo próprio fantocheiro), emprestou sua conta para o Q. Quando viu o que se passava, renunciou o cargo e abandonou o projeto;
  3. Mário Henrique (ex-administrador): suspeito de ser meatpuppetry (conta que não pertence ao fantocheiro, mas que "faz favores", passa a agenda dele), banido indefinidamente após análise comportamental ser discutida com a comunidade;
  4. Richard Melo da Silva (eliminador): suspeito de meatpuppetry, banido indefinidamente após análise comportamental ser discutida com a comunidade;
  5. Gusta (eliminador): réu confesso, a conta foi compartilhada (meatpuppetry) com o Q através de seu fantoche sockpuppet Maria Madalena;
  6. Maria Madalena (ex-eliminadora): operadora do Esquema juntamente com o Q. Suspeitava-se de ser sockpuppet (conta do próprio Q), mas não há evidências técnicas, bem como não há evidências comportamentais para declará-la meatpuppet (conta emprestada). Foi banida indefinidamente por agir de má-fé (operando o Esquema) e usar sockpuppets (as contas que emprestaram para ela);
  7. Mar França: fantoche (meatpuppet) óbvio de longa data, cujo único objetivo era ditar os rumos do projeto. Foi recrutado fora da Wikipédia para defender a agenda do Q. Banido indefinidamente;
  8. Onjacktallcuca: bloqueado em infinito por meatpuppetry, conforme análise comportamental;
  9. SANDRO NUNES COUTO: bloqueado indefinidamente por meatpuppetry, novato possivelmente aliciado;
  10. Tut - Caçador de Vândalos: sockpuppet confirmado por investigação técnica.

Há mais usuários suspeitos, mas sem provas suficientes para que alguma ação contra eles seja tomada.