Comando gnupg no Linux (criptografia de mensagens) [Guia Básico]

O Comando GnuPG no Linux é uma aplicação do projeto GNU que implementa o OpenPGP tal como definido pela RFC4880. GnuPG permite criptografar e assinar os seus dados e mensagens, utilizando chaves públicas e privadas.

A ideia é você disponibilizar a sua chave pública para o mundo e manter a sua chave privada em sigilo.

Qualquer um com uma cópia de sua chave pública pode encriptar informações e enviá-las para você, porque só você poderá as mensagens. Também é possível assinar arquivos, de forma que qualquer pessoa com a sua chave pública é capaz de atestar que determinado arquivo ou mensagem veio de você.

A última versão do GnuPG pode ser instalada através do pacote gnupg da sua distribuição.

Feita a instalação, é preciso gerar as chaves do usuário com a opção “–gen-key” do comando gpg:

$ gpg --gen-key
gnupg_pt Comando gnupg no Linux (criptografia de mensagens) [Guia Básico]Figura 22 – gpg –gen-keys


Uma vez criada o par de chaves, deve-se exportar a chave pública para dar para outras pessoas, de modo que elas possam lhe enviar mensagens ou verificar a assinatura das mensagens que você enviou. Para exportar a chave pública, usa-se a opção “–export”:

$ gpg --export [email protected] > uira.pub

Se quiser verificar o arquivo criado:

$ file uira.pub 
uira.pub: PGP/GPG key public ring (v4) created Wed Oct 23 11:28:11 2019 RSA (Encrypt or Sign) 3072 bits MPI=0xbfa4300b374fd596...

Para importar a chave de outras pessoas, usa-se ]a opção “–import”:

$ gpg --import chave.pub

Você poderá ver as chaves que foram criadas com o argumento “–list-keys”

$ gpg --list-keys
/home/uiraribeiro/.gnupg/pubring.kbx
------------------------------------
pub   rsa3072 2019-10-23 [SC] [expires: 2021-10-22]
      E725EE3678AB3C99D51C625646BFCC17E483A6E0
uid           [ultimate] Uira Ribeiro <[email protected]>
sub   rsa3072 2019-10-23 [E] [expires: 2021-10-22]

Você poderá colocar sua chave pública no seu site, ou enviá-la para seus amigos.

Uma vez importada uma chave pública de outra pessoa, ela pode ser validada através da verificação da sua assinatura digital:

$ gpg --edit-key [email protected]
pub  1024D/9E98BC16  created: 1999-06-04 expires: never  trust: -/q
sub  1024g/5C8CBD41  created: 1999-06-04 expires: never     
(1)  Carla Cruz <[email protected]>
Command> fpr
pub  1024D/9E98BC16 1999-06-04  Carla Cruz <[email protected]>
Fingerprint: 268F 448F CCD7 AF34 183E  52D8 9BDE 1A08 9E98 BC16

A assinatura “fingerprint” deverá então ser verificada com o proprietário da chave pública, de forma que se garanta que aquela chave pública pertence mesmo ao seu verdadeiro dono. Isto evita que alguém possa criar uma chave pública fingindo ser outra pessoa. 

Algumas vezes você pode apenas aceitar que a chave é mesmo da pessoa que a enviou para você, mesmo sem verificar a assinatura. 

De qualquer forma, você pode assinar a chave pública importada com a sua chave:

$ gpg —edit-key [email protected]
pub  1024D/9E98BC16  created: 1999-06-04 expires: never  trust: -/q
sub  1024g/5C8CBD41  created: 1999-06-04 expires: never     
(1)  Carla Cruz <[email protected]>
Command> sign
pub  1024D/9E98BC16  created: 1999-06-04 expires: never   trust: -/q
Fingerprint: 268F 448F CCD7 AF34 183E  52D8 9BDE 1A08 9E98 BC16

Criptografia de Arquivos com GPG

Para criptografar um arquivo para enviar para uma determinada pessoa, você deverá ter a chave pública da pessoa importada e verificada.

A opção “–encrypt” é usada para criptografar os dados:

$ gpg --output documento.gpg --encrypt --recipient [email protected]  documento.pdf

Desta forma, o documento.pdf foi criptografado e salvo com o nome documento.gpg, que somente poderá ser lido pela Carla Cruz, que detém a chave privada.

Desta forma, a Carla, e somente a Carla, poderá ver o conteúdo do arquivo documento.gpg com a opção “–decrypt”:

carla:~\# gpg --output arquivo.pdf --decrypt documento.gpg

Assinatura de Documentos

Você poderá também assinar documentos digitalmente, de forma que as pessoas possam verificar que um arquivo é mesmo proveniente de você e não foi alterado por ninguém.

Para assinar digitalmente um arquivo, usa-se a opção “–sign”:

$ gpg --output documento.sig --sign documento.pdf

Desta forma, o arquivo será comprimido e a sua assinatura será adicionada.

Com a opção “–sign” o arquivo não está criptografado e qualquer um que tenha a sua chave pública poderá ver seu conteúdo e verificar sua assinatura.

Para verificar uma assinatura e ler o documento assinado, deve-se usar a opção “–decrypt”:

$ gpg --output documento.pdf --decrypt documento.sig

Você também poderá assinar e-mails com uma assinatura em texto, usando a opção “–clearsign”:

$ gpg --clearsign email.txt

Desta forma o texto será assinado com um hash:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Este é um email de teste.
Abraços,
prof. Uirá Ribeiro
-----BEGIN PGP SIGNATURE-----
iQGzBAEBCgAdFiEE5yXuNnirPJnVHGJWRr/MF+SDpuAFAl2wadEACgkQRr/MF+SD
puAU9AwAkmQ/ffkJv0k2T1yq0VxuuG6ezxOulapr0dsFHCVWCXinYmjil/oNMamw
tZw4cDAKbdjMmP+3dg8a234dsFyN43AOiwznx8QPeJeMtWQNaWo9cg5THNZiKR5w
thsPMUC+3mcV0AqlGy3y5u9m4Uh6K97x+BjGc2XYkG6O3bocooSRTS3+rvDbGioR
3a84WtGY+YlgUsKlGhn4eUdfJ1+LxUNgUsSuT45CdDujB2VQXw3KK34/CGAxdctH
LBsI+DNrc/w/1lTjnmNpYGCdWjtQXAt8/DpXuI1GFJCZJmXD3Eu0gC7R7XTibcjU
CvMp5ovONTCGrnwkYXBSVwM/fZYKrcAManG5Vqyqepd7x6FVysxVPpbgPh/IKN51
RlfQeuF0+PjvqO5r3ShZxWvawnVh1kkEe2I0mYgW2aQWUdN7hC+zQZaHx6Gj3gIZ
MD1OJvCAuhW3yhBQV0EMOjotAhQC8NOfVrEKSSqD0yZs40kM+lwsNlJlNfLDMh3T
JIcAJGem
=TPYZ
-----END PGP SIGNATURE-----

A mesma opção “–decrypt” pode ser usada para verificar se a mensagem é autêntica e não foi alterada:

$ gpg  --decrypt email.asc 
Este é um email de teste.
Abraços,
prof. Uirá Ribeiro
gpg: Signature made Wed 23 Oct 2019 11:55:13 AM -03
gpg:                using RSA key E725EE3678AB3C99D51C625646BFCC17E483A6E0
gpg: Good signature from "Uira Ribeiro <[email protected]>" [ultimate]

Revogar Chaves

Se você perdeu sua chave privada, ou caso alguém tenha tido acesso a sua chave privada, ou mesmo você tenha esquecido sua passphrase, você pode gerar uma revogação de chave.

A revogação de chave gera um certificado que deve ser distribuído alertando os usuários de que sua chave e assinatura atuais não são mais válidos.

$ gpg --output revoke.asc --gen-revoke minhachave

O argumento minhachave pode ser o ID da chave, ou o userID que identifica sua chave.

Este certificado de revogação é bem pequeno. Recomenda-se imprimi-lo e guardá-lo em local seguro e apagá-lo do computador.

Os arquivos do GnuPG residem no diretório HOME dos usuários, com o nome de ~/.gnupg/

Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.

Gostou? Compartilhe