Onion routing: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m formattazioni e un'etichetta
m Corretto il collegamento Nodo (disambigua) con Nodo (telecomunicazioni) (DisamAssist)
 
(19 versioni intermedie di 16 utenti non mostrate)
Riga 1:
{{F|crittografia|arg2=sicurezza informatica|agosto 2016|}}
'''Onion routing''' è una tecnica di [[anonimizzazione]] delle comunicazioni in una [[rete di telecomunicazionetelecomunicazioni]]. In una rete onion, i messaggi sono [[incapsulamento|incapsulati]] in "strati" di [[crittografia]] che vengono paragonati agli strati di una [[cipolla]], dato l'incapsulamento. Il dato criptato viene trasmesso attraverso una serie di [[Nodo (telecomunicazioni)|nodi]], chiamati ''onion router'', ognuno dei quali "sbuccia" via un singolo strato di crittografia, scoprendo così il prossimo nodo di destinazione del dato.
Il mittente rimane anonimo perché ciascun intermediario conosce solo la posizione del nodo immediatamente precedente e di quello immediatamente successivo.
 
== Descrizione ==
=== Sviluppo e implementazione ===
L'Onion routing è stato sviluppato a metà degli anni ‘90 presso il Laboratorio di Ricerca Navale degli Stati Uniti ([[U.S. Naval Research Laboratory]]), da parte di [[Paul Syverson]], [[Michael G. Reed]] e [[David Goldschlag]], per proteggere l'[[United_States_Intelligence_CommunityUnited States Intelligence Community|intelligence]] online degli Stati Uniti online. È stato ulteriormente sviluppato dal [[DARPA]] (Defense Advanced Research Projects Agency) e brevettato dalla Marina degli Stati Uniti nel 1998.
 
Gli informatici [[Roger Dingledine]] e [[Nick Mathewson]] si incontrarono a Syverson nel 2002 per sviluppare quella che sarebbe diventata la più grande e nota implementazione dell'onion routing: The Onion Router o, in forma abbreviata, [[Tor (software)|TOR]].
Il Laboratorio Di Ricerca Navale degli Stati Uniti rilasciò il [[codice sorgente]] di TOR con licenza gratuita, mentre Dingledine, Mathewson e altri cinque sviluppatori fondarono nel 2006 l'organizzazione no-profit chiamata "The Tor Project", con il sostegno finanziario della [[Electronic Frontier Foundation]] e altre diverse organizzazioni.
 
=== Struttura e dati ===
InNell'esempio questoin esempiofigura il nodo origine invia una onion al [[router]] A, ovvero un dato coperto da diversi strati di [[crittografia]], ilal [[router]] A, il quale rimuove uno strato di crittografia e scopre in questo modo qual è il nodo successivo a cui deve essere inviato il dato, e da quale nodo proveniva la cipolla. Il router A così invia la cipolla, privata di uno strato, al router B, il quale decripta (cioè "sbuccia") un altro strato di crittografia, quindi il router Be a sua volta invia la cipolla, privata di un secondo strato, al router C. Il router C rimuove lo strato di crittografia finale e trasmette quindi il dato al nodo destinatario.
 
In questo esempio il nodo origine invia una onion al [[router]] A, ovvero un dato coperto da diversi strati di [[crittografia]], il router A rimuove uno strato di crittografia e scopre in questo modo qual è il nodo successivo a cui deve essere inviato il dato, e da quale nodo proveniva la cipolla. Il router A così invia la cipolla, privata di uno strato, al router B, il quale decripta (cioè "sbuccia") un altro strato di crittografia, quindi il router B a sua volta invia la cipolla, privata di un secondo strato, al router C. Il router C rimuove lo strato di crittografia finale e trasmette quindi il dato al nodo destinatario.
 
[[File:Onion_diagram.svg|thumb|In questo esempio, il mittente (Source) manda i dati al Router A, il quale rimuove lo strato di crittografia (strato blu) al fine di scoprire verso quale Router deve spedire il dato (N.B. il Router A non sa se chi gli ha inviato il dato onion è un Router mittente o un Router intermediario). Il Router A invia il dato “sbucciato” di uno strato al Router B, il quale decripta il suo strato (strato verde) e invia il dato privato di un’altra “buccia” al Router C. Quest’ultimo rimuove lo strato di crittografia finale (strato rosso) e trasmette il dato originale al server di destinazione finale (Destination).]]
 
Un dato onion è quindi una [[struttura dati]] formata da un messaggio che è stato "avvolto" da strati di crittografia, uno successivo all'altro, questi stratiche saranno decifrati (ovvero "sbucciati") da tanti nodi intermediari quanti sono gli strati di crittografia, prima di arrivare al nodo destinazione.
Il messaggio originale rimane evidentemente nascosto per tutto il tragitto che fa attraverso i nodi intermediari, nessun nodo intermediario è a conoscenza né del nodo sorgente né del nodo destinazione. Ciò permette quindi al nodo mittente di rimanere anonimo.<ref name="carella">{{Cita web|url=http://carminecarella.altervista.org/material/sicurezza/report.pdf |titolo=TOR Una tecnologia per la comunicazione riservata e anonima in rete|accesso=luglio 2016|urlarchivio=https://web.archive.org/web/20160915142636/http://carminecarella.altervista.org/material/sicurezza/report.pdf|dataarchivio=15 settembre 2016|urlmorto=sì}}</ref><ref>{{Cita web|url=https://www.onion-router.net/Publications/tor-design.pdf |titolo=Tor: The Second-Generation Onion Router |accesso=26 febbraio 2011}}</ref>
 
==Funzionamento generale del protocollo Onion==
 
==Funzionamento generale del protocollo Onion==
Per creare e trasmettere un dato cipolla, il nodo mittente seleziona un insieme di nodi intermediari da una lista nodi che gli viene fornita da un nodo "Directory". I nodi intermediari selezionati, sono quindi disposti lungo un percorso, chiamato catena ("''chain''") o circuito ("''circuit''"), attraverso questa catenacui viene trasmesso il dato cipolla. Per conservare l'anonimato del nodo mittente, nessun nodo del circuito è in grado di dire se il nodo a lui precedente è anch'esso un nodo intermediario o se si tratta proprio del nodo mittente.
Analogamente, nessun nodo del circuito è in grado di dire attraverso quanti nodi il dato cipolla passerà prima di arrivare al nodo destinazione, chiamato anche Exit Node (nodo di uscita), inoltre nessun nodo del circuito è in grado di sapere quale posizione della catena occupa.
 
Si ipotizzi che Alice sia il [[PC]], con [[Tor_Tor (software)|Tor browser]] installato, la qualeche vuole mandare un messaggio utilizzando il protocollo Onion.
Il computer di Alice deve ovviamente avere una [[scheda di rete]] installata, un [[sistema operativo]] (non importa quale sia il tipo) e un [[browser]].
 
Quindi si supponga che il server di Destinazione attraverso il quale Alice sta tentando di accedere sia un semplice [[server web|web server]] senza [[Virtual Private Network|VPN]], [[proxy]], e senza nessuna infrastruttura di tipo Tor all'interno di esso;
 
Come si può notare, con una configurazione del genere, chiunque stia tentando di [[Sniffing|ascoltare il traffico]] in uscita dal computer di Alice può sapere a quale server Alice sta facendo la richiesta, chi ha fatto la richiesta, e a chi è rivolta la richiesta. Per questo motivo, al fine di nascondere il mittente della request (Alice), viene installato su Alice un [[Tor_Tor (software)|Tor browser]], o alternativamente un Tor [[proxy]] da agganciare al browser di Alice (per fare questo esistono diversi tool in rete).[[File:Tor-logo-2011-flat.svg|thumb|Il logo di Tor]]
 
Una delle caratteristiche del browser Tor è che, attraverso il suo utilizzo, si garantisce all'utente il completo anonimato. Ovviamente se l'utente comincia ad effettuare pagamenti su internet utilizzando la propria carta di credito, o se utilizza i propri dati personali (es. carta d'identità, patente di guida, [[codice fiscale]] etc.), il grado di anonimato si riduce drasticamente, allo stesso modo se ci si registra in qualche sito internet con le proprie [[Account|credenziali]].
 
Per prima cosa Alice, che è il nodo mittente, attraverso Tor browser, contatta i nodi Tor chiamati nodi di Directory. Questi nodi di Directory non sono altro che server ridondanti e di fiducia messi a punto da chi ha progettato il protocollo Onion, i quali forniscono la lista di tutti i nodi Tor presenti in rete.
Il browser Tor di Alice farà il [[download]] di questa informazione al fine di costruire una catena di nodi o circuito.
Di default Tor browser sceglie randomin modo casuale 3 nodi per costruire il circuito.
 
Nella terminologia di Tor, i nodi prendono un particolare nome a seconda della loro posizione nel circuito: il primo nodo si chiama Guard Node (nodo di guardia) o Entry Node (nodo di ingresso), il secondo Middleman Node (nodo intermediario) e il terzo Exit Node (nodo di uscita).
Si faccia attenzione poiché l'Entry Node, non è il nodo mittente (Alice), ma è il nodo immediatamente successivo, allo stesso modo l'Exit Node, non è il server di destinazione della request di Alice, ma è il nodo immediatamente precedente a tale server.
La scelta dei nodi di una catena viene effettuata dal browser Tor di Alice in base alle informazioni ricevute dal directory server: ogni nodo Tor quando si registra presso le directory invia il proprio indirizzo IP e una serie di caratteristiche.
Gli Exit Nodes sono i più importanti: i dati che escono da questi nodi potrebbero non essere protetti da crittografia (se ad esempio Alice non ha effettuato una chiamata in [[HTTPS]], o protetta da [[Transport_Layer_SecurityTransport Layer Security|SSL/TLS]], ma ha usato [[HTTP]], le info dall'Exit Node al server di destinazione viaggiano in chiaro).
Parimenti, i Guard Nodes vincono questo status quando hanno servito la rete Tor per un lungo periodo: sono nodi fidati a cui possiamo affidare il primo passo per entrare nella rete.
Tutti i rimanenti nodi sono considerati nodi intermediari. Il perché di queste scelte e di questa classificazione si può spiegare brevemente dicendoè che sonosolo il primo e l'ultimo nodo della catena rappresentano i punti deboli attraverso cui è possibile attaccare il protocollo.<ref name="carella"/>
[[File:Wat_is_Tor_(The_onion_routing)%3F.png|thumb]]
 
Riga 51 ⟶ 50:
[[File:Tor-onion-network.png|thumb]]
 
==Funzionamento in particolare del protocollo onion==
 
Ogni nodo che compone la rete prende il nome di ONION ROUTER (OR) mentre ogni [[Host]] che usufruisce di tale rete per veicolare anonimamente le proprie comunicazioni su internet prende il nome di ONION PROXY (OP). Riferendosi all'esempio precedente OP è Alice.
 
Quando un client desidera comunicare tramite questo sistema sceglie un percorso composto da diversi OR (N.B. se uso [[Tor_Tor (software)|Tor]] di default 3 OR), dove ogni OR conosce il nodo che lo precede e quello successivo ma non conosce gli altri nodi che compongono l'intero percorso. In questo modo il client OP può inviare i propri dati cifrati lungo il percorso di OR, dove ogni OR è in grado di decifrare e quindi leggere la porzione di dati ad esso destinata mediante una chiave simmetrica.
La stessa operazione viene eseguita per i restanti OR sul percorso fino a che i dati non arrivano a destinazione. I dati vengono inviati in celle di lunghezza fissa al fine di impedire qualsiasi correlazione tra la lunghezza dei dati inviati e la loro natura.
 
===Autenticazione OP-OR e autenticazione OR-OR===
 
Prima di iniziare qualsiasi connessione il client OP si connette al directory server e scarica la lista dei nodi OR disponibili e delle [[Crittografia_asimmetricaCrittografia asimmetrica|chiavi di identificazione]] di questi ultimi. Quando un client OP si connette ad un nodo ORx , ORx si autentica a OP inviandogli una catena composta da due [[Certificato_digitaleCertificato digitale|certificati]]: il primo certificato usando una chiave di connessione temporanea e il secondo certificato autofirmato contenente la chiave di identificazione del nodo ORx.
Il client OP può verificare la validità della chiave di identificazione fornita dal nodo ORx con quella scaricata dal directory server e rifiutare la connessione nel caso quest’ultima dovesse risultare [[Certificato_digitaleCertificato digitale|non valida]].
Due nodi OR invece eseguono una [[Autenticazione|mutua autenticazione]] utilizzando una procedura simile a quella descritta in precedenza: Un nodo ORx deve rifiutare una connessione a/da un ORy la cui chiave di identificazione non dovesse risultare valida o il cui certificato sia malformato o
mancante.
Riga 67 ⟶ 65:
===Trasmissione dei dati===
 
Una volta stabilita una connessione [[Transport_Layer_SecurityTransport Layer Security|TLS]] tra le due entità (OP-OR oppure OR-OR), esse incominciano a scambiarsi i dati in celle di lunghezza fissa pari a 512 byte che vengono inviate in maniera sequenziale, questo impedisce qualsiasi attacco di correlazione tra la lunghezza dei
dati e la natura del traffico stesso. La connessione TLS tra OP-OR oppure OR-OR non è permanente, una delle due parti coinvolte nella comunicazione può interrompere la connessione se non transitano dati per un tempo pari al KeepalivePeriod che di default vale 5 minuti.<ref name="carella"/>
 
===Formato delle celle===
 
I dati scambiati tra due entità all'interno di un sistema di Onion Routing prendono il nome di celle, esse hanno una grandezza fissa di 512 byte. Ogni cella è composta da 2 campi che hanno funzioni di controllo e dal [[Carico utile (informatica)|payload]] che contiene i dati trasmessi dall'applicazione.
[[File:Formato cella generica.png|thumb]]
 
* CircID: Serve ad indicare a quale circuito virtuale è associata la cella, infatti ogni nuova connessione effettuata da un’applicazione del client OP può essere instradata tramite un percorso di nodi OR differente.
 
* Command: In base al valore della cella Command si definisce la tipologia della cella. Contiene il valore relativo ad uno dei comandi supportati dalle specifiche del protocollo e può assumere i seguenti valori:
 
Riga 85 ⟶ 82:
# DESTROY (Chiude un circuito)
# CREATE_FAST (Crea un circuito)
# CREATED_FAST (Conferma Creazione)
 
* Payload: Contiene i dati che devono essere trasmessi all’altro nodo, ma il suo contenuto può variare a seconda del Command, infatti:
Riga 102 ⟶ 99:
====La cella CREATE====
 
Il client OP crea il circuito in maniera incrementale, un nodo alla volta. Per creare un nuovo circuito il client OP sceglie un percorso casuale tra i nodi OR disponibili e invia una cella CREATE al primo nodo, il payload della cella conterrà la prima parte dell'[[handshake]] [[Scambio_di_chiavi_DiffieScambio di chiavi Diffie-Hellman|Diffie Hellman]] (ovvero g^x).
Nel caso più semplice, ovvero se la lunghezza dei dati della cella è minore della lunghezza della [[chiave pubblica]] del nodo OR, la cella CREATE viene criptata con la chiave pubblica di OR.
 
Riga 112 ⟶ 109:
====Le celle RELAY====
 
A differenza delle celle CREATE e CREATED che sono scambiate tra nodi tra loro adiacenti, le celle RELAY sono utilizzate per veicolare flussi di dati e messaggi di controllo attraverso un circuito composto da più nodi.
 
=====La cella RELAY EXTEND=====
 
Per estendere il circuito di un ulteriore nodo il client OP invia una cella relay EXTEND che istruisce l'ultimo nodo OR ad inviare una cella CREATE per estendere il circuito verso il nodo OR desiderato.
 
=====La cella RELAY EXTENDED=====
Riga 125 ⟶ 122:
 
Nel payload di questa cella sono presenti, l’hostname o l’[[indirizzo IP]] nel formato [[IPv4]] o [[IPv6]] e la porta dell’[[Host]] a cui si desidera connettere (facendo riferimento all'esempio precedente si tratta di indirizzo e porta del server web di destinazione).
La cella RELAY BEGIN viene instradata lungo il circuito e viene processata dal nodo OR di uscita (Exit Node) che apre una nuova connessione [[Transmission_Control_ProtocolTransmission Control Protocol|TCP]] verso l'indirizzo e la porta specificati nel payload del pacchetto.
Se la connessione TCP va a buon fine il nodo OR di uscita invia una cella RELAY_CONNECTED al client OP che lo informa dell'avvenuta connessione.<ref name="carella"/>
 
==Passi di funzionamento del protocollo Onion Routing==
 
[[File:Passi di funzionamento.png|thumb]]
 
Riga 135 ⟶ 131:
 
# OP sceglie il nodo di uscita R2.
# OP calcola g^x1 (chiave pubblica di OP nello scambio DH) e lo invia a R1 lanella cella CREATE cifrandolacifrandolo con la chiave pubblica di R1.
# R1 decifra la cella CREATE con la propria chiave privata ottenendo g^x1.
# R1 calcola g^xyy1 (primachiave parte dell'handshakepubblica di Diffie-HellmanR1 nello scambio DH) e derivalo usa, assieme a g^x1 ed alla propria chiave privata dello scambio DH, per calcolare K1 (chiave di sessione fra OP e R1).
# R1 invia ad OP la cella CREATED contenente g^y1 e l'hash di K1 (in chiaro).
# OP calcola K1 (chiave di sessione fra OP e R1) da g^x1, g^y1 e dalla propria chiave privata dello scambio DH.
# OP calcola g^xy e deriva K1 (seconda parte dell'handshake di Diffie-Hellman).
# OP confrontacalcola i primi 20 bytel'hash di K1 derivatae conlo KH1confronta (di 20con byte)l'hash ricevutaricevuto nel payload della cella CREATED.
# OP e R1 si sono scambiati in modo sicuro la chiave di sessione K1, poiché grazie all'algoritmo di Diffie-Hellman hanno autonomamente calcolato la stessa chiave K1, senza mai doverla scambiare lungo il canale di connessione, pertanto viene creato il circuito virtuale tra OP e R1.
 
===Estensione del circuito===
 
# OP calcola g^x2 (chiave pubblica di OP nello scambio DH con R2) e invia a R1 la cella RELAY contenente nel payload, cifrato con K1, la specifica EXTEND, composta dall'indicazione che l'estensione va fatta verso R2 e da g^x2 cifrato con la chiave pubblica di R2.
# OP invia a R1 la cella RELAY EXTEND.
# R1 decifra con la chiave K1 soloil lapayload, partecapisce cifratache consi latratta chiavedi K1un dellaEXTEND cellae RELAYche EXTENDdeve essere per R2, costruisce una secondacella parteCREATE vieneper R2 e nel payload vi inserisce la parte cifrata da OP con la chiave pubblica di R2 in modo (che soloper R2R1 è possa'black decifrarlabox').
# R2 decifra la cella CREATE ricevuta, con la propria chiave privata ottenendo g^x2. Contestualmente crea l'abbinamento A1 tra il circuito che ha in essere con OP (c1) e il circuito che sta creando con R2 (c2), abbinamento che rimarrà noto solo a R1.
# R1 controlla e processa la parte di contenuto della cella che ha decifrato, leggendo il contenuto di uno specifico campo (il campo command=0 della cella inviata da OP a R1 significa RELAY EXTEND), capisce che si tratta di un RELAY EXTEND.
# R2 calcola g^y2 (chiave pubblica di R2 nello scambio DH con OP) e lo usa, assieme a g^x2 ed alla propria chiave privata dello stesso scambio DH, per calcolare K2 (chiave di sessione fra OP e R2).
# R1 controlla l’indirizzo IPv4 e la porta del nodo a cui estendere il circuito.
# R2 invia aad R1 la cella CREATED contenente g^y2 e l'hash di K2 (in chiaro).
# R1 estrae il payload della cellaRELAY EXTEND.
# R1 estrae il payload dalla cella CREATED e invia ad OP una cella RELAY contenente nel payload, cifrato con K1, la specifica EXTENDED, composta dal payload estratto (quello ricevuto da R2).
# R1 inserisce il payload estratto in una cella CREATE e la invia a R2.
# OP decifra con la chiave K1 il payload, capisce che si tratta di EXTENDED e calcola K2 (chiave di sessione fra OP e R2) dal g^x2 che aveva calcolato al punto 1., da g^y2 e dalla propria chiave privata dello scambio DH con R2.
# R2 decifra la cella CREATE ricevuta, con la propria chiave privata.
# R2OP calcola g^xyl'hash di K2 e derivalo K2confronta (chiavecon dil'hash sessionericevuto franel OPpayload edella cella R2)EXTENDED.
# OP confronta i primi 20 byte di K2 derivata con KH ricevuta e quindi viene esteso il circuito virtuale (ora OP e R2 si sono scambiati in modo sicuro la chiave di sessione K2, nota solo a OP e a R2).
# R2 invia a R1 la cella CREATED (in chiaro).
# R1 estrae il payload dalla cella CREATED.
# R1 inserisce il payload estratto in una cella RELAY EXTENDED.
# R1 cifra header e payload della cella RELAY EXTEND con la propria chiave K1.
# R1 invia ad OP la cella RELAY EXTENDED.
# OP decifra con K1, calcola il valore g^xy e deriva K2.
# OP confronta i primi 20 byte di K2 derivata con KH ricevuta e quindi viene esteso il circuito virtuale (ora OP e R2 si sono scambiati in modo sicuro la chiave di sessione K2, nota solo a OP e a R2).
 
===Creazione della connessione===
 
# OP invia la cella RELAY BEGINcifrata acon R1K1 e con K2 contenente BEGIN.
# R1 decifra il payload con la chiave K1 soloottenendo una 'black box'. Avendo in sé l'abbinamento A1 invia la parteuna cifratacella RELAY al nodo R2 con K1payload la 'black box'.
# R2 decifra il payload con la chiave K2, controlla che i campi della cella siano coerenti quindi ne processa il payload.
# R1 invia la cella RELAY BEGIN al nodo R2, R2 decifra la cella ricevuta con la propria chiave K2.
# R2 ricava IP e Porta dell’host verso il quale deve aprire una connessione TCP eed esegue l'handshake con la apredestinazione.
# R2, controlla che i campi della cella siano coerenti quindi ne processa il payload.
# R2 invia ad R1 una cella RELAY cifrata con K2 e contenente CONNECTED.
# R2 ricava IP e Porta dell’host verso il quale deve aprire una connessione TCP e la apre.
# R2R1 invia ad OP una cella RELAY CONNECTEDcifrata acon K1 e contenente il payload ricevuto da R2 (che per R1 cifrataè con'black K2box').
# R1 cifra a sua volta con K1 e invia la cella RELAY CONNECTED a OP.
# OP decifra con la chiave K1 lo strato esterno, e decifra con la chiave K2 lo strato interno.
# OP ha quindi ricevuto la conferma dell’avvenuta connessione TCP.
Riga 175 ⟶ 164:
===Trasmissione dei dati===
 
Una volta che la connessione TCP viene stabilita i dati vengono veicolati sul circuito virtuale attraverso celle RELAY cifrate da OP con K1 e K2 e contenenti DATA con il tipo di richiesta (p.e. HTTP GET...).
 
==Debolezze del protocollo Onion==
 
==Debolezze del protocollo Onion==
===Timing analysis===
 
Una delle ragioni per cui le connessioni via Internet sono considerate anonime è dovuta alla capacità dei [[Internet Service Provider|service provider]] di internet di tracciare e registrare le connessioni tra i computer e quindi tra i nodi. Per esempio, quando una persona visita un particolare sito web, i propri dati possono essere messi al sicuro utilizzando una connessione HTTPS in modo tale che dati sensibili come password, e-mail, o altri dati personali non siano visibili da un utente esterno, ma rimane una registrazione della connessione stessa: in essa si vedono data e ora della connessione e la quantità di dati trasferiti.
 
Onion Routing crea e oscura il percorso che la [[Hypertext_Transfer_ProtocolHypertext Transfer Protocol#Messaggio_di_richiestaMessaggio di richiesta|Request]]/[[Hypertext_Transfer_ProtocolHypertext Transfer Protocol#Messaggio_di_rispostaMessaggio di risposta|response]] HTTP fa dal PC mittente al PC destinatario, in modo che non sia possibile collegare l'utente che ha fatto la Request al server onion che ospita il documento richiesto, con il server onion stesso. Restano comunque esistenti e quindi consultabili i record delle connessioni che sono avvenute fra i PC.
 
Chi analizza il traffico, opera proprio in questa maniera: si analizzano i records delle connessioni in un potenziale nodo mittente, cioè si prende un PC sospetto di essere un nodo mittente, si analizzano i suoi records , e si prova a fare il match di ora e data dei trasferimenti fra i record del potenziale nodo mittente, e un potenziale nodo destinatario.
Per esempio, un computer che, nelle sue registrazioni di connessioni, ha un record in cui un utente che ha utilizzato quel PC, ha trasferito esattamente 51 KB di dati verso un PC sconosciuto al tempo t: se in un secondo PC si legge nei record che anch'esso ha trasferito esattamente 51KB di dati verso un particolare sito web, allora con molta probabilità si trattava di due nodi onion che stavano scambiandosi informazioni.
 
[[Garlic routing]] è una variante dell'Onion Routing associata alla rete [[I2P]], che crittografa più messaggi insieme al fine di rendere più difficile l'analisi del traffico da parte di eventuali attaccanti.
Riga 193 ⟶ 181:
 
Anche se il messaggio inviato viene trasmesso incapsulato da diversi strati di crittografia, il lavoro dell'Exit node, essendo il nodo intermediario finale della catena, è quello di decifrare lo strato di crittografia più esterno e consegnare il messaggio al nodo destinatario.
Un Exit node compromesso sarebbe quindi in grado di acquisire i dati "grezzi" trasmessi, cioè [[password]], messaggi privati, numeri di carte di credito etc.
 
Le vulnerabilità dell'Exit node sono simili alle vulnerabilità delle [[Wi-Fi#Aspetti_positivi_e_negativiAspetti positivi e negativi|connessioni wireless]] non protette, dove i dati trasmessi da un utente della rete potrebbero essere [[sniffer|sniffati]] da un [[Cracker_Cracker (informatica)|attaccante]] o da un router attaccante. Entrambe le questioni sono risolte usando una connessione sicura [[end-to-end]] come SSL. Se si usa una connessione end-to-end criptata tra mittente e destinatario, nemmeno l'ultimo nodo intermediario della catena sarà in grado di visualizzare il messaggio originale.
 
==Note==
<references/>
 
{{portale|Sicurezzasicurezza informatica}}
 
[[Categoria:Sicurezza informatica]]
[[Categoria:Crittografia]]
[[Categoria:Sicurezza indi rete]]