Quindi la tua domanda è fondamentalmente:
wouldn't the attacker, if operating your entrance node, be able to correlate the IP of the sender to [the recipient's] identity by identifying the key it's encrypted with
No perché il nodo di ingresso non conosce questa chiave. In breve, il client Tor crittografa il traffico prima che venga inviato al nodo di ingresso e il nodo di ingresso non può leggerlo. Per capire perché, devi sapere un po 'di come funziona Tor:
Il tuo client Tor seleziona tre nodi: il nodo di entrata, di mezzo e di uscita. Ogni nodo Tor ha la propria chiave pubblica e identificatore. Diciamo che il nodo di ingresso ha identificatore 0xC4, il nodo centrale ha 0x13 e il nodo di uscita ha 0x37. Diciamo che vogliamo trasmettere Message
a alice.example.net
.
Il tuo client Tor prima crittografa Message
e la destinazione alice.example.net
con la chiave pubblica del nodo di uscita, diciamo che diventa eu3AeShuC
.
Il tuo client Tor ora crittografa questo pacchetto crittografato, eu3AeShuC
, una seconda volta (utilizzando la chiave pubblica dal nodo centrale), aggiungendo la nuova destinazione: 0x37. Il pacchetto ora è ho7cieRaqhe
.
E infine il tuo client Tor crittografa questi dati una terza volta insieme a un'altra destinazione (0x13), usando la chiave pubblica del nodo di ingresso. Questo diventa egoo4eiReeth2Ief
. Il client invia questo pacchetto finale al nodo di ingresso.
Il nodo di ingresso riceve egoo4eiReeth2Ief
, lo decripta con la sua chiave privata e ottiene ho7cieRaqhe
e destinazione 0x13. Invia il messaggio a 0x13.
0x13, il nodo centrale, lo riceve e decrittografa il pacchetto utilizzando la sua chiave privata. Ottiene eu3AeShuC
e trova un'altra destinazione: 0x37. Viene inoltrato a 0x37.
Finalmente il nodo di uscita lo riceve, lo decrittografa con la sua chiave privata, vede Message
e la destinazione alice.example.net
, e lo invia lì. Questo è il motivo per cui ti consigliamo di utilizzare https quando accedi a siti Web pubblici (con estensione diverso) o PGP quando invii messaggi di posta elettronica: il nodo di uscita vede ciò che esce su Internet.
Questo è ovviamente un modello semplificato, ma ci dice che cosa sa ogni nodo: il nodo di ingresso conosce il tuo indirizzo IP, quindi può correlare il tuo indirizzo IP tra pacchetti e forse anche visite. Ma non ha idea di ciò che stai inviando o a chi stai inviando.
Il nodo centrale non ha mai la minima idea di nulla. Poverino.
Il nodo di uscita vede ciò che stai inviando, se non è crittografato (come con https) e chi stai inviando, ma non ha idea di dove provenga. Naturalmente se si usa la stessa identità di firma PGP ogni volta, il nodo di uscita sarebbe in grado di vedere questa identità, ma non è il punto di una firma che prova che eri tu, anche se "tu" qui è uno pseudonimo (non anonimo) persona?
Fai un esempio di Tor e PGP: Satoshi Nakamoto usava Tor e PGP. Prova la sua identità da PGP ma nasconde la sua posizione fisica (e quindi l'identità del mondo reale) usando Tor. Non credo che qualcuno sul pianeta sappia chi sia Satoshi Nakamoto se lui (o lei o loro) non volesse che loro lo sapessero. Tor è piuttosto buono all'anonimato se lo usi correttamente e sembra che Satoshi Nakamoto abbia fatto.