Los ataques existentes se refieren a colisiones : el atacante construye dos certificados que contienen hash para el mismo MD5, pero con contenidos distintos. Uno de ellos es "benigno" (contiene el nombre del atacante) y este es el que el atacante envía a la CA para una firma. La CA lo firma porque es una solicitud de certificado perfectamente válida (proviene del atacante y realmente contiene el nombre del atacante). Gracias a la colisión de MD5, la firma es también verificable cuando se enchufa en el otro certificado. Así que el atacante obtuvo una firma de CA en un certificado en el que eligió los contenidos fuera de control de la CA. Los detalles son un poco complejos porque el atacante debe encontrar una colisión de tal manera que los dos certificados resultantes sean "estructuralmente válidos".
Lo que pides es algo muy diferente : estás preguntando por un atacante que intenta generar un certificado con un hash que coincida con el de un certificado existente , uno que El atacante no se generó en primer lugar. Esto se denomina segundo ataque de preimagen y generalmente es más difícil que encontrar colisiones. En particular, actualmente no hay debilidad conocida en MD5 con respecto a las segundas preimágenes.
Hay 2 128 salidas MD5 posibles (eso es 16 32 , no 32 16 ). En general, si tiene N mensajes de entrada m1 , m 2 , ... mN , y desea crear un nuevo mensaje m distinto de todos los m i pero tal que el MD5 de m es igual al MD5 de uno de los mi (cualquier testamento do), entonces el mejor método de ataque conocido es simplemente intentar mensajes aleatorios m hasta que uno coincida. El costo promedio de esa operación será 2 128 / N .
Probablemente hay mucho menos que 2 32 certificados SSL, así que esto significa que el costo del ataque será de al menos 2 96 , lo cual es totalmente inviable con los existentes. tecnología. Así que este ataque no funcionará. Romper una clave pública de CA será mucho más fácil (tampoco es factible, pero aún más fácil, alrededor de 1 millón si la clave de CA atacada es una clave RSA de 1024 bits).
En realidad, para los certificados, el ataque es más caro que eso, porque un certificado contiene el nombre de la CA emisora. Tener una firma coincidente de la CA (por ejemplo, mediante el uso del mismo MD5) no es suficiente para que el certificado resultante sea de alguna utilidad: también debe "encadenarse" adecuadamente con la CA, lo que implica que contiene el nombre de la CA como "nombre del emisor" . Por lo tanto, la N en la fórmula anterior no es el número total de certificados existentes en la naturaleza, sino el número total de certificados emitidos por una CA dada a los que debe dirigirse específicamente . Eso es más bajo, lo que produce un costo de ataque aún mayor.