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
Alice abbia firmato la chiave di Blake e
Blake abbia firmato quella di Chloe e Dharma.
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.
Non c'è nessuna informazione sul giudizio del possessore nella chiave di firma. Le chiavi del proprio mazzo che non siano le proprie hanno inizialmente questo livello di fiducia.
Si sa che il possessore non firma opportunamente le chiavi degli altri.
Il possessore capisce le implicazioni che comporta firmare una chiave ed è capace di convalidare le chiavi propriamente prima di firmarle.
Il possessore ha un'eccellente comprensione di ciò che comporta firmare una chiave e la sua firma su una chiave è tanto valida quanto la propria.
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) <[email protected]> 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) <[email protected]> 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) <[email protected]> Comando> quit [...] |
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:
è firmata da un numero sufficiente di chiavi valide, cioé
è stata firmata di persona, oppure
è stata firmata da una chiave di cui ci si fida pienamente, oppure
è stata firmata da tre chiavi con fiducia marginale; inoltre
il percorso delle chiavi firmate che risale dalla chiave K alla propria chiave è al massimo di cinque passi.
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.
[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. |