Linux: Guia de Uso do GNU GPG
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:
- Linux: GNU GPG Usage Guide (English) or Linux: Guia de Uso do GNU GPG (Brazilian Portuguese)
- IBM Sterling: Guide to Using PGP Native for Secure Data Exchange on IBM Sterling B2Bi
- IBM Sterling: Guide to Using PGP Native for Secure Data Exchange on IBM Sterling Filegateway
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.