Estoy leyendo Redes informáticas de Tanenbaum y Weatherall. En el capítulo 8, describen la comunicación segura mediante el intercambio de claves públicas mediante certificados. Describen una situación en la que Alice está enviando mensajes a Bob y un hombre en el medio (Trudy) está tratando de interceptar los mensajes de Alice. Describen lo que Trudy puede hacer para intentar engañar a Alice y hacerle creer que se está comunicando con Bob. La conclusión que sacan es que ella no puede.
Sin embargo, hay una situación no cubierta:
Supongamos que Bob tiene un certificado que contiene su clave pública y un hash firmado por una Autoridad de Certificación. Él pone este certificado a disposición de cualquiera, como es práctica común
Trudy obtiene el certificado de Bob y lo modifica reemplazando la clave pública de Bobs con la propia.
Trudy intercepta la solicitud de Alice para la página de Bob. Trudy devuelve una página falsa a Alice que contiene el certificado modificado. Cuando Alice recibe esta página falsa, ve que cuando ejecuta el algoritmo SHA-1 en el certificado, obtendrá un hash que concuerda con el que obtiene cuando aplica la clave pública de CA al bloque de firmas (el bloque de firmas no tiene cambiado del original de Bob). Así que Alice encripta su mensaje a Bob usando la clave pública de Trudy (Trudy puso esto en el certificado cuando lo modificó). Trudy ahora puede descifrar y leer el mensaje que intercepta de Alice.
¿Funcionará el escenario anterior?