En general, la autenticación basada en certificados consta de dos partes principales:
- A presenta un certificado a B y de alguna manera le demuestra a B que tiene acceso a la clave privada del certificado.
- B verifica que el contenido del certificado coincida con las expectativas. Estas expectativas suelen ser un emisor de confianza conocido por B, un tema específico, que el certificado no está vencido o revocado, etc. Pero también puede ser que B ya sepa el certificado exacto que se espera y solo compare el certificado o su huella digital con el conocido uno.
Estas partes podrían ser atacadas dentro de un ataque MITM de la siguiente manera:
- El atacante MITM presenta el certificado original de A a B.
Esto solo debería ser posible si el atacante tiene una clave privada coincidente. Suponiendo que el certificado no usa una clave débil en primer lugar, entonces el atacante necesita robar de alguna manera la clave privada original, por ejemplo, pirateando A. Pero también podría ser que la prueba de que el par tiene la clave privada para el certificado Está Mal. Por lo general, esta prueba se realiza firmando un desafío que se basa (al menos en parte) en datos aleatorios generados por el servidor. Si la verificación de la propiedad de la clave privada se implementa incorrectamente en B, es posible que el atacante pueda reproducir una prueba previamente enviada por A.
- El atacante MITM presenta su propio certificado (donde tiene la clave privada) a B.
En este caso, B debe ser engañado para creer que este certificado es válido para A. Normalmente, esto funciona si el certificado no es suficiente Validado en primer lugar, por ejemplo, al no validarlo en absoluto. También podría ser posible que el atacante pueda obtener un certificado válido de una CA en la que B haya confiado como emisor del certificado.
En otras palabras, si se implementa correctamente, no es posible MITM. Pero hay varias maneras en que podría haberse implementado incorrectamente.