Onion routing: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Botcrux (discussione | contributi)
m Bot, replaced: Categoria:Sicurezza in rete → Categoria:Sicurezza di rete
m Passi di funzionamento del protocollo Onion Routing: Ho specificato con maggior chiarezza come si svolgono i passi per questo protocollo.
Riga 130:
 
# 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 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 se 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 170 ⟶ 163:
===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==