Le cronache di tutti i giorni ci hanno abituato a pensare che tutte le operazioni effettuate dagli utenti di Internet possano essere facilmente ricostruite, dal momento che tali azioni attraversano soggetti e oggetti che, a vario titolo, tengono traccia di alcune informazioni scambiate. Ad esempio, i fornitori di connettività internet devono di norma conservare i log degli accessi, mentre i gestori di siti e server Web mantengono dettagliate profilazioni su tutti gli utenti, rendendoli più o meno consapevoli della cosa. Analogo discorso vale anche per tutti i nodi attraversati e quindi coinvolti nel flusso di comunicazione, che tracciano le connessioni e sono in grado di ricostruirne il percorso.
Esiste però un lato oscuro della Rete, il Deep Web, nel quale si utilizza un meccanismo di comunicazione in grado di proteggere l’anonimato degli utenti, nascondendoli dalla possibilità di analisi del traffico.
Principi di funzionamento della rete TOR
Una delle reti più note in questo contesto è TOR, acronimo di The Onion Router, che garantisce l’anonimato grazie all’impiego di server particolari, i cosiddetti Onion Router. In questo speciale netwok, il traffico dati non attraversa più la rete in modo tradizionale, viaggiando tra i client e server, ma viene veicolata mediante un complesso e crittografato circuito virtuale instaurato tra una moltitudine di Onion Router.
Un Onion Router non è altro che un nodo della rete TOR e, solitamente, è reso disponibile da un volontario appartenente alla rete che dona parte della sua banda disponibile alla causa.
Il protocollo di comunicazione all’interno della rete TOR è stato sviluppato per garantire la segretezza della comunicazione, l'integrità dei dati, il controllo della congestione e una serie di politiche di uscita controllate.
Il segreto sta nella distribuzione della richiesta di comunicazione dell’utente, generata in modo che nessuno possa mettere in relazione l’utente stesso con la destinazione richiesta. I pacchetti che contengono la comunicazione vengono infatti distribuiti su un percorso casuale e dinamico, difficilmente predicibile, attraverso router che cancellano ogni traccia della comunicazione e che comunque ignorano la sorgente e la destinazione finale. Ogni router coinvolto instaura inoltre un canale sicuro di comunicazione con il router successivo, mediante lo scambio di specifiche coppie chiavi crittografiche, rendendo più complesso ogni attacco di tipo man-in-the-middle.
Risulta evidente che i punti di maggiore criticità nell’ambito della comunicazione risultano quelli di ingresso e di uscita dalla rete. Per questa ragione solo nodi TOR fidati possono realizzare questo compito e vengono chiamati rispettivamente Guard Node (nodo di guardia) ed Exit Node (nodo di uscita).
Esistono poi altri nodi TOR fidati che detengono un altro compito molto importante, ovvero quello di funzionare come Directory Server. Questi server HTTP detengono le liste dei router e informazioni sullo stato della rete, fornendoli ai client TOR che le richiedono.
Esempio di un flusso di informazioni
Ipotizziamo quindi un possibile flusso di informazioni tra un client TOR e un destinatario e vediamo come questo si realizza mediante una rete TOR. In primo luogo il client contatta un Directory Server per aggiornare la lista dei router e determinare informazioni utili sullo stato della rete. In base a questo, viene individuato un percorso di rete e si instaura una comunicazione sicura con il Guard Node. La comunicazione è crittografata con una apposita chiave di sessione, che viene frequentemente sostituita per ridurre la possibilità di attacco. Il Guard Node, in base alle informazioni contenute nel pacchetto, veicola quindi il messaggio al nodo intermediario su un canale sicuro. In questo momento il pacchetto ha già perso tutte le informazioni che riguardano il nodo sorgente, che pertanto in ogni caso non potrebbero più essere note ad un eventuale attaccante. Il nodo intermediario legge la sua porzione di messaggio e veicola il rimanente all’Exit Node. L’Exit Node a questo punto comunica con il nodo destinatario esterno alla rete e successivamente restituisce l’informazione al nodo sorgente con un meccanismo analogo al flusso di andata. La comunicazione tra Exit Node e destinazione può o meno essere crittografata in funzione del servizio richiesto (ad esempio HTTP o HTTPS).
Dal punto di vista tecnico la comunicazione è basata su protocollo TCP, su cui l’Onion Routing si sovrappone, mentre la crittografia della rete TOR è realizzata tramite TLS.
Il meccanismo che realizza la crittografia nella comunicazione deriva dal principio di digital mixes, inventato da David Chaum negli anni 80, che consente ad un interlocutore di inviare un messaggio segreto ad un destinatario passando attraverso un terzo nodo, senza che quest’ultimo possa leggerlo in alcun modo. Riproponendo l’esempio tradizionale di Alice, che intende inviare un messaggio riservato a Bob attraversando nodi intermedi, si evidenzia come Alice debba cifrare il messaggio più volte utilizzando (in ordine di vicinanza al destinatario) le chiavi private dei nodi intermedi. In questo modo nessuno dei nodi intermedi potrà conoscere il contenuto interno del messaggio, né il destinatario finale (a meno dell’ultimo).
Questo meccanismo è anche all’origine del simbolo della rete TOR, ovvero una cipolla, pensato proprio per rappresentare la sua caratteristica di crittografia a strati.