# Tor (software)

Tor (acronimo di The Onion Router) è un software libero, rilasciato su licenza BSD 3-Clause, che permette una navigazione anonima sul Web ed è basato sulla terza generazione del protocollo di rete di onion routing: tramite il suo utilizzo è molto più difficile tracciare o intercettare l'attività che l'utente compie su Internet, sia da parte di società commerciali che da parte di soggetti potenzialmente ostili.
È disponibile per Linux, Windows, Android, MacOS e tramite distribuzioni live (che si avviano da chiave USB o CD), per esempio, Tails. Si presenta, principalmente, come un normale browser per la navigazione: viene usata, infatti, una versione di Mozilla Firefox personalizzata e modificata.

## Storia

Il nucleo di Tor fu sviluppato a metà degli anni novanta dal matematico Paul Syverson e da Micheal Reed per la US Naval Research Laboratory, con lo scopo di proteggere le comunicazioni dei servizi segreti statunitensi. Il suo sviluppo fu continuato da DARPA nel 1997. La prima versione alfa di Tor fu lanciata il 20 settembre 2002 da Syverson e altri collaboratori. Nel 2004 il codice fu rilasciato con una licenza libera e la Electronic Frontier Foundation concesse dei fondi affinché il suo sviluppo fosse mantenuto attivo.
Dingledine, Mathewson e altri 5 collaboratori che lavoravano originariamente al progetto fondarono nel 2006 The Tor Project, un'associazione senza scopo di lucro responsabile dello sviluppo di Tor e dei progetti correlati. La EFF continua ad essere il principale sponsor del progetto. L'8 settembre 2006 cominciò una serie di sequestri di server Tor in Germania da parte delle autorità per controllare l'eventuale presenza di materiale illegale, contenuto presumibilmente in alcuni servizi nascosti.
Col documento RFC7686 dello Internet Engineering Task Force (IETF) i domini di primo livello della darknet Tor (che hanno estensione .onion) entrano in una lista ristretta di domini speciali (.local, .localhost, .example, .invalid, .test e altri), inaccessibili alla Internet pubblica e che ICANN non può assegnare a pagamento ai singoli indirizzi: i .onion sono assegnati solo dalla rete Tor, di essi si può ottenere un certificato di cifratura, e sono esclusi dal global-DNS, cioè non compaiono nel file Internet-root di zona per prevenire problemi di sicurezza e stabilità. Il protocollo specificato nella RFC "istruisce" i vari software, quando l'utente cerca un indirizzo .onion, per rimbalzare la richiesta non verso la Internet pubblica, ma alla rete Tor.
Il 3 aprile 2023 Tor e il provider svedese di reti private virtuali Mullvad hanno rilasciato Mullvad Browser, una versione modificata di Mozilla e meno rigida del Tor browser.

## Descrizione

Tor protegge gli utenti dall'analisi del traffico attraverso una rete di router (detti anche onion router), gestiti da volontari, che permettono il traffico anonimo in uscita e la realizzazione di servizi anonimi nascosti. Lo scopo di Tor è quello di rendere difficile l'analisi del traffico e proteggere così la privacy, la riservatezza delle comunicazioni, l'accessibilità dei servizi. Il funzionamento della rete Tor è concettualmente semplice: i dati che appartengono ad una qualsiasi comunicazione non transitano direttamente dal client al server, ma passano attraverso i server Tor che agiscono da router costruendo un circuito virtuale crittografato a strati (per analogia con onion, termine in inglese che in italiano significa cipolla).
Le comunicazioni via Tor sono a bassa latenza e questo lo rende adatto alla navigazione web, alla posta, messaggistica istantanea, SSH, IRC ecc. Tor supporta esclusivamente il protocollo TCP.
La rete Tor fornisce essenzialmente due servizi:
* Connessioni anonime in uscita
* Fornitura di servizi nascosti

### Indicazioni per l'anonimato in rete

The Guardian Project, organizzazione no-profit, ha realizzato un browser dedicato alla rete Tor, e fornito alcune raccomandazioni per garantire anonimato e sicurezza che gli utenti dovrebbero rispettare per sé e per non compromettere sicurezza e anonimato degli altri utenti connessi.
Tor Browser è un programma gratuito e open-source, portabile: può essere lanciato da chiavetta USB, a garanzia di un maggiore anonimato rispetto alle altre applicazioni che si installano sul PC, con il rischio di una trasmissione di dati personali. Tor Browser blocca JavaScript, Flash, RealPlayer, Quicktime e l'aggiunta di addon in quanto possono essere manipolati per rivelare l'indirizzo IP originale.
La rete Tor e il browser supportano la connessione cifrata dal proprio PC al primo nodo della rete Tor cui ci si collega, e all'interno della rete Tor, ma non possono garantire che sia cifrata e non viaggi in chiaro l'indirizzo IP dall'ultimo nodo della rete Tor al sito finale cui ci si connette: Tor browser impone "HTTPS Everywhere" per forzare ad utilizzarla il maggiore numero di siti che supportano questa connessione cifrata.
Tor sconsiglia di usare file .torrent all'interno della rete Tor, così come di tenere aperte applicazioni che usano i .torrent mentre si sta usando Tor Browser: nella " tracker GET request" i torrent inseriscono l'indirizzo IP in chiaro. File scaricati di tipo Word o pdf dovrebbero essere aperti quando non si è connessi a Internet, in quanto possono contenere o linkare siti Internet che vengono aperti da programmi che non usano Tor, in cui l'indirizzo IP appare in chiaro. Wikipedia consente la visualizzazione, non la modifica delle pagine da rete Tor, salvo singole eccezioni autorizzate.

### Connessioni anonime

Gli utenti della rete Tor eseguono il software Tor sulla loro macchina. Questo software periodicamente negozia un circuito virtuale attraverso più nodi Tor, fino alla destinazione finale. L'uso della crittografia garantisce la PFS (Perfect forward secrecy): ciò vuol dire che un eventuale malintenzionato, derivando la chiave principale di sessione al tempo t non potrebbe trarre alcuna informazione riguardo alle chiavi temporanee che da essa sono state derivate fino ad un istante di tempo t-1 (ovviamente tutte quelle successive sarebbero compromesse).
Si tratta di una caratteristica molto apprezzata per chiare ragioni di sicurezza. Più in particolare, ogni onion router decide a quale nodo della rete spedire i pacchetti e negozia una coppia di chiavi crittografiche per spedire i dati in modo sicuro, cifrandoli. In questo modo, nessun osservatore posto in un punto qualsiasi del circuito, è in grado di conoscere l'origine o la destinazione della connessione.
Le comunicazioni tra i nodi Tor del circuito sono cifrate, tranne il tratto tra l'ultimo nodo Tor (detto exit node) e la destinazione finale, che è normalmente in chiaro. Se la destinazione è a sua volta un router Tor, l'intera comunicazione è cifrata e sfugge all'analisi di un eventuale osservatore posto nella tratta finale del circuito.
Il software Tor fornisce un'interfaccia SOCKS tramite la quale qualsiasi software di rete che la supporti (browser web, client IRC..) può comunicare in forma anonima, attraverso un proxy SOCKS locale configurato ad hoc, come Polipo o Privoxy.
Dal 2022, è stata rilasciata Snowflake, un'estensione per Mozilla Firefox e Chrome che permette l'accesso ad Internet ad utenti in Stati che censurano o ne vietano l'uso.

### Servizi nascosti

Anche se la funzionalità più popolare di Tor è quella di fornire anonimato ai client, può anche fornire anonimato ai server. Usando la rete Tor, è possibile ospitare dei server in modo che la loro localizzazione nella rete sia sconosciuta. Un servizio nascosto può essere ospitato da qualsiasi nodo della rete Tor, non importa che esso sia un router o solo un client, per accedere ad un servizio nascosto, però, è necessario l'uso di Tor da parte del client. In altre parole, è possibile offrire un servizio (ad esempio un sito web) in modo totalmente anonimo, come servizio nascosto Tor.
Ai servizi nascosti si accede attraverso uno pseudo-dominio di primo livello .onion. La rete Tor capisce la richiesta e apre una connessione con il server desiderato. In genere si preferisce configurare un servizio nascosto in modo che sia accessibile esclusivamente da un'interfaccia di rete non pubblica. I servizi a cui si accede sia attraverso Tor, sia attraverso la rete pubblica sono suscettibili di attacchi a correlazione.
Un altro vantaggio dei servizi nascosti di Tor è che non richiedono indirizzi IP pubblici per funzionare e possono quindi essere ospitati dietro dei firewall e dei NAT.
I nodi della rete zeronet (software che consente l'hosting di siti web su una rete peer to peer) possono comunicare anche attraverso Tor se è necessario garantire l'anonimato su chi accede e condivide i contenuti di un determinato sito web.

## Tipi di nodi Tor

L'utente può decidere in che modo usare la rete Tor ed in che modo contribuire, se lo desidera, alla crescita della rete Tor.
La rete Tor è dotata di circa 7 000 nodi sparsi in tutto il mondo.

### Client

In questa configurazione normale di base, Tor gestisce unicamente le connessioni dell'utente permettendogli di collegarsi alla rete Tor.

### Entry guard

Detto anche "Nodo guardia", costituisce il primo relay a cui l'utente è connesso: veloce e stabile, rimarrà il primo dell'intera catena per 2-3 mesi in modo da offrire protezione contro attacchi e manomissione dell'anonimato.

### Middleman router

È un nodo Tor che gestisce traffico di terzi da e per la rete Tor, senza collegarsi direttamente all'esterno. Nel caso funga anche da client, esso gestisce anche le connessioni dell'utente, garantendo un maggiore anonimato. Tutti i router sono pubblicamente noti, per scelta progettuale.

### Exit router

È un nodo Tor che gestisce traffico di terzi da e per la rete Tor, e verso l'esterno. È possibile definire una exit policy sulle connessioni in uscita all'esterno della rete Tor. Come il caso precedente, offre una protezione maggiore all'utente che lo usi per le proprie connessioni. Come tutti i router Tor, essi sono pubblicamente noti.

### Bridge router

I bridge router sono dei nodi semi-pubblici di tipo sperimentale, studiati per permettere di collegarsi alla rete Tor anche in presenza di un filtraggio efficace contro Tor (come in Cina, Iran ecc.). Non compaiono nelle liste pubbliche dei nodi noti ma devono venire richiesti esplicitamente.

## Aspetti problematici

Gli eventuali abusi della rete Tor vengono mitigati dalla possibilità, per ciascun nodo Tor di uscita (exit node), di definire una politica d'uscita (exit policy) che definisca quale tipo di traffico può uscire o meno attraverso l'exit node. Usando una combinazione di indirizzi e porte, è possibile combattere la maggior parte degli abusi. I potenziali abusi includono:

### Esaurimento della banda

    È considerato scortese e improprio trasferire grandi quantità di dati attraverso la rete Tor, ad esempio con software peer-to-peer, dato che gli onion router sono mantenuti da volontari che donano la propria banda.

### Email

    L'uso anonimo del protocollo SMTP (per esempio: l'email), può portare allo spam. Di conseguenza, la politica di uscita di default dei nodi Tor rifiuta le connessioni attraverso la porta 25, cioè quella usata per SMTP.

### Vandalismo

    Sicuri del fatto di non poter essere rintracciati, alcuni utenti Tor scrivono messaggi ritenuti impropri su forum, wiki, o chatroom. Come risultato, molti grandi provider di questi servizi impediscono agli utenti anonimizzati di utilizzare i propri servizi. Wikipedia, ad esempio, inibisce la modifica delle proprie pagine agli utenti anonimi che si collegano via Tor tramite un'estensione chiamata TorBlock (ma permette comunque agli utenti non registrati di editare le pagine). L'uso da parte di utenti registrati resta comunque soggetto a dei limiti.

### Richieste DNS

È importante notare che molti software continuano a effettuare richieste DNS dirette, senza usare il proxy Tor. Ciò compromette l'anonimato perché rivela ad un osservatore le richieste DNS fatte, e quindi le destinazioni delle connessioni. Possibili soluzioni a questo problema sono l'uso di Privoxy, o del comando 'tor-resolve' fornito con Tor. In più, le applicazioni che usano Socks 4a (quindi supportano le richieste basate sul nome al proxy) possono veicolare le richieste DNS attraverso la rete anonima, e ottenere che le richieste vengano fatte dal nodo di uscita ottenendo così lo stesso livello di anonimizzazione del resto del traffico Tor.

### Analisi del traffico

Il modello di rischio in cui Tor offre anonimato prevede un osservatore in grado di osservare una piccola parte delle connessioni nella rete Internet, come può essere un ISP, un governo locale, un server di destinazione. Tor non offre protezione contro un ipotetico avversario globale, in grado di osservare tutte le connessioni della rete: poiché Tor è un servizio a bassa latenza sarebbe possibile correlare una connessione cifrata di partenza con una connessione in chiaro di destinazione.
Inoltre, sarebbero possibili altri attacchi all'anonimato di Tor (ma non l'identità dell'utente di partenza) anche ad un osservatore parziale della rete.

### Exit node ostili

L'ultimo nodo di un circuito Tor trasmette la connessione così com'è (non cifrata da Tor) alla destinazione finale. Se la connessione finale avviene in chiaro, l'exit node potrebbe spiare i dati trasmessi, ricavandone ad esempio password e altre informazioni. Se la connessione è di tipo cifrato (SSL, SSH) non è possibile spiare direttamente i dati trasmessi, mentre sono comunque possibili attacchi di tipo man in the middle riconoscibili dal cambiamento dei certificati crittografici del server di destinazione.
Lo scenario di sicurezza in un exit node è molto simile all'uso di una connessione pubblica wireless, che può essere sorvegliata o manipolata facilmente da un osservatore locale. La protezione consiste nell'usare sempre protocolli sicuri cifrati quando si trasmettono informazioni sensibili; è bene inoltre verificare i certificati crittografici (SSL, SSH) del server a cui ci si collega.

### ISP ostile

Alcuni ipotizzano che un Internet Service Provider ostile potrebbe costruire una propria rete Tor privata e ridirigere lì il traffico dei propri utenti Tor sorvegliandone interamente il traffico. Per evitare questo scenario di attacco tuttavia il software Tor dell'utente contiene cablate di default le credenziali (l'indirizzo e le chiavi crittografiche) dei 7 directory authority della rete Tor; al primo tentativo di collegamento in questa rete ostile l'utente avrebbe un errore di autenticazione crittografica e non potrebbe proseguire. In questo scenario di attacco quindi l'ISP dovrebbe anche distribuire agli utenti una propria versione modificata del software Tor, con le credenziali delle proprie directory authority ostili. Per questo motivo il software Tor viene distribuito tramite diversi canali (il sito web ufficiale, siti web mirror, per email) e si raccomanda la verifica dell'integrità del software tramite le firme crittografiche dei rilasci.

## Alternative
### Hornet

Poiché Tor si è rivelato una rete lenta e in cui alcuni hacker sono riusciti ad entrare, ricercatori della Mellon University negli Stati Uniti, in collaborazione con Politecnico federale di Zurigo e University College London, hanno costruito una rete Tor, chiamata Hornet (High-speed and Onion Routing at the Network Layer) che nei test di laboratorio è riuscita a raggiungere la velocità di navigazione di 93 gigabit al secondo (circa 12 gigabyte al secondo).
La rete è stata testata su un router in cui gira un software Intel e un client Hornet gestito da un programma in linguaggio Python. Il livello di sicurezza è maggiore perché un ipotetico hacker necessita di controllare una significativa percentuale degli ISP intermedi sparsi in aree geopolitiche diverse, il tutto senza essere scoperto.
The Onion Router è un software gratuito rilasciato sotto licenza BSD e implementa una crittografia end-to-end, in cui la chiave pubblica e privata sono condivise solamente fra mittente e destinatario, e i contenuti viaggiano cifrati fra i nodi intermedi, saltando da un server all'altro sparsi per il mondo (che svolge in questo caso la funzione di router) fino all'obiettivo finale. Oltre a variare i nodi intermedi in cui transitano i pacchetti, come è tipico della rete Tor, Hornet aggiunge un ulteriore elemento di sicurezza poiché il protocollo di cifratura viene modificato nel tempo. Quanti più utenti sono connessi alla rete Hornet tanto maggiori sono i nodi tra cui far rimbalzare i dati e il livello di sicurezza, a scapito però di una ridotta velocità di navigazione per gli utenti.
L'uso della crittografia simmetrica consente secondo i ricercatori di mantenere queste elevate velocità di connessione. La rete è estremamente scalabile, richiedendo una aggiunta minima di risorse per ogni nuovo canale anonimo gestito: ogni nodo della rete Hornet può processare traffico proveniente da un numero praticamente illimitato di sorgenti. Poiché il sistema non memorizza dati prima dell'avvio della sessione, fornisce garanzie di sicurezza maggiori delle reti esistenti per la protezione dell'anonimato. La crittografia applicata su ogni singolo pacchetto scambiato consente di ridurre il rischio di perdita dei dati: la rete applica la crittografia a chiave asimmetrica solo fra mittente e destinatario, mentre fra i nodi di rete intermedi si impiega solo la crittografia a chiave simmetrica, lo stato della connessione (come le chiavi di crittografia) è inserito direttamente nell'intestazione (header) del messaggio.
Quando un utente vuole accedere ad un sito web su Internet, un protocollo Tor-simile detto Sphinx ("Sfinge") in primo luogo è utilizzato per impostare il canale. Ogni pacchetto Sfinge permette ad un nodo di origine di stabilire un set di chiavi simmetriche, una per ciascun nodo sul percorso attraverso il quale i pacchetti vengono instradati. Una catena di chiavi viene creata mediante uno scambio Diffie-Hellman e ogni chiave viene utilizzata per crittografare un inoltro fra due nodi intermedi.
Il nodo destinatario può così recuperare in modo dinamico le informazioni incorporate (cioè, nodo successivo, chiave condivisa di sessione, tempo di scadenza): il mittente inserisce nell'anonymous header (AHDR) il forwarding segment di ciascun nodo del canale fino alla destinanzione finale. L'AHDR permette a ogni nodo del percorsso l'accesso al nodo successivo, senza rendere visibili a terzi qualsiasi informazione sul percorso eccetto il nodo immediatamente precedente e successivo. Il traffico dati è cifrato con le chiavi assegnate a ciascuno dei nodi del canale.

### Proxy

Programmi alternativi a Tor, sempre basati su proxy server gestiti da volontari o soggetti terzi, per superare la censura di Internet sono: Psiphon, Ultrasurf, Lantern o Orbot. Quest'ultimo in particolare è disponibile per iOS e Android e permette di criptare il traffico internet di una qualsiasi app installata sul dispositivo.

### Astoria

Astoria è un client per rete Tor gratuito e a sorgente aperto, sviluppato da una collaborazione fra università statunitensi e israeliane, a seguito di vulnerabilità della rete Tor dimostrate dalla National Security Agency e dalla GCHQ (British Government Communications Headquarters).
Non ancora disponibile per il pubblico (ottobre 2015), il programma promette di ridurre di un fattore 10 (dal 58.5% a 5.8%) il numero dei circuiti Tor vulnerabili e la probabilità di successo di attacchi di tipo exit node (attacchi di eavesdropping a livello di rete), in cui l'hacker controlla il relay di entrata e quello di uscita, e dai pacchetti intercettati può identificare un operatore su rete Tor in pochi minuti, tramite un'analisi statistica (timing attack) delle variazioni della crittografia e dei metadati. Tor non condivide nelle intestazioni dei pacchetti, informazioni identificative come l'indirizzo IP o il luogo dal quale si è connessi, nel senso che tali informazioni vengono eliminate e non trasmesse.
Astoria sceglie il percorso alternativo migliore e più sicuro per prevenire questo tipo di attacchi, tenendo anche conto della distanza dal client Tor e del carico-ampiezza di banda larga disponibile nel circuito di nodi scelto.

### Vuvuzela

Vuvuzela è un software che punta a garantire l'anonimato con un approccio differente da quello di Tor e Hornet, meno strati a cipolle e livelli di crittografia, più rumore di fondo. Tra il nodo mittente e destinatario viene inserito un nodo server con funzione di mailbox sul quale è fisicamente salvato il messaggio, e notifica al destinatario la presenza di un messaggio da prelevare.
Il messaggio attraversa vari server nel passaggio dal mittente al mailbox, così pure il destinatario invia un messaggio che attraversa vari server prima di recuperare l'indirizzo dalla mailbox. Ad ogni passaggio ad un server, vengono inviati messaggi a tutti gli utenti connessi alla rete.
Se Alice e Bob inviano messaggi ad un dead-drop server, e Charlie non invia, un osservatore concluderebbe che Alice e Bob stanno comunicando tra loro. Così il primo requisito del sistema è che tutti gli utenti inviino regolarmente messaggi al server, che contengano informazioni, oppure siano messaggi vuoti.
Se il messaggio di Charlie è instradato a un indirizzo, mentre i messaggi di Alice e di Bob vengono instradati ad un altro indirizzo di memoria, un ipotetico intruso che è riuscito ad entrare nel server, riesce a vedere quali utenti accedono a quali indirizzi di memoria. Così, invece di utilizzare un singolo server, Vuvuzela ne utilizza tre, per cui ogni messaggio inviato attraverso il sistema è avvolto in tre strati di crittografia.
Il primo server si stacca il primo strato di crittografia prima di passare i messaggi al secondo server. Ma esso anche casualmente permuta il loro ordine. Così se, ad esempio, il messaggio di Alice è arrivato al primo server prima di Bob e il messaggio di Bob è arrivato prima di Charlie, il primo server li passerà al secondo in ordine Bob- Alice- Charlie, oppure Charlie- Bob- Alice, o simili.
Il secondo server si stacca il secondo strato di crittografia e permuta ancora una volta l'ordine dei messaggi. Solo il terzo server vede quali messaggi sono vincolati per quali indirizzi di memoria. Supponendo anche che esso è stato infiltrato, e anche se l'intruso osserva l'ordine in cui i messaggi sono arrivati sul primo server, egli non può dire il da dove il messaggio sia finito. L'intruso sa che si stanno parlando due utenti, i cui messaggi hanno raggiunto il primo server all'interno di qualche finestra di tempo.
Quando il primo server ritrasmette al secondo i messaggi ricevuti, produce anche una sfilza di messaggi fittizi, con le proprie destinazioni crittografati. Il secondo server fa la stessa cosa. Quindi statisticamente, è quasi impossibile per un intruso stabilire anche se uno qualsiasi dei messaggi che arrivano all'interno della stessa finestra di tempo, sia finito alla stessa destinazione. Tali garanzie statistiche, valgono anche se due dei tre server sono infiltrati. Finché uno di loro rimane senza compromessi, il sistema funziona.
Nei primi test virtuali sul cloud di Amazon, si è misurata una latenza di 44 secondi (su 15 000 messaggi totali al secondo) che intercorre fra l'invio e la ricezione del messaggio.
Similare è il programma e rete I2P.

### PrivaTegrity

Basata sulla pubblicazione di David Chaum et al. e presentata a gennaio 2016 al Real World Cryptography Conference della Stanford University, PrivaTegrity supera il problema della rete Tor suscettibile agli attacchi di analisi del traffico a causa della sua dimensione e timing di invio dei pacchetti, non uniformi. La maggior parte delle operazioni computazionali viene eseguita sul lato server e non sul client, che elimina le operazioni di chiave pubblica in tempo reale e migliora le prestazioni, utilizzando precalcolo di alcune informazioni e l'uso dei più veloci algoritmi a chiave singola rispetto a quelli a chiave doppia.
La pubblicazione afferma inoltre che il protocollo di cMix può garantire l'anonimato del mittente se qualsiasi mittente nella rete cMix è indistinguibile da tutti gli altri potenziali mittenti. Tuttavia, il sistema è realizzato con un numero limitato di nove server "certificati" (contro le decine di migliaia tra proxy e router di Tor), risultando facilmente violabile da autorità a livello governativo e non..