Tutorial: Criptografia com GPG
Postado em 3 de agosto de 2007 as 22:39:54, por Renan Rangel
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).
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).
Comentários:
2. Manoel Aleksandre disse em 2007-08-05 10:11:34:
Muito bom esse artigo! Direto, prático e limpo.
Siga em frente!
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
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:









Enviar para um amigo(a)


Stumble It!

1. André Gondim disse em 2007-08-04 23:11:54:
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/