O GnuPG (GNU Privacy Guard) é uma ferramenta livre e gratuita para comunicação e armazenamento seguro de dados, que pode ser usado pela linha de comando para criptografar dados e criar assinaturas digitais.
O GnuPG utiliza um método de criptografia conhecido como chave assimétrica, em que duas chaves são criadas: a primeira, pública, serve para que qualquer pessoa codifique mensagens e arquivos de modo que apenas você possa decodificar; a segunda, privada, deve ser mantida em absoluto sigilo e serve para que você decodifique mensagens term papers criptografadas com sua chave pública equivalente. Por isso, esse método também é conhecido como criptografia de chave pública.
As chaves públicas e privadas são armazenadas nos arquivos pubring.gpg e secring.gpg respectivamente, dentro do subdiretório ~/.gnupg de sua pasta pessoal ($HOME). Convém tirar um cópia de segurança desses arquivos, para isso basta copiar os arquivos citados acima em uma mídia segura (pen-drive, CD-ROM, etc).
$ sudo apt-get install gnupg
Após instalar o gnupg, execute o comando gpg para criar o diretório ~/.gnupg que armazenará as chaves pública e privada.
$ gpg
Para gerar um par de chaves pessoais use o comando:
$ gpg --gen-key
Caso o comando tenha sido bem sucedido, o GnuPG iniciará o processo de criação da nova chave, com a seguinte mensagem:
Por favor selecione o tipo de chave desejado:
(1) DSA e Elgamal (padrão)
(2) DSA (apenas assinatura)
(5) RSA (apenas assinar)
Sua opção?
Nesse ponto você deve escolher o tipo de chave criptográfica. Selecione (1) DSA e ELGamal a não ser que tenha necessidades específicas.
par de chaves DSA vai ter 1024 bits.
ELG-E chaves podem ter o seu comprimento entre 1024 e 4096 bits.↵
Que tamanho de chave você quer? (2048)
O tamanho de chave pedido é 2048 bits
O GnuPG determina 1024 bits para a chave DSA, e cabe a você decidir o tamanho da chave Elgamal. O padrão 2048 é sugerido e suficiente para uma boa combinação de proteção/velocidade. Faça sua escolha e siga para o próximo passo.
Por favor especifique por quanto tempo a chave deve ser válida.
0 = chave não expira
<n> = chave expira em n dias
<n>w = chave expira em n semanas
<n>m = chave expira em n meses
<n>y = chave expira em n anos
A chave é valida por? (0)
Agora escolha o período da validade de sua chave. A opção 0 (zero) é o padrão, a chave não expira. Mas caso você queira que sua chave expire depois de um certo período, informe um número positivo que terá o valor de dias. Esse número pode ser seguido das letras w (semanas), m (meses) ou y (anos). Por exemplo, "10w", "7m", "2y", "60". Obs: Após a validade, a chave será considerada inválida.
A chave não expira nunca
Está correto (s/N)?
Feito isso, uma confirmação da sua escolha será exibida. Caso tenha certeza da sua escolha, confirme. Senão, repita esse passo.
Nome completo: Monteiro Lobato <enter>
Endereço de correio eletrônico: monteirolobato@sitiodopicapauamarelo.com <enter>
Comentário: <enter>
Você selecionou este identificador de usuário:
"Monteiro Lobato <monteirolobato@sitiodopicapauamarelo.com>"
Muda (N)ome, (C)omentário, (E)ndereço ou (O)k/(S)air? O <enter>
Nesse passo o GnuPG cria um identificador a partir dos seus dados pessoais. Você precisará informar seu Nome Completo, Endereço de correio eletrônico e opcionalmente um comentário. Não se preocupe em errar algum dado, pois uma mensagem para confirmação será exibida.
Digite a frase secreta:
A frase secreta é uma senha que irá identificá-lo(a) como proprietário(a) da chave privada. É chamada de frase secreta porque pode conter espaços e não há limite de caracteres.
Repita a frase secreta:
Digite novamente a mesma senha.
Pronto! Sua chave será gerada nesse momento. Para ajudar o processo da geração de sua chave, mova seu mouse pela tela aleatoriamente.
Para listar as chaves armazenadas, use o comando:
$ gpg --list-keys
pub 1024D/CBA4A5BF 2006-07-02
uid Monteiro Lobato <monteirolobato@sitiodopicapauamarelo.com>
sub 2048g/84E0D512 2006-07-02
A primeira coluna exibe o tipo de chave: a palavra pub indica uma chave publica principal para assinaturas, enquanto a palavra sub indica uma chave publica subordinada. A segunda coluna indica a quantidade de bits da chave, seguido por seu tipo e seu número de identificação em hexadecimal. A terceira coluna é exibido a data de criação da chave (yyyy,mm,dd). Por fim, a última coluna exibe o identificador do usuário.
Nesse exemplo, o key-ID é CBA4A5BF e o user-ID tanto pode ser o nome: Monteiro Lobato como o e-mail: monteirolobato@sitiodopicapauamarelo.com .
Exportando chaves
Sua chave pública deve ser distribuída a outros usuários para que possam enviar dados criptografados ou checar a autenticidade de seus arquivos. Para exportar sua chave pública em um arquivo que será distribuído a outras pessoas ou servidores de chaves na Internet, use a opção --export:
$ gpg --export -a [key-ID] > chave-pub.txt
Ao invés do key-ID, poderá ser usado o user-ID. A opção -a permite que os dados sejam gerados usando bits ASCII 7.
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
[...]
-----END PGP PUBLIC KEY BLOCK-----
Importanto chaves
Uma chave pública pode ser adicionada ao seu chaveiro público com a opção --import.
$ gpg --import arquivo
Uma mensagem de conformação será exibida.
gpg: chave C473AA61: chave pública "Rafael Sfair (Saturn is an oblate planet) <rafaelsfair@yahoo.com.br>" importada
gpg: Número total processado: 1
gpg: importados: 1
Depois de importada uma chave deve ser validada. Uma chave é validada pela verificação da impressão digital e pela assinatura para certificá-la como uma chave válida. A impressão digital da chave pode ser rapidamente visualizada com a opção --fingerprint, mas para certificar a chave você deve editá-la.
$ gpg --edit-key [key-ID]
Ao invés do key-ID, poderá ser usado o user-ID.
gpg (GnuPG) 1.4.2.2; Copyright (C) 2005 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
pub 1024D/C473AA61 criado: 2006-04-24 expira: 2011-04-23 uso: CS
confiança: desconhecida validade: desconhecida
sub 2048g/676618C0 criado: 2006-04-24 expira: 2011-04-23 uso: E
[ desconhecida] (1). Rafael Sfair (Saturn is an oblate planet) <rafaelsfair@yahoo.com.br>
[ desconhecida] (2) sfair (sfair) <rafaelsfair@yahoo.com.br>
O comando fpr exibe a impressão digital. Nesse exemplo seria: 3A4B C481 6E53 52F6 3BAB DE63 F030 6039 C473 AA61
Comando>fpr
pub 1024D/C473AA61 2006-04-24 Rafael Sfair (Saturn is an oblate planet) <rafaelsfair@yahoo.com.br>
Impressão digital da chave primária: 3A4B C481 6E53 52F6 3BAB DE63 F030 6039 C473 AA61
A impressão digital da chave é verificada com o proprietário da chave. Isto pode ser feito pessoalmente ou por telefone ou através de outros meios que possam garantir que você está realmente comunicando-se com o verdadeiro proprietário da chave.
Após checar a impressão digital você pode assinar a chave para validá-la. Para isso, use o comando sign.
Comando> sign
Realmente assinar todos os IDs de usuário? (s/N) s
pub 1024D/C473AA61 criado: 2006-04-24 expira: 2011-04-23 uso: CS
confiança: desconhecida validade: desconhecida
Impressão digital da chave primária: 3A4B C481 6E53 52F6 3BAB DE63 F030 6039 C473 AA61
Rafael Sfair (Saturn is an oblate planet) <rafaelsfair@yahoo.com.br>
sfair (sfair) <rafaelsfair@yahoo.com.br>
Esta chave vai expirar em 2011-04-23.
Você tem certeza de que quer assinar esta
chave com sua chave "Monteiro Lobato <monteirolobato@sitiodopicapauamarelo.com>" (422FF803)
Realmente assinar? (s/N)
Uma vez assinada, você pode checar a chave para listar as assinaturas dela e ver a assinatura que você adicionou. Toda ID de usuário numa chave terá uma ou mais assinaturas próprias (self-signature) assim como uma assinatura para cada usuário que tenha validado a chave.
Comando> check
uid Rafael Sfair (Saturn is an oblate planet) <rafaelsfair@yahoo.com.br>
sig!3 C473AA61 2006-04-24 [auto-assinatura]
sig! 422FF803 2006-07-04 Monteiro Lobato <monteirolobato@sitiodopicapauamarelo.com>
uid sfair (sfair) <rafaelsfair@yahoo.com.br>
sig!3 C473AA61 2006-04-24 [auto-assinatura]
sig! 422FF803 2006-07-04 Monteiro Lobato <monteirolobato@sitiodopicapauamarelo.com>
Para sair do modo de edição, use o comando quit.
Comando> quit
Salvar alterações? (y/N)
O procedimento para codificar e decodificar arquivos é simples e direto. Se você quer codificar uma mensagem para um amigo, você usa a chave pública dele e só ele irá decodificar a mensagem usando a chave privada. Se um amigo quer enviar uma mensagem para você, ele codifica usando sua chave pública e você decodifica usando sua chave privada.
Para codificar (--encrypt) um arquivo, use o comando:
$ gpg --output arquivo_secreto --encrypt arquivo_original --recipient [key-ID-destinatario]
Para decodificar (--decrypt) um arquivo, use o comando:
$ gpg --output arquivo_decodificado --decrypt arquivo_secreto
Assinando arquivos
Geralmente você assina um arquivo para garantir ao destinatário que você é realmente a pessoa que enviou aquele arquivo. Use a opção -sign para assinar arquivos usando sua chave privada:
$ gpg --sign arquivo
Você será imediatamente solicitado pela frase secreta usada na geração de sua chave. Um novo arquivo com a extensão .gpg (assinado e compactado) será então gerado.
Assinando arquivos em texto puro
Adicionalmente, a opção --clearsign poderá ser usada para fazer uma assinatura em um texto plano, o que é muito usado por programas de e-mails com suporte ao gpg:
$ gpg --clearsign arquivo
Um novo arquivo será criado, mas desta vez com a extensão .asc contendo o arquivo assinado e sem compactação.
Verificando assinaturas
Dado um arquivo assinado, você pode apenas checar a assinatura ou checar a assinatura e recuperar o documento original. Para checar a assinatura use a opção --verify. Para verificar a assinatura e extrair o documento use a opção --decrypt. O documento assinado a ser verificado e recuperado é a entrada e o documento recuperado é a saída.
$ gpg --output arquivo_decodificado --decrypt arquivo_assinado
Para enviar sua chave pública para um keyserver, use o comando:
$ gpg --send-key [key-ID]
Alternativamente, você pode enviar sua chave para um keyserver diferente do padrão, para isso use o comando:
$ gpg --keyserver <keyserver> --send-key [key-ID]
Talvez, seja mostrada uma mensagem de sucesso com esta:
gpg: success sending to `<keyserver>' (status=200)
Lista pública de keyservers
[key-ID]
Número hexadecimal de identificação. Por exemplo, CBA4A5BF.
[user-ID]
Qualquer campo identificador do usuário. Por exemplo, os campos nome e e-mail.
Edite este menu na guia "Páginas"
Mostre-me