# Utilizando GPG
O GPG (GNU Privacy Guard) é uma implementação livre e de código aberto do protocolo OpenPGP, que é utilizado para criptografar e assinar digitalmente informações como e-mails, documentos e arquivos. Ele permite que os usuários protejam a privacidade e a segurança de suas comunicações e dados, garantindo que somente as pessoas autorizadas possam acessá-los.
### Gerando uma chave
Para gerar uma chave GPG, siga os seguintes passos:
1. Abra o terminal no Linux.
1. Digite o comando gpg --full-generate-key e pressione Enter.
1. Escolha o tipo de chave que você deseja gerar. Geralmente, é recomendado usar a opção padrão (RSA e RSA).
1. Escolha o tamanho da chave que você deseja gerar. Quanto maior o tamanho, mais segura será a chave, mas também levará mais tempo para criptografar e descriptografar informações. O tamanho padrão é de 2048 bits.
1. Digite a validade da chave. Você pode deixar a validade em branco para manter a chave válida indefinidamente.
1. Digite seu nome real e endereço de e-mail. Isso é usado para identificar sua chave.
1. Digite uma senha forte e segura para proteger sua chave privada. A senha deve ter pelo menos 8 caracteres e incluir letras maiúsculas, minúsculas, números e caracteres especiais.
1. Aguarde enquanto a chave é gerada. Isso pode levar alguns minutos, dependendo do tamanho da chave selecionada.
1. Verifique se a chave foi gerada corretamente. Digite o comando gpg --list-key para ver uma lista de todas as chaves GPG disponíveis no seu sistema.


### Exportando chave pública:
```
┌──(root㉿kali)-[/home/kali]
└─# gpg --list-key
/root/.gnupg/pubring.kbx
------------------------
pub rsa1024 2023-04-07 [SC] [expires: 2024-04-06]
D329454665CE944182EA2915F51C3795DA2C0837
uid [ultimate] Silvio <silvio@silvio.br>
sub rsa1024 2023-04-07 [E] [expires: 2024-04-06]
┌──(root㉿kali)-[/home/kali]
└─# gpg --export -a silvio@silvio.br
```

### Exportando a chave privada:
Exportar a chave privada é uma ação delicada que deve ser realizada com cuidado, pois a chave privada é a chave que permite acessar as informações criptografadas. Por isso, é importante proteger a chave privada com uma senha forte e não compartilhá-la com outras pessoas. Exportar a chave privada pode ser necessário em casos específicos, como para fazer backup ou transferir a chave para outro dispositivo.
```
┌──(root㉿kali)-[/home/kali]
└─# gpg --list-secret-key
┌──(root㉿kali)-[/home/kali]
└─# gpg --export-secret-key -a "silvio@silvio.br"
```
### Como criptografar um arquivo com GPG:
```
┌──(kali㉿kali)-[~]
└─$ gpg -c -a arq.txt
┌──(kali㉿kali)-[~]
└─$ cat arq.txt.asc
-----BEGIN PGP MESSAGE-----
jA0ECQMCgua674W/qEr/0kIBckvPWxyl90RSJKBTD38VjSx5raoKewfwGuUioRvj
lRTMrNHoqK4Hr1/gMHNoNsyzV8vGAEVPKLxkO656VN65ue4=
=CkhG
-----END PGP MESSAGE-----
```
### Para descriptografar:
```
┌──(kali㉿kali)-[~]
└─$ gpg arq.txt.asc
gpg: WARNING: no command supplied. Trying to guess what you mean ...
gpg: AES256.CFB encrypted data
gpg: encrypted with 1 passphrase
┌──(kali㉿kali)-[~]
└─$ cat arq.txt
teste
```
### Como importar uma chave:
```
┌──(kali㉿kali)-[~]
└─$ gpg --import chave
```
### Como excluir uma chave:
```
┌──(root㉿kali)-[/home/kali]
└─# gpg --delete-secret-key D329454665CE944182EA2915F51C3795DA2C0837
gpg (GnuPG) 2.2.40; Copyright (C) 2022 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
sec rsa1024/F51C3795DA2C0837 2023-04-07 Silvio <silvio@silvio.br>
Delete this key from the keyring? (y/N) y
This is a secret key! - really delete? (y/N) y
┌──(root㉿professor)-[/home/professor]
└─# gpg --delete-key silvio@silvio.br
gpg (GnuPG) 2.2.40; Copyright (C) 2022 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
pub rsa3072/30FE29C8D4DF8643 2023-04-07 silvio <silvio@silvio.br>
Delete this key from the keyring? (y/N) y
```