Onion routing: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m smistamento lavoro sporco e fix vari |
Ortografia |
||
Riga 131:
# OP sceglie il nodo di uscita R2.
# OP calcola g^x1 (chiave pubblica di OP nello scambio DH) e lo invia a R1 nella cella CREATE cifrandolo con la chiave pubblica di R1.
# R1 decifra la cella CREATE con la propria chiave privata ottenendo g^x1.
# R1 calcola g^y1 (chiave pubblica di R1 nello scambio DH) e lo 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 l'hash di K1 e lo confronta con l'hash ricevuto 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.
Riga 141:
===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.
# R1 decifra con la chiave K1 il payload, capisce che si tratta di un EXTEND e che deve essere per R2, costruisce una cella CREATE per R2 e nel payload vi inserisce la parte cifrata da OP con la chiave pubblica di R2 (che per R1 è 'black box').
# 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.
Riga 147:
# R2 invia ad R1 la cella CREATED contenente g^y2 e l'hash di K2 (in chiaro).
# 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.
# OP calcola l'hash di K2 e lo confronta con l'hash ricevuto nel payload della cella EXTENDED.
#OP e R2 si sono scambiati in modo sicuro la chiave di sessione K2, nota solo a OP e a R2.
Riga 154:
# OP invia la cella RELAY cifrata con K1 e con K2 contenente BEGIN.
# R1 decifra il payload con la chiave K1 ottenendo una 'black box'. Avendo in
#R2 decifra il payload con la chiave K2, controlla che i campi della cella siano coerenti quindi ne processa il payload.
# R2 ricava IP e Porta dell’host verso il quale deve aprire una connessione TCP ed esegue l'handshake con la destinazione.
|