Convalidare le altre chiavi del proprio mazzo

Nel capitolo 1 è stata fornita una procedura per convalidare le chiavi pubbliche delle persone con le quali si comunica: la chiave di un corrispondente è convalidata controllando personalmente l'impronta digitale della chiave e quindi firmando la sua chiave pubblica con la propria chiave privata. Controllando personalmente l'impronta digitale si può essere certi che la chiave appartiene realmente a quella persona e, poiché la chiave viene poi firmata, si può essere sicuri di riuscire a rilevare ogni tentativo di manomissione futuro. Sfortunatamente questa procedura risulta antipatica quando, per qualche motivo, si debba convalidare un gran numero di chiavi o comunicare con persone che non si conoscono direttamente.

GnuPG risolve questo problema con un meccanismo comunemente conosciuto come rete della fiducia[1]. Nel modello della rete della fiducia la responsabilità di convalidare le chiavi pubbliche è delegata a persone di cui ci si fida. Per esempio, si supponga che

Se Alice è convinta che Blake sia capace di convalidare propriamente le chiavi che firma, allora Alice può dedurre che le chiavi di Chloe e Dharma sono valide senza dover necessariamente eseguire alcun controllo. Semplicemente lei usa la propria copia convalidata della chiave pubblica di Blake per controllare che le firme di Blake apposte alle chiavi di Chloe e Dharma siano buone. In generale, assumendo che Alice sia completamente convinta che chiunque sia capace di convalidare propriamente le chiavi che firmano, allora ogni chiave firmata da una chiave valida può essa stessa essere considerata valida. La radice è la chiave di Alice che si considera valida per definizione.

Fiducia nel possessore di una chiave

In pratica la fiducia è soggettiva. Per esempio, la chiave di Blake è valida per Alice in quanto è stata lei a firmarla, ma Alice potrebbe non fidarsi di Blake e della sua capacità di convalidare propriamente le chiavi che egli firma. In questo caso Alice non considererebbe valide le chiavi di Chloe e Dharma basandosi solo sulle firme di Blake. Il modello della rete della fiducia tiene in cosiderazione questo carattere soggettivo associando ad ogni chiave pubblica presente nel proprio mazzo un'indicazione di quanto ci si fidi del possessore di quella chiave. Ci sono quattro livelli di fiducia.

Un livello di fiducia per la chiave è qualcosa che si assegna da soli alla chiave ed è considerata un'informazione privata. Non viene inclusa con la chiave quando questa è esportata; viene perfino salvata separatamente dal proprio mazzo di chiavi in un elenco a sé stante.

L'editor delle chiavi di GnuPG può essere usato per impostare la fiducia che si possiede verso il possessore di una chiave. Il comando è trust. In questo esempio Alice modifica la propria fiducia verso Blake e quindi aggiorna il database della fiducia per ricalcolare quali chiavi siano valide con questa sua nuova fiducia verso Blake.
alice% gpg --edit-key blake

pub  1024D/8B927C8A  creata il: 1999-07-02 scade: mai      fiducia: q/f
sub  1024g/C19EA233  creata il: 1999-07-02 scade: mai
(1)  Blake (esecutore) <blake@cyb.org>

Comando> trust
pub  1024D/8B927C8A  creata il: 1999-07-02 scade: mai      fiducia: q/f
sub  1024g/C19EA233  creata il: 1999-07-02 scade: mai
(1)  Blake (esecutore) <blake@cyb.org>

Per favore, decidi quanta fiducia hai che questo utente verifichi
correttamente le chiavi di altri utenti (guardando il loro passaporto,
controllando le impronte digitali prese da diverse fonti, etc.)?

 1 = Non lo so
 2 = NON mi fido
 3 = Mi fido marginalmente
 4 = Mi fido completamente
 s = mostrami ulteriori informazioni
 m = torna al menù principale

Cosa hai deciso? 3

pub  1024D/8B927C8A  creata il: 1999-07-02 scade: mai      fiducia: m/f
sub  1024g/C19EA233  creata il: 1999-07-02 scade: mai
(1)  Blake (esecutore) <blake@cyb.org>

Comando> quit
[...]
	
La fiducia nel possessore della chiave e la validità della chiave sono indicate sulla destra quando viene mostrata la chiave. Prima viene la fiducia nella persona e poi la validità della chiave
[2]. I quattro livelli di fiducia/validità sono abbreviati con: sconosciuto (q), nessuna (n), marginale (m) e piena (f). In questo caso la chiave di Blake è pienamente valida in quanto è stata Alice stessa a firmarla. Inizialmente Alice ha una fiducia non nota nella capacità di Blake di firmare altre chiavi, ma decide di concedergli una fiducia marginale.

Utilizzare la fiducia per convalidare le chiavi

La rete della fiducia permette di usare un algoritmo più elaborato per convalidare una chiave. In precedenza una chiave veniva considerata valida solo se era stata firmata di persona. Ora può venir utilizzato un algoritmo più flessibile: una chiave K è considerata valida se soddisfa a due condizioni:

  1. è firmata da un numero sufficiente di chiavi valide, cioé

  2. il percorso delle chiavi firmate che risale dalla chiave K alla propria chiave è al massimo di cinque passi.

La lunghezza del percorso, il numero delle chiavi con fiducia marginale richiesto e il numero di chiavi con fiducia piena possono essere modificati. I numeri dati precedentemente sono quelli preimpostati in GnuPG.

La Figura 3-1 mostra una rete della fiducia con radice Alice. Il grafico illustra chi è stato a firmare la chiave di una data persona. La tabella mostra le chiavi che Alice considera valide basandosi sulla sua fiducia negli altri membri della rete. Questo esempio assume che siano necessarie due chiavi con fiducia marginale o una chiave con fiducia piena per convalidare un'altra chiave. La lunghezza massima del percorso è tre.

Quando viengono calcolate le chiavi valide nell'esempio, quelle di Blake e Dharma sono sempre considerate pienamente valide in quanto sono state firmate direttamente da Alice. La validità delle altre chiavi dipende dalla fiducia. Nel primo caso, la fiducia in Dharma è piena e ciò implica che le chiavi di Chloe e Francis saranno considerate valide. Nel secondo esempio, la fiducia in Blake e Dharma è marginale. Poiché sono necessarie due chiavi con fiducia marginale per convalidare pienamente un'altra chiave, la chiave di Chloe verrà considerata valida, mentre quella di Francis verrà considerata solo marginalmente valida. In caso in cui sia stata riposta una fiducia marginale in Chloe e Dharma, la chiave di Chloe sarà considerata marginalmente valida in quanto la chiave di Dharma è pienamente valida. D'altro canto, anche la chiave di Francis verrà considerata marginalmente valida in quanto solo una chiave con fiducia piena può venir usata per convalidare altre chiavi e la chiave di Dharma è l'unica chiave pienamente valida che è stata usata per firmare la chiave di Francis. Aggiungendo una fiducia marginale in Blake, la chiave di Chloe diventa pienamente valida e può quindi essere utilizzata per convalidare pienamente la chiave di Francis e marginalmente quella di Elena. Infine, anche riponendo piena fiducia in Blake, Chloe ed Elena, la chiave di Geoff non può essere convalidata in quanto la lunghezza massima del percorso di certificazione è tre, mentre la lunghezza del percorso da Geoff ad Alice è quattro.

Il modello della rete della fiducia è un approccio flessibile al problema dello scambio sicuro di chiavi pubbliche. Esso permette di regolare GnuPG in modo da riflettere l'uso che se ne fa. Da una parte si può insistere su percorsi multipli e brevi che, partendo dalla propria chiave ed arrivando alla chiave K, la convalidino. Dall'altra parte si può essere soddisfatti con percorsi più lunghi e magari un solo percorso che colleghi la propria chiave con l'altra chiave K. Specificando percorsi multipli e brevi si ottiene una forte garanzia che la chiave K appartenga effettivamente a chi si pensa debba appartenere. Il prezzo da pagare, ovviamente, consiste nel fatto che è più difficile convalidare le chiavi in quanto è necessario firmare personalmente più chiavi di quante ne sarebbero necessarie se si accettassero percorsi più brevi ed in numero inferiore.

Note

[1]

Web of trust nel testo originale.

[2]

GnuPG estende il significato della parola ``fiducia'' intendendola come la fiducia riposta in una persona e quella riposta in una chiave. Ciò può essere fonte di confusione. A volte ci si riferisce alla fiducia in un possessore, usando esplicitamente fiducia nel possessore, per distringuerla dalla fiducia in una chiave. In questo manuale, comunque, ``fiducia'' è usato per indicare la fiducia nel possessore di una chiave e ``validità'' per indicare la fiducia che si possiede nel fatto che una chiave appartenga ad un essere umano associato all'ID della chiave.