Trocar Chaves Públicas com gpg --export e gpg --import
Nesta etapa, você aprenderá como trocar chaves públicas com outras pessoas. Para criptografar um arquivo para outra pessoa, você precisa da chave pública dela. Da mesma forma, se alguém quiser enviar um arquivo criptografado para você, precisará da sua chave pública. Este processo envolve exportar sua chave pública para um arquivo e importar as chaves públicas que você recebe de terceiros para o seu chaveiro GPG.
Primeiro, vamos exportar sua própria chave pública. Você usará o comando gpg --export. É uma boa prática usar a opção --armor, que cria uma versão em texto (ASCII) da chave, facilitando a cópia e colagem em e-mails ou outros canais de comunicação baseados em texto. Vamos salvá-la em um arquivo chamado labex.pub.
No seu terminal, execute o seguinte comando. Substitua labex pelo ID de usuário que você usou durante a geração da chave.
gpg --export --armor -o labex.pub labex
Você pode verificar se o arquivo foi criado usando ls:
ls
Você deve ver labex.pub na lista de arquivos. Você também pode visualizar seu conteúdo:
cat labex.pub
A saída será um bloco de texto começando com -----BEGIN PGP PUBLIC KEY BLOCK-----. Esta é a sua chave pública, que agora você pode compartilhar com outras pessoas.
Em seguida, você simulará o recebimento de uma chave pública de outro usuário e a importação para o seu chaveiro. Em um cenário real, você receberia a chave pública de outra pessoa através de um canal seguro. Para este laboratório, criaremos um par de chaves temporário para a Alice e exportaremos a chave pública dela para simular esse processo.
Primeiro, vamos gerar temporariamente um par de chaves para a Alice. Usaremos o modo em lote (batch) para automatizar este processo sem prompts interativos:
cat > alice-key-params << 'EOF'
Key-Type: RSA
Key-Length: 2048
Subkey-Type: RSA
Subkey-Length: 2048
Name-Real: Alice
Name-Email: alice@example.com
Expire-Date: 2y
%no-protection
%commit
EOF
Agora gere o par de chaves da Alice usando o arquivo de parâmetros:
gpg --batch --generate-key alice-key-params
Você deve ver uma saída confirmando a geração da chave:
gpg: key <KEY_ID> marked as ultimately trusted
public and secret key created and signed.
Agora exporte a chave pública da Alice para um arquivo, simulando como você a receberia dela:
gpg --export --armor -o alice.pub alice@example.com
Para esta demonstração, também removeremos a chave secreta da Alice do chaveiro, já que, na realidade, você teria apenas a chave pública dela:
gpg --delete-secret-keys alice@example.com
Quando solicitado, confirme a exclusão digitando y e pressionando Enter.
gpg --delete-keys alice@example.com
Novamente, confirme a exclusão digitando y e pressionando Enter.
Agora você tem a chave pública da Alice no arquivo alice.pub, simulando o recebimento de outro usuário.
Limpe o arquivo temporário de geração de chave:
rm alice-key-params
Agora que você tem a chave pública da Alice em um arquivo, importe-a para o seu chaveiro GPG usando o comando gpg --import.
gpg --import alice.pub
Você verá uma saída confirmando que a chave foi importada:
gpg: key <KEY_ID>: public key "Alice <alice@example.com>" imported
gpg: Total number processed: 1
gpg: imported: 1
Para confirmar que a chave da Alice está agora no seu chaveiro, liste todas as suas chaves públicas novamente.
gpg --list-keys
A saída mostrará agora tanto a sua chave (labex) quanto a chave recém-importada (Alice).
/home/labex/.gnupg/pubring.kbx
------------------------------
pub rsa3072 2025-07-01 [SC] [expires: 2027-07-01]
<FINGERPRINT_LABEX>
uid [ultimate] labex <labex@example.com>
sub rsa3072 2025-07-01 [E] [expires: 2027-07-01]
pub rsa2048 2025-07-01 [SC] [expires: 2027-07-01]
<FINGERPRINT_ALICE>
uid [ unknown] Alice <alice@example.com>
sub rsa2048 2025-07-01 [E] [expires: 2027-07-01]
Observe que a chave da Alice está marcada com confiança [ unknown]. Você aprenderá como gerenciar a confiança da chave na próxima etapa.