Dopo aver letto questa spiegazione impressionante di come funziona SSL , ora ho una confusione.
La risposta afferma che i primi messaggi di SSL sono ClientHello e ServerHello (in risposta a ClientHello). Entrambe le quali non sono criptate, correggimi se sbaglio. Inoltre, il client non inizia l'invio crittografato finché non viene emesso ChangeCipherSpec .
Quindi ClientHello e ServerHello contengono "client random" e "server random" e anche l'ID di sessione. Ora AFAIK i dati vengono crittografati utilizzando una chiave di crittografia simmetrica, ovvero il client e il server hanno entrambi una copia della stessa chiave e la crittografia / decrittografia viene eseguita tramite quella singola chiave per quella sessione SSL.
E non è che la chiave supponga di essere calcolata usando "client random" e "server random" ?
Quindi se ClientHello e ServerHello sono entrambi in chiaro, l'autore dell'attacco non può semplicemente utilizzare lo stesso algoritmo del client e generare la propria chiave simmetrica e conversare con il server impersonare il cliente?
Come è possibile? Cosa mi manca qui?
UPDATE: Le fasi di ServerKeyExchange e ClientKeyExchange si verificano anche prima di ChangeCipherSpec , quindi anche supposte non crittografate.