La firma di una chiave OpenPGP aggiunge un pacchetto di firma , calcolato sull'impronta digitale della chiave del firmatario e uno dei suoi ID utente. Puoi facilmente osservare questo andamento con gpg --export [signee's key id] | gpg --list-packets
(l'output può essere piuttosto massiccio per le chiavi con un numero maggiore di firme, considerare l'utilizzo di less
o uno strumento simile per poter cercare e scorrere l'output), che mostra dettagli piuttosto tecnici sulla chiave. Un esempio (una firma emessa da CAcert sulla mia chiave OpenPGP):
:public key packet:
version 4, algo 1, created 1356475387, expires 0
pkey[0]: [8192 bits]
pkey[1]: [17 bits]
keyid: 4E1F799AA4FF2279
:user ID packet: "Jens Erat (born 1988-01-19 in Stuttgart, Germany)"
[snip, self-signatures omitted as irrelevant in this example]
:signature packet: algo 17, keyid D2BB0D0165D0FD58
version 4, created 1356531044, md5len 0, sigclass 0x10
digest algo 2, begin of digest 0b cc
hashed subpkt 2 len 4 (sig created 2012-12-26)
critical hashed subpkt 3 len 4 (sig expires after 1y1d0h0m)
hashed subpkt 26 len 29 (policy: http://www.cacert.org/cps.php)
subpkt 16 len 8 (issuer key ID D2BB0D0165D0FD58)
data: [160 bits]
data: [157 bits]
Con altre parole: la chiave pubblica effettiva non viene modificata, ma viene aggiunto un nuovo pacchetto contenente la firma (o eventualmente più pacchetti, se hai firmato più ID utente).
The last line did consist of five to six characters before as well as after signing it, however the characters have been altered. So my signature of my friends key is obviously contained in this last line.
Gli ultimi caratteri contengono un checksum CRC-24. Se questo è cambiato, qualcosa di più deve essere cambiato. Prova a controllare entrambe le esportazioni prima e dopo l'aggiunta della firma utilizzando diff
.