Non riuscivo a capire perché nel Ciao client e Ciao server nel client SSL Handshake è necessario inviare al server ( pubblicamente ) un casuale numero e viceversa. Da questi numeri verrà generato un segreto pre-master che verrà inviato crittografato con la chiave pubblica del server. (A mio avviso, un segreto Pre-Master casuale potrebbe essere stato generato sin dall'inizio dal lato del client e inviato crittografato con la chiave pubblica del server)
Quindi, da questo Pre-Master entrambi possono generare un nuovo segreto Master che sarà lo stesso su entrambi i lati.
Ok, forse mi dirai che il segreto diretto è la risposta, ma se man-in-the-middle registra la sessione, conosce entrambi i numeri casuali, conosce il segreto del Pre-Master (diciamo che ha capito qual è la chiave privata del server), quindi probabilmente può generare il Master secret e decifrare tutti i dati.
Quindi, quali sono esattamente lo scopo di questi due numeri casuali? Perché il client non può generare entrambi 2 numeri casuali e inviarli al server e uno deve essere generato dal lato client mentre l'altro dal lato server? Questi 2 numeri devono essere numeri primi o altro?