GnuPG
02/08/2013
"É pessoal. É particular. E não é da conta de mais ninguém a não ser você. Você pode estar planejando uma campanha política, discutindo seus impostos, ou tendo um caso ilícito. Não há nada errado em assegurar sua privacidade. Privacidade é algo tão natural e respeitável quanto a Constituição."Por que você precisa do PGP? - Phil Zimmermann
O GnuPG (GNU Privacy Guard) é uma implementação gratuita do OpenPGP, que permite criptografar dados e mensagens para garantir a autenticidade e segurança. Ele usa o sistema de chaves pública e privada (assimétrico), conceito que foi introduzido em 1975 por Whitfield Diffie e Martin Hellman. A chave privada deve ser conhecida e usada somente pelo seu criador, e a chave pública pode ser distribuida livremente para todos. Todos que possuem a chave pública podem criptografar a informação, mas não podem descriptografar, apenas a pessoa que possui a chave privada pode descriptografar.
Chaves:
É um valor que usa um algoritmo criptográfico para produzir um texto cifrado. As chaves são basicamente números muito, mas muito grandes. O tamanho da chave é medido em bits. Uma chave convencional de 80-bit tem a força de uma chave pública de 1024-bit. As chaves grandes são seguras por um longo período de tempo, o DSA permite uma chave de até 1024 bits.
Assinaturas digitais:
Uma das vantagens da criptografia de chave pública é que ele fornece o método de gerar assinaturas digitais. Assinaturas digitais permitem que a pessoa que receber a informação verifique a autenticidade de sua origem e se a informação está intacta. O algoritmo de assinatura de chave pública usando no GnuPG é o DSA (Digital Signature Standard). Se o documento for modificado, a verificação da assinatura falhará.
As assinaturas digitais fornecem autenticidade e integridade, fundamentais para manter sua privacidade.
Funções Hash:
Transforma uma mensagem de comprimento variável e produz uma saída de comprimento fixo, transformando uma grande quantidade de dados em uma pequena quantidade de informações. O OpenPGP usa uma criptografia com função hash no texto que o usuário está assinando. A finalidade da função hash é produzir uma impressão digital de um arquivo, mensagem ou bloco de dados. Algumas famílias hash que o GnuPG usa: MD5, SHA1, SHA256, etc.
Instalação:
$ sudo apt-get install gnupg
Criando um par de chaves:
$ gpg --gen-key
Após esse comando, escolha o tipo de criptografia, o tamanho da chave (quanto maior o tamanho, maior será a segurança e o tempo de processamento), a validade da chave, id do usuário, email e comentário. Depois escolha a frase secreta para a chave, necessária para descriptografar a mensagem criptografada com sua chave pública. As configurações do GnuPG ficam no diretório ~/.gnupg/.
Listando as chaves:
$ gpg --list-keys
Gerando uma versão ascii da chave pública:
$ gpg --armor --output pubkey.txt --export 'Seu Nome'
Criptografando arquivos:
$ gpg --encrypt --recipient 'Seu Nome' texto.txt
Para descriptografar:
$ gpg --output texto.txt --decrypt texto.txt.gpg
O comando acima vai pedir a sua frase secreta usada na criação da chave.
Importando uma chave:
$ gpg --import alguma_chave.gpg
Assinando a chave:
Para garantir sua autenticidade, depois de ser importada a chave deve ser assinada:
$ gpg --sign-key C92515E
Exportando uma chave:
$ gpg --output pistaches.gpg --export pistaches
Exportando a chave para um servidor:
$ gpg --send-keys 44B6CA2C
Ou podemos especificar o servidor:
$ gpg --keyserver keyserver.cais.rnp.br --send-keys 44B6CA2C
A identificação da chave é o 44B6CA2C e o servidor padrão do gnupg é hkp://keys.gnupg.net, que pode ser modificado na entrada keyserver do ~/.gnupg/gpg.conf.
Buscando chaves:
$ gpg --search-keys 'pistaches@pistach.es'
Revogando uma chave:
$ gpg --gen-revoke 44B6CA2C
A revogação da chave vai invalidar a chave comprometida.
Editando chaves:
$ gpg --edit-key 44B6CA2C
Verificando a impressão digital:
gpg> fpr
pub 2048R/44B6CA2C 2013-05-01 Pistaches <pistaches@pistach.es>
Impressão digital da chave primária: 3695 2E39 31D0 1F15 AD0B B9C8 CCDB 6F5C 44B6 CA3C
Depois de verificar a impressão digital, você pode assinar a chave:
gpg> sign
Checando as assinaturas:
gpg> check
uid Pistaches <pistaches@pistach.es>
sig!3 44B6CA2C 2013-05-01 [auto-assinatura]
Mais opções de tarefas relacionadas às chaves: http://www.gnupg.org/gph/en/manual/r899.html
Criptografando seus emails:
Criptografar emails é o equivalente a mandar cartas dentro de envelopes, onde a carta fica protegida da chuva, vento ou de curiosos.
Thunderbird:
O thunderbird é uma aplicação gratuíta de emails. Ele suporta o OpenGPG através do plugin enigmail, que é uma extensão do Mozilla Thunderbird e do Seamonkey para escrever e receber emails assinados ou criptografados pelo OpenPGP.
Instalando o Thunderbird:
$ sudo add-apt-repository ppa:mozillateam/thunderbird-stable
$ sudo apt-get update
$ sudo apt-get install thunderbird
Instalando o Enigmail:
$ sudo apt-get install enigmail
Reinicie o Thunderbird. No menu aparecerá a opção Open PGP, vá no Assistente de configuração e siga os passos padrões ou de sua preferência.
Para enviar emails criptografados, ao escrever uma nova msg, no menu OpenPGP selecione "assinar a mensagem e criptografar a mensagem". Se você estiver enviando a mensagem para alguém que não possui a sua chave pública, anexe ao email. Ao enviar, será pedido a senha da sua chave. ;)
*Fontes:
http://www.mundociencia.com.br/pgp/tuto1.asp
http://www.madboa.com/geek/gpg-quickstart/
http://www.kernelhacking.com/rodrigo/docs/gnupg.txt
http://www.pgpi.org/doc/whypgp/br/
http://support.gpgtools.org/kb/how-to/introduction-to-cryptography
http://irtfweb.ifa.hawaii.edu/~lockhart/gpg/
http://www.gnupg.org/documentation/manuals/gpgme/Hash-Algorithms.html
http://homepages.dcc.ufmg.br/~joaoreis/Site%20de%20tutoriais/gnupg/gnupg-manual-ptbr.html
http://www.interrupt19.com/2010/01/21/secure-email-thunderbird-mail-gmail-part-2/
https://help.ubuntu.com/community/GnuPrivacyGuardHowto