Linux: Guia de Uso do GNU GPG

From Wiki

A ferramenta de criptografia GNU GPG (GNU Privacy Guard) podem ajudar a proteger seus dados contra olhares indiscretos. Este guia irá orientá-lo pelos conceitos básicos do uso do GPG para criar e gerenciar chaves de criptografia, criptografar e descriptografar arquivos, e trocar mensagens seguras.

Este guia tem como complemento dos seguintes artigos

This guide is complemented by the following articles:


O que é o GNU GPG?

O GNU Privacy Guard, frequentemente abreviado como GPG, é uma implementação de código aberto do padrão de criptografia PGP (Pretty Good Privacy). Ele oferece um método sólido e confiável para criptografar e assinar digitalmente dados. O GPG utiliza uma combinação de chaves pública e privada para garantir a confidencialidade e autenticidade de suas mensagens e arquivos.


Primeiros Passos com o GPG

Criando seu Par de Chaves

A base do GPG é o par de chaves: uma chave pública e uma chave privada. A chave pública é usada para criptografia, enquanto a chave privada é usada para descriptografia.

Para criar seu par de chaves, vamos usar o comando abaixo, informe os valores em negrito

gpg --full-generate-key
gpg (GnuPG) 2.3.3; Copyright (C) 2021 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
  (14) Existing key from card
Your selection? 1

RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072) 2048

Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 2y

Key expires at Sun 14 Sep 2025 12:39:48 PM PDT
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.
Real name: Darth Vader

Email address: [email protected]

Comment:
You selected this USER-ID:
    "Darth Vader <[email protected]>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O

Provide a passphrase to secret key

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key 2559F227B6467805 marked as ultimately trusted
gpg: directory '/home/darthvader/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/home/darthvader/.gnupg/openpgp-revocs.d/8E518A1F4F7E8CC13867B82F2559F227B6467805.rev'
public and secret key created and signed.

pub   rsa2048 2023-09-15 [SC] [expires: 2025-09-14]
      8E518A1F4F7E8CC13867B82F2559F227B6467805
uid                      Darth Vader <[email protected]>
sub   rsa2048 2023-09-15 [E] [expires: 2025-09-14]


Listando suas Chaves Públicas

Para visualizar as chaves que você criou ou importou, use o seguinte comando:

# gpg --list-keys

gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2025-09-14
/home/darthvader/.gnupg/pubring.kbx
------------------------
pub   rsa2048 2023-09-15 [SC] [expires: 2025-09-14]
      8E518A1F4F7E8CC13867B82F2559F227B6467805
uid           [ultimate] Darth Vader <[email protected]>
sub   rsa2048 2023-09-15 [E] [expires: 2025-09-14]

Listando suas Chaves Privadas

Para visualizar as chaves que você criou ou importou, use o seguinte comando:

[root@moth1 ~]# gpg --list-secret-keys

/home/darthvader/.gnupg/pubring.kbx
------------------------
sec   rsa2048 2023-09-15 [SC] [expires: 2025-09-14]
      8E518A1F4F7E8CC13867B82F2559F227B6467805
uid           [ultimate] Darth Vader <[email protected]>
ssb   rsa2048 2023-09-15 [E] [expires: 2025-09-14]

Exportando sua Chave Pública

Você pode precisar compartilhar sua chave pública com outros para que eles possam criptografar mensagens ou arquivos para você. Para exportar sua chave pública, execute o seguinte comando:


gpg --armor --export [email protected] > darthvader.pubkey.asc

verficando

cat darthvader.pubkey.asc

-----BEGIN PGP PUBLIC KEY BLOCK-----

mQENBGUEsxgBCADXsgnK555XrHYh5hEtlmc7QFsCCs6n6kVoiHiXvifiAS8ZHW5m
..
-----END PGP PUBLIC KEY BLOCK-----


Esse comando exporta sua chave pública no formato ASCII-armored, que é uma versão legível por humanos da chave.

Importando uma Chave Pública

Para importar a chave pública de outra pessoa/parceiro, salve a chave em um arquivo (por exemplo, chave_publica_parceiro.asc) e use o seguinte comando:

gpg --import chave_publica_parceiro.asc

Isso adicionará a chave deles à sua chaveira, permitindo que você criptografe mensagens/arquivos para eles.


Criptografando e Descriptografando Arquivos

Criptografando um Arquivo

Para criptografar um arquivo usando o GPG, você usará a chave pública do destinatário. Suponha que você queira criptografar um arquivo chamado meu_secreto.txt para um destinatário com o endereço de e-mail [email protected]. Execute:


gpg --encrypt --recipient [email protected] --output meu-arquivo.txt.gpg meu-arquivo.txt

Isso criará um arquivo criptografado chamado meu-arquivo.txt.gpg.

Descriptografando um Arquivo

Para descriptografar um arquivo criptografado, você precisará de sua chave privada e da senha associada a ela. Execute o seguinte comando:

gpg --decrypt meu-arquivo.txt.gpg > meu-arquivo.txt

Você será solicitado a inserir sua senha e, após uma entrada bem-sucedida, o arquivo descriptografado meu_secreto.txt será criado.


Ver também