Primeiros passos com PGP / GPG

Pretty Good Privacy (PGP) é um modelo que fornece privacidade criptográfica e autenticação para comunicação de dados. Foi criado por Phil Zimmermann em 1991. Hoje, PGP é uma empresa que vende um programa de criptografia proprietário, OpenPGP é o protocolo aberto que define como funciona a criptografia PGP e GnuGP é o software livre.

A distribuição das chaves PGP pode ser feita usando o conceito de web of trust . Esta é uma forma descentralizada de estabelecer a autenticidade de uma chave pública e de seu proprietário. Se você quiser uma imagem fofa (lúdica) da teia de confiança, verifique o livro de Cory Doctorow , Little Brother .

Quase 15 anos após sua criação, o PGP continua muito bom . Mas ainda há necessidade de novas soluções (e parecem estar chegando em breve ). Enquanto isso, escrevi este tutorial e espero que você o ache divertido.

I. Criação de chaves GPG

Basta digitar o seguinte no terminal:

$ gpg --gen-key

Escolha RSA com 4096 bits de comprimento e validade de até 5 anos. Use uma senha forte (mantenha-a segura, pois não pode ser recuperada).

II. Faça backup de sua chave privada

Salve com sua alma:

$ gpg --export-secret-keys --armor YOUR_EMAIL > YOUR_NAME-privkey.asc

III. Compartilhando sua chave

Existem várias maneiras de compartilhar ou publicar sua chave pública:

Compartilhando a impressão digital da chave

A impressão digital da chave é igual à sua assinatura. Cada chave PGP tem uma impressão digital exclusiva que permite que você confirme a outras pessoas que receberam sua chave pública real sem adulteração. Uma impressão digital é a maneira mais conveniente de representar uma chave de maneira exclusiva.

Para verificar a impressão digital de qualquer chave que você tenha em seu chaveiro, digite:

$ gpg --fingerprint EMAIL

Enviando o arquivo ASCII

Você pode copiar sua chave para um arquivo a ser compartilhado:
sh $ gpg --export --armor YOUR_EMAIL > YOUR_NAME-pubkey.asc

Ao publicá-lo em um servidor de chave pública

Você pode exportar sua chave para o servidor de chave pública GnuPG . Para isso, use o nome da sua chave (o número hexadecimal na frente da chave):

$ gpg --send-key KEY_NAME

Você também pode exportá-lo para pgp.mit.edu :

$ gpg --keyserver hkp://pgp.mit.edu --send-key KEY_NAME

V. Importando a Chave de Alguém

Existem muitas maneiras de importar a chave pública de alguém:

Por um arquivo compartilhado

Se você tiver o arquivo ASCII, pode digitar:

$ gpg --import PUBKEY_FILE

Por servidor de chave pública

Para pesquisar a chave de alguém no servidor de chave pública, digite:

$ gpg --search-keys NAME

Observação: isso não é muito seguro, pois você não pode ter certeza da autenticidade da chave.

V. Assinando uma chave: The Web of Trust

Assinar uma chave informa ao software que você confia na chave fornecida (você verificou que ela está associada à pessoa em questão).

Para assinar um tipo de chave:

$ gpg --sign-key  PERSON_EMAIL

Você deve permitir que a pessoa cuja chave está assinando desfrute das vantagens de seu relacionamento de confiança. Isso é feito enviando-lhe de volta a chave assinada:

$ gpg --export --armor PERSON_EMAIL

Ao receber uma chave confiável semelhante , você pode importá-la para seu banco de dados GPG:

$ gpg --import FILENAME

VI. Outros comandos úteis

Para excluir uma chave de seu chaveiro:

$ gpg --delete-key-name KEY_NAME

Para editar uma chave (por exemplo, a data de validade):

$  gpg --edit KEY_NAME

Se você tiver mais de uma chave:

Edite com sua chave favorita:~/.gnupg/gpg.conf

default-key KEY_NAME

Mantenha suas chaves atualizadas:

$ gpg --refresh-keys

Para listar suas chaves:

$ gpg --list-keys

E claro:

$ man gpg

VII. Criptografar e descriptografar mensagens

Com a chave pública de alguém , você pode criptografar mensagens que só podem ser descriptografadas com a chave secreta dela. Você também pode verificar as assinaturas que foram geradas com sua chave secreta.

Por outro lado, com sua chave secreta, você pode descriptografar mensagens que foram criptografadas usando sua chave pública. Você também pode assinar mensagens .

Com o GPG, você criptografa mensagens usando o sinalizador.--encrypt

O comando abaixo criptografa a assinatura da mensagem com sua chave privada (para garantir que está vindo de você). Ele também gera a mensagem em formato de texto, em vez de bytes brutos:

$ gpg --encrypt --sign --armor -r PERSON_EMAIL FILE_TO_BE_ENCRYPTED

Se você quiser ler esta mensagem com seu próprio endereço de e-mail, deverá adicionar outro sinalizador de destinatário com seu endereço de e-mail.-r

Para descriptografar uma mensagem, digite:

$ gpg FILENAME

VIII. Revogando uma chave

Sempre que precisar revogar uma chave (porque ela pode estar comprometida, por exemplo), você pode gerar um certificado de revogação com:

$ gpg --output my_revocation.asc --gen-revoke KEY_NAME

Para importar a revogação para o seu chaveiro:

$ gpg --import my_revocation.asc

Finalmente, este comando envia a chave revogada para o servidor de chave pública:

$ gpg --keyserver pgp.mit.edu --send-keys KEY_NAME

Comentários finais

Se você preferir uma GUI em vez da linha de comando, recomendo fortemente o seahorse . Torna muito fácil gerenciar todas as suas chaves (não apenas OpenPGP) e senhas.

Outro bom projeto (alfa) é keybase.io . É uma espécie de rede social de confiança, onde você pode assinar sua chave com seus perfis públicos. Verifique o meu aqui . A criptografia e a descriptografia podem ser feitas na linha de comando com seu aplicativo node.js. Não confio em carregar minha chave privada em lugar nenhum, mas acho que a ideia é melhor do que um simples servidor de chave pública.

Por fim, algumas palavras sobre os plug-ins do navegador. Embora existam vários deles para criptografar webmail com OpenPGP, como mymail-crypt ou Mailvelope , eu particularmente não recomendo esta solução. Se você deseja seriamente garantir sua privacidade a longo prazo, a maneira mais segura de fazer isso é usar um editor de texto para escrever sua mensagem de e-mail, criptografando a mensagem fora do navegador da web e, em seguida, cortando e colando em sua interface de webmail. Isso garantirá que apenas o destinatário poderá ler seu e-mail. A escolha é sua. Se você realmente precisa de algo em seu navegador, o criador do Cryptocat lançou recentemente o minilock . Esta ferramenta usa criptografia de curva elíptica Curve25519(o mesmo que no Cryptocat) para que as chaves públicas sejam muito mais curtas (e mais fáceis de compartilhar). Lembre-se de que é um novo aplicativo, então pode não ser a melhor escolha para ambientes de alto risco (mas vale a pena ficar de olho neste projeto).