Tutorialzinho de gnupg
1. Criando chaves
Particularmente, eu prefiro chaves ECC, são um pouco menores e tão seguras quanto chaves RSA.
gpg --homedir /tmp/gpgt --full-gen-key --expert
gpg (GnuPG) 2.2.29; 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.
gpg: keybox '/tmp/gpgt/pubring.kbx' created
Por favor selecione o tipo de chave desejado:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (apenas assinatura)
(4) RSA (apenas assinatura)
(7) DSA (set your own capabilities)
(8) RSA (set your own capabilities)
(9) ECC and ECC
(10) ECC (sign only)
(11) ECC (set your own capabilities)
(13) Existing key
(14) Existing key from card
Opção? 9
Please select which elliptic curve you want:
(1) Curve 25519
(3) NIST P-256
(4) NIST P-384
(5) NIST P-521
(6) Brainpool P-256
(7) Brainpool P-384
(8) Brainpool P-512
(9) secp256k1
Opção? 9
Por favor especifique por quanto tempo a chave deve ser válida.
0 = chave não expira
<n> = chave expira em n dias
<n>w = chave expira em n semanas
<n>m = chave expira em n meses
<n>y = chave expira em n anos
A chave é valida por? (0)
Key does not expire at all
Is this correct? (y/N) y
GnuPG needs to construct a user ID to identify your key.
Nome completo: Nome Completo
Endereço de correio eletrónico: asd@asd.com
Comentário: a
Você selecionou este identificador de utilizador:
"Nome Completo (a) <asd@asd.com>"
Mudar (N)ome, (C)omentário, (E)ndereço ou (O)k/(S)air? O
Precisamos gerar muitos bytes aleatórios. É uma boa ideia realizar outra
actividade (escrever no teclado, mover o rato, usar os discos) durante a
geração dos números primos; isso dá ao gerador de números aleatórios
uma hipótese maior de ganhar entropia suficiente.
-- << aqui vai ser pedido para criar uma senha >> --
Precisamos gerar muitos bytes aleatórios. É uma boa ideia realizar outra
actividade (escrever no teclado, mover o rato, usar os discos) durante a
geração dos números primos; isso dá ao gerador de números aleatórios
uma hipótese maior de ganhar entropia suficiente.
gpg: /tmp/gpgt/trustdb.gpg: base de dados de confiança criada
gpg: key 0D60AB8F8130DE82 marked as ultimately trusted
gpg: directory '/tmp/gpgt/openpgp-revocs.d' created
gpg: revocation certificate stored as '/tmp/gpgt/openpgp-revocs.d/5DE5506AC9CD60091CF55F610D
60AB8F8130DE82.rev'
chaves pública e privada criadas e assinadas.
pub secp256k1 2021-07-27 [SC]
5DE5506AC9CD60091CF55F610D60AB8F8130DE82
uid Nome Completo (a) <asd@asd.com>
sub secp256k1 2021-07-27 [E]
Com isso foi criada a chave principal e uma subchave. A chave principal com a capacidade de certificar e assinar ([SC]), e a subchave para encriptar ([E]) mensagens. É interessante criar uma terceira chave para assinatura (e talvez uma quarta para autenticação), evitando o uso da chave primária. Primeiro peguemos a fingerprint da chave principal:
gpg --homedir /tmp/gpgt --list-secret-keys --with-subkey-fingerprint
/tmp/gpgt/pubring.kbx
---------------------
sec secp256k1 2021-07-27 [SC]
5DE5506AC9CD60091CF55F610D60AB8F8130DE82
uid [ultimate] Nome Completo (a) <asd@asd.com>
ssb secp256k1 2021-07-27 [E]
2C0651E85F3BDBDD1EE9D5E7480A0CD97B589ED8
Agora editamos ela, adicionando uma subchave rsa4096 válida por 1 ano:
gpg --homedir /tmp/gpgt --edit-key 5DE5506AC9CD60091CF55F610D60AB8F8130DE82
gpg (GnuPG) 2.2.29; 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.
Chave secreta disponível.
sec secp256k1/0D60AB8F8130DE82
created: 2021-07-27 expires: never usage: SC
trust: ultimate validity: ultimate
ssb secp256k1/480A0CD97B589ED8
created: 2021-07-27 expires: never usage: E
[ultimate] (1). Nome Completo (a) <asd@asd.com>
gpg> addkey
Por favor selecione o tipo de chave desejado:
(3) DSA (apenas assinatura)
(4) RSA (apenas assinatura)
(5) Elgamal (encrypt only)
(6) RSA (apenas cifragem)
(14) Existing key from card
Opção? 4
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072) 4096
O tamanho de chave pedido é 4096 bits
Por favor especifique por quanto tempo a chave deve ser válida.
o 0 = chave não expira
<n> = chave expira em n dias
<n>w = chave expira em n semanas
<n>m = chave expira em n meses
<n>y = chave expira em n anos
A chave é valida por? (0) 1y
Key expires at qua 27 jul 2022 14:51:12 -03
Is this correct? (y/N) y
Really create? (y/N) y
Precisamos gerar muitos bytes aleatórios. É uma boa ideia realizar outra
actividade (escrever no teclado, mover o rato, usar os discos) durante a
geração dos números primos; isso dá ao gerador de números aleatórios
uma hipótese maior de ganhar entropia suficiente.
sec secp256k1/0D60AB8F8130DE82
created: 2021-07-27 expires: never usage: SC
trust: ultimate validity: ultimate
ssb secp256k1/480A0CD97B589ED8
created: 2021-07-27 expires: never usage: E
ssb rsa4096/D1AA398DB735FA7E
created: 2021-07-27 expires: 2022-07-27 usage: S
[ultimate] (1). Nome Completo (a) <asd@asd.com>
gpg> save
Isso é suficiente para maioria dos usos. Links uteis: