Tecnologia

Como gerar chaves GPG

Por: Leonardo Stati, setembro 29, 2020

 

Hoje em dia a segurança da informação é extremamente importante, por conta disso você pode achar que está seguro ao utilizar as plataformas de email e enviar informações importantes confiando totalmente no sistema. Mas calma, calma, calma, nem tudo são mil maravilhas, óbvio que eles são seguros, porém se você quer garantir de fato total integridade das informações que está enviando alguém é legal você saber como criptografar e descriptografar uma mensagem utilizando o GPG. Criptografia é um assunto muito abrangente, então nesse artigo será mostrado como gerar as keys, gerar um arquivo criptografado, compartilhar a chave pública e descriptografar.

Para gerar uma nova chave no sistema, vamos utilizar o GPG.
Execute o comando:
gpg gpg --full-generate-key

Após executar o comando, será exibido as opções:
gpg (GnuPG) 2.2.20; Copyright (C) 2020 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

Vamos selecionar a opção 1. Logo em seguida, ele vai nos perguntar qual o tamanho da chave que queremos:
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? 2048

Você pode colocar um valor entre 1024 e 4096, aqui vamos utilizar apenas 2048.
Depois de especificar o tamanho da chave, é preciso colocar uma data de validade que nossa chave terá. A melhor opção é não deixar ela expirar, então selecionamos a opção 0
Requested keysize is 2048 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) 0
Key does not expire at all
Is this correct? (y/N) y

Agora chega na parte para identificação da chave: Nome, Email e Comentário. Após inserir é só confirmar as informações:
GnuPG needs to construct a user ID to identify your key.
Real name: Leonardo Nobre
Email address: myuser@mydomain.com
Comment: Chave GPG
You selected this USER-ID:
"Leonardo Nobre (Chave GPG) <myuser@mydomain.com>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o

Após confirmar os dados, será exigido a senha dessa chave privada. Então, essa senha é importante sempre que vamos precisar utilizar a chave privada. Ao cadastrar a senha, a chave será gerada.
Para verificar se a chave foi realmente criada, digite o comando:
gpg --list-secret-keys

Ele vai exibir a sua chave e seus dados.
Bom, agora que temos nossa chave, como criar um arquivo criptografado utilizando a chave? Primeiro passo é criar um arquivo.txt. Mais uma vez para verificar se foi criado o arquivo, utilize o comando ls e o arquivo será exibido.
$ ls
archive.txt
test.txt

No meu caso coloquei o nome do arquivo como test.txt
Agora para criptografar o arquivo vamos executar o comando utilizando os dados cadastrados e o nome do arquivo:
gpg -r leonardo.stati@dextra-sw.com -e test.txt

Vamos executar novamente o comando ls e agora terá um arquivo .gpg, que é o arquivo criptografado:
$ ls
archive.txt
test.txt
test.txt.gpg

Se você executar o xxd, é possível ver como a mensagem escrita anteriormente está:
xxd test.txt.gpg
00000000: 8501 0c03 1611 cf9e 48ab 8e6f 0107 ff7d ........H..o...}
00000010: f354 7053 2f91 6561 4d47 fe41 0afe c4ed .TpS/.eaMG.A....
00000020: d5b4 4bc8 7514 52c9 eb12 f521 2b95 6c55 ..K.u.R....!+.lU
00000030: 6bdc 9011 a8b9 18dd aadc 217a 5420 c622 k.........!zT ."
00000040: c2b3 6adb a911 1234 1ce6 f0be c47e 2f46 ..j....4.....~/F
00000050: c8ce d746 5d4b 2d34 becc 69c9 d5d9 5743 ...F]K-4..i...WC
00000060: 2600 6415 da0b bae2 f260 357c eb28 52f5 &.d......`5|.(R.
00000070: 2101 0dea 02f5 0c08 aa96 2162 5be2 6ec1 !.........!b[.n.
00000080: 05cc 217b db7f d64a d28a 1079 5740 2990 ..!{...J...yW@).
00000090: 1acd 088d 52bd bbc7 b82f c927 b559 9910 ....R..../.'.Y..
000000a0: 3053 315a d3bf 0961 e920 f783 2bef c518 0S1Z...a. ..+...
000000b0: 91b7 36aa c901 b3ec 0892 42ba 190d dc6f ..6.......B....o
000000c0: eb4f 8ddc f999 c00d ff95 1836 fbe1 c980 .O.........6....
000000d0: 3fa7 c9f1 a28a 138b 8c56 085d 64c4 ea72 ?........V.]d..r
000000e0: 032a ac5b a5c7 5004 7d22 6ac5 8033 7473 .*.[..P.}"j..3ts
000000f0: fd53 2ee4 8a66 1a0c e4a4 7d87 e516 4141 .S...f....}...AA
00000100: d4b2 befd ecdc 3be5 f0f5 9066 590d 5bd2 ......;....fY.[.
00000110: 4a01 73f1 16c7 17a2 5254 fa5b ea1a c998 J.s.....RT.[....
00000120: 21ca 7d7d e3ae 724a 73c2 4773 ebfb 21cf !.}}..rJs.Gs..!.
00000130: 29cd 0e14 5568 8886 0212 8385 00f4 187d )...Uh.........}
00000140: 7b7c 1c73 2358 3b30 9311 23c2 2f19 8f7a {|.s#X;0..#./..z
00000150: d8f0 fcce ecdf c77f f12b f9 .........+.

Repare que encriptar um arquivo dessa maneira não exige nenhuma senha pois não utiliza a chave privada. Tudo acontece apenas com a chave pública. E agora, apenas a chave privada por decriptar esse arquivo.
Então, esse arquivo se trata daquele que você vai receber das outras pessoas que querem encriptar de forma que apenas você consiga ler.
Como nós (e só nós) temos a chave privada, para descriptografar o arquivo é simples, é preciso executar o comando:
gpg -d test.txt.gpg > msgm.txt

E ele vai pedir pedir a senha da chave privada que foi cadastrada no início do processo.
Ele vai gerar o arquivo msg.txt descriptografado e para visualizar execute o comando ls e depois o cat.
Vimos que para que as outras pessoas encripta arquivos para você é necessário ter sua chave pública.
gpg --list-keys
Sabendo seu ID, vamos executar o comando para gerar a chave pública:
gpg --armor --export 1611CF9E48AB8E6F -o leonardo.stati-gpg.pubkey > leonardo.stati-gpg.pubkey

Se executarmos o comando cat para abrir o arquivo criado anteriormente, será exibido a chave pública que é enviada para a pessoa.

Existem várias maneiras de você enviar essa chave pública para as outras pessoas, como email, chat, etc. Mas lembre-se, a sua chave privada não deve ser compartilhada com ninguém. Uma forma de enviar a chave pública é pelo https://keyserver.ubuntu.com/, executando o comando:
gpg --send-key seuid
Quando você recebe a chave pública de alguém, você precisa importá-la na ferramenta:
gpg --import leonardo.stati-gpg.pubkey
Para saber todas as chaves públicas que estão no sistema, execute o comando:
gpg --list-keys
Com a chave no sistema, é só realizar o processo de criptografar ou decriptar a mensagem.

  • Receba nosso conteúdo em primeira mão.