Skip navigation

Tag Archives: pgp

Quinta-feira, dia 24, às 19h30 no tarrafa teremos a
Oficina Prática turboCrypto: gpg + otr!

Serão duas horas sobre o melhor da criptografia, jamais superada pela humanidade e além-mundos. Veremos primeiramente como funciona a criptografia assimétrica, para logo em seguida instalar um cliente de email e a extensão Enigmail, que lida com o protocolo GPG [1]. Descobriremos onde está nossa chave privada (ela deve ser protegida e é de nossa e somente nossa responsabilidade cuidar dela) e como gerenciar as chaves públicas de nossos pares. Na sequência, entraremos no protocolo de bate-papo XMPP e aprenderemos a usar a camada de criptografia OTR (off-the-record) [2], que serviu de base para o Signal Protocol, hoje rodado por mais de 1 bilhão de pessoas pelo mundo afora. Ambas criptografia, GPG e OTR, são protocolos de código aberto e federados, ou seja, desde a primeira linha de código eles promovem a comunicação entre diferentes servidores (descentralização) além da própria liberdade na internet.

[1] https://gnupg.org/
[2] https://otr.cypherpunks.ca/

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.

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 à 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. Ou seja, SEMPRE. Nesse tutorial vamos ensinar como instalar os plugins necessários para criar seu par de chaves GPG e criptografar suas mensagens no cliente de email.

Breve História

Paul Zimmermann, um ativista contra o uso de energia 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 seria 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 1990, 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 nenhuma 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 de modo seguro 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. Lembre-se, sua chave privada deve ficar somente com você. Para esse tutorial, vamos usar o Thunderbird (da Mozilla Foundation). Existe um software livre de código aberto baseado no cliente da Mozilla chamado de IceDove. Caso você ainda não tenha o programa instalado, baixe-o no site da Mozilla e instale-o.

Abra 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 superior. 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 intitulada “Encryption”, selecione “Encrypt all of my messages by default, because privacy is critical to me”.
-> Na tela intitulada “Assinatura”, selecione “Don’t sign my messages by default”.
-> Na tela intitulada “Seleção de Chave”, selecione “Eu desejo criar um novo par de chaves para assinar e criptografar minhas mensagens”.
-> Na tela intitulada “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. Descreveremos esse método em breve.

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! Desse momento em diante, a criptografia acontecerá automaticamente entre vocês.

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 privados!

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.

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