br-net.org

br-net.org::Home

de olho na internet

Tutorial: Criptografia com GPG

O GnuPG (GNU Privacy Guard) é um software livre que possibilita criptografar dados utilizando chaves públicas e privadas, além da possibilidade de assinar uma mensagem.

Vou explicar os passos básicos de como utilizar o GPG no Linux. Será necessário que você já o tenha instalado (a maioria das distribuições já vem com ele, caso necessário, procure nos repositórios da sua).

O primeiro passo é criar uma chave para você:

gpg --gen-key

Escolha o valor padrão (1), DSA e Elgamal. A seguir, será solicitado o tamanho da chave, que poderá ser entre 1024 e 4096 bits. O padrão é 2048, mas acho que quanto mais bits, melhor.

Feito isso, será solicitado o período de tempo pelo qual a chave será válida. Exemplos são 30w (30 semanas), 6m (6 meses), 1y (1 ano). Porém, se você colocar “0”, a chave terá validade indefinida (não é uma boa). Acho que uma escolha razoável seria 1 ano. Confirme sua escolha, depois que a fizer.

Depois, coloque seu nome, e-mail e um comentário se desejar. Depois de inserir estes dados, o GPG irá solicitar uma frase secreta. Essa frase será usada toda vez que você quiser assinar ou descriptografar uma mensagem. Depois de escolher, a sua chave será gerada. Como sugerido, faça alguma coisa durante esse período (digite no teclado, mecha no mouse e abra alguns programas), para melhorar a entropia.

Quando o processo terminar, sua chave estará gerada! Para listar todas as chaves que você tem (por enquanto, só essa), digite:

gpg --list-keys

Você verá uma saída semelhante a:

pub 1024D/D485BB4A 2007-07-29 [expira: 2008-07-27]
uid Renan Valente Rangel <email>


O que está em negrito é o identificador da sua chave, que iremos usar logo.

Mas e agora, o que fazer? Para que alguém possa lhe mandar uma mensagem ou arquivo, ela irá precisar da sua chave pública. Existem duas maneiras de alguém obter sua chave: recebê-la diretamente de você ou recebê-la de um “keyserver”. Um keyserver é um servidor que guarda as chaves públicas de diversas pessoas, onde você também poderá enviar a sua:

gpg --keyserver pgp.mit.edu --send-key D485BB4A

Esse comando irá enviar a sua chave pública (no caso, substitua pelo identificador da sua chave) para o servidor pgp.mit.edu. Não precisa se preocupar muito para qual servidor você irá mandar a chave, uma vez que ele irá sincronizar com outros e dentro de algum tempo todos terão a sua chave. Essa é a forma mais comum de compartilhar as chaves.

Você pode procurar chaves com o seguinte comando

gpg --keyserver pgp.mit.edu --search renan

Você terá a opção de receber a chave pública se a busca encontrar algum resultado.

Tendo a chave pública de alguém, é simples criptografar um arquivo ou mensagem. Vamos supor que você queira enviar o arquivo mensagem.txt para mim:

gpg -e mensagem.txt

O GPG irá perguntar para quem você deseja criptografar a mensagem. Você precisa colocar o nome ou o identificador da chave (ex: “renan” ou “D485BB4A”). Depois pressione Enter e o GPG irá gerar um novo arquivo com extensão .gpg, que é o arquivo criptografado.

Então você envia o arquivo para mim (ex: por e-mail) e quando eu receber, irei executar o comando:

gpg -d mensagem.txt.gpg > mensagem.txt

Será solicitada a frase secreta (aquela de quando criamos a chave), para que o arquivo possa ser descriptografado. Depois, ele irá salvar o arquivo com o nome original (mensagem.txt).

Esse é o uso básico do GPG, mas não se assuste. Você não precisa ficar digitando todos esses comando o tempo todo. Eu por exemplo, utilizo o GPG mais com e-mail. Existe uma extensão chamada Enigmail para p Thunderbird e Seamonkey. Ele faz toda essa parte pesada e ao invés de mandar arquivos criptografados em anexo, você pode enviar mensagem completamente criptografadas (texto e anexos). Ah, ele funciona tanto no Linux quanto no Windows (ainda assim ele precisa do GPG instalado para funcionar).

Talvez depois eu faça um tutorial de como usar o Thunderbird + Enigmail, pois é bem interessante e fácil de usar. Se você tiver alguma dúvida, posso tentar ajudar, envie um comentário ou um e-mail ;)

Se quiser testar o GPG, você pode obter minha chave atual assim:

gpg --keyserver pgp.mit.edu --recv-key D485BB4A

PS: Você pode ver o e-mail ao listar a chave (gpg --list-keys).
Enviar Enviar para um amigo(a) | del.icio.us | rec6 | Linkk | StumbleUpon Stumble It!
O que você achou desse post?

Está bom

Não está bom
32 pessoas gostaram
5 pessoas não gostaram

Comentários:

1. André Gondim disse em 2007-08-04 23:11:54:

Legal o teu tutorial.

Bem similar o que eu fiz, mas fiz focado na ferramenta para cifrar mensagem e assinar no Gmail.

Parabéns!!

Abraços,
André Gondim
http://andregondim.eti.br/

2. Manoel Aleksandre disse em 2007-08-05 10:11:34:

Muito bom esse artigo! Direto, prático e limpo.
Siga em frente!

3. Sandro Amilton Vieira disse em 2007-08-05 14:10:17:

Não tem como usar o padrão AES - 128 bits, bem mais seguro.. ???

4. Renan disse em 2007-08-05 15:28:05:

Acho que o GPG usa AES256 por padrão para criptografar (parece, pela saída no modo verbose). Se você quiser utilizar o AES 128 bits, ou outro algoritmo, pode tentar:
gpg --cipher-algo AES -e arquivo
gpg --cipher-algo Blowfish -e arquivo

5. Robson disse em 2007-08-06 00:54:55:

Com esse gpg, é possível assinar um documento, tendo por base um certificado digital? Por exemplo um token ou um smart card? Seria possivel?

6. rafael.siza disse em 2007-11-13 13:35:12:

Link do GNUPG

7. rafael.siza disse em 2007-11-13 13:36:15:

desconsidear comentario anterior.

8. Glayston disse em 2008-01-24 17:07:19:

Sobre a utilização de um Token, perguntado pelo Robson, alguém sabe responder ? Tem como integrar o Gnupg com um Token ?

Deixe um comentário:

 (invisível)

Mensagem:

Você pode usar as seguintes tags BBCode: [b], [i], [u].

Termos de Uso | Powered by Catalyst
Desenvolvido por Renan Rangel