Chaves GnuPG

GnuPG é uma implementação livre do padrão OpenPGP definido pela RFC4880

www.gnupg.org

OpenPGP é um protocolo não-proprietário para comunicação encriptada por email usando chaves públicas criptográficas.

O protocolo OpenPGP define formatos padrão para mensagens encriptadas, assinaturas e certificados para troca de chaves públicas.

www.openpgp.org

fonte: http://www.articpost.com/openpgp-key-email-security

GnuPG criptografa mensagens utilizando a criptografia de chaves assimétricas.

Criptografia assimétrica é uma classe de protocolos de criptografia baseados em algoritmos que requerem duas chaves, uma delas sendo secreta (ou privada) e a outra delas sendo pública.

  • Cada usuário gera um par de chaves correspondentes: uma pública e uma secreta.
  • A chave pública é distribuída livremente.
  • A chave secreta criptografa, descriptografa e assina dados.

PGP keys

!=

SSH keys

fonte: https://www.goanywhere.com/managed-file-transfer/encryption/open-pgp

Quero, #comofaz

apt install gnupg

Criando chaves

gpg --gen-key

  • Crie sua chave com 2048 bits
  • Cria uma senha (passphrase) com as seguintes características:
    • deve ser longa
    • deve ter caracteres especiais
    • não deve ser um nome conhecido
    • deve ser muito difícil de adivinhar
  • Não inclua “Comment” em seu User ID

Exportando chaves

gpg -a --export [ID] > [FILENAME]

Importando chaves

gpg --import [FILENAME]

Servidores de chaves

Os grandes servidores sincronizam chaves entre si, exemplos de servidores:

Publicando chave pública

gpg --send-keys [ID]

Importando chaves

gpg --recv-keys [ID]

gpg --search-keys [NAME]

fonte: https://cran.r-project.org/web/packages/gpg/vignettes/intro.html
slides sobre web of trust: http://slides.com/mricon/pgp-web-of-trust

You should only sign a key as being authentic when you are ABSOLUTELY SURE that the key is really authentic!!!. So if you are positive you got the key yourself (like on a key signing party) or you got the key through other means and checked it (for instance by phone) using the fingerprint-mechanism. You should never sign a key based on any assumption.

fonte: https://www.dewinter.com/gnupg_howto/english/GPGMiniHowto-3.html

Assinando chaves

Após importar uma chave para o chaveiro local é possível determinar o grau de confiabilidade que temos no dono dela.

gpg --edit-key [ID]

Exemplo

Você pode dizer que confia plenamente nas chaves que Ana assina. Assim, quando você receber a chave de Beto, que foi assinada por Ana, terá motivos para confiar nessa chave, mesmo não conhecendo Beto.

fonte: http://eriberto.pro.br/wiki/index.php?title=Usando_o_GnuPG

Níveis de confiabilidade

  • Unknown: Não se sabe como a pessoa em questão procede ao assinar uma chave. Não se deve confiar nas assinaturas dessa pessoa em chaves alheias.

  • None: Esta pessoa costuma assinar chaves sem certificar-se de que elas realmente são da pessoa que diz possuí-las. Não se deve confiar nas assinaturas dessa pessoa em chaves alheias.

  • Marginal: Esta pessoa assina chaves de forma correta (faz as verificações físicas necessárias). É possível confiar nessa pessoa, caso seja extremamente necessário.

  • Full: O usuário conhece muito bem sistemas criptográficos, é extremamente confiável e responsável. É possível pensar em aceitar algo de outras chaves que tenham sido assinadas por essa pessoa.

mão na massa

Demonstração prática usando gnupg via linha de comando

rtfm (leia o manual)

man gpg

gnupg.vim: Plugin for transparent editing of gpg encrypted files

arquivos com extensão “.gpg”, “.pgp” ou “.asc” serão automaticamente reconhecidos

fonte: https://www.vim.org/scripts/script.php?script_id=3645

Instalação

  1. sudo apt install vim-scripts
  2. sudo apt install vim-addon-manager
  3. vim-addons install gnupg

Festa

key signing party

Antes da festa de assinatura de chaves:

  1. Criar um par de chaves e publicar a chave pública
  2. Documento com nome e foto, idealmente documento oficial
  3. Impressão com nome completo, email e fingerprint, ou cartão de visita

The Keysigning Party HOWTO: http://www.cryptnet.net/fdp/crypto/keysigning_party/en/keysigning_party.html

Durante a festa de assinatura de chaves:

  • Verificar as informações pessoais, nome, documentos, fingerprint, etc
  • Garantir que a pessoa é realmente dona da chave

os servidores de chaves sabem lidar com varios envios da mesma chave somando as assinaturas

Após a festa de assinatura de chaves:

  • De posse da impressão contendo nome, email e fingerprint importar a chave
  • Assinar a chave pública
  • Enviar a chave pública assinada de cada pessoa para o servidor de chaves

Palestra:
Criptografia e assinatura digital com GnuPG

Boa referência sobre criptografia simétrica, criptografia assimétrica, assinatura digital, autoridade certificadora e exemplos práticos com o GnuPG.

https://www.youtube.com/watch?v=JYJRbyH0YI8

Palestra:
Assinatura de chaves na MiniDebConf

Exemplo de festa de assinatura de chaves realizada pela comunidade Debian na MiniDebConf Curitiba 2018.

https://www.youtube.com/watch?v=d4Zkg3o4jj0

Obrigado!

joenio@joenio.me


Esta apresentação está disponível em:

http://joenio.me/gnupg

(código-fonte: http://github.com/joenio/joenio.me)

Licença Creative Commons

Histórico de apresentações

Onde e quando esta apresentação foi realizada

  • 23 Julho 2018, UnG Gama - FGA, MiniLappisConf
  • 08 Setembro 2018, UnG Gama - FGA, MicroDebConf Brasília 2018