Uma assinatura do OpenPGP inclui uma referência à chave usada para assinar. O GnuPG usará essa chave exata para verificar a assinatura.
Um exemplo para algum documento assinado por minha própria chave, analisado usando gpg --list-packets
:
:compressed packet: algo=1
:onepass_sig packet: keyid 8E78E44DFB1B55E9
version 3, sigclass 0x00, digest 2, pubkey 1, last=1
:literal data packet:
mode b (62), created 1453746673, name="",
raw data: 4 bytes
:signature packet: algo 1, keyid 8E78E44DFB1B55E9
version 4, created 1453746673, md5len 0, sigclass 0x00
digest algo 2, begin of digest fc 6a
hashed subpkt 2 len 4 (sig created 2016-01-25)
subpkt 16 len 8 (issuer key ID 8E78E44DFB1B55E9)
data: [4095 bits]
8E78E44DFB1B55E9
é uma subchave de assinatura usada para a assinatura ( ativei IDs de chave longa , caso você se pergunte sobre os IDs hexadecimais de 16 caracteres).
Para criptografia, é possível ocultar a chave do destinatário. Nesse caso, o GnuPG precisa tentar todas as chaves de criptografia disponíveis para descriptografar a mensagem.
Outras chaves podem estar envolvidas para validar a assinatura, o que significa encontrar caminhos de confiança na Web de confiança: mas esse é outro tópico grande.