Assinatura de chaves
Introdução
O objetivo desta página é explicar como criar e assinar uma chave OpenPGP.
Em seguida é preciso se conectar com sua rede de confiança (web of trust), veja a página de coordenação de assinaturas de chaves.
Como fazer
Tutoriais explicando como usar o GnuPG:
Documentação GPG oficial (em inglês)
GnuPG para uso diário (um mini how-to...) (em inglês)
Se quiser que sua chave OpenPGP seja assinada ao menos uma vez (mas o ideal é mais que uma) por um(a) Desenvolvedor(a) Debian, siga os passos abaixo.
Passo 1: cria um par de chaves RSA
gpg --full-gen-key
Veja também criando um par de chaves (em inglês).
Note que devido a vulnerabilidades encontradas no algoritmo de hash SHA1, o Debian requer chaves RSA mais fortes que tenham ao menos 4096 bits e preferencialmente SHA2, embora Ed25519 seja até melhor.
Veja também Boas práticas OpenPGP, documentação sobre subchaves (em inglês) e migração a partir de uma chave SHA-1 (em inglês).
Passo 2: Gere um certificado de revogação
Também gere um certificado de revogação se ainda não o tem. Durante todo o resto da página, assume-se que sua fingerprint será definida pela variável ${minhaFingerPrint}
gpg --gen-revoke ${minhaFingerPrint} > ~/.gnupg/revocation-${minhaFingerPrint}.crt
Passo 3: Disponibilize publicamente sua chave pública
gpg --send-key ${minhaFingerPrint}
Alguns servidores públicos de chaves:
https://keyring.debian.org (somente desenvolvedores(as) Debian pode fazer o upload ou enviar atualizações de chaves para este servidor)
https://keyserver.ubuntu.com (recomendado)
https://keys.openpgp.org/ (usado pelo Thunderbird)
Passo 4: Imprima sua chave
A marca impressa de sua impressão digital (fingerprint) contém as seguintes informações:
- Seu primeiro nome
- Seu sobrenome
- Seu endereço de e-mail (aqueles usados com sua chave)
- O método de criptografia e o ID da chave (por exemplo, 4096R/1A2B3C4D5E6F7G8H)
- A própria impressão digital
Para descobrir sua fingerprint, você pode usar essa função:
gpg -v --fingerprint ${minhaFingerPrint}
Normalmente, você faz várias impressões em uma folha de papel, chamada de _keysheet_ (folha de chaves). Cada impressão pode, por exemplo, ser do tamanho de um cartão de visita.
Use um site web para gerar um PDF
Existem vários sites que você pode usar para gerar PDFs prontos para imprimir da sua chave; por exemplo http://openpgp.quelltextlich.at/slip.html ou http://keysheet.net.
Use gpg-key2ps para gerar um PDF
Você também pode usar o gpg-key2ps, que é parte do pacote signing-party, para criar sua _keysheet_:
gpg-key2ps -p a4 ${minhaFingerPrint} | gs -sDEVICE=pdfwrite -sOutputFile=out.pdf
Alternativamente, você pode imprimir em uma coluna para evitar problemas de impressão (para chaves muito extensas):
gpg-key2ps -1 -p a4 ${minhaFingerPrint} | gs -sDEVICE=pdfwrite -sOutputFile=out.pdf
Se você for a uma festa de assinatura de chaves, terá que enviar essas informações com antecedência e, em seguida, uma lista será impressa para cada participante.
Exiba sua chave na sua tela em vez de imprimi-la
Alternativamente, você pode exibir suas fingerprints na tela de seu laptop, dessa forma:
LANG=C gpg --list-secret-keys --fingerprint --keyid-format long | grep -Po 'fingerprint = \K.*' | sed 's/$/\n/; s/ /\n/' | /usr/games/sm -i -
Passo 5: Distribua a impressão digital de sua chave
As pessoas que assinarão sua chave precisarão ver alguma forma de identificação emitida pelo governo (passaporte ou similar).
Forneça uma impressão ao menos para um(a) desenvolvedor(a) Debian.
Leia a página oficial de assinatrua de chaves do Debian.
Um(a) participante CAcert precisará ver duas identificações.
Passo 6: Assine digitalmente sua chave
O(A) desenvolvedor(a) Debian fará, com sua chave ${ddSignersFingerprint} key, o seguinte:
- obterá sua chave do servidor
gpg --recv-keys ${minhaFingerPrint}
- verificará se a informação está correta (a impressão digital - fingerprint)
gpg --fingerprint ${minhaFingerPrint}
- assinará
gpg --sign-key ${minhaFingerPrint}
- enviará de volta para o(a) dono(a) da chave como um e-mail criptografado (não envie diretamente ao servidor). O envio criptografado é preferível já que é possível verificar se a pessoa pode descriptografar a mensagem recebida.
gpg --armor --export ${minhaFingerPrint} | gpg --encrypt -r ${minhaFingerPrint} --armor --output ${minhaFingerPrint}-signedBy-${ddSignersFingerprint}.asc
Alternativamente, a ferramenta caff do pacote signing-party automatiza todo o processo:
caff ${minhaFingerPrint}
Passo 7: Envie sua chave assinada ao servidor
Algum tempo depois de ter participado da assinatura de chaves, você receberá sua chave assinada através de um anexo de e-mail. Importe as assinaturas:
gpg -d ${minhaFingerPrint}-signedBy-${ddSignersFingerprint}.asc | gpg --import
A seguir, você terá que enviar a chave atualizada para o servidor:
gpg --send-key ${minhaFingerprint}
Além do Debian
Quem tiver interesse em expandir a rede de confiança (web of trust) para além do Debian deve visitar:
