Sto cercando di sviluppare un buon senso di come funziona un SSL man-in-the-middle (s) (MITM). A quanto ho capito, i MITM fanno il loro lavoro in due modi:
- Decifra il protocollo SSL con una copia della chiave privata del server. A rigor di termini, questo non è il MITM poiché il "dispositivo MITM" sta semplicemente ascoltando. La sessione SSL non è stata modificata
- Genera nuovi certificati al volo. Qui, il dispositivo MITM inoltra il client ciao, intercetta il server cert, genera e ne firma uno nuovo e inoltra al client. Il cliente si fida del certificato o gli viene chiesto di fidarsi (se è autofirmato)
Ci sono limitazioni (e attenuazioni), però:
- Il client e il server potrebbero accettare di generare e scambiare le chiavi utilizzando DHE_RSA (o una variante). Il MITM non parteciperebbe alla generazione delle chiavi. Ma un MITM abbastanza sofisticato non può ancora generare chiavi di sessione che creano sessioni ssl distinte su entrambi i lati?
- Non sarebbe lo stesso per il Master Secret esteso? Come sopra, se il MITM stava effettivamente calcolando distinte chiavi di sessione, il Master Secret esteso non aiuterebbe a sconfiggere il MITM
- Il server potrebbe richiedere un certificato client. Ma se il MITM potesse acquisire il proprio certificato client e la corrispondente chiave privata, potrebbe firmare con successo i messaggi di verifica del certificato Verify
Sto comprendendo tutto questo correttamente? Sembra che se un MITM avesse accesso a un numero sufficiente di materiale chiave, potrebbe decodificare con successo qualsiasi sessione SSL.