~/Como gerenciar suas chaves PGP

Buenas povo dessa realidade virtual, esse é o segundo post da série "criptografando mensagens com gpg", nesse artigo darei os passos de como criar e gerenciar suas chaves PGP e por fim configurar seu cliente de email Neomutt.

Confira a lista de todos os posts da série:

O PGP (Pretty Good Privacy) é um método comprovado de proteção da comunicação por e-mail com criptografia de ponta a ponta (que impede que e-mails sejam lidos por terceiros, incluindo seu provedor de e-mail). Historicamente, o PGP era difícil de usar, e impossível para a maioria dos usuários configurar e usar regularmente para suas próprias comunicações por e-mail, entretanto hoje a maioria de ferramentas de envio de email já ofertam suporte nativo, este post resume rapidamente como usar o PGP.

Presumo aqui que você estará usando GPG na linha de comando Linux. Se você estiver em outro sistema operacional então seria uma boa oportunidade para utilizar um SO livre, não proprietário e mantido por uma grande comunidade vibrante.

PGP funciona gerando um par de chaves: uma chave pública e uma chave privada. A chave pública pode ser distribuída a qualquer pessoa que queira lhe enviar uma mensagem e é usada para criptografar uma mensagem que só pode ser descriptografada por você. A chave privada é mantida em segredo sendo usada para decifrar, logo nunca compartilhe sua chave privada.

Para iniciarmos, teste no seu terminar o help do GPG

$ gpg --help

Criando suas chaves

Para criar um par de chaves é bem simples basta rodar o comando gpg --full-generate-key e logo seguir as instruções. Você pode aceitar o padrão para a maioria das configurações. Um ponto de atenção é a data de expiração, uma sugestão é fixar uma data de validade de 2 anos, dessa forma quando ela expirar seus contatos saberão que não poderá mais usa-la.

$ gpg --full-generate-key

gpg (GnuPG) 2.2.19; Copyright (C) 2019 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) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
         0 = key does not expire
        = key expires in n days
      w = key expires in n weeks
      m = key expires in n months
      y = key expires in n years
Key is valid for? (0) 2y
Key expires at qua 15 nov 2023 10:39:37 -03
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: nickname
Email address: nickname@mail.com
Comment:
You selected this USER-ID:
   "nickname "

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
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 B7E2866630FEA649 marked as ultimately trusted
gpg: revocation certificate stored as '/home/f0rmig4/.gnupg/openpgp-revocs.d/947D213ED162C532704CC809B7E2866630FEA649.rev'
public and secret key created and signed.

pub   rsa4096 2021-11-15 [SC] [expires: 2023-11-15]
      947D213ED162C532704CC809B7E2866630FEA649
uid                      nickname 
sub   rsa4096 2021-11-15 [E] [expires: 2023-11-15]

Gerando sua chave publica "ascii armored"

Normalmente as pessoas compartilham sua chave na forma chamada "ascii armored", como fiz no meu blog. Para gerar a sua ascii usaremos o parâmetro --export --armor e seu e-mail usado no passo anterior.

$ gpg --export --armor nickname@mail.com > nickexample.gpg.pub
$ ls -la
$ cat nickexample.gpg.pub

Pronto, você já pode compartilhar esse arquivo com seus contatos.

Editando a data de expiração da sua chave

Para listar todas as chaves GPG que consta na sua maquina podemos usar o comando:

$ gpg --list-keys
/home/f0rmig4/.gnupg/pubring.kbx
--------------------------------

pub   rsa4096 2021-11-15 [SC] [expires: 2023-11-15]
      947D213ED162C532704CC809B7E2866630FEA649
uid           [ultimate] nickname 
sub   rsa4096 2021-11-15 [E] [expires: 2023-11-15]

Podemos analisar que a nossa chave de exemplo será expirada em 2023-11-15, agora vamos editar:

$ gpg --edit-key nickname@mail.com

gpg (GnuPG) 2.2.19; Copyright (C) 2019 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.

Secret key is available.

sec  rsa4096/B7E2866630FEA649
   created: 2021-11-15  expires: 2023-11-15  usage: SC  
   trust: ultimate      validity: ultimate
ssb  rsa4096/EB7603C0DC505FC3
   created: 2021-11-15  expires: 2023-11-15  usage: E   
[ultimate] (1). nickname 

Abrirá o comand line gpg, podemos listas as configurações da nossa chave:

gpg> list

sec  rsa4096/B7E2866630FEA649
   created: 2021-11-15  expires: 2023-11-15  usage: SC  
   trust: ultimate      validity: ultimate
ssb  rsa4096/EB7603C0DC505FC3
   created: 2021-11-15  expires: 2023-11-15  usage: E   
[ultimate] (1). nickname 

Para alterar a data de expiração basta rodar o comando abaixo e informar qual sera a nova data de expiração.

gpg> expire
Changing expiration time for the primary key.
Please specify how long the key should be valid.
         0 = key does not expire
        = key expires in n days
      w = key expires in n weeks
      m = key expires in n months
      y = key expires in n years
Key is valid for? (0) 3y
Key expires at qui 14 nov 2024 11:06:12 -03
Is this correct? (y/N) y

sec  rsa4096/B7E2866630FEA649
   created: 2021-11-15  expires: 2024-11-14  usage: SC  
   trust: ultimate      validity: ultimate
ssb  rsa4096/EB7603C0DC505FC3
   created: 2021-11-15  expires: 2023-11-15  usage: E   
[ultimate] (1). nickname 

Alterando a senha da sua chave

Digamos que você ainda queira alterar a sua senha, é bem simples:

$ gpg --passwd nickname@mail.com
gpg (GnuPG) 2.2.19; Copyright (C) 2019 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.

Deletando uma chave

$ gpg --delete-secret-keys nickname@mail.com
$ gpg --delete-key nickname@mail.com
$ gpg --list-keys

Integrando o Neomutt

Acabei escolhendo uma forma não tão simples para gerir meu correio eletrônico, um cliente de e-mail baseado em linha de comando, o Neomut. É claro que você não precisa seguir o mesmo caminho, atualmente a maioria dos clientes de e-mail já trabalha com criação e gerenciamento de chaves PGP, sendo possível gerenciar as chaves visualmente.

O NeoMutt tem suporte nativo para o uso da criptografia PGP, precisamos apenas que o NeoMutt use o gpgme, que é a biblioteca padrão do GPG.

Portanto, em meu arquivo neomuttrc eu configurei:

set crypt_use_gpgme=yes

Para assinar seu e-mail por padrão, você pode definir:

set crypt_autosign

Ao ter escrito um e-mail, você pode pressionar "p" para abrir todas as opções de criptografia.

Rede de confiança

Você precisa validar e se assegurar que a chave publica de seu novo contato é dele mesmo ou se é de alguém que tenta se passar por ele. Essa é a segurança adicional, manter e criar uma rede de confiança.

Para verificar manualmente a veracidade da chave, você pode se encontrar em uma videoconferência ou comunicador com o seu contato.

Construir uma teia de confiança é uma prática comum. No entanto, isto exige que as pessoas não assinem chaves sem pensar! Se você gosta da "filosofia GPG", isso lhe dá alguma responsabilidade para mantê-la também.

Você pode assinar uma chave com o comando:

$ gpg --sign-key [hash of the key here].

Para importar uma chave, use o comando:

$ gpg --import [keyfile]

Tente verificar a minha chave!

Quando devo usar?

Então, o que você pode fazer com essa chave? Pode ser aplicado em pelo menos dois casos de uso:

1) Criptografar suas mensagens de e-mail;

2) Criptografar arquivos de mensagem textos.

Se você quiser me escrever um e-mail, você tem que encriptar o e-mail com minha chave pública. Então posso decifrá-lo com minha chave privada. Se você quiser que eu responda a você, você precisa disponibilizar sua chave pública para eu poder efetuar o mesmo.

Nos próximos post vou trazer um passo a passo de como criptografar/descriptografar arquivos de texto com pgp.

Seguimos caminhando e que a força esteja com você.


Published Nov 25, 2021 by f0rmig4