Data una specifica connessione SSL / TLS, vorrei sapere qual è il modo corretto di avviare una rinegoziazione dei parametri, richiesta dal lato client.
1) Sono previsti requisiti dall'handshake precedente nei parametri stabiliti?
2) Qual è la struttura esatta del primo messaggio inviato dal client che chiede la rinegoziazione?
3) Quali sono i successivi messaggi scambiati dal server e dal client. Se sono diversi da una solita stretta di mano, in che modo?
Grazie in anticipo per le tue risposte
Ulteriori domande dopo la risposta di Thomas Pornin:
A. Per quanto riguarda la RFC 5746
Ora capisco un po 'meglio come funziona, tuttavia non riesco ancora a capire perché i parametri di rinegoziazione siano un problema quando un MITM lo lancia, secondo il tuo link rfc5746 # section-1 . Ciò che interessa è che un MITM richieda una rinegoziazione, poiché non conoscerà in alcun modo i segreti scambiati (in particolare il pre-master secret [PMS] inviato durante il ClientKeyExchanged).
Una volta effettuata la rinegoziazione, il MITM non ha modo di decodificare i messaggi in arrivo inviati dal client / server.
Vedo solo 2 possibilità durante la rinegoziazione per lo scambio del PMS:
- il MITM fornisce il suo certificato al client, in modo che il client crittografi il PMS con il certificato MITM. In tal caso, il client lo rileva facilmente, poiché non è il certificato che sta aspettando;
- il MITM inoltra il certificato del server, ma in tal caso il MITM non avrà alcun modo di decrittografarlo e decrittografare i seguenti messaggi scambiati, poiché non avrà recuperato il PMS.
Quindi dov'è il problema di sicurezza che consente la rinegoziazione del protocollo?
B. Riguardo la struttura
Hai sottolineato che non vi era una struttura definita e precisa fornita dalla RFC. Come ha fatto questo il team di OpenSSL a capirlo? Quale struttura hanno scelto?