Onion routing: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
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
# R1 decifra la cella CREATE con la propria chiave privata ottenendo g^x1.
# R1 calcola g^
# 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
# 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.
# R1 decifra con la chiave K1
# 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.
# 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 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).
# 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 invia a R1 la cella CREATED (in chiaro).
▲# 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
# R1 decifra il payload con la chiave K1
#
# R2 ricava IP e Porta dell’host verso il quale deve aprire una connessione TCP
▲# 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.
#
# 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==
|