Introdução
Neste laboratório, você aprenderá como gerar pares de chaves de assinatura usando o comando gpg, um passo fundamental para comunicação segura e distribuição de software. Você irá gerar um novo par de chaves RSA e RSA com um tamanho de chave (keysize) e período de validade especificados, fornecendo informações essenciais de ID de usuário durante o processo.
Após a geração da chave, você aprenderá como inserir e confirmar a senha (passphrase) para sua nova chave, uma medida de segurança crucial. Em seguida, você verificará o arquivo de chave pública gerado para garantir sua correção. Finalmente, você explorará como gerar um par de chaves em um diretório específico, demonstrando flexibilidade no gerenciamento de suas chaves.
Gerar um novo par de chaves de assinatura
Nesta etapa, você aprenderá como gerar um novo par de chaves de assinatura usando o comando gpg. Um par de chaves de assinatura consiste em uma chave privada e uma chave pública. A chave privada é usada para assinar dados, e a chave pública é usada para verificar a assinatura. Este é um conceito fundamental em comunicação segura e distribuição de software.
Primeiro, abra seu terminal. Você já está no diretório ~/project.
Para gerar um novo par de chaves, use o seguinte comando:
gpg --full-generate-key
Após executar o comando, você será solicitado a selecionar o tipo de chave que deseja. Para este laboratório, usaremos a opção padrão, que é RSA and RSA. Pressione Enter para aceitar o padrão.
gpg (GnuPG) 2.2.27; 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)
Your selection? 1
Em seguida, você será questionado sobre o tamanho da chave (keysize). Um tamanho de chave maior fornece mais segurança, mas leva mais tempo para gerar e usar. Para este laboratório, usaremos o tamanho de chave padrão de 3072 bits. Pressione Enter para aceitar o padrão.
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072)
Você será então perguntado por quanto tempo a chave deve ser válida. Para este laboratório, tornaremos a chave válida por um ano. Digite 1y e pressione Enter.
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) 1y
Confirme que a chave expirará na data mostrada digitando y e pressionando Enter.
Key expires at ...
Is this correct? (y/N) y
Agora, você precisa fornecer informações de ID de usuário. Essas informações estão associadas à sua chave pública e ajudam outras pessoas a identificá-lo.
Primeiro, insira seu nome real. Para este laboratório, você pode usar LabEx User. Digite LabEx User e pressione Enter.
Real name: LabEx User
Em seguida, insira seu endereço de e-mail. Para este laboratório, você pode usar user@labex.io. Digite user@labex.io e pressione Enter.
Email address: user@labex.io
Opcionalmente, você pode adicionar um comentário. Para este laboratório, você deixará o campo de comentário vazio. Pressione Enter para pular o comentário.
Comment:
Revise as informações que você inseriu. Se estiverem corretas, digite O para Okay e pressione Enter. Se precisar fazer alterações, digite C para Change ou Q para Quit.
You selected this USER-ID:
"LabEx User <user@labex.io>"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
Finalmente, você será solicitado a inserir uma senha (passphrase) para proteger sua chave privada. Este é um passo de segurança crucial. Escolha uma senha forte que você possa lembrar. Você precisará inserir esta senha novamente na próxima etapa.
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 more entropy.
O sistema então gerará o par de chaves. Isso pode levar um momento.
Inserir e confirmar a senha para a nova chave
Na etapa anterior, você iniciou o processo de geração de um novo par de chaves GPG. A etapa final neste processo é inserir e confirmar uma senha (passphrase) para sua chave privada. Essa senha é essencial para proteger sua chave privada contra uso não autorizado.
Você deve agora ver uma caixa de diálogo ou um prompt em seu terminal pedindo que você insira uma senha.
┌─────────┤ Please enter the passphrase to protect your new key ├─────────┐
│ │
│ Passphrase: _________________________________________ │
│ │
│ <OK> <Cancel> │
│ │
└─────────────────────────────────────────────────────────────────────────┘
Insira uma senha forte no campo "Passphrase". Lembre-se desta senha, pois você precisará dela sempre que usar sua chave privada (por exemplo, para assinar). Para este laboratório, você pode usar uma senha simples como mypassphrase123. Digite mypassphrase123 e pressione Enter ou clique em <OK>.
Você será então solicitado a confirmar sua senha, inserindo-a novamente. Isso ajuda a garantir que você digitou a senha corretamente.
┌─────────┤ Please re-enter the passphrase to protect your new key ├─────────┐
│ │
│ Repeat passphrase: _________________________________________ │
│ │
│ <OK> <Cancel> │
│ │
└──────────────────────────────────────────────────────────────────────────┘
Digite a mesma senha (mypassphrase123) novamente no campo "Repeat passphrase" e pressione Enter ou clique em <OK>.
Após confirmar a senha, o GPG terminará de gerar seu par de chaves. Você deve ver uma saída semelhante a esta, indicando que a geração da chave foi concluída:
gpg: key ... marked as ultimately trusted
gpg: revocation certificate stored as '/home/labex/.gnupg/openpgp-revocs.d/....rev'
public and secret key created and signed.
pub rsa3072 2023-10-27 [SC]
...
uid [ultimate] LabEx User <user@labex.io>
sub rsa3072 2023-10-27 [E]
A saída mostra informações sobre sua chave recém-gerada, incluindo o tipo de chave (rsa3072), a data de criação, o ID da chave (...) e o ID do usuário que você forneceu (LabEx User <user@labex.io>). A linha pub se refere à chave pública, e a linha sub se refere à subchave (usada para criptografia).
Você agora gerou com sucesso um par de chaves GPG e protegeu sua chave privada com uma senha.
Verificar o arquivo de chave pública gerado
Nas etapas anteriores, você gerou com sucesso um par de chaves GPG. Agora, vamos verificar se a chave pública foi gerada corretamente e está disponível. A chave pública é o que você compartilhará com outras pessoas para que elas possam verificar suas assinaturas ou criptografar mensagens para você.
Para listar as chaves públicas em seu keyring, use o comando gpg --list-keys. Como você especificou "LabEx User" como o nome durante a geração da chave, você pode filtrar a saída para mostrar apenas sua chave.
gpg --list-keys "LabEx User"
Você deve ver uma saída semelhante a esta, confirmando a presença de sua chave pública:
pub rsa3072 2023-10-27 [SC]
...
uid [ultimate] LabEx User <user@labex.io>
sub rsa3072 2023-10-27 [E]
Esta saída mostra os detalhes de sua chave pública, incluindo o tipo de chave (pub), o algoritmo (rsa3072), a data de criação (2023-10-27), as capacidades ([SC] para Assinar e Certificar), o ID da chave (...), o ID do usuário (LabEx User <user@labex.io>) e informações sobre a subchave de criptografia (sub).
Para exportar sua chave pública para um arquivo, você pode usar o comando gpg --output <filename> --armor --export <user ID>. A opção --armor gera a chave em formato ASCII armored, que é um formato de texto legível por humanos. Vamos exportar a chave pública para "LabEx User" para um arquivo chamado labex_user_public.key em seu diretório atual (~/project).
gpg --output labex_user_public.key --armor --export "LabEx User"
Este comando criará um arquivo chamado labex_user_public.key em seu diretório ~/project contendo sua chave pública.
Você pode visualizar o conteúdo deste arquivo usando o comando cat:
cat labex_user_public.key
A saída mostrará o bloco de chave pública ASCII armored, começando com -----BEGIN PGP PUBLIC KEY BLOCK----- e terminando com -----END PGP PUBLIC KEY BLOCK-----.
-----BEGIN PGP PUBLIC KEY BLOCK-----
... (your public key content) ...
-----END PGP PUBLIC KEY BLOCK-----
Isso confirma que sua chave pública foi exportada com sucesso para um arquivo. Agora você pode compartilhar este arquivo com outras pessoas que precisam verificar suas assinaturas ou criptografar dados para você.
Gerar um par de chaves em um diretório especificado
Nas etapas anteriores, você gerou um par de chaves GPG que foi armazenado no diretório home padrão do GPG (~/.gnupg). Às vezes, você pode querer gerar chaves e armazená-las em um local diferente, talvez para projetos específicos ou para mantê-las separadas de seu keyring principal.
Nesta etapa, você aprenderá como gerar um par de chaves GPG e especificar um diretório diferente para armazenar os arquivos de chave.
Primeiro, vamos criar um novo diretório onde armazenaremos o novo par de chaves. Criaremos um diretório chamado mykeys dentro do seu diretório ~/project.
mkdir ~/project/mykeys
Agora, para gerar um par de chaves e armazená-lo no diretório ~/project/mykeys, você precisa usar a opção --homedir com o comando gpg. Essa opção informa ao GPG para usar o diretório especificado como seu diretório home, em vez do padrão.
Use o seguinte comando para iniciar o processo de geração de chaves, especificando o diretório ~/project/mykeys:
gpg --homedir ~/project/mykeys --full-generate-key
Você será guiado pelo mesmo processo de geração de chaves que na Etapa 1 e na Etapa 2.
- Select the kind of key: Escolha o padrão
RSA and RSApressionandoEnter. - What keysize do you want? Escolha o padrão
3072pressionandoEnter. - Key is valid for? Insira
1ypara um ano e pressioneEnter. - Is this correct? Digite
ye pressioneEnter. - Real name: Insira
Project Usere pressioneEnter. - Email address: Insira
projectuser@labex.ioe pressioneEnter. - Comment: Deixe em branco pressionando
Enter. - Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? Digite
Oe pressioneEnter. - Enter passphrase: Insira uma senha (por exemplo,
projectpassphrase456) e pressioneEnter. - Repeat passphrase: Insira a mesma senha (
projectpassphrase456) novamente e pressioneEnter.
Após concluir estas etapas, o GPG gerará o par de chaves e armazenará os arquivos necessários dentro do diretório ~/project/mykeys.
Você pode verificar se a chave foi gerada no diretório especificado listando as chaves nesse homedir:
gpg --homedir ~/project/mykeys --list-keys "Project User"
Você deve ver uma saída semelhante a esta, mostrando a chave que você acabou de gerar:
gpg: directory '/home/labex/project/mykeys' created
gpg: keybox '/home/labex/project/mykeys/pubring.kbx' created
pub rsa3072 2023-10-27 [SC]
...
uid [ultimate] Project User <projectuser@labex.io>
sub rsa3072 2023-10-27 [E]
Observe as linhas que indicam que o diretório GPG e o keybox foram criados dentro de ~/project/mykeys. Isso confirma que a chave foi gerada no local especificado.
Resumo
Neste laboratório, você aprendeu como gerar um novo par de chaves de assinatura usando o comando gpg. Este processo envolve a seleção do tipo de chave (com padrão para RSA e RSA), a especificação do tamanho da chave (com padrão para 3072 bits) e a definição do período de validade da chave (definido para um ano neste laboratório). Você também aprendeu como inserir e confirmar uma senha para a nova chave para proteger a chave privada. Por fim, você verificou o arquivo de chave pública gerado e explorou a geração de um par de chaves em um diretório especificado, compreendendo os conceitos fundamentais de chaves privadas e públicas para comunicação segura e distribuição de software.



