Gli ID delle chiavi OpenPGP brevi non sono sicuri, come configurare GnuPG per utilizzare gli ID delle chiavi lunghe invece?

27

Gli ID delle chiavi OpenPGP brevi (con 32 bit / 8 caratteri esadecimali) sono soggetti a attacchi di collisione . Si consiglia vivamente di interrompere l'uso di ID a 32 bit :

Stop using 32bit key ids

It takes 4 seconds to generate a colliding 32bit key id on a GPU (using scallion). Key servers do little verification of uploaded keys and allow keys with colliding 32bit ids. Further, GPG uses 32bit key ids throughout its interface and does not warn you when an operation might apply to multiple keys.

Ma come faccio a dire a GnuPG di usare ID lunghi (con 64 bit o 16 caratteri esadecimali)?

    
posta Jens Erat 21.03.2015 - 13:33
fonte

1 risposta

40

L'ID dell'impronta digitale e della chiave lunga e breve sono correlati

Ogni chiave OpenPGP ha un fingerprint allegato, calcolato principalmente dal suo pacchetto di chiavi pubbliche che contiene anche il tempo di creazione. Il calcolo è definito in RFC 4880, OpenPGP, 12.2. ID chiave e impronte digitali .

Esistono ID di chiavi brevi e lunghe, che assomigliano ai 32 bit inferiori dell'impronta digitale. Ad esempio, guardando gli ID della mia chiave OpenPGP:

fingerprint: 0D69 E11F 12BD BA07 7B37  26AB 4E1F 799A A4FF 2279
long id:                                    4E1F 799A A4FF 2279
short id:                                             A4FF 2279

Le impronte digitali e gli ID delle chiavi sono usati, poiché la condivisione e il confronto di un'intera chiave con solitamente 1024-8096 bit (aggiungendo un po 'di più per intestazioni come la data di creazione) è molto poco pratico.

Utilizzo degli ID tasti lunghi

Ogni volta che si specificano le chiavi OpenPGP, non si possono passare solo ID di chiavi corte, ma anche ID di chiavi lunghe e persino impronte digitali intere. Invece di passare l'ID della chiave breve

gpg --recv-keys A4FF2279

puoi sempre scrivere l'ID della chiave lunga

gpg --recv-keys 4E1F799AA4FF2279

o anche l'impronta digitale completa (consigliata per lo scripting e scopi simili)

gpg --recv-keys 0D69E11F12BDBA077B3726AB4E1F799AA4FF2279

Stampa di ID chiave lunga

Ma da dove prendere l'ID della chiave lunga? Se qualcuno ha passato il suo breve ID, non puoi fare altro che provare a recuperare tutte le chiavi per quell'ID e vedere se c'è una collisione (e spero che nessuno ti nasconda la vera chiave e che passi solo quella falsa).

Quindi ogni volta che si consegna l'ID della chiave OpenPGP, annuncia l'ID lungo! Puoi facilmente fare a GnuPG stampare questo aggiungendo l'opzione --keyid-format long :

gpg --keyid-format long --list-keys [email protected]

Questa opzione accetta valori short o 0xshort per ID chiave breve (senza o con 0x prefisso per indicare che si tratta di un numero esadecimale) e long o 0xlong per ID chiave lunghi.

Configurazione degli ID tasti lunghi come predefiniti

Per assicurarti che GnuPG sia sempre che stampa l'ID della chiave lunga, aggiungi l'opzione al tuo file ~/.gnupg/gpg.conf togliendo -- . Ad esempio, ho configurato GnuPG per stampare sempre l'ID della chiave lunga 0x -prefixed aggiungendo una riga

keyid-format 0xlong

Stampa dell'impronta digitale

Purtroppo, non è possibile impostare GnuPG in modo che stampi l'intera impronta digitale in questo modo, probabilmente perché interromperà il formato di output di GnuPG per quasi tutte le dimensioni dello schermo. Invece, richiedilo eseguendo

gpg --fingerprint 4E1F799AA4FF2279

che scaricherà qualcosa come

pub   8192R/0x4E1F799AA4FF2279 2012-12-25
      Key fingerprint = 0D69 E11F 12BD BA07 7B37  26AB 4E1F 799A A4FF 2279

Poiché questo ha lo svantaggio di contenere spazi (cosa brutta per utilizzarlo nello scripting), potresti usare invece l'output leggibile dal computer delimitato da due punti:

gpg --with-colons --fingerprint 4E1F799AA4FF2279

Per filtrare tutto tranne l'impronta digitale, utilizza inoltre grep e cut :

gpg --with-colons --fingerprint 4E1F799AA4FF2279 | grep fpr | cut -d ':' -f 10
    
risposta data 21.03.2015 - 13:33
fonte

Leggi altre domande sui tag