MD4
El algoritmo de resumen de mensajes MD4 es una función hash criptográfica desarrollada por Ronald Rivest en 1990. La longitud del resumen es de 128 bits. El algoritmo ha influido en diseños posteriores, como los algoritmos MD5, SHA-1 y RIPEMD. El inicialismo "MD" significa "Resumen de mensajes".

La seguridad de MD4 se ha visto gravemente comprometida. El primer ataque de colisión total contra MD4 se publicó en 1995, y desde entonces se han publicado varios ataques más nuevos. A partir de 2007, un ataque puede generar colisiones en menos de 2 operaciones hash MD4. También existe un ataque teórico de preimagen.
Se utiliza una variante de MD4 en el esquema URI de ed2k para proporcionar un identificador único para un archivo en las populares redes P2P eDonkey2000/eMule. MD4 también fue utilizado por el protocolo rsync (antes de la versión 3.0.0).
MD4 se utiliza para calcular resúmenes de claves derivadas de contraseñas NTLM en Microsoft Windows NT, XP, Vista, 7, 8, 10 y 11.
Seguridad
Den Boer y Bosselaers demostraron las debilidades del MD4 en un artículo publicado en 1991. Hans Dobbertin encontró el primer ataque de colisión del MD4 con ronda completa en 1995, y en ese momento solo tardó unos segundos en realizarse. En agosto de 2004, Wang et al. encontró un ataque de colisión muy eficiente, junto con ataques a diseños de funciones hash posteriores en la familia MD4/MD5/SHA-1/RIPEMD. Este resultado fue mejorado posteriormente por Sasaki et al., y generar una colisión ahora es tan barato como verificarla (unos pocos microsegundos).
En 2008, la resistencia previa a la imagen del MD4 también fue rota por Gaëtan Leurent, con un ataque de 2102. En 2010, Guo et al publicaron un ataque de 299,7.
En 2011, el RFC 6150 declaró que el RFC 1320 (MD4) es histórico (obsoleto).
Hashes MD4
Los hashes MD4 de 128 bits (16 bytes) (también denominados resúmenes de mensajes) normalmente se representan como números hexadecimales de 32 dígitos. A continuación se muestra una entrada ASCII de 43 bytes y el hash MD4 correspondiente:
MD4("El zorro marrón rápido salta sobre el perezoso dog")
= 1bee69a46ba811185c194762abaeae90
Incluso un pequeño cambio en el mensaje dará como resultado (con una probabilidad abrumadora) un hash completamente diferente, p. cambiando d
a c
:
MD4("El zorro marrón rápido salta sobre el perezoso cog")
= b86e130ce7028da59e672d56ad0113df
El hash de la cadena de longitud cero es:
MD4(") = 31d6cfe0d16ae931b73c59d7e0c089c0
Vectores de prueba MD4
Los siguientes vectores de prueba están definidos en RFC 1320 (Algoritmo de resumen de mensajes MD4)
MD4 ("") = 31d6cfe0d16ae931b73c59d7e0c089c0 MD4 ("a") = bde52cb31de33e46245e05fbdbd6fb24 MD4 ("abc") = a448017aaf21d8525fc10ae87aaa6729d MD4 ("mensage digest") = d9130a8164549fe818874806e1c7014b MD4 ("abcdefghijklmnopqrstuvwxyz") = d79e1c308aa5bbcdeea8ed63df412da9 MD4 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = 043f8582f241db351ce627e153e7f0e4 MD4 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = e33b4ddc9c38f2199c3e7b164fcc0536
Ejemplo de colisión MD4
Dejemos:
k1 = 839c7a4d7a92cb5678a5d5b9eea5a7573c8a74deb366c3dc20a083b69f5d2a3bb3719dc69891e9f95e809fd7e8b23ba6318edd45e51fe39708bf9427e9c3e8b9 k2 = 839c7a4d7a92cbd678a5d529eea5a7573c8a74deb366c3dc20a083b69f5d2a3bb3719dc69891e9f95e809fd7e8b23ba6318edc45e51fe39708bf9427e9c3e8b9
k1 ≠ k2, pero MD4(k1) = MD4(k2) = 4d7e6a1defa93d2dde05b45d864c429b
Tenga en cuenta que dos dígitos hexadecimales de k1 y k2 definen un byte de la cadena de entrada, cuya longitud es de 64 bytes.
Contenido relacionado
Historia de la cámara
Tubo de vacío
Tecnología en la Edad Antigua