Come l'altro ha affermato, la connessione iniziale non è protetta e contiene almeno l'indirizzo IP (anche se sempre più il nome del server, grazie a SNI). Il server di destinazione risponde con un certificato di chiave pubblica e negozia la sessione SSL / TLS.
La chiave per evitare gli attacchi man in the middle è il certificato e il fatto che sia stato approvato da un'autorità di certificazione che il tuo browser ha fiducia.
Supponiamo che tu abbia un hacker che intercetta le comunicazioni tra un client e un server. Il cliente ha chiesto una connessione sicura al collegamento del sito web (ad esempio). L'hacker può inviare la richiesta al sito Web reale e ritrasmettere le risposte. L'hacker sarà anche in grado di leggere la prima risposta da server a client poiché è un testo normale. Tuttavia non può leggere il messaggio successivo dal client al server poiché è crittografato con la chiave pubblica del sito Web e quindi può essere decifrato solo con la chiave privata (che l'hacker non ha). Poiché questi messaggi successivi vengono utilizzati per negoziare la chiave da utilizzare per la connessione SSL / TLS effettiva, l'hacker è fondamentalmente bloccato dopo quel primo messaggio.
In alternativa, invece di agire come un relè diretto, l'hacker può fornire un falso cert (a cui conosce la chiave privata) per la connessione client-hacker e quindi può impostare la propria connessione e passaggio del server hacker messaggi tra i due. Tuttavia in questo scenario, a meno che non siano riusciti a compromettere uno dei principali emittenti di certificati che il browser client accetta automaticamente, ci sarebbe un grande lucchetto rosso che dice che il certificato che l'hacker ha restituito al client è 1) non reale o 2 ) non per questo sito Web.
La maggior parte degli attacchi MITM dipende dal mantenere la connessione su standard http. Ad esempio, vai su www.mybank.com (quindi il browser prova http: // come impostazione predefinita in quanto non hai specificato un protocollo). Normalmente la banca ti reindirizza a link ma invece l'hacker intercetta tale reindirizzamento e ti mantiene su http per la connessione client-hacker ma imposta un corretta connessione https da hacker a server. In questo scenario, l'hacker spera che gli utenti non si accorgano che non esiste un lucchetto verde e che non sono passati a https. Gli hacker sono piuttosto sfortunati se l'utente passa direttamente a https.