Ho letto molto sull'handshake SSL / TLS tra un client e un server e molti articoli su di esso sono molto contraddittori.
Alcuni dicono che la chiave simmetrica che verrà utilizzata per comunicare tra le due parti viene trasmessa dal client al server (ofc, crittografata con la chiave pubblica del server) e il gioco è fatto.
Alcuni dicono che viene usato un algo DH e prima il client invia un segreto pre-master per aiutare a generare la chiave condivisa (perché è il criptato pre-master criptato in primo luogo, un attaccante non otterrà alcun segreto info).
La confusione è il flusso generale della generazione sulla chiave simmetrica condivisa. a) Il DH viene utilizzato (e in caso contrario, come viene generata la chiave simmetrica, il client la suggerisce, la invia tramite crittografia RSA e basta?)
E b) Se viene utilizzato il DH, chi inizia per primo? Ci deve essere qualcuno che per prima cosa suggerisce i numeri primi generali da utilizzare per generare il segreto, e quindi invia il loro calcolo (o è l'intero algo determinato in anticipo)?