Ho spesso sentito dire che se stai effettuando l'accesso a un sito web - una banca, GMail, qualunque cosa - tramite HTTPS, che le informazioni che trasmetti sono al sicuro dallo spionaggio di terze parti. Sono sempre stato un po 'confuso su come ciò sia possibile.
Certo, capisco abbastanza bene (credo) l'idea della crittografia e che senza conoscere la chiave di crittografia le persone avrebbero difficoltà a rompere la crittografia. Tuttavia, la mia comprensione è che quando viene stabilita una connessione HTTPS, la chiave di crittografia viene "discussa" tra i vari computer coinvolti prima che venga stabilita la connessione crittografata. Ci possono essere molti fattori coinvolti nella scelta di una chiave di crittografia, e so che ha a che fare con un certificato SSL che potrebbe provenire da qualche altro server. Non conosco il meccanismo esatto.
Tuttavia, mi sembra che se la chiave di crittografia deve essere negoziata tra il server e il client prima che il processo di crittografia possa iniziare, qualsiasi utente malintenzionato con accesso al traffico di rete sarebbe anche in grado di monitorare la negoziazione per la chiave e quindi conoscerebbe la chiave utilizzata per stabilire la crittografia. Ciò renderebbe la crittografia inutile se fosse vera.
È ovvio che questo non è il caso, perché HTTPS non avrebbe valore se lo fosse, ed è ampiamente accettato che HTTPS sia una misura di sicurezza abbastanza efficace. Tuttavia, non capisco perché non è vero. In breve: com'è possibile che un client e un server stabiliscano una connessione crittografata su HTTPS senza rivelare la chiave di crittografia a nessun osservatore?