24.3.5 La fiducia nelle chiavi

Quando si ottiene una chiave pubblica, come si può verificare che essa appartenga effettivamente all’utente al quale è associata? Per essere sicuri, sarebbe opportuno riceverla dal proprietario in persona, magari su supporto cartaceo. Ma poiché una chiave pubblica è lunga in genere qualche kilobyte, si dovrebbero confrontare qualche migliaio di caratteri per verificare che la chiave pubblica che abbiamo ottenuto in forma elettronica, magari scaricandola da un keyserver, sia quella che appartiene all’utente al quale essa riporta di essere associata. Per questo esiste un meccanismo di verifica della chiave più agevole che si basa sul fingerprint (impronta): il proprietario della chiave pubblica fornisce su supporto cartaceo un insieme di 40 caratteri che rappresentano l’impronta della sua chiave pubblica (una sorta di codice di controllo che dipende strettamente da essa). È sufficiente confrontare questi caratteri per stabilire l’affidabilità della relazione chiave-proprietario.

Per visualizzare il fingerprint delle chiavi presenti nel proprio keyring si può utilizzare il comando

 
$ gpg --fingerprint  
che mostrerà delle indicazioni analoghe a quelle di seguito riportate

/home/daniele/.gnupg/pubring.gpg
-----------------------------------------
pub   1024D/8D267827 2005-01-02 [expires: 2006-01-02]
     Key fingerprint = 6EEC 205F 3577 A542 9F65  2C03 9996 B5F3 8D26 7827
uid                  Daniele Masini (daniele) <d.masini@tiscali.it>
sub   1024g/73FAA737 2005-01-02 [expires: 2006-01-02]
Ma nel caso in cui non si entri in contatto direttamente con la persona associata ad una chiave pubblica, come è possibile fidarsi che quella ottenuta per mezzo della rete sia effettivamente la sua chiave pubblica? E qui nascono i certificati digitali, ovvero delle firme da parte di altre entità che garantiscono la relazione chiave-proprietario. Per potersi fidare di quella che afferma di essere la chiave pubblica di A senza conoscere direttamente A, è sufficiente che fidarsi di B (se lo si conosce e lo si ritiene affidabile) e che B abbia firmato la chiave pubblica di A. La firma della chiave pubblica di A da parte di B indica appunto che B ritiene che la chiave pubblica che riporta il nome di A appartenga effettivamente ad A. Questo meccanismo di transitività della fiducia permette di costruire quela che viene detta web of trust (rete della fiducia).

Per visualizzare le eventuali firme apposte sulle chiavi pubbliche presenti nel proprio keyring si può utilizzare il comando

 
$ gpg --list-sigs  
che mostrerà delle indicazioni analoghe a quelle di seguito riportate

                                                                        
                                                                        
/home/daniele/.gnupg/pubring.gpg
-----------------------------------------
pub   1024D/8D267827 2005-01-02 [expires: 2006-01-02]
uid                  Daniele Masini (daniele) <d.masini@tiscali.it>
sig 3         8D267827 2005-01-02  Daniele Masini (daniele) <d.masini@tiscali.it>
sub   1024g/73FAA737 2005-01-02 [expires: 2006-01-02]
sig 3         8D267827 2005-01-02  Daniele Masini (daniele) <d.masini@tiscali.it>
Come si può vedere dall’esempio riportato, per motivi di sicurezza, le chiavi pubbliche vengono automaticamente firmate (sig) da GnuPG con la relativa chiave privata, al momento della loro generazione.

Per firmare una chiave pubblica si può utilizzare un comando analogo a

 
$ gpg --sign-key 4E2456A3  
che richiederà di inserire la passphrase per accedere alla nostra chiave privata con la quale firmare la chiave pubblica relativa all’ID 4E2456A3.

Ad ogni chiave pubblica importata nel proprio keyring può anche essere assegnato un livello di fiducia, ovvero un valore che esprime quanto si è sicuri che la chiave pubblica importata appartenga effettivamente a chi è specificato essere il suo proprietario. Questo può essere fatto modificando i parametri relativi alla chiave con il comando

 
$ gpg --edit-key 4E2456A3  
dove 4E2456A3 è l’ID della chiave pubblica da modificare. Tale comando farà aprire l’interprete di comandi di GnuPG (con un prompt Command>) e per impostare il livello di fiducia si può digitare il comando trust (fiducia), selezionando successivamente il livello di fiducia desiderato. Infine si può digitare il comando save per salvare le modifiche ed uscire dall’interprete oppure quit per uscire senza salvarle.