Estoy tratando de desarrollar un buen sentido de cómo funciona un administrador de SSL (MITM). Como lo entiendo, los MITM hacen su trabajo de una de dos maneras:
- Descifre el SSL teniendo una copia de la clave privada del servidor. Estrictamente hablando, esto no es MITM ya que el "dispositivo MITM" simplemente está escuchando a escondidas. La sesión SSL no se cambia
- Generar nuevos certificados sobre la marcha. Aquí, el dispositivo MITM reenvía al cliente hola, intercepta el certificado del servidor, genera y firma uno nuevo y lo reenvía al cliente. El cliente confía en el certificado o se le pide que confíe en él (si es autofirmado)
Sin embargo, hay limitaciones (y mitigaciones):
- El Cliente y el Servidor podrían acordar generar e intercambiar claves usando DHE_RSA (o una variante). El MITM no participaría en la generación clave. Pero, ¿no puede un MITM lo suficientemente sofisticado todavía generar claves de sesión que creen sesiones de ssl distintas en cualquier lado?
- ¿No iría lo mismo con el Secreto Maestro Extendido? Como se indicó anteriormente, si el MITM en realidad estuviera computando claves de sesión distintas, el Secreto maestro extendido no ayudaría a derrotar al MITM
- El servidor puede requerir un certificado de cliente. Pero si el MITM podría adquirir su propio certificado de cliente y la clave privada correspondiente, podría firmar con éxito los mensajes de reconocimiento de verificación de certificado
¿Estoy entendiendo todo esto correctamente? Parece que si un MITM tuviera acceso a suficiente material clave, podría descifrar cualquier sesión SSL.