Dada una conexión SSL / TLS específica, me gustaría saber cuál es la forma correcta de iniciar una renegociación de parámetros, solicitada desde el lado del cliente.
1) ¿Son requisitos del acuerdo anterior en los parámetros establecidos?
2) ¿Cuál es la estructura exacta del primer mensaje enviado por el cliente que solicita la renegociación?
3) ¿Cuáles son los siguientes mensajes intercambiados por el servidor y el cliente? Si son diferentes de un apretón de manos habitual, ¿de qué manera?
Gracias de antemano por sus respuestas
Preguntas adicionales después de la respuesta de Thomas Pornin:
A. Respecto a la RFC 5746
Ahora entiendo un poco mejor cómo funciona, sin embargo, todavía no entiendo por qué los parámetros de renegociación son un problema cuando un MITM lo lanza, de acuerdo con su enlace rfc5746 # section-1 . ¿Qué intereses tiene un MITM para solicitar una renegociación, ya que no sabrá de ninguna manera los secretos intercambiados (en particular, el secreto pre-maestro [PMS] enviado durante el ClientKeyExchanged).
Una vez que se realiza la renegociación, el MITM no tiene forma de descifrar los mensajes entrantes enviados desde el cliente / servidor.
Solo veo 2 posibilidades durante la renegociación para intercambiar el PMS:
- o bien el MITM proporciona su certificado al cliente, de modo que el cliente encripte el PMS con el certificado MITM. En ese caso, el cliente lo detecta fácilmente, ya que no es el certificado que está esperando;
- O bien, el MITM envía el certificado del servidor, pero en ese caso, el MITM no tendrá ninguna forma de descifrarlo y descifrar los siguientes mensajes intercambiados, ya que no habrá recuperado el PMS.
Entonces, ¿dónde está el problema de seguridad que permite cierta renegociación por el protocolo?
B. Respecto a la estructura
Usted subrayó que no había una estructura definida y precisa dada por el RFC. ¿Cómo el equipo de OpenSSL descubrió esto entonces? ¿Qué estructura eligieron?