Tor utilizza una varietà di chiavi diverse, con tre obiettivi in mente: 1) la crittografia per garantire la privacy dei dati all'interno della rete Tor, 2) l'autenticazione in modo che i client sappiano che stanno parlando con i relay a cui intendevano parlare e 3) le firme per assicurarsi che tutti i client conoscano lo stesso set di relay.
Crittografia: in primo luogo, tutte le connessioni in Tor utilizzano la crittografia dei collegamenti TLS, quindi gli osservatori non possono guardare all'interno per vedere a quale circuito è destinata una determinata cella.
Inoltre, il client Tor stabilisce una chiave di crittografia effimera con ogni relay del circuito; questi ulteriori livelli di crittografia fanno sì che solo il relay di uscita possa leggere le celle.
Entrambe le parti scartano la chiave del circuito quando il circuito termina, quindi registrare il traffico e poi introdursi nel relay per scoprire la chiave non funzionerà.
Autenticazione: Ogni relay Tor ha una chiave di decrittazione pubblica chiamata "onion key".
Ogni relay ruota la propria chiave a cipolla ogni quattro settimane.
Quando il client Tor stabilisce i circuiti, a ogni passo richiede che il relay Tor dimostri di conoscere la sua chiave a cipolla.
In questo modo, il primo nodo del percorso non può semplicemente fare lo spoofing del resto del percorso.
Poiché il client Tor sceglie il percorso, può assicurarsi di ottenere la proprietà di "fiducia distribuita" di Tor: nessun singolo relay nel percorso può conoscere sia il client che ciò che il client sta facendo.
Coordinamento: Come fanno i client a sapere quali sono i relay e come fanno a sapere che hanno le chiavi giuste per loro?
Ogni relay ha una chiave di firma pubblica a lungo termine chiamata "identity key".
Ogni autorità di directory dispone inoltre di una "chiave di firma della directory".
Le autorità di directory forniscono una lista firmata di tutti i relay conosciuti, e in quella lista ci sono una serie di certificati di ogni relay (autofirmati dalla loro chiave di identità) che specificano le loro chiavi, le posizioni, le politiche di uscita e così via.
Quindi, a meno che l'avversario non riesca a controllare la maggior parte delle autorità di directory (al 2022 ci sono 8 autorità di directory), non può ingannare il client Tor per fargli usare altri relay Tor.
Come fanno i client a sapere quali sono le autorità di directory?
Il software Tor viene fornito con un elenco incorporato della posizione e della chiave pubblica di ogni autorità di directory.
Quindi l'unico modo per ingannare gli utenti e indurli a utilizzare una falsa rete Tor è fornire loro una versione appositamente modificata del software.
Come fanno gli utenti a sapere di avere il software giusto?
Quando distribuiamo il codice sorgente o un pacchetto, lo firmiamo digitalmente con GNU Privacy Guard.
Vedere le istruzioni su come verificare la firma di Tor Browser.
Per essere certi che sia davvero firmato da noi, dovete averci incontrato di persona e aver ottenuto una copia dell'impronta digitale della nostra chiave GPG, oppure dovete conoscere qualcuno che l'abbia fatto.
Se siete preoccupati per un attacco di questo livello, vi consigliamo di partecipare alla comunità della sicurezza e di iniziare a incontrare persone.