turboCrypto, 24/8 19h30 no tarrafa

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/

[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.

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: OTR
  • controle das chaves públicas e, principalmente, da privada: numa subpasta da sua “/home/”

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 (cadê o LINK?), 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 (e o pidgin) não faz.

Com o Gajim instalado, descobri que ele lida com as chaves OTR de um jeito diferente do Pidgin. 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.