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.