O que é frequentemente chamado de "chave GPG" é mais um certificado . Assim como no X.509, o certificado contém muito mais informações do que apenas a (s) chave (s): um par de chaves 'primário' e vários 'subchaves', juntamente com seus sinalizadores de uso e datas de expiração, além de vários IDs de usuário 'e' IDs de fotos 'junto com suas assinaturas.
Quando você envia seu "par de chaves" para um servidor de chaves, está enviando tudo o que é público (chave, subchaves, identificações de usuário, assinaturas) como um único certificado. A chave 'primária' identifica todo o certificado; seu hash de chave pública é a "impressão digital" que você vê e a ID da chave é baseada nela. Normalmente, a chave primária tem sinalizadores de uso "Assinar" e "Certificar", para assinar dados e outras chaves, respectivamente.
Por padrão, há pelo menos uma subchave "Criptografar" criada para criptografar dados. Você pode ter várias dessas subchaves - por exemplo, com diferentes datas de expiração. Não encontrei nenhuma fonte boa, mas parece que a mais recente subchave válida (após a data de início e não expirada / revogada) será escolhida para criptografia. Quando descriptografar dados, todas as subchaves serão tentadas.
(Você deve ter notado que gpg -k
lista IDs de chave para ambas teclas e subchaves. Quando você precisa forçar uma chave ou subchave específica a ser usada, você pode dar keyid!
- o ID da chave (sub) seguido por um ponto de exclamação - para ignorar todos os cálculos sobre qual subchave é melhor.)
Opcionalmente, você pode adicionar subchaves marcadas como "Autenticar", que podem ser usadas em protocolos como SSH (via gpg-agent, extraindo o par de chaves RSA não processado) ou SSL (implementado pelo GnuTLS como uma alternativa ao X. 509). Quais subchaves são usadas depende da implementação específica.
Você pode ver a estrutura completa de um certificado PGP usando:
-
gpg --export mykey | gpg -vvv
-
gpg --export mykey | pgpdump
-
gpg --export mykey | certtool --pgp-certificate-info