Come si realizza tecnicamente la firma di una chiave pubblica OpenPGP?

1

Recentemente ho firmato la chiave pubblica OpenPGP di un mio amico. Curioso di vedere, quale effetto avrebbe avuto sulla chiave effettiva, ho confrontato la chiave prima e dopo averla firmata. Quello che ho trovato è che tutto tranne l'ultima riga della chiave non è cambiata. L'ultima riga era composta da cinque a sei caratteri prima e dopo averlo firmato, tuttavia i personaggi sono stati modificati. Quindi la mia firma della chiave dei miei amici è ovviamente contenuta in quest'ultima riga.

Come e utilizzando quali informazioni sono state effettivamente generate da questa ultima riga? Dato che ovviamente contiene non solo la mia firma ma anche quelle di tutte le persone che hanno firmato quella chiave prima di me.

    
posta Benedikt Bauer 28.10.2015 - 12:22
fonte

1 risposta

1

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 .

    
risposta data 28.10.2015 - 13:21
fonte

Leggi altre domande sui tag