Distribuire le chiavi

Idealmente la propria chiave viene distribuita dandola di persona al proprio corrispondente. In pratica, però, le chiavi vengono spesso distribuite per posta elettronica o attraverso qualche altro mezzo di comunicazione elettronico. La distribuzione per e-mail è una buona pratica quando si hanno solo pochi corrispondenti e, qualora si avessero anche numerosi corrispondenti, è possibile distribuirla con mezzi alternativi, ad esempio pubblicandola nella homepage del proprio sito. Ciò risulta però inacettabile se le persone che hanno bisogno di quella chiave non sanno dove trovarla.

Per risolvere questo problema si usano dei server che raccolgono e distribuiscono chiavi pubbliche. Una chiave pubblica depositata su un server viene o aggiunta al database del server o unita alla chiave esistente qualora presente. Quando al server perviene una richiesta, il server consulta il suo database e restitutisce la chiave pubblica cercata se trovata.

Un server di chiavi è prezioso anche quando molte persone firmano in continuazione chiavi di altri. Senza un server di chiavi, dopo che Blake ha firmato la chiave di Alice, egli dovrebbe spedire una copia della chiave pubblica di Alice ad Alice stessa, cosicché Alice possa aggiornare il proprio mazzo di chiavi e distribuire la sua nuova copia a tutti i suoi corrispondenti. Così facendo è responsabilità di Alice e di Blake verso la comunità intera mantenere una stretta rete di fiducia e migliorare così la sicurezza di GnuPG. Questo meccanismo può diventare fastidioso se la firma di chiavi avviene con frequenza.

L'uso di un server di chiavi rende il processo in qualche modo più semplice. Dopo che Blake ha firmato la chiave di Alice, egli la invia al server di chiavi. Il server aggiunge la firma di Blake alla copia della chiave di Alice in suo possesso. Le persone interessate nell'aggiornare la propria copia della chiave di Alice possono quindi consultare di propria iniziativa il server ed ottenere la chiave aggiornata. Non c'è bisogno che Alice venga coinvolta nella distribuzione e, per aggiornare la sua chiave, può semplicemente prelevare le nuove firme apposte interrogando il server.

È possibile spedire una o più chiavi ad un server utilizzando l'opzione a linea di comando --send-keys. L'opzione richiede uno o più specificatori di chiave e la sua azione consiste nello spedire le chiavi indicate al server di chiavi. Il server al quale inviare le chiavi è specificato con l'opzione a linea di comando --keyserver. In modo analogo l'opzione --recv-keys viene usata per ottenere delle chiavi da un server, ma l'opzione --recv-keys richede che venga specificato un ID di chiave. Nel seguente esempio Alice aggiorna la propria chiave con le nuove firme dal server di chiavi certserver.pgp.com e successivamente spedisce la propria copia della chiave pubblica di Blake allo stesso server per contribuire con una qualche nuova firma che potrebbe aver aggiunto.
alice% gpg --keyserver certserver.pgp.com --recv-key 0xBB7576AC
gpg: richiesta chiave BB7576AC da certserver.pgp.com ...
gpg: chiave BB7576AC: 1 nuova firma

gpg: numero totale esaminato: 1
gpg:	         nuove firme: 1
alice% gpg --keyserver certserver.pgp.com --send-key blake@cyb.org
gpg: successo nell'invio a 'certserver.pgp.com' (status=200)
      
Esistono diversi server di chiavi in uso in giro per il mondo. I server principali si sincronizzano a vicenda cosicché è sufficiente scegliere quello più vicino ed usarlo regolarmente per spedire e ricevere chiavi.