Poiché le risposte sembrano essere dappertutto (sì, no, potrebbe essere, dovrebbe essere), vorrei prima reiterare la risposta di @ waiwai933: è sicuro.
Per essere precisi, hai chiesto: "Se quell'utente malintenzionato ha annusato tutti i miei pacchetti in entrata e in uscita, può calcolare le stesse chiavi e leggere anche il mio traffico crittografato o persino inviare messaggi crittografati al server a mio nome?" La risposta è no e no. Con una nota a piè di pagina.
La ragione per cui non riesce a calcolare le stesse chiavi sembra paradossale, e in effetti è stata una grande svolta nella crittografia quando è stata pubblicata per la prima volta da Diffie e Hellman. TLS utilizza un protocollo di scambio di chiavi, come Diffie-Hellman ma più sofisticato per proteggere dagli attacchi man-in-the-middle. Il protocollo consente a due persone che non hanno mai scambiato informazioni prima di calcolare una chiave segreta che nessuno può vedere tutti i messaggi può calcolare.
Una volta che hai una chiave segreta condivisa, puoi usarla per crittografare il tuo traffico. Poiché l'utente malintenzionato non conosce la chiave, non può crittografare il traffico che sembra provenire da te.
Ora quelle note.
- Supponiamo che il protocollo SSL / TLS sia corretto. Con la maggior parte dei protocolli crittografici coinvolti, i bug vengono individuati e risolti di volta in volta. SSL / TLS ha avuto un bug recente (menzionato in alcune risposte come motivo per cui non è sicuro), tuttavia è stato temporaneamente risolto e ora corretto (RFC 5746) e la correzione è in varie fasi di distribuzione. (Nel tuo scenario, il bug permetteva a un utente malintenzionato di inviare pacchetti nel tuo nome ma non di leggere il tuo traffico.) È sempre possibile che l'utente malintenzionato sappia come interrompere TLS / SSL a causa di un errore non pubblicato nel protocollo.
- Un punto ovvio, ma vale la pena ripetere: l'utente malintenzionato potrebbe vedere la tua richiesta e inviare la propria risposta utilizzando il proprio certificato. Quindi controlla il certificato.
- Forse un altro punto ovvio: puoi essere certo che SSL / TLS verrà utilizzato per le pagine future se la pagina corrente è HTTPS. Ad esempio, se ci si trova su una pagina HTTP che richiede l'accesso e dall'esperienza passata si sa che facendo clic sul pulsante di accesso si reindirizzerà a una connessione HTTPS, questa funzionalità potrebbe essere eliminata da un utente malintenzionato attivo sulla tua rete. Quindi accedi solo a pagine che sono già HTTPS (a meno che tu non sappia come rilevare se la pagina di accesso è stata modificata).