Algoritmo md5
El algoritmo MD5 es una función hash criptográfico que proporciona la huella digital de un archivo (a menudo llamado mensaje). Fue inventado por Ronald Rivest en 1991.
El uso de esta función hash de la firma digital puede dar lugar a múltiples escenarios de ataque y ya no se considera un componente fiable de la infraestructura de clave pública. Sin embargo, en el cálculo de la «firma» de un archivo que es bastante fiable, aunque no podemos asegurar que no hay unidad entre la huella calculada y el archivo de origen o el mensaje.
Al principio, la función MD5 se considera seguro, pero con el tiempo, los defectos fueron descubiertos en su aplicación y en el verano de 2004, que fue roto por los investigadores chinos, Xiaoyun Wang, Dengguo Feng, Xuejia Lai (famoso co-inventor del algoritmo de cifrado IDEA) y Hongbo Yu. Su ataque ha puesto al descubierto una colisión completa (dos mensajes diferentes que producen el mismo espacio) sin necesidad de utilizar un método de este tipo de investigación exhaustiva.
En un sistema agrupado, los cálculos tomaron sólo unas pocas horas. MD5 ya no se considera seguro, pero el algoritmo desarrollado por estos tres investigadores implica cualquier colisión y no logra una colisión en una huella específica, es decir, hacer una segundo mensaje a de la impresión de un primer mensaje, lo que produciría el mismo espacio. Un proyecto de computación distribuida lanzado en marzo de 2004, MD5CRK, con el objetivo de encontrar una colisión completa, pero se detuvo de repente después del descubrimiento de la selección china. La seguridad de MD5 no puede ser garantizada por su definición criptográfica, los expertos recomiendan el uso de las últimas funciones de hash como SHA-256.
Ahora sabemos generar colisiones MD5 en menos de un minuto cuando los dos bloques colisiones son «libres». También se puede generar una infinidad de colisión con un texto T a partir de dos mensajes M1 y M2 de la misma longitud que están chocando. Sólo concatenar M1 y M2 con T, de tal forma que T1 = T2 y M1 + T = T + M2, para obtener una colisión total entre T1 y T2. Sin embargo, no se puede generar una firma en particular y la falsificación de documentos sigue siendo un ejercicio difícil.
Es posible, por ejemplo para crear páginas HTML con contenido muy diferente y sin embargo tienen el mismo MD5. La presencia de metacódigo de «atasco» se ha comentado, pueden ser vistos en la fuente de la página web, sin embargo, traiciona las páginas modificadas para que simule el MD5 otra. El engaño puede ser levantado si examinamos las fuentes de la página en cuestión.
MD5 está trabajando con un mensaje de tamaño variable y produce un hash de 128 bits. El mensaje se divide en bloques de 512 bits, se aplica de llenado de manera que tenga un mensaje cuya longitud es un múltiplo de 512. El relleno es el siguiente:
-La adición de un 1 al final del mensaje;
– Se añade una secuencia de ‘0’ (el número de ceros depende de la longitud del relleno necesario);
– Escribimos el tamaño del mensaje, un número entero codificado en 64 bits.
Este relleno se aplica siempre, incluso si la longitud del mensaje se puede dividir por 512. Este método de relleno es similar a la utilizada en la mayoría de resumen de mensaje algoritmos familias MD (como MD5 o RIPEMD) o SHA (SHA-1 o SHA-512), pero diferente de la del algoritmo de Tiger que utiliza uno de los llamados bits de pequeñas convenciones endian de programación en cada byte.
El tamaño del mensaje se codifica en Little Endian. El mensaje ahora tiene un tamaño de un múltiplo de 512 bits, es decir que contiene un múltiplo de 16 palabras de 32 bits.