[Livro] A Criptografia Funciona: Como Proteger Sua Privacidade na Era da Vigilância em Massa

Andamos tratando aqui no blog sobre criptografia PGP e algumas das maneiras que ela pode ser implementada. Hoje estamos compartilhando um guia publicado em 2013 que oferece um rápido panorama sobre o potencial da criptografia seguido de alguns tutoriais passo a passo. Os programas abordados nos tutoriais são Tor, Pidgin e OTR, Email e PGP e Tails. Esse artigo foi escrito por Micah Lee, da Freedom of the Press Foundation. logo após os primeiros vazamentos feitos por Edward Snowden. Esta versão em português contém alguns erros de ortografia mas que não afetam o conteúdo prático.

Baixe o PDF aqui.

Como Criptografar seus Emails de Forma Fácil

Quando enviamos um e-mail para outras pessoas é como se enviássemos cartões postais, quer dizer toda a mensagem fica exposta para quem quiser interceptar. Em alguns casos, a mensagem até fica protegida enquanto está em trânsito, mas uma vez que chega nos servidores, fica legível e a disposição das empresas que hospedam nossas contas.

Usar métodos de criptografia para impedir que leiam seus e-mails muitas vezes é percebido como uma tarefa complexa. Porém com as ferramentas certas, podemos criptografar nossas mensagens com uns poucos cliques. Isso é uma saída para quando precisamos trocar mensagens mais intimas ou proteger nossas conspirações para organizar piqueniques subversivos. Na verdade, a criptografia serve para todos os momentos em que não queremos que nossos dados sejam observados, vendidos, gravados e guardados para posterioridade, independente do que estamos falando. Nesse tutorial vamos ensinar como instalar os plugins necessários para criar sua chave e criptografar suas mensagens no cliente de email.

Breve História

Paul Zimmermann, um ativista anti-nuclear norte-americano, desenvolveu em 1991 a primeira versão do programa de criptografia PGP. O nome vem da sigla em inglês Pretty Good Privacy (em português algo como Privacidade Muito Boa) e tinha o intuito de permitir a postagem anônima em fóruns online, impedindo que o movimento anti-nuclear fosse vigiado pelo Estado. O programa se espalhou rapidamente, principalmente por ter sido lançado gratuitamente e com código aberto incluído com todas as cópias. Em pouco tempo estava sendo usado ao redor do mundo por dissidentes, ativistas e cypherpunks.

Nos anos que se seguiram Zimmermann enfrentou várias batalhas judiciais em função de ter sido responsável pelo desenvolvimento do PGP, no entanto seguiu desenvolvendo melhorias no código. Na metade da década de 90, Zimmermann e seus colegas formaram uma empresa para seguir com o desenvolvimento do PGP. Posteriormente, essa empresa foi adquirida por outras companhias, entre elas a Symantec. Em 1997, Zimmermann e sua equipe propuseram para a IETF (Internet Engineering Task Force) a criação de um padrão de criptografia que pudesse ser intercambiável com o protocolo PGP. Esse padrão veio a ser chamado OpenPGP e a partir daí muitos programas começaram a ser desenvolvidos em torno desse protocolo. A Free Software Foundation desenvolveu o programa Gnu Privacy Guard (GPG ou GnuPG) que é aplicado por várias interfaces. Outros programas estão disponíveis em diferentes linguagens e para diferentes plataformas, incluindo Android e iOS.

Como Funciona

A criptografia PGP  funciona com o uso de um par de chaves assimétricas geradas aleatoriamente. Cada pessoa possui seu par de chaves, sendo uma chave pública e a outra privada. A chave privada é secreta, deve ser guardada com segurança e nunca compartilhada com nenhum pessoa, é com ela que você vai desembaralhar as mensagens criptografadas que receber. Já a chave pública será utilizada por quem quiser lhe enviar uma mensagem criptografada, por isso é bom que você divulgue ela para seus contatos. Abordamos mais a fundo esse assunto nessa postagem.

Existem muitos usos para a criptografia por chaves assimétricas além de segurança de e-mails, sendo parte importante da segurança em vários protocolos da internet como TLS, mensagens instantâneas e podendo ser usada para verificar a integridade de arquivos como demonstramos anteriormente aqui.

Baixando os complementos necessários

GnuPG, GPG4Win e GPGTools

Se você usa sistemas operacionais Gnu/Linux você provavelmente já tem GnuPG instalado em seu computador. Se você roda sistemas operacionais não-livres, terá que baixar e instalar um programa para operar as suas chaves. Para Windows, você deve baixar o programa GPG4Win e para Mac o programa se chama GPGTools. Baixe e instale optando sempre pelas configurações padrões.

Thunderbird

Você vai precisar de um cliente de e-mails instalado em seu computador. Um cliente de e-mails é um programa que opera no seu computador e acessa seu servidor de e-mails para receber e enviar mensagens. Ainda que existam complementos que permitem utilizar chaves PGP diretamente no webmail, é preferível fazer a criptografia na própria máquina. Para esse tutorial vamos usar o Thunderbird, que em alguns sistemas pode ser chamado de IceDove. Caso você ainda não tenha o programa instalado, baixe-o no site da Mozilla e instale-o.

Abre o Thunderbird e siga o assistente de configuração passo-a-passo para configurar sua conta de e-mail.

Caso utilize uma conta em servidores radicais como o Riseup.net ou Inventati, dê uma conferida nos tutoriais que esses coletivos disponibilizam pois oferecem configurações otimizadas para maior segurança.

Enigmail

Com sua conta configurada para receber e enviar e-mails através do Thunderbird, é hora de baixar o complemento Enigmail. É esse plugin que vai servir de interface para todo o processo de criptografia do GnuPG.
No menu do programa de e-mails, busque a parte de configurações – geralmente representada por três barras empilhadas no canto direito. Nesse menu, vá até Ferramentas e então Complementos. Busque por Enigmail, e depois de instalá-lo reinicie o programa.

Criando suas chaves

Quando reiniciar o programa, o assistente de configurações do Enigmail deve abrir automaticamente. Caso não abra, vá novamente até o menu do programa de e-mails e selecione Enigmail e Assistente de Configuração.

No assistente de configuração, clique em Avançar com as opções padrão selecionadas, exceto nesses casos:

-> Na tela entitulada “Encryption”, selecione “Encrypt all of my messages by default, because privacy is critical to me”.
-> Na tela entitulada “Assinatura”, selecione “Don’t sign my messages by default”.
-> Na tela entitulada “Seleção de Chave”, selecione “Eu desejo criar um novo par de chaves para assinar e criptografar minhas mensagens”.
-> Na tela entitulada “Criar Chave”, escolha uma senha forte!

Recomendamos fortemente a utilização de senhas longas e aleatórias. Considere utilizar um gerenciador de senhas ou o método Diceware (Dadoware) para elaboração dessa senha.

A seguir o computador irá gerar seu par de chaves. Isso pode demorar um pouco, nesse meio tempo é importante que você utilize seu computador para todo o tipo de tarefas, isso vai ajudar o computador a gerar suas chaves aleatórias.

Pronto!

Teste suas configurações: Envie um e-mail para Edward, o bot da Free Software Foundation, << edward-pt-br@fsf.org >>. Comece enviando sua chave pública em anexo para o bot. Lembre-se que esse e-mail não pode ser criptografado, já que você ainda não tem a chave pública de Edward. Ele lhe responderá em alguns minutos e você poderá testar descriptografar sua primeira mensagem!

Aproveite para achar um/a cúmplice para seguir esse tutorial e criar suas chaves. Usem as ferramentas para começar a se enviar e-mails verdadeiramente secretos!

Migrando sua chave OTR do Pidgin para o Gajim

Essa é uma postagem bem específica, mas pode quebrar o galho de alguém.

Sempre usei o Pidgin como gerenciador de contas de mensageria instantânea. Nele é possível configurar diversas contas de chat e já faz um bom tempo uso apenas o protocolo federado XMPP. Optei pelo Pidgin no Debian porque tinha a possibilidade de instalar o plugin do Off-The-Record (OTR), que faz encriptação de ponta-a-ponta no chat. Com isso, temos as seguintes condições de segurança satisfeitas:

  • Software livre de código aberto: pidgin
  • Protocolo federado: XMPP
  • Servidor autônomo: pode ser o do riseup.net
  • criptografia de ponta-a-ponta
  • controle das chaves públicas e, principalmente, da privada.

Aí outro dia, d4rkcrist4l postou aqui no blog falando que usar um plugin para rodar o OTR poderia ser uma furada. Então, fui atrás de outro programa. Infelizmente, não encontrei nenhum que satisfizesse todos os critérios acima, mais o meu gosto, e ainda tivesse o OTR embutido de fábrica. Porém, descobri outra falha do Pidgin. Dizem por aí que por ele ser escrito em C há mais chances de ele sofrer ataques relacionados à memória, pois essa linguagem precisa de acesso total para manipulação da memória do computador.

Foi então que apareceu o Gajim. Um amigo já havia comentado dele e finalmente resolvi instalar. O Gajim é escrito em python, o que, até onde o meu conhecimento de leigo alcança, melhora drasticamente a vulnerabilidade de memória que o C pode ter. Além disso, esse programa também roda o OMEMO, protocolo que criptografa de ponta-a-ponta conversas em grupo, coisa que o OTR não faz.

Entretanto, o Pidgin lida com as chaves OTR de um jeito diferente do Gajim. Como eu não queria ter que gerar novas chaves, descobri um script que resolve o problema. Daqui pra frente é a tradução das instruções do repositório github do pidgin2gajim.


pidgin2gajim

Este programa converte as chaves OTR do formado Pidgin para o forma Gajim.

Seus arquivos OTR do Pidgin estão aqui:

~/.purple/otr.private_key  # chaves(s) secreta(s)
~/.purple/otr.fingerprints # impressões digitais (fingerprints)

Seus arquivos OTR do Gajim estão aqui:

~/.local/share/gajim/ACCOUNT.key3 # chave secreta
~/.local/share/gajim/ACCOUNT.fpr  # fingerprints

Quando você rodar o pidgin2gajim.py, ele irá carregar automaticamente os seus arquivos OTR do Pidgin do diretório ~/.purple/. Em seguida, criará um novo diretório relativo ao seu local atual chamado “output” e salvará nele os arquivos no formato-Gajim .key3 e .fpr para cada conta que você tiver no Pidgin.

Depois, você precisará mover manualmente os arquivos .key3 e .fpr do diretório “output” para o ~/.local/share/gajim/. Será preciso alterar um pouco o nome dos arquivos (por exemplo, retirar o prefixo “nome_de_usuária@”).

Copiei um bom tanto de código do projeto “otrfileconverter” do Guardian Project para as partes de carregar e manusear o arquivo de chave privada OTR do Pidgin: https://github.com/guardianproject/otrfileconverter

Como Usar

Primeiro, instale o Gajim:

sudo apt-get install gajim

Rode-o e configure suas contas XMPP (jabber). Clique em Editar -> Plugins e mude para a aba Disponível (Available). Baixe e instale o plugin do OTR. (Caso você queira usar novas chaves ou gerá-las pela primeira vez, faça o seguinte: na janela de plugins, selecione o Off-The-Record (OTR) e clique em Configurar para abrir as configurações do plugin. Para cada conta XMPP, gere uma nova chave OTR; feito isso, feche completamente o Gajim.)

Em seguida, baixe e rode o script pidgin2gajim:

$ git clone https://github.com/micahflee/pidgin2gajim.git
(copia o conteúdo do projeto que tá no github. Tem que tem o "git" instalado.)

$ cd pidgin2gajim

(agora instale a biblioteca python-virtualenv)
$ sudo apt-get install python-virtualenv
$ virtualenv env
$ . env/bin/activate 
$ pip install pyparsing
$ pip install python-potr
$ ./pidgin2gajim.py
$ ls -l output
$ deactivate 

Agora sobrescreva suas chaves OTR do Gajim com as criadas a partir das do Pidgin que estão no diretório output.

Seria algo assim:

# descrição do comando: copiar chave_em_output para novo_nome_chave_outro_lugar
$ cp output/micah@jabber.ccc.de.key3 ~/.local/share/gajim/jabber.ccc.de.key3
$ cp output/micah@jabber.ccc.de.fpr ~/.local/share/gajim/jabber.ccc.de.fpr

O nome “fulana” dos arquivos fulana.key3 e fulana.fpr tem que ser o mesmo nome que está configurado na conta no Gajim.

Abra o Gajim novamente. Se tudo tiver corrido bem, suas chaves OTR já devem estar no Gajim. Pronto.

Senhas fáceis para você memorizar e que nem a NSA conseguirá desvendar

Copiado do site do The Intercept Brasil


2016-12-29

 

Está ficando cada vez mais fácil proteger sua privacidade digital. Os iPhones agora criptografam grande parte de suas informações pessoais, seus discos rígidos no Mac e no Windows 8.1 são automaticamente bloqueados; e até mesmo o Facebook, que faturou uma fortuna com o compartilhamento aberto de informações, oferece criptografia de ponta a ponta na ferramenta de bate-papo WhatsApp. Mas nenhuma dessas tecnologias oferece a proteção esperada se você não souber criar uma frase secreta segura.

Uma frase secreta é como uma senha, apenas mais longa e mais segura. Funciona essencialmente como uma chave de criptografia que pode ser memorizada. Ao começar a se importar mais com sua privacidade e a aperfeiçoar seus hábitos de segurança no uso de computador, um dos primeiros desafios a ser enfrentado será a criação de uma frase secreta. Sem ela não é possível se proteger adequadamente.

Por exemplo, quando você criptografa seu disco rígido, um pendrive ou um documento em seu computador, a criptografia será tão segura quanto a sua frase secreta. Se optar por usar um banco de dados de senhas, ou um recurso de salvamento de senhas em seu navegador, crie uma frase secreta principal segura para protegê-los. Ao criptografar seus e-mails com PGP (Pretty Good Privacy – privacidade muito boa), sua chave privada é protegida com uma frase secreta. Em seu primeiro e-mail para Laura Poitras, Edward Snowden disse: “Confirme se ninguém teve acesso a uma cópia de sua chave privada e que ela usa uma frase secreta segura. Presuma que seu adversário é capaz de realizar um trilhão de tentativas por segundo”.

Neste artigo, descrevo uma forma simples de criar frases secretas extremamente seguras e fáceis de lembrar. É a última matéria de uma série em desenvolvimento de artigos que oferecem soluções — parciais e imperfeitas, mas úteis — para os muitos problemas relacionados à vigilância que investigamos agressivamente no The Intercept.

Acontece que criar uma frase secreta segura simplesmente pensando em uma é incrivelmente difícil e, se seu o adversário for realmente capaz de realizar um trilhão de tentativas por segundo, é provável que você não seja tão bem-sucedido. Se você usar uma sequência de caracteres completamente aleatória, a frase secreta pode ser segura, mas será angustiante memorizá-la (e, honestamente, um desperdício de energia cerebral).

Mas, felizmente, a dicotomia entre usabilidade e segurança é falsa. Há um método para gerar frases secretas impossíveis de serem adivinhadas até pelos adversários mais poderosos, mas possíveis de serem memorizadas por humanos. O método é chamado Diceware, e seu nome é baseado em um conceito matemático simples.

Seu macete para criar uma senha secreta não é inteligente

Com frequência, as pessoas escolhem frases baseadas na cultura pop — letras de músicas ou uma frase de um filme ou livro — e embaralham as letras ligeiramente, acrescentando maiúsculas, pontuação ou usando a primeira letra de cada palavra dessa frase. Algumas dessas frases secretas podem parecer seguras e completamente impossíveis de serem adivinhadas, mas é fácil subestimar a capacidade de quem se dispõe a adivinhá-las.

Imagine que seu adversário tenha obtido as letras de todas as músicas que já foram escritas, os roteiros de todos os filmes e programas de TV, os textos de todos os livros digitalizados até hoje e todas as páginas da Wikipedia, em todos os idiomas, e tenha usado esse material como base para sua lista de adivinhação de frases secretas. Sua frase resistiria?

Se você criou uma frase secreta tentando pensar em uma frase boa, há grandes chances de que ela não seja suficientemente segura para resistir a uma agência de espionagem. Por exemplo, você pode ter pensado em “Ser ou não ser/ ESSA é a Questão”. Se eu acertei, garanto que você não foi a primeira pessoa a usar essa frase batida de Shakespeare como frase secreta, e seu adversário sabe disso.

Passagens de Shakespeare não são seguras como frases secretas por conta de um fenômeno conhecido como entropia. Pense em entropia como se fosse aleatoriedade: um dos conceitos mais importantes em criptografia. Acontece que humanos são criaturas que seguem padrões e são incapazes de criar algo de forma verdadeiramente aleatória.

Mesmo se você não usar uma passagem de livro, mas criar uma frase em sua cabeça aleatoriamente, a frase estará longe de ser aleatória, porque a língua é previsível. Como explicou uma pesquisa sobre o assunto, “usuários não têm a capacidade de selecionar frases com palavras completamente aleatórias e são influenciados pela probabilidade de uma frase ocorrer na língua naturalmente”, ou seja, as frases secretas escolhidas por usuários não contêm o nível de entropia que você gostaria que tivessem. Seu cérebro tende a continuar a usar expressões e regras gramaticais comuns que reduzem a aleatoriedade da frase. Por exemplo, sua mente tende a colocar um advérbio depois de um verbo e vice-versa de forma desproporcional em relação à máquina, ou, para citar um dos casos da pesquisa mencionada acima, tende a colocar a palavra “maravilhosa” depois de “cidade”.

Frases secretas baseadas em cultura pop, fatos sobre sua vida ou qualquer coisa que venha diretamente de sua mente são muito mais fracas do que frases secretas embutidas de entropia verdadeira, coletada na natureza.

Esse vídeo curto, mas esclarecedor, da aula gratuita de criptografia da Khan Academy explica bem esse ponto.

Crie uma frase secreta segura com o Diceware

Apenas quando admitir que suas frases secretas antigas não são tão seguras quanto você imagina, você estará pronto para usar a técnica Diceware.

Primeiro, abra uma cópia da lista de palavras do sistema Diceware, que contém 7.776 palavras em português — 36 páginas que podem ser impressas em casa. No canto superior direito de cada página existem dois números separados por uma vírgula. Eles representam os dois primeiros resultados que determinarão a página a ser usada para selecionar aleatoriamente a primeira palavra. Os três resultados seguintes do lançamento de dados representarão a palavra a ser usada. Veja um exemplo na imagem abaixo:

Agora, pegue alguns dados de seis lados (isso mesmo, dados de verdade), lance-os diversas vezes e anote os números obtidos. Você precisa de cinco lançamentos de dados para chegar à primeira palavra da sua frase secreta. Dessa forma, você está gerando entropia, isto é, extraindo a mais pura aleatoriedade da natureza e a transformando em números.

Se lançar os dados e tirar 6,5,6,6,5, abra a lista de palavras Diceware na página 6,5, na linha 665 e chegará à palavra “vesgo”. (Ignore o acento para evitar problemas de configuração de teclado.) A palavra “vertice” será a primeira a compor sua frase secreta. Repita o processo acima. Você precisa de um frase secreta com sete palavras se estiver preocupado com a NSA, a Abin ou espiões chineses tentando adivinhar sua senha. (Veja mais detalhes sobre a lógica por trás desse número abaixo.)

Usando o Diceware, você chegará a uma frase secreta parecida com “vertice nutrir pardo paiol volupia”, “faringe caduco bulbo preciso voo afoito” ou “abade chiapas zunir olhado normal gestual arengar”. Se precisar de uma frase secreta mais segura, use mais palavras. Se uma frase secreta menos segura for aceitável para sua finalidade, você pode usar menos palavras.

As frases secretas do Diceware são suficientemente seguras?

A segurança de uma frase secreta baseada na técnica Diceware depende de quantas palavras ela contém. Se você selecionar uma palavra (em uma lista de 7.776 palavras), as chances de um invasor adivinhá-la são da ordem de 1 para 7.776. Seu invasor precisará tentar ao menos uma vez, no máximo, 7.776 vezes, e, em média, 3.888 vezes (já que há uma chance de 50% do invasor adivinhar sua palavra quando chegar à metade da lista).

Mas se você escolher duas palavras para sua frase secreta, a extensão da lista de frases possíveis aumenta exponencialmente. A chance de o invasor adivinhar sua primeira palavra corretamente ainda é de 1 em 7.776, mas para cada primeira palavra possível, a chance de a segunda palavra ser adivinhada corretamente também é de 1 em 7.776. Além disso, o invasor não saberá se a primeira palavra está correta até que adivinhe a frase secreta completa.

Portanto, com duas palavras, há 7.7762 ou 60.466.176 frases secretas possíveis. Em média, uma frase secreta de duas palavras baseada na técnica Diceware pode ser adivinhada após 30 milhões de tentativas. Uma frase secreta com cinco palavras, que teria 7.7765 frases secretas possíveis, pode ser adivinhada após uma média de 14 quintilhões de tentativas. (O número 14 seguido de 18 zeros.)

A dimensão da aleatoriedade de uma frase secreta (ou de uma chave de criptografia, ou de qualquer tipo de informação) é medida através de bits de entropia. Você pode medir a segurança de sua frase secreta de acordo com quanto bits de entropia ela contém. Cada palavra na lista Diceware equivale a aproximadamente 12,92 bits de entropia, já que 212,92 é igual a 7.776, aproximadamente. Portanto, se você escolher sete palavras, chegará a uma frase secreta com aproximadamente 90,5 bits de entropia, já que 12,92 vezes 7 é igual a 90,5, aproximadamente.

Em outras palavras, se um invasor souber que você está usando uma frase secreta de sete palavras com base na técnica Diceware e selecionarem sete palavras aleatórias da lista Diceware, a cada tentativa, o invasor terá a chance de adivinhar sua frase secreta de 1 em 1.719.070.799.748.422.591.028.658.176 por tentativa.

De acordo com o alerta de Edward Snowden em janeiro de 2013, com a possibilidade de um trilhão de tentativas por segundo, essa frase secreta levaria 27 milhões de anos para ser adivinhada.

Nada mau para uma frase secreta como “abade chiapas zunir olhado normal gestual arengar”, que é perfeitamente possível de ser memorizada pela maioria das pessoas. Compare a frase secreta acima a “d07;oj7MgLz’%v”, uma senha aleatória que contém menos entropia do que a frase secreta de sete palavras com base na técnica Diceware, mas que é muito mais difícil de ser memorizada.

Uma frase secreta de cinco palavras, por sua vez, seria adivinhada em pouco menos de seis meses, enquanto uma frase secreta de seis palavras levaria, em média, 3.505 anos para ser adivinhada, com base em um trilhão de tentativas por segundo. Levando em consideração a Lei de Moore, a capacidade dos computadores cresce constantemente — em pouco tempo, um trilhão de tentativas por segundo será considerado um desempenho lento — portanto, é importante manter suas frases secretas um passo à frente dos avanços tecnológicos.

Com um sistema como esse, não importa a lista usada para escolher suas palavras. Nem mesmo as palavras em si importam (palavras com duas letras são tão seguras quanto palavras de seis letras). O importante é a extensão da lista de palavras e que cada palavra na lista seja única. A probabilidade de uma frase secreta composta por essas palavras selecionadas de forma aleatória ser adivinhada diminui exponencialmente a cada palavra acrescentada, logo, é possível criar frases secretas que nunca serão adivinhadas.

Preciso mesmo usar os dados?

Esse é um debate mais extenso, mas a resposta objetiva é: o uso de dados de verdade oferece uma garantia muito maior de que nada deu errado. Mas é uma tarefa demorada e entediante, e o uso de um computador para gerar números aleatórios é quase sempre suficiente.

Mas infelizmente, parece não haver softwares fáceis de usar disponíveis para ajudar na geração de frases secretas com base na técnica Diceware, apenas alguns projetos no GitHub capazes de gerar frases secretas Diceware com base em linhas de comando que podem servir a usuários avançados. Fique atento para um artigo futuro sobre isso.

Como memorizar sua frase secreta maluca (sem ficar maluco)

Após gerar sua frase secreta, o próximo passo é memorizá-la.

Recomendo que você anote sua nova frase secreta em um pedaço de papel e o carregue com você por quanto tempo for necessário. Cada vez que digitar a frase secreta, tente usar a memória primeiro, mas consulte a anotação se precisar. Supondo que você digite a frase secreta duas vezes por dia, não deve levar mais de dois ou três dias para que a anotação não seja mais necessária e, portanto, destruída.

Digitar sua frase secreta regularmente permite que você a memorize por meio de um processo conhecido como “repetição espaçada”, de acordo com uma pesquisa promissora sobre frases secretas de alta entropia.

Agora que você sabe como usar frases secretas, saiba quando evitá-las

As frases secretas do Diceware são ótimas para descriptografar algo localmente em seu computador, como seu disco rígido, sua chave privada PGP ou seu banco de dados de senhas.

Você não precisa tanto delas para entrar em um site na Internet. Para isso, o uso de frases secretas de alta entropia tem um benefício menor. Invasores nunca conseguiram executar um trilhão de tentativas por segundo se a cada tentativa for preciso entrar em contato com um servidor na Internet. Em alguns casos, os invasores controlam ou invadem servidores remotos — de forma que podem obter sua frase secreta assim que você a digitar, independente do nível de criptografia da frase.

Para entrar em sites e outros servidores, use um banco de dados de senhas. Eu gosto do KeePassX porque é gratuito, usa código aberto, funciona em diversas plataformas e nunca armazena nada na nuvem. Basta trancafiar todas as suas senhas com uma frase secreta gerada por meio do Diceware. Use seu gerenciador de senha para criar e armazenar senhas diferentes e aleatórias para cada site que você usa.

Como usamos o Diceware para proteger nossas senhas

The Intercept conta com o servidor SecureDrop, um sistema de envio de informações confidenciais de código aberto que facilita o contato conosco e protege o anonimato de nossas fontes.

Quando uma fonte de informações nova visita nosso site SecureDrop, recebe um codinome composto de sete palavras aleatórias. Após enviar mensagens ou documentos, eles podem usar o codinome para ler as possíveis respostas de nossos jornalistas.

Na verdade, esse codinome age como uma frase secreta de criptografia para a fonte gerada por meio do método Diceware com um gerador de números aleatórios provido de segurança digital criptográfica, em vez de se valer do lançamento de dados. O dicionário do SecureDrop tem apenas 6.800 palavras (algumas palavras foram removidas pelos desenvolvedores por serem potencialmente ofensivas) fazendo com que cada palavra tenha aproximadamente 12,73 bits de entropia. Mas isso é mais do que suficiente para impedir que alguém descubra o codinome de uma fonte, a menos que tenha acesso a recursos computacionais poderosíssimos e alguns milhões de anos em mãos.

Frases secretas simples e aleatórias, em outras palavras, são tão eficientes na proteção de nossas fontes quanto na segurança de seu computador. É uma pena vivermos em um mundo onde cidadãos comuns precisem de tamanha proteção, mas enquanto esse for o caso, o sistema Diceware permite que nos protejamos com uma segurança no nível da CIA, sem ter que passar por um treinamento secreto avançado.

Agradecimento a Garrett Robinson por conferir meus cálculos matemáticos e evitar que eu cometesse erros tolos.

Verificando a integridade de arquivos

Caso você baixe algum arquivo da internet ou receba-o diretamente de alguém, é possível verificar sua integridade para saber se ele é o mesmo que o original ou foi modificado. Se você é quem está enviando o arquivo, então isso irá garantir que o que você mandou é o que foi recebido. Mostraremos duas formas de fazer isso.

Arquivos assinados

Usaremos o GnuPrivacyGuard para assinar arquivos. É preciso ter previamente um par de chaves GPG. Seu par de chaves mais recente será usado por padrão para criar uma assinatura. Caso deseje assinar com outro usuário, utilize o marcado -u. Todos os comandos de assinatura requerem a senha de acesso à chave privada do usuário assinante.

Assinando

Digite o seguinte comando para criar uma assinatura separada do arquivo:

$ gpg -b arquivo

O resultado será a assinatura chamada:

arquivo.sig

Também é possível criar um novo arquivo assinado, dois em um:

$ gpg -s arquivo

O resultado será o seguinte:

arquivo.gpg

Para criar uma assinatura separada em texto claro, execute:

$ gpg --clearsign arquivo

O resultado será um arquivo de mesmo nome com a extensão .asc. O uso desse tipo de assinatura, entretanto, é limitado pois você pode apenas conferir se a assinatura é válida e não o arquivo em si. Utilize as duas primeiras opções.

Verificando

Para verificar um arquivo corretamente, é preciso ter a chave pública do remetente no seu conjunto de chaves públicas.

Se você recebeu o arquivo e sua assinatura separados, execute:

gpg --verify arquivo.sig arquivo

O resultado positivo será algo assim:

gpg: Signature made Sex 19 Mai 2017 14:52:06 -03 using RSA key ID ####
gpg: Good signature from "usuario <usuario@email.org>"
gpg: AVISO: Esta chave não está certificada com uma assinatura confiável!
gpg:        Não há indicação de que a assinatura pertence ao dono.
Impressão da chave primária: #### #### #### ####

Caso você receba algo assim:

gpg: Signature made Fri 09 Oct 2015 05:41:55 PM CEST using RSA key ID 4F25E3B6
gpg: Can't check signature: No public key

Isso significa que ou você não possui a chave pública da pessoa ou a assinatura foi gerada por outra pessoa e o arquivo deve ser tratado como suspeito.

Se você recebeu um único arquivo com a terminação .gpg, então execute apenas:

$ gpg --verify arquivo.gpg

Comparando os CHECKSUMs

Outra forma de verificar a integridade de um arquivo é comparar o checksum ou hash (resumo) de SHA1 do arquivo recebido com o do original. A função SHA1 é uma função de dispersão criptográfica que gera um código de 160 bits que resume o arquivo.

Se você baixar o arquivo de instalação do GnuPG do site do GnuPG, execute:

$ sha1sum gnupg-2.0.30.tar.bz2

e compare o resultado com o hash anunciado no site. A cara do hash do SHA1 é a seguinte:

a9f024588c356a55e2fd413574bfb55b2e18794a  gnupg-2.0.30.tar.bz2

Esse não é tido como um método tão seguro quanto a assinatura, dado que se alguém consegue alterar um arquivo em trânsito, é possível que também consiga alterar o hash anunciado no site. Mas mesmo assim, comparar os valores de checksum é muito mais confiável do que nada.

Exercícios:

Aqui vão dois exemplos para você exercitar o que aprendeu. Lembre-se de baixar as chaves públicas de quem estiver assinando o arquivo que você deseja baixar.

  1. Baixe a instalação do GnuPG. Verifique a assinatura e compare o checksum.
  2. Baixe a última versão do TailsOS. Verifique o arquivo .ISO com a assinatura disponibilizada no site.

Como usar GPG para criptografar e assinar mensagens via terminal

Introdução

GPG, ou GNU Privacy Guard, é uma implementação criptográfica de chave pública. Ela permite a transmissão segura de informação entre partes e pode ser usada para verificar se a origem de uma mensagem é genuína.

Neste guia, discutiremos como a GPG funciona e como implementá-la. Usaremos comando para Ubuntu 12.04 neste demonstração, mas essas ferramentas estão disponíveis em qualquer distribuição moderna de Linux.

Como a criptografia de Chave Pública funciona

Um problema que muitas pessoas enfrentam é como se comunicar de forma segura e validar a identidade de parte com quem estão falando. Vários esquemas que tentam responder a esta questão requerem, pelo menos em algum ponto, a transferência de uma senha ou outras credenciais de identificação através de um meio inseguro.

Garanta que apenas as pessoas que você quer leiam a mensagem

Para resolver esse problema, GPG conta com um conceito de segurança chamado criptografia de chave pública. A ideia é que você pode dividir os estágios de criptografar e descriptografar da transmissão em duas coisas separadas. Dessa forma, você pode distribuir livremente a parte para criptografar, desde que guarde segura a parte para descriptografar.

Isso permitiria que uma mensagem de transferência de via única fosse criada e criptografada por qualquer pessoa, mas que somente pudesse ser descriptografada pela usuária designada (a única com a chave privada para descriptografar) Se ambas as partes criam os pares de chaves pública/privada e dá uma à outra sua chave pública, ambas podem criptografar mensagens entre si.

Então, neste cenário, cada parte possui sua própria chave privada e a chave pública da outra.

Validar a identidade da remetente

Outra vantagem desse sistema é que a remetente de uma mensagem por “assiná-la” com sua chave privada. A chave pública que a destinatária possui pode ser usada para verificar que a assinatura é de fato enviada pela usuária indicada.

Isto pode impedir uma terceira parte de se fazer passar por outra pessoa (“spoofing”). Também ajuda a assegurar que a mensagem foi transmitida por completo, sem danos ou corrupção de arquivos.

Configurando as chaves GPG

GPG deve vir instalada por padrão no Ubuntu 12.04. Se não for o caso, você pode instalá-la com:

sudo apt-get install gnupg

Para começar a usar GPG para criptografar suas comunicações, você precisa criar um par de chaves. Isso pode ser feito pelo seguinte comando:

gpg --gen-key

Você passará por algumas questões que irão configurar suas chaves.

  • Por favor, selecione o tipo de chave que você quer: (1) RSA e RSA (padrão)
  • Qual o tamanho de chave que você quer? 4096
  • A chave é válida por? 0
  • Isto está correto? y
  • Nome real: your real name here (coloque o nome que desejar)
  • Endereço de Email: seu_email@endereço.net
  • Comentário: Comentário opcional que estará visível na sua assinatura
  • Modificar (N)ome, ©comentário, (E)mail or (O)kay/(Q)uit? O
  • Coloque sua senha: Coloque sua senha de segurança aqui (maiúsculas, minúsculas, dígitos, símbolos)

A esta altura, será preciso entropia para gerar as chaves. Este é basicamente um termo que descreve a quantidade de imprevisibilidade que existe num sistema. GPG usa esta entropia para gerar um conjunto de chaves aleatórias.

O melhor é abrir uma nova janela de terminal e SSH na VPS enquanto o programa roda. Instale algum software, trabalhe, e use seu computador o máximo que puder para que seja gerada a entropia necessária.

Este processo pode levar bastante tempo, dependendo de quanta atividade você consegue gerar no sistema.
Para aumentar a entropia automaticamente dá para usar o seguinte comando:

cat /dev/urandom

Criando um certificado de revogação

Você precisa ter uma forma de invalidar seu par de chaves no caso de acontecer uma falha de segurança, ou no caso de você perder sua chave secreta. Existe um jeito fácil de fazer isso usando o software GPG.

Crie seu certificado assim que fizer seu par de chaves, não quando precisar dele. Essa chave de revogação deve ser gerada com antecedência e mantida em um local separado e seguro, para o caso em que seu computador esteja comprometido ou inoperante. Escreva:

gpg --gen-revoke your_email@address.com

Será pedido uma razão para a revogação. Você pode escolher qualquer uma das opções disponíveis, mas já que isso é feito com antecedência, não é preciso ser específica.

Será oferecida a chance de adicionar um comentário e finalmente confirmar suas escolhas.

Por fim, um certificado de revogação será gerado na tela. Copie-o e cole-o num local seguro, ou imprima-o para uso posterior:

Revocation certificate created.

Please move it to a medium which you can hide away; if Mallory gets
access to this certificate he can use it to make your key unusable.
It is smart to print this certificate and store it away, just in case
your media become unreadable.  But have some caution:  The print system of
your machine might store the data and make it available to others!
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: A revocation certificate should follow

iQIfBCABAgAJBQJSTxNSAh0AAAoJEIKHahUxGx+E15EP/1BL2pCTqSG9IYbz4CMN
bCW9HgeNpb24BK9u6fAuyH8aieLVD7It80LnSg/+PgG9t4KlzUky5sOoo54Qc3rD
H+JClu4oaRpq25vWd7+Vb2oOwwd/27Y1KRt6TODwK61z20XkGPU2NJ/ATPn9yIR9
4B10QxqqQSpQeB7rr2+Ahsyl5jefswwXmduDziZlZqf+g4lv8lZlJ8C3+GKv06fB
FJwE6XO4Y69LNAeL+tzSE9y5lARKVMfqor/wS7lNBdFzo3BE0w68HN6iD+nDbo8r
xCdQ9E2ui9os/5yf9Y3Uzky1GTLmBhTqPnl8AOyHHLTqqOT47arpwRXXDeNd4B7C
DiE0p1yevG6uZGfhVAkisNfi4VrprTx73NGwyahCc3gO/5e2GnKokCde/NhOknci
Wl4oSL/7a3Wx8h/XKeNvkiurInuZugFnZVKbW5kvIbHDWJOanEQnLJp3Q2tvebrr
BBHyiVeQiEwOpFRvBuZW3znifoGrIc7KMmuEUPvA243xFcRTO3G1D1X9B3TTSlc/
o8jOlv6y2pcdBfp4aUkFtunE4GfXmIfCF5Vn3TkCyBV/Y2aW/fpA3Y+nUy5hPhSt
tprTYmxyjzSvaIw5tjsgylMZ48+qp/Awe34UWL9AWk3DvmydAerAxLdiK/80KJp0
88qdrRRgEuw3qfBJbNZ7oM/o
=isbs
-----END PGP PUBLIC KEY BLOCK-----

Como importar as chaves públicas de outras pessoas

GPG seria bem inútil se não fosse possível aceitar chaves públicas das pessoas com quem você quer se comunicar.

Você pode importar a chave pública de alguém de várias formas. Se você conseguiu uma chave pública em formato texto, GPG pode importá-la com o seguinte comando:

gpg --import name_of_pub_key_file

Também existe a possibilidade de que a pessoa com quem você quer se comunicar tenha subido a chave num servidor de chaves públicas. Estes servidores são usados para armazenar chaves públicas do mundo todo.

Um servidor de chaves popular que sincroniza suas informações com uma série de outros servidores é o servidor de chaves do MIT. Você pode procurar pelas pessoas pelos seus nomes ou endereços de email acessando o seguinte site no navegador:

http://pgp.mit.edu/

Você também pode procurar no servidor de chaves a partir do GPG usando o seguinte comando:

gpg --keyserver pgp.mit.edu  --search-keys search_parameters

Como verificas e assinar chaves

Embora você possa distribuir livremente a chave pública que você gerou e as pessoas usem isso para entrar em contato contigo de maneira criptografada, existe ainda uma questão de confiança na transmissão inicial da chave pública.

Verificar a identidade da outra pessoa

Como saber se a pessoa que lhe dá sua chave pública é quem ela diz que é? Em alguns casos, isso pode ser simples. Você pode estar sentado justo ao lado dela, com ambos laptops abertos trocando chaves. Este parece ser um jeito bem seguro de saber que você está recebendo a chave certa.

Mas existem várias outras circunstâncias onde esse contato pessoal não é possível. Pode ser que você não conheça a outra parte pessoalmente, ou que vocês estejam separadas fisicamente pela distância. Se você não quer jamais se comunicar por canais inseguros, verificar a chave pública de alguém pode ser problemático.

Por sorte, ao invés de verificar to uma chave pública de ambas as partes, você pode simplesmente compara a “impressão digital” derivada dessas chaves. Isso lhe assegurará razoavelmente bem que ambas estão usando a mesma informação da chave pública.

Você pode conseguir a impressão digital de uma chave pública digitando:

gpg --fingerprint seu_email@endereco.net
pub   4096R/311B1F84 2013-10-04
      Key fingerprint = CB9E C70F 2421 AF06 7D72  F980 8287 6A15 311B 1F84
uid                  Test User <test.user@address.com>
sub   4096R/8822A56A 2013-10-04

Isso lhe dará uma sequência de caracteres (string ) muito mais manuseável para comparar. Você pode comparar esta sequência (string ) com a própria pessoa, ou com uma pessoa que tenha acesso à dona da chave.

Assinando a chave alheia

Assinar uma chave é dizer ao seu software que você confia na chave que lhe foi dada e que você verificou que aquela chave está associada à pessoa certa.

Para assinar uma chave que você já importou, simplesmente digite:

gpg --sign-key email@exemplo.org

Ter assinado a chave significa que você verificou-a, que você confia que a pessoa que lhe deu a chave é quem ela diz que é. Isso pode ajudar outras pessoas a decidirem se confiam ou não nessa pessoa também. Se alguém confia em você, e ela vê que você assinou a chave daquela pessoa, isso torna mais provável que ela venha a confiar também.

Você deveria conceder à pessoa que você assinou a chave as vantagens da vossa relação de confiança enviando à ela a chave assinada. Você pode fazer isso digitando:

gpg --export --armor email@exemplo.org

Será preciso digitar sua senha novamente. Em seguida, a chave pública dela, assinada por você, aparecerá na tela. Envie para ela para que ela possa se beneficiar do seu “selo de aprovação” quando interagir com outras pessoas.

Quando ela receber essa nova chave assinada, poderá importá-la, adicionando na própria base de dados da GPG a informação de assinatura que você gerou. Ela pode fazer isso digitando?

gpg --import file_name

Como tornar sua chave pública altamente disponível

Nada de ruim pode acontecer se pessoas desconhecidas possuírem sua chave pública.

Por causa disso, pode ser benéfico que você disponibilize sua chave pública. Assim, as pessoas poderão facilmente encontrar sua informação e lhe enviar mensagens seguras, desde a primeira comunicação.

Você pode enviar a qualquer pessoa sua chave pública requisitando-a ao sistema GPG:

gpg --armor --export seu_email@endereco.net
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)

mQINBFJPCuABEACiog/sInjg0O2SqgmG1T8n9FroSTdN74uGsRMHHAOuAmGLsTse
9oxeLQpN+r75Ko39RVE88dRcW710fPY0+fjSXBKhpN+raRMUKJp4AX9BJd00YA/4
EpD+8cDK4DuLlLdn1x0q41VUsznXrnMpQedRmAL9f9bL6pbLTJhaKeorTokTvdn6
5VT3pb2o+jr6NETaUxd99ZG/osPar9tNThVLIIzG1nDabcTFbMB+w7wOJuhXyTLQ
JBU9xmavTM71PfV6Pkh4j1pfWImXc1D8dS+jcvKeXInBfm2XZsfOCesk12YnK3Nc
u1Xe1lxzSt7Cegum4S/YuxmYoh462oGZ7FA4Cr2lvAPVpO9zmgQ8JITXiqYg2wB3
. . .

Você pode, então, copiá-la e colá-la ou enviá-la por um meio apropriado.

Se você quer publicar sua chave num servidor de chaves, é possível fazer isso manualmente através de formulários disponíveis na maioria dos sites dos servidores.

Outra opção seria fazer isso através da interface GPG?

Encontre sua identificação (ID) de chave digitando:

gpg --list-keys seu_email@endereco.net

A parte destacada é a sua ID de chave. Essa é uma forma curta de fazer referência à chave dentro do software.

pub   4096R/311B1F84 2013-10-04
uid                  Test User <test.user@address.com>
sub   4096R/8822A56A 2013-10-04

Para subir sua chave em determinado servidor de chaves. você pode usar essa sintaxe:

gpg --send-keys --keyserver pgp.mit.edu id_da_chave

Criptografar e descriptografar mensagens com GPG

Você pode facilmente criptografar e descriptografar mensagens após ter configurado suas chaves com uma outra parte.

Criptografar mensagens

Você pode criptografar mensagens usando a flag “—encrypt” na GPG. A sintaxe básica seria:

gpg --encrypt --sign --armor -r outra_pessoa@email.org name_of_file

Os parâmetros basicamente criptografam o email, assinam-no com sua chave privada para garantir que ele vem de você, e gera a mensagem em formato de texto ao invés de bytes puros.

Você deve incluir um segundo “-r” destinatário com o seu próprio endereço de email se você quiser poder ler a mensagem em algum outro momento. Isso acontece porque a mensagem será criptografada para cada chave pública pessoal, e somente será possível descriptografá-la com as chaves privadas correspondentes.

Assim, se ela for criptografada apenas com a chave pública de outras partes, você não conseguirá ver a mensagem novamente, a não ser que de alguma forma você consiga a chave privada delas. Colocar a si mesma como uma segunda destinatária faz com que a mensagem seja criptografada duas vezes separadamente, uma para cada destinatária.

Descriptografar mensagens

Quando você recebe uma mensagem, é só rodar a GPG sobre o arquivo da mensagem:

gpg nome_do_arquivo

O software irá lhe pedir o que for necessário.

Se você está com a mensagem como fluxo de texto, você pode copiá-lo e colá-lo após digitar simplesmente “gpg” sem mais nenhum argumento. Pressione “CTRL-D” para dizer que a mensagem chegou ao fim e a GPG vai descriptografá-la para você.

Manutenção de chaves

Existe vários procedimentos que você precisa realizar para gerenciar sua base de dados de chaves.

Para listar as chaves GPG de outras pessoas na sua base de dados, digite o seguinte comando:

gpg --list-keys

Suas informações sobre chaves podem ficar obsoletas se você depende de informações retiradas de servidores de chaves. Não é desejável que se use chaves revogadas porque isso significaria que você está confiando em chaves potencialmente comprometidas.

Você pode atualizar as informações de chaves digitando:

gpg --refresh-keys

Isso irá buscar novas informações dos servidores de chaves.

Você pode puxar informações de um servidor de chaves específico usando:

gpg --keyserver key_server --refresh-keys

Conclusão

Usar GPG corretamente pode lhe ajudar a tornar seguras suas comunicações com diferentes pessoas. Isso é extremamente útil, especialmente com informações sensíveis, mas também no envio de mensagens comuns e cotidianas.

Devido ao fato de que certas comunicações criptografadas podem ser marcadas por programas de monitoramento, é recomendável que se use criptografia para tudo, não apenas para dados “secretos”. Isso tornará mais difícil para se descobrir quando você está enviando dados importante ou apenas dando um oi.

A criptografia GPG só é útil quando as duas parte usam boas práticas de segurança e estão atentas sobre outras práticas seguras. Ensine regularmente as pessoas com quem você se comunica sobre a importância dessas práticas se você quer ter a possibilidade de uma comunicação segura criptografada.

Original em inglês por Justin Ellingwood

Quais dados seu celular e a rede móvel coletam?

Esse texto saiu no Boletim #15 do site AntiVigilância.org


Quais dados seu celular e a rede móvel coletam?

02/05/2017, por Lucas Teixeira

Introdução

Ao pensarmos sobre vigilância em celulares é comum imaginarmos uma pessoa, grampeando nossas linhas e ouvindo nossas conversas, transcrevendo ou tomando notas do conteúdo, seguindo nossos passos — talvez um agente da inteligência de um governo ou um criminoso trabalhando de uma fábrica abandonada.

Essa prática tradicional da vigilância “direcionada”, que remete à Stasi da Alemanha Oriental e ao modus operandi das várias ditaduras que passaram pelo território latino-americano na segunda metade do século passado certamente ainda está presente nos dias de hoje. Mas ela por vezes eclipsa, principalmente para o público geral, a quantidade de dados sensíveis que já são criados, registrados, transmitidos e processados por todo o caminho desde o celular, passando pelas antenas e fios, até os servidores de email e mensagens instantâneas e a famigerada “nuvem” (que, no fim das contas, é “apenas o computador de outra pessoa”).

Da mesma maneira, ao tentarmos nos livrar dessa vigilância e proteger nossas comunicações, procuramos soluções mágicas como a capa de invisibilidade do Harry Potter, que nos tornarão completamente indetectáveis com o apertar de dois ou três botões ou o instalar de um programa. Como vemos neste e em outros artigos do Boletim 15, as proteções que temos à nossa disposição costumam agir sobre somente uma parte desses dados, seja pelo escopo em que ela pode atuar seja pelo fato de que determinadas trocas e armazenamentos de dados são necessárias para o próprio sistema funcionar.

Neste artigo, mapeamos os dados que estão armazenados ou são coletados pela infraestrutura de comunicação e pelos componentes do seu celular em seu funcionamento normal.

Por dentro do telefone

 

Os três principais sistemas lógicos de um smartphone, ilustrados de forma didática

Nossos smartphones parecem ser um sistema único, mas por baixo do panos há várias CPUs, memórias e discos agindo em conjunto para que eles funcionem. A maneira como os smartphones são construídos, com os sistemas “System on Chip” que já trazem quase todos os componentes condensados em um único chip, torna difícil identificar elementos fisicamente, mas pode-se identificar três computadores principais – cada um com seu próprio sistema operacional em software ou firmware – mais os componentes de rede, todos armazenando informações de identificação importantes:

  • SIM card: embora sua principal função seja armazenar o IMSI (International Mobile Subscriber Identity) e uma chave privada usada para proteger a comunicação com a rede celular, cada chip presente em celulares GSM é um computador autônomo.

    Assim como cartões de banco e outros smartcards, eles podem armazenar múltiplos programas escritos na linguagem Java Card, que podem ser instalados utilizando equipamentos especiais ou pela própria operadora de telefonia através de mensagens SMS de configuração over-the-air (OTA).

    O IMSI é um código de identificação vinculado à pessoa proprietária da linha, e permite à operadora saber que quem está falando de um determinado aparelho celular é o(a) cliente X, e então por exemplo descontar créditos ou aumentar o valor da conta desta pessoa.

  • Baseband modem: este computador, que é muito semelhante e mantém grande compatibilidade com os modems presentes nos primeiros aparelhos celulares, executa um sistema operacional proprietário (de código fechado, mantido sob propriedade intelectual de empresas da indústria de telecomunicações) e mantido em firmware (não pode ser facilmente substituído).

    Na prática, isso significa que ele é uma completa caixa preta. Em sua memória fica registrado o IMEI (International Mobile Equipment Identity), um código que, de maneira análoga ao IMSI, identifica o aparelho celular para a operadora de telefonia. O principal uso do IMEI pelas operadoras é para impedir celulares roubados de serem usados, através de listas desses identificadores mantidas em colaboração com os(as) próprios(as) clientes e/ou com departamentos de polícia.

  • Sistema principal: esse é o computador com maior poder de processamento e armazenamento, que armazena e executa o sistema operacional principal (Android, iOS etc) e todos os aplicativos que você tem instalados, atuando como ponte entre eles e os outros componentes como o baseband modem, as interfaces de rede abaixo, a tela, a câmera, o microfone etc.

    Como os aplicativos executados nesses apicativos podem coletar toda sorte de informações (e, como sabemos, por vezes coletam muito mais do que necessário para seu funcionamento), a quantidade de identificadores que podem estar aqui é grande demais para caber neste artigo. O Código de Publicidade (Android) e o Identificador de Publicidade (iOS) se destacam por serem acessíveis a todos os aplicativos, feitos especificamente para permitir a identificação inequívoca do celular por anunciantes. Ambos podem ter seu uso desativado nas configurações do celular.

  • Wi-fi e Bluetooth: cada um desses componentes tem um “endereço físico” específico (o endereço MAC, de “Media Access Control”) definido no momento de sua fabricação. Se o aparelho está com wi-fi e/ou bluetooth habilitados, ele divulga esses identificadores de tempos em tempos, para quem quiser ouvir, em busca de redes ou dispositivos conhecidos.

    Isso é o que permite que shoppings consigam seguir pessoas para extrair padrões de comportamento e conseguir identificar clientes específicos. Tanto no Android quanto no iOS há maneiras de mudar o endereço MAC apresentado pela interface wi-fi; o iOS especificamente passou a usar endereços descartáveis gerados aleatoriamente para parte do tráfego desde a versão 8.

Telefonia ou Internet?

Além da complexidade dessa estrutura de telecomunicações e do fato de telefonia e Internet se misturarem até mesmo a nível institucional, a convergência de ambas as tecnologias num mesmo telefone celular faz com que seja difícil discernir quais aplicativos ou ações são considerados como telefonia ou como conexão à Internet, que dirá quais dados cada uma dessas interações gera.

No grafo abaixo estão os principais tipos de atividades comuns em smartphones, associados ao tipo de serviço necessário para elas e quais dados são transmitidos (alguns detalhes serão explicados mais adiante):

Caminho da Telefonia

Apesar de hoje em dia nossos smartphones serem “computadores que por acaso também fazem ligações”, o sistema de telefonia celular está intrinsecamente ligado ao funcionamento do aparelho. Seja pelo fato de que muitas pessoas se conectam à Internet por 3G/4G/LTE, seja porque cada vez mais nosso número de celular é usado como meio de identificação e autenticação (como no login através do envio de tokens), o fato de alguém raramente fazer ligações e enviar SMSs não impede a operadora de telefonia de estar monitorando sua localização 24/7.

Simplesmente por estar ligado e dentro da área de cobertura, qualquer aparelho celular está em constante comunicação com as torres de telefonia que estão em seu raio de alcance, à procura da mais próxima que seja de sua operadora e o permita se conectar para enviar e receber ligações e mensagens.

Estas torres, chamadas de Estações Rádio-Base (ERBs), são distribuídas pela operadora por toda a sua área de cobertura, cada uma em uma célula que cobre uma parte do território – daí o nome de telefonia celular. Essas estações, que além da antena têm também computador e espaço de armazenamento, são ligadas à central da operadora que é quem organiza (e cobra) as ligações, mensagens e, no caso da Internet móvel, provê a conexão à rede mundial de computadores.

Ao emitir o seu constante “alô, sou um celular, tem ERBs aí?”, o aparelho transmite tanto seu IMSI (identificador do(a) cliente) quanto seu IMEI (identificador do aparelho). Isso permite com que as operadoras (que mantém um banco de dados que associa esses números aos dados cadastrais) saibam o tempo inteiro em qual célula um(a) determinado(a) cliente está.

A localização a nível de células já é um dado bastante sensível, mas através da combinação dos dados de múltiplas torres usando técnicas como a triangulação, trilateração e multilateração, é possível mapear com bastante precisão os principais endereços e a movimentação de uma pessoa, principalmente em locais urbanos onde há uma concentração maior de antenas por km². Experimentos feitos pelo Open Data City e pelo jornal alemão Die Zeit mostram em visualizações como uma pessoa pode ter sua vida devassada apenas a partir dessas informações.

Também devido a esse comportamento dos celulares, equipamentos comumente chamados de IMSI catchers, antenas espiãs ou Stingrays possibilitam listar os identificadores de pessoas que estão em um determinado local (como foi feito em uma praça da Ucrânia durante uma manifestação).

A princípio mantidos para fins de cobrança e prevenção de fraudes, os CDRs acumulam informações preciosíssimas sobre clientes. Análises avançadas desses bancos de dados podem ser feitas para fins diversos como prever o status socioeconômico de pessoas ou quais delas podem estar perto de trocar de operadora (churn) e visualizar redes sociais formadas por ligações para investigação de crimes. Forças policiais e judiciais podem em muitas jurisdições acessar os dados tanto nas operadoras quanto nas próprias ERBs, prática conhecida como tower dump.

Infelizmente, essa constante transmissão de dados não pode ser contornada por ser parte intrínseca da telefonia celular, exceto desativando o funcionamento do SIM card nas configurações do celular ou o colocando em uma bolsa que o isole de sinais eletromagnéticos (uma “gaiola de Faraday”) – mas aí as funções de celular e Internet móvel do dispositivo também param.

Caminhos da Internet

Caminhos da Internet

O caminho que seus dados farão para chegar “à Internet” vai depender do seu tipo de conexão: wi-fi ou móvel / dados.

Ao acessar por wi-fi da sua casa ou de um café, você estará tipicamente se conectando a um roteador, que está ligado a um modem (ou já possui um embutido), que se comunica através de cabos ou ondas de rádio, talvez com intermediários como a central de distribuição do seu bairro, até o provedor de Internet banda larga.

Já ao acessar a Internet através do plano de dados da sua operadora, você está transmitindo dados pelo mesmo caminho que suas ligações e SMSs e que explicamos há pouco. Seus dados relativos ao uso da Internet, no entanto, ficam armazenados somente na central da operadora – a ERB usada registrará somente que você esteve por ali e que se conectou à Internet através dela (tecnicamente pode ser possível que alguém com controle da ERB a programe para registrar isso, mas isso foge do escopo do artigo e, ao que sabemos, da prática comum). Para todos os efeitos, sua operadora é seu provedor de Internet, e geralmente está sob o mesmo arcabouço legal da sua operadora no caso acima.

Em ambos os casos, todas as suas ações na Internet são sempre vinculadas ao endereço IP da sua conexão, designado pelo provedor para o seu celular, no caso da telefonia móvel, ou para o roteador no caso do wi-fi. Os provedores costumam registrar as conexões feitas (endereço IP de origem, endereço IP de destino e data/hora) por meses ou até mesmo anos.

Como muitas vezes um único endereço IP pode ser compartilhado por múltiplas máquinas, ele tecnicamente não identifica as atividades de uma pessoa específica; legalmente, porém, ele pode ser associado à/ao titular do plano de Internet. Além disso, os roteadores registram os endereços MAC que identificam o componente wi-fi do celular e, cruzando seus dados com os registros de conexão do provedor, é possível discernir quais das atividades atribuídas a um endereço IP vieram de um determinado aparelho.

Embora a Internet permita que nos conectemos diretamente às máquinas de outras pessoas, na prática a maior parte do nosso tráfego é direcionado a servidores, máquinas com grande poder de armazenamento e processamento que intermediam nossas comunicações (como as via e-mail e mensagens instantâneas) ou nos servem conteúdo e serviços online (no caso da Web). Eles também têm acesso ao seu endereço IP e podem guardar seus próprios registros, a seu critério e/ou por determinação legal dos países onde ele e e o(a) usuário(a) se encontram, e associar o IP ao seu login, seus dados cadastrais e que ações foram executadas / que páginas foram requisitadas.

Ao usar serviços de VPN ou proxy, os endereços que constarão nos registros do provedor serão todos de conexões suas ao serviço que você utilizar, enquanto o servidor que você está acessando registrará o endereço IP desse mesmo serviço de VPN / proxy. Esse serviço, no entanto, terá acesso a todo o seu fluxo de comunicação e pode, tecnicamente, registrar e inspecionar os dados da mesma forma que o seu provedor poderia numa conexão comum. É recomendado, principalmente se você não conhece e confia no serviço que está usando, garantir que o aplicativo ou site que você está acessando possua sua própria camada de criptografia (como o HTTPS no caso da web e outros tipos de criptografia de transporte e/ou ponta-a-ponta).

Ao se conectar à Web ou outros serviços utilizando o Tor, os registros conterão conexões a diversos nós de entrada da rede em países diferentes, e os endereços IP dos registros no servidor acessado serão pulverizados entre diversos nós de saída também dispersos pelo mundo. Na prática, isso confere maior anonimato (pois não há nenhuma máquina centralizando o tunelamento da conexão como no caso anterior), mas como o tráfego sairá de diversos pontos escolhidos aleatoriamente é ainda mais importante utilizar uma camada extra de criptografia para qualquer assunto sensível (como logins e trocas de dados que possam lhe identificar).

Apanhado geral

FTP com camada de segurança?

De repente me veio a pergunta: será que dá para usar FTP com uma camada de criptografia?

Eis uma breve pesquisa sobre o tema.

O que é FTP?

Segundo a wikipedia:

FTP ou File Transfer Protocol (Protocolo de Transferência de Arquivos) é uma forma bastante rápida e versátil de transferir arquivos, sendo uma das mais usadas na Internet.

O protocolo é especificado na RFC959, resumida logo a seguir.

Um cliente realiza uma conexão TCP para a porta 21 do servidor. Essa conexão, chamada de conexão de controle, permanece aberta ao longo da sessão enquanto uma segunda conexão, chamada conexão de dados, é estabelecida na porta 20 do servidor e em alguma porta do cliente (estabelecida no diálogo entre ambos) como requisitado para a transferência de arquivo. A conexão de controle é utilizada para administração da sessão (comandos, identificação, senhas) entre cliente e servidor utilizando um protocolo semelhante ao Telnet.

FTP pode ser executado em modo ativo ou passivo, os quais determinam como a conexão de dados é estabelecida. No modo ativo, o cliente envia para o servidor o endereço IP e o número da porta na qual ele irá ouvir e então o servidor inicia a conexão TCP. Em situações onde o cliente está atrás de um firewall e inapto para aceitar entradas de conexões TCP, o modo passivo pode ser utilizado. O cliente envia um comando PASV para o servidor e recebe um endereço IP e um número de porta como resposta, os quais o cliente utiliza para abrir a conexão de dados com o servidor.

Acesso aos servidores FTP

O acesso a servidores FTP pode ocorrer de dois modos: através de uma interface ou através da linha de comando, tanto usuários LINUX como usuários Windows podem acessar através dos dois modos. O modo linha de comando está presente em qualquer distribuição LINUX-like e Windows, através do telnet.

A partir de qualquer navegador credenciado (Internet Explorer, Firefox, ou mesmo no Windows Explorer), conforme a norma RFC1738 também é possível aceder a um servidor FTP digitando na barra de endereço:

ftp://[username]:[password]@[servidor]

ou

ftp://[username]:[password]@[servidor]:[porta]

Basicamente, FTP é um protocolo muito simples para transferência de arquivos. Mas e como fica a segurança da conexão com um servidor FTP?

O que encontrei foi a aplicação de uma camada SSL/TLS sobre o FTP tradicional (FTP Secure – FTPS). Uma opção semelhante seria passar (tunneling) a transferência FTP através de uma conexão SSH. Uma outra forma ainda, fácil de confundir, é o SFTP, que é utilizar o protocolo Secure Shell (SSH) para transferir arquivos (SSH File Transfer Protocol).

O FTP Seguro (FTPS)

A Netscape desenvolveu a Secure Sockets Layer (SSL) em 1994 e em meados de 1996 ela foi aplicada sobre o FTP. (Acho sempre interessante lembrar que a SSL só foi virar padrão para a web, através do HTTPS, em 2010, quando um hacker lançou a extensão para Firefox Firesheep. Essa extensão capturava os coockies de logins de sites da web 2.0 como webmail e redes sociais e extraia informações de nome de usuária e senha. Essa falha (exploit) consistia em que os coockies (assim como várias outras informações, como mensagens de email) trafegavam em texto legível pela rede sem criptografia.)

Bom, o FTPS funciona da mesma forma que qualquer implementação que use o SSL (ex. HTTPS para web ou SMTPS para email). O servidor que está sendo acessado envia uma chave pública ao cliente. O servidor precisa fornecer também um certificado para essa chave. É possível criá-los através do OpenSSL e geralmente usa-se uma Autoridade Certificadora (empresa que gerencia certificados) para garantir a autenticidade da chave, mas podemos verificar a chave pública nós mesmo. Ela é então usada por este para enviar uma chamada secreta, criada aleatoriamente. Desta forma, com a autenticação das duas partes, fica estabelecida a troca de dados criptografados entre dois computadores. A principal função do SSL é prover a privacidade da informação e sua integridade. Por isso, ele também evita que o conteúdo dos pacotes transferidos seja alterado.

 

Existem duas formas de invocar essa camada de segurança pelo lado do cliente: uma implícita e outra explícita. No modo implícito, toda a seção FTPS é criptografada. O que a difere do modo explícito é que neste caso o cliente possui controle total sobre quais áreas da conexão serão criptografadas. Ativar ou desativar a criptografia para o canal de controle do FTPS e do canal de dados do FTPS pode acontecer a qualquer momento. A única restrição vem do servidor FTPS, que pode negar comandos baseado numa política de criptografia do servidor (wikipedia.org).

É isso. Deixo o SSH File Transfer Protocol e o FTP através de SSH para outro momento.

Cartilha sobre Teoria da Informação e Privacidade

Original em inglês do site da EFF

Cartilha sobre Teoria da Informação e Privacidade

Se nos perguntarmos se um fato sobre uma pessoa identifica essa pessoa, a resposta não é simplesmente sim ou não. Se tudo o que sabemos sobre ela é o seu código postal, não sabemos quem ela é. Se conhecemos apenas sua data de nascimento, não sabemos quem ela é. Se sabemos somente o seu gênero, não sabemos quem ela é. Mas se soubermos essas três coisas sobre uma pessoa, provavelmente poderemos deduzir sua identidade! Cada um desses fatos pode identificá-la parcialmente.
Existe uma grandeza matemática que nos permite medir o quanto um fato pode revelar de maneira única a identidade de alguém. Essa grandeza [na teoria da informação] é chamada entropia, e geralmente é medida em bits. Intuitivamente, podemos pensar na entropia como sendo a generalização das diferentes possibilidades que existem para uma variável aleatória: se existem duas possibilidades, isso equivale a 1 bit de entropia; se existem quatro possibilidades, temos 2 bits de entropia, etc. Ao adicionar um bit de entropia, duplicamos o número de possibilidades.1

Como existem em torno de 7 bilhões de pessoas no planeta, a identidade de uma pessoa aleatória desconhecida contém um pouco mesmo de 33 bits de entropia (dois elevado a 33 dá 8 bilhões). Quando descobrimos um novo fato sobre uma pessoa, esse fato reduz a entropia da sua identidade em uma certa quantia. Existe uma fórmula para isso:

ΔS = – log2 Pr(X=x)

Onde ΔS é a redução na entropia, medida em bits,2 e Pr(X=x) é simplesmente a probabilidade de que o fato seja verdadeiro para uma pessoa aleatória. Vamos aplicar a fórmula a alguns fatos, só pra ver o que acontece:

Signo astrológico: ΔS = – log2 Pr(signo=capricórnio) = – log2 (1/12) = 3,58 bits de informação
Data de nascimento: ΔS = – log2 Pr(data=2 de janeiro) = -log2 (1/365) = 8,51 bits de informação

Note que se você combinar diversos fatos, pode ser que não descubra nada de novo. Por exemplo, saber o signo de alguém não me diz nada novo se já sei o seu aniversário.3

Nos exemplos acima, assumiu-se que cada signo e data de nascimento tem a mesma probabilidade de acontecer.4 O cálculo também pode ser aplicado para fatos que possuem probabilidades não uniformes. Por exemplo, a probabilidade de que o CEP de uma pessoa desconhecida seja 88200-000 (Tijucas, Santa Catarina) é diferente da probabilidade de que seu CEP seja 35617-000 (Serra da Saudade, Minas Gerais). Em 2010, havia 29.973 pessoas vivendo na área 88200-000, umas 815 no 35617-000 e mais ou menos 7 bilhões de pessoas no planeta.

Saber que meu CEP é 88200-000: ΔS = – log2 (29.973/7.000.000.000) = 17,83 bits
Saber que meu CEP é 35617-000: ΔS = – log2 (815/7.000.000.000) = 23,03 bits
Saber que vivo em Moscou (2013): ΔS = -log2 (11979529/7.000.000.000) = 9,19 bits

 

Quanto de entropia é necessário para identificar alguém?

Em 2010, identificar alguém dentre a população do planeta requeria:

S = log2 (1/7.000.000.000) = 32,7 bits de informação.

Podemos arredondar para 33 bits, assumindo uma posição conservadora.

Por exemplo, se conhecemos o aniversário de alguém e sabemos que seu CEP é 35617-000, temos 8,51 + 23,03 = 31,54 bits de informação sobre ela; isso é quase o suficiente para saber quem ela é: talvez existam algumas poucas pessoas que tenham essas características. Somando com gênero, temos 32,54 bits, e provavelmente podemos dizer quem é a pessoa.5

 

Uma aplicação para navegadores web

Agora, como esse paradigma pode ser usado em navegadores? Acontece que, ademais das comumente discutidas características “identificantes” dos navegadores web, como endereços de IP e cookies de rastreamento, existem diferenças mais sutis entre os navegadores que podem ser usadas para descrevê-las.

Um exemplo significativo é a string de User-Agent, que contém o nome, o sistema operacional e o número exato da versão do navegador, e que é enviada toda vez que você visita um site. Uma string de User-Agent típica seria mais ou menos assim:

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6

Como é possível notar, existe bastante “coisa” ali. Acontece que cada uma dessas “coisas” é bastante útil para diferenciar as pessoas na internet. Em outra postagem, publicamos que em média as strings de User-Agent contêm em torno de 10,5 bits de informação identificante, o que significa que se você pegar o navegador de uma pessoa aleatória, apenas uma em 1.500 outras usuárias da internet compartilharão as mesmas strings de User-Agent.

O projeto da EFF Panopticlick é uma pesquisa sobre privacidade para medir quanta informação identificante está sendo transmitida por outras características do navegador. Visite o site do Panopticlick para ver o quão identificante o seu navegador é e ajude-nos na pesquisa.

 

notas:

  • 1. Na verdade, entropia é uma generalização para contar o número de possibilidades, para apontar para o fato de que algumas possibilidades são mais prováveis que outras. Você pode encontrar a fórmula completa aqui.
  • 2.Essa quantidade é chamada de “auto-informação” (“self-information”) ou “surpresa” da observação, pois ela é uma medida de quão “surpreendente” ou inesperada é a nova informação. Ela é de fato medida em relação à variável aleatória que está sendo observada (talvez, a idade de uma pessoa ou onde ela vive), e a nova entropia reduzida para a sua identidade pode ser calculada com base nessa observação.
  • 3.O que acontece quando os fatos são combinados depende se os fatos são independentes. Por exemplo, se você conhece o aniversário e o gênero de alguém, você tem 8,51 + 1 = 9,51 bits de informação sobre sua identidade porque as distribuições de probabilidades de aniversário e gênero são independentes. Mas o mesmo não é verdade para aniversário e signo astrológico. Se você conhece o aniversário, então conhece o signo. Passar a saber o signo não aumenta o que eu sei. Queremos calcular a mudança na entropia condicional da identidade da pessoa em todas as variáveis observadas e podemos fazer isso calculando as probabilidades para novos fatos em relação aos fatos que já sabemos. Assim, temos que ΔS = -log2 Probabilidade(gênero=feminino|data=2 de janeiro) = -log2(1/2) = 1, e ΔS = -log2 Probabilidade(signo=capricórnio|data=2 de janeiro)=-log2(1) = 0. Casos intermediários também são possíveis: se conheço alguém que nasceu em dezembro e depois descubro que ela é de capricórnio, ainda assim ganho uma nova informação: ΔS = -log2 Probabilidade(signo=capricórnio|mês de nascimento=dezembro)=-log2 (10/31) = 1.63 bits.
  • 4. Na verdade,no exemplo do aniversário, deveríamos ter levado em conta a possibilidade de alguém ter nascido em 29 de fevereiro durante um ano bissexto, que no caso seria ΔS =-log2 Pr(1/365.25).
  • 5. Se você está atenta o suficiente, teria dito, “ei! isso não tá certo; às vezes haverá apenas uma pessoa no CEP 40203 nascida em 2 de janeiro. A forma correta de formalizar esse problema seria usar a distribuição de frequência real de aniversários no CEP 40203.

“Cofre 7”: As ferramentas de hacking da CIA reveladas

tradução copiada do site do partido pirata.

original em inglês no site do wikileaks

Nota do Tradutor

Esta é uma tradução incompleta do comunicado de imprensa (“press release”) feito pelo Wikileaks hoje mais cedo. Incompleta porque falta a seção de exemplos, onde algumas das ferramentas da CIA são descritas brevemente, e o “FAQ”, que não acrescenta muito. A parte mais importante, a seção de análise, foi traduzida quase que integralmente, ficando fora apenas a última parte sobre análise forense. O comunicado em inglês se encontra aqui. Um esclarecimento importante devido a certas coisas que têm circulado na mídia é: uma lista de aplicativos de mensagens (que inclui Telegram, Whatsapp e outros) têm sido divulgada como se a criptografia desses programas pudesse ser rompida por tecnologias da CIA. Mas não é exatamente isso; o que ocorre é que a CIA encontrou uma forma de contornar essa criptografia, mas não de quebrá-la, hackeando celulares de forma a capturar textos e áudios antes que sejam criptografados pelo programa de mensagens. Além disso, antes de começar a leitura, gostaria de sugerir uma pequena lista de explicações de alguns termos no texto, principalmente dos que não foram traduzidos do inglês.

Vulnerabilidade = Uma falha ou erro no código de um sistema, que permite que uma pessoa faça usos indevidos dele, de uma forma que não foi prevista pelo conjunto de pessoas que o desenvolveu. Quando uma vulnerabilidade não é tornada pública, é chamada de “zero-day”, pois pode ser explorada sem conhecimento de quem desenvolveu o sistema, de forma que desenvolvedores acabam tendo 0 dias para resolver o problema, já que desconhecem sua existência. Neste documento, veremos como a CIA preferiu criar formas de explorar vulnerabilidades a notificar empresas como Apple e Google delas, mantendo as pessoas inseguras.

Exploit = Já um exploit consistiria em instruções ou programas para explorar as falhas conhecidas como vulnerabilidades. Ao manter falhas em segredo, a CIA pode usar esses exploits para seus fins nefastos até o presente momento.

Backdoor = Literalmente, seria uma porta dos fundos. Uma metáfora mais precisa seria dizer que esse tipo de programa é como uma chave secreta para a porta dos fundos de uma casa, escondida em algum lugar para ser usada para invadir a casa. Nesse caso, a casa seria um computador ou outro dispositivo eletrônico.

Segue o comunicado do Wikileaks:

Comunicado de Imprensa

Hoje, dia 7 de março de 2017, Wikileaks começou sua nova série de vazamentos da Agência Central de Inteligência dos EUA (CIA). Nomeada “Vault 7” (Cofre 7) pelo Wikileaks, essa é a maior publicação já feita de documentos confidenciais da agência.

A primeira parte completa da série, “Ano Zero”, inclui 8.761 documentos e arquivos de uma rede de alta segurança isolada, situada dentro do Centro de Inteligência Cibernética da CIA em Langley, Virgínia. A publicação segue uma divulgação introdutória feita mês passado sobre como a CIA pretendia realizar infiltrações em candidaturas e partidos políticos franceses nas eleições presidenciais de 2012.

Recentemente, a CIA perdeu controle da maioria de seu arsenal de hacking, incluindo malware, vírus, trojans (cavalos de Tróia), exploits de vulnerabilidades ainda não publicizadas transformados em arma, sistemas de controle remoto de malware, e documentação associada a essas “armas”. Essa coleção extraordinária, que consiste de centenas e centenas de milhões de linhas de código, garante a quem a possui a capacidade completa de hacking da CIA. O arquivo parece ter circulado de maneira não-autorizada entre ex-hackers do governo e pessoas trabalhando em serviços terceirizados, tendo alguma dessas pessoas fornecido partes do arquivo ao Wikileaks.

“Ano Zero” introduz o escopo e o direcionamento do programa secreto e global de hacking da CIA, seu arsenal de malware, e dezenas de armas destinadas a explorar vulnerabilidades ainda não tornadas públicas de produtos vendidos por empresas europeias e dos EUA, como o Iphone da Apple, o Android da Google, o Windows da Microsoft e até mesmo as TVs da Samsung, que são transformados em microfones secretos.

Desde 2001, a CIA tem ganhado preponderância política e orçamentária com relação à NSA, a Agência de Segurança Nacional. A CIA acabou construindo não apenas sua infame frota de drones, mas também um tipo bem diferente de força secreta, de alcance global — sua própria frota substancial de hackers. A divisão de hacking da CIA a livrou de ter de compartilhar informações de suas próprias operações controversas com a NSA (sua rival burocrática principal) para aproveitar as capacidades de hacking dela.

No final de 2016, a divisão de hacking da CIA, que está subordinada formalmente ao Centro de Inteligência Cibernética da agência, tinha mais de 5.000 usuários registrados e havia produzido mais de mil sistemas de hacking, trojans, vírus e outros malware transformados em armas. Essa é a dimensão do empreendimento da CIA em 2016, seushackers já utilizaram mais código do que o que é necessário para rodar o Facebook. A CIA efetivamente criou sua “própria NSA”, só que com ainda menos prestação de contas, sem responder publicamente se seu gasto orçamentário massivo para duplicar as capacidades de uma agência rival poderia ser justificado.

Em declaração ao Wikileaks, a fonte detalhou questões que afirma precisarem ser discutidas urgentemente em público, incluindo se as capacidades de hacking da CIA excedem os poderes que lhe foram conferidos, e o problema da supervisão pública da agência. A fonte deseja iniciar um debate público sobre segurança, criação, uso, proliferação e controle democrático de armas cibernéticas.

Assim que uma única “arma” cibernética está a solta, ela pode se espalhar pelo mundo em segundos, e pode ser igualmente usada por nações rivais, máfias cibernéticas e hackers adolescentes.

Julian Assange, editor do Wikileaks, afirmou que “Existe um risco extremo de proliferação no desenvolvimento de “armas” cibernéticas. Comparações podem ser feitas entre a proliferação descontrolada de tais “armas”, que resulta da incapacidade de contenção combinada com seu alto valor de mercado, e o mercado global de armas. Mas o significado de “Ano Zero” vai muito além da escolha entre guerra e paz cibernéticas. Essa publicação é também excepcional das perspectivas política, legal e forense”.

O Wikileaks revisou cuidadosamente a publicação de “Ano Zero” e publicou documentos substantivos ao mesmo tempo em que evitou a distribuição de armas cibernéticas prontas para uso, até que surja um consenso sobre a natureza técnica e política do programa da CIA e sobre como tais “armas” devem ser analisadas, desarmadas e divulgadas.

O Wikileaks também decidiu editar e tornar anônimas algumas informações em “Ano Zero” para uma análise mais profunda. Essas edições incluem dezenas de milhares de alvos da CIA e máquinas de ataque pela América Latina, Europa e Estados Unidos. Apesar de estamos cientes da imperfeição da abordagem escolhida, nós nos mantemos comprometidos com nosso modelo de publicação e notamos que a quantidade de páginas publicadas na primeira parte de “Cofre 7” (“Ano Zero”) já ultrapassa o número total de páginas publicadas nos três primeiros anos dos vazamentos da NSA feitos por Edward Snowden.

Análise

Malware da CIA tem como alvos Iphones, Androids e Smart TVs

Malware da CIA e as ferramentas de hacking são construídas pelo Grupo de Desenvolvimento em Engenharia (EDG), um grupo de desenvolvimento de software dentro do Centro de Inteligência Cibernética, um departamento que faz parte da Diretoria para Inovação Digital da CIA (DDI). A DDI é uma das cinco grandes diretorias da CIA (veja o organograma da CIA para mais detalhes).

O EDG é responsável pelo desenvolvimento, teste e suporte operacional de todos os backdoors, exploits, programas maliciosos, trojans, vírus e qualquer outro tipo de malware usado pela CIA em suas operações secretas ao redor do mundo.

A sofisticação crescente das técnicas de vigilância tem estimulado comparações com o livro 1984 de George Orwell, mas o “Weeping Angel” (Anjo Lamentador), desenvolvido pela Divisão de Dispositivos Embutidos (EDB) da CIA, que infecta Smart TVs, transformando-as em microfones secretos, é certamente sua realização mais emblemática.

O ataque contra as TVs da Samsung foi desenvolvido em cooperação com a agência britânica MI5. Depois da infestação, o Anjo Lamentador coloca a TV alvo em um modo desligado falso, de forma que a pessoa que possui a TV acredita erroneamente que ela está desligada quando não está. Nesse modo desligado falso, a TV passa a operar como um grampo, registrando conversas no ambiente e enviando os registros pela Internet para um servidor secreto da CIA.

Em outubro de 2014, a CIA também estava vendo como infectar sistemas de controle de veículos usados por carros e caminhões modernos. O objetivo de tal controle não é especificado, mas ele permitiria que a CIA realizasse assassinatos praticamente indetectáveis.

A Divisão de Dispositivos Móveis (MDB) da CIA desenvolveu diversos ataques para invadir e controlar smartphones populares. Os celulares infectados podem ser ordenados a enviar para a CIA a geolocalização das pessoas usuárias, mensagens de texto e voz, além de secretamente ativarem a câmera e o microfone.

Apesar da participação minoritária do Iphone no mercado global de smartphones (14,5%) em 2016, uma unidade especializada na Divisão de Dispositivos Móveis da CIA produz malware para infectar, controlar e extrair secretamente dados de iPhones e outros produtos da Apple que rodam o sistema operacional iOS, como iPads. O arsenal da CIA inclui inúmeros programas para explorar vulnerabilidades locais e remotas, desenvolvidos pela CIA ou obtidos através da GCHQ, NSA, FBI ou comprados de funcionários de empresas de armamento cibernético como Baitshop. O foco desproporcional no iOS pode ser explicado pela popularidade do iPhone entre elites sociais, políticas, diplomáticas e empresariais.

Uma unidade semelhante tem como alvo o Android da Google, que é usado para rodar a maioria dos smartphones do mundo (~85%), incluindo os da Samsung, HTC e Sony. 1,15 bilhões de celulares usando Android foram vendidos no ano passado. “Ano Zero” mostra que, em 2016, a CIA havia transformado em armas 24 programas para explorar vulnerabilidades do Android não publicizadas, que ela desenvolveu por conta própria ou obteve da GCHQ, NSA e empresas de armamento cibernético.

Essas técnicas permitiam à CIA que contornasse a criptografia de aplicativos como WhatsApp, Signal, Weibo, Confide, Telegram e Cloakman, hackeando os smartphones onde esses programas rodam e coletando áudios e mensagens antes da criptografia ser aplicada.

 

Malware da CIA tem como alvos os sistemas Windows, OSx, Linux e roteadores

A CIA também faz um esforço bastante grande para infectar e controlar o Windows da Microsoft com seu malware. Isso inclui múltiplas vulnerabilidades não publicizadas, remotas e locais, vírus que destroem “air gaps” (medidas usadas para separar redes seguras fisicamente de redes inseguras), como o “Hammer Drill” (“Furadeira”), que infecta softwares distribuídos em CDs e DVDs, programas para infectar mídias removíveis como USB, sistemas para esconder dados em imagens ou em áreas ocultas de discos (“Brutal Kangaroo”), de forma que as infestações de malware possam continuar funcionando.

Muitos desses esforços são organizados pela Divisão de Implantes Automatizados (AIB), que desenvolveu diversos sistemas de ataque para promover infestações automatizadas e controle de malware da CIA, como os programas “Assassin” e “Medusa”.

Ataques contra a infraestrutura da Internet e servidores web são desenvolvidos pela Divisão de Dispositivos de Rede (NDB) da CIA.

A CIA desenvolveu ataques de malware automatizados de múltiplas plataformas e sistemas de controle cujos alvos incluem Windows, OS X do Mac, Solaris, Linux e outras coisas, como as ferramentas “HIVE”, “Cutthroat” e “Swindle”.

 

Vulnerabilidades ‘acumuladas’ pela CIA’ (“zero days”)

Na esteira dos vazamentos de Edward Snowden sobre a NSA, a indústria de tecnologia dos EUA conseguiu um compromisso da administração Obama de que o poder executivo iria divulgar com frequência regular — ao invés de acumular — vulnerabilidades sérias, exploits, bugs ou “zero days” (vulnerabilidades não publicizadas) para Apple, Google, Microsoft e outras empresas baseadas nos EUA.

Vulnerabilidades sérias não divulgadas às empresas que fabricam os produtos colocam grande parte da população e de infraestruturas críticas em risco diante de serviços de inteligência estrangeiros ou criminosos cibernéticos que descobrem de forma independente a vulnerabilidade, ou ouvem boatos sobre. Se a CIA pode descobrir essas vulnerabilidades, então outras pessoas também podem.

O compromisso do governo dos EUA com o “Vulnerability Equities Process” veio após um lobbying significativo feito pelas empresas de tecnologia dos EUA, que correm risco de perder sua participação no mercado global devido a vulnerabilidades ocultas que sejam percebidas. O governo afirmou que iria divulgar diariamente todas as vulnerabilidades que se espalharam e foram descobertas depois de 2010.

Os documentos em “Ano Zero” mostram que a CIA rompeu os compromissos da administração Obama. Muitas das vulnerabilidades usadas no arsenal de armas cibernéticas da CIA são difundidas e algumas já foram encontradas por agências de inteligência rivais e criminosos cibernéticos.

Como um exemplo, um malware específico da CIA revelado em “Ano Zero” é capaz de penetrar, infectar e controlar programas de celulares Android e iPhone que rodam ou já rodaram contas presidenciais no Twitter. A CIA ataca esse software usando vulnerabilidades que não foram tornadas públicas (“zero days”), possuídas pela CIA; mas se a CIA pode hackear esses celulares, então qualquer pessoa que tenha obtido ou descoberto a vulnerabilidade também pode. Enquanto a CIA mantiver essas vulnerabilidades escondidas da Apple ou da Google (que fabricam os celulares), elas não serão consertadas, e os telefones permanecerão passíveis de invasão.

As mesmas vulnerabilidades existem para a população em geral, incluindo o Gabinete dos EUA, o Congresso, chefes de corporações, administradores de sistemas, oficiais de segurança e engenheiros. Ao esconder essas falhas de seguranças das fabricantes como Apple e Google, a CIA garante que pode hackear qualquer pessoa, deixando todas as pessoas vulneráveis a hackers.

 

Programas de ‘guerra cibernética’ envolvem um sério risco de proliferação

Não é possível manter ‘armas’ cibernéticas sob controle efetivo.

Enquanto a proliferação nuclear tem sido restrita com custos enormes e por infraestruturas visíveis onde material passível de fissão nuclear é reunido até haver suficiente para a produção de uma massa nuclear crítica, ‘armas’ cibernéticas, depois que desenvolvidas, são muito difíceis de conter.

‘Armas’ cibernéticas são apenas programas de computador que podem ser pirateados como qualquer outro. Como elas são inteiramente constituídas de informação, elas podem ser copiadas rapidamente sem qualquer custo marginal.

Armazenar ‘armas’ desse tipo em segurança é um trabalho especialmente difícil, já que as mesmas pessoas que as desenvolvem possuem as habilidades necessárias para fazer cópias secretamente, sem deixar rastros — em alguns casos, usando as próprias ‘armas’ contra as organizações que as guardam. Existem incentivos substantivos para que hackers do governo e consultores arrumem cópias, pois há um “mercado de vulnerabilidades” global que paga de centenas de milhares a milhões de dólares por cópias dessas ‘armas’. De forma semelhante, empresas que conseguem acesso a essas ‘armas’ ocasionalmente as usam para seus próprios objetivos, obtendo vantagens sobre competidores ao vender serviços de hacking.

Ao longo dos últimos três anos, o setor de inteligência dos Estados Unidos, que consiste de agências governamentais como a CIA e a NSA e as empresas contratadas por elas, como a Booze Allan Hamilton, tem sido submetido a uma série sem precedentes de roubos de dados por seus próprios funcionários.

Uma quantidade ainda não divulgada de membros da comunidade de inteligência tem sido detida ou submetida a investigações criminais de âmbito federal por conta de diferentes incidentes.

Em um caso visível, no dia 8 de fevereiro de 2007, um júri federal nos EUA culpou Harold T. Martin III de 20 acusações de uso inapropriado de informações confidenciais. O Departamento de Justiça alegou que obteve de Harold aproximadamente 50.000 gigas de informações que ele teria roubado de programas confidenciais da NSA e da CIA, incluindo o código fonte de diversas ferramentas de hacking.

Assim que uma ‘arma’ cibernética é ‘solta’, ela pode se espalhar pelo mundo em segundos, para ser usada igualmente por nações, máfias cibernéticas e adolescentes hackers.

 

Consulado dos EUA em Frankfurt é uma base secreta de hackers da CIA

Além de suas operações em Langley, Virgínia, a CIA também usa o consulado dos EUA em Frankfurt (Alemanha) como uma base secreta para seus hackers que atuam na Europa, no Oriente Médio e na África.

Hackers da CIA que operam fora do consulado em Frankfurt (“Centro para Inteligência Cibernética na Europa” ou CCIE) recebem passaportes diplomáticos (de cor preta) e cobertura do Departamento de Estado. As instruções para os hackers que chegam através da CIA fazem com que os esforços da contra-inteligência da Alemanha pareçam inconsequentes: “Atravesse rapidamente a alfândega, porque você já memorizou sua história explicando o que você está fazendo, e tudo o que eles fazem é carimbar o seu passaporte”.

Sua história (para esse viagem)
Pergunta: Por que você está aqui?
Resposta: Dando apoio a consultas técnicas no Consulado.

Duas publicações anteriores do Wikileaks oferecem mais detalhes sobre como a CIA aborda procedimentos em alfândegas e triagens secundárias.

Assim que entram em Frankfurt, hackers da CIA podem viajar sem mais verificações nas fronteiras de 25 países europeus que fazem parte do Acordo de Shengen — incluindo França, Itália e Suíça.

Diversos métodos de ataque eletrônico usados pela CIA foram criados para funcionar com proximidade física. Esses métodos são capazes de penetrar redes de alta segurança que estejam desconectadas da Internet, como o banco de dados da polícia. Nesses casos, um oficial, agente ou oficial de uma agência de inteligência aliada, agindo de acordo com instruções recebidas, infiltra-se fisicamente no local de trabalho selecionado como alvo. A pessoa que vai fazer o ataque recebe um dispositivo USB contendo malware desenvolvido pela CIA para esse propósito, que é inserido no computador alvo. Assim a pessoa pode infectar e transferir secretamente dados para sua mídia removível. Para dar um exemplo, um sistema de ataque chamado “Fine Dining” oferece 24 aplicativos disfarçados de programas comuns para ser usado por espiões da CIA. Para pessoas testemunhando o ataque, o espião parece estar rodando um programa para abrir vídeos (como o VLC), vendo slides (Prezi), jogando um jogo para computador (Breakout2, 2048), ou até rodando um antivírus falso (Kaspersky, McAfee, Sophos). Mas enquanto esses aplicativos disfarçados estão na tela, o sistema por trás está sendo infectado e saqueado automaticamente.

 

Como a CIA aumentou dramaticamente os riscos de proliferação

No que é certamente um dos mais assustadores objetivos do setor de inteligência de nossa época, a CIA organizou seu regime de classificação de tal forma que, para a parte mais valiosa no mercado do “Cofre 7” — os malware transformados em arma (“zero days” + implantes), Pontos de Escuta, e sistemas de Comando e Controle (C²) — a agência tem poucos recursos legais.

A CIA tornou esses sistemas não-confidenciais.

A CIA resolver tornar seu arsenal cibernético não-confidencial, é algo que revela como conceitos desenvolvidos para uso militar não são incorporados facilmente no ‘campo de batalha’ da ‘guerra’ cibernética.

Para atacar seus alvos, a CIA normalmente requer que seus implantes se comuniquem com seus programas de controle na Internet. Se implantes da CIA, sistemas de Comando e Controle e software para pontos de escuta fossem confidenciais, oficiais da CIA seriam processados ou mandados embora por violarem regras que proíbem colocar informações confidenciais na Internet. Consequentemente, a CIA tem tornado não-confidencial secretamente a maior parte de seus códigos de espionagem e guerra cibernéticas. O governo dos EUA também não pode estebelecer direitos de cópia (copyrights) sobre esses códigos, devido a restrições postas pela Constituição do país. Isso significa que fabricantes de ‘armas’ cibernéticas e hackers podem “piratear” livremente essas ‘armas’ caso elas sejam obtidas. Antes de tudo, a CIA teve de depender do obscurecimento de seus segredos para protegê-los.

Armas convencionais como mísseis podem ser disparados contra o inimigo (ou seja, em direção a uma área que ainda não foi dominada). A proximidade ou o impacto fazem com que o alvo exploda a munição junto com suas partes confidenciais. Dessa forma, equipes militares não violem regras de confidencialidade atirando munições com partes cujas informações são confidenciais. A munição provavelmente vai explodir. Se isso não ocorrer, não foi intenção da pessoa operando a arma.

Ao longo da última década, as operações de hacking dos EUA tem sido cada vez mais fantasiadas com jargões militares para beber da fonte de recursos financeiros do Departamento de Defesa. Para dar um exemplo, tentativas de “injeção de malware” (jargão comercial) tem sido chamadas de termos que dão a entender que uma arma está sendo disparada. No entanto, a analogia é questionável.

Ao contrário de balas, bombas ou mísseis, a maior parte do malware da CIA é desenhado para viver por dias ou até anos depois de acertar o seu ‘alvo’. Esse malware não “explode com o impacto”, mas infecta permanentemente seu alvo. Para infectar um dispositivo, cópias do malware devem ser colocadas nos dispositivos alvejados, dando a posse física do malware para o alvo. Para roubar secretamente dados e levar de volta para a CIA, ou para aguardar novas instruções, o malware deve se comunicar com os sistemas de Comando e Controle da CIA, que estão em servidores conectados à Internet. Mas, normalmente, esses servidores não possuem autorização para armazenar informações confidenciais, de forma que os sistemas de comando e controle também são tornados não-confidenciais.

Um ‘ataque’ bem sucedido em um sistema computacional selecionado como alvo parece mais com uma série de manobras complexas envolvendo ações em um aquisição hostil de uma empresa, ou com a disseminação de rumores para ganhar controle sobre a liderança de uma organização, e não como um sistema de armas sendo disparado. Se existe uma analogia militar a ser feita, a infestação de um alvo talvez seja parecida com a execução de uma série de manobras militares contra um território alvo, incluindo observação, infiltração, ocupação e exploração.