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