El algoritmo de resumen de mensajes MD4 es una función hash criptográfica desarrollada por Ronald Rivest en 1990. [3] La longitud del resumen es de 128 bits. El algoritmo ha influido en diseños posteriores, como los algoritmos MD5 , SHA-1 y RIPEMD . Las iniciales "MD" significan "Message Digest".
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 dos operaciones hash MD4. [2] 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. [4]
Las debilidades del MD4 fueron demostradas por Den Boer y Bosselaers en un artículo publicado en 1991. [5] Hans Dobbertin encontró el primer ataque de colisión del MD4 con ronda completa en 1995, que tardó sólo unos segundos en realizarse en ese momento. [6] 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). [2]
En 2008, la resistencia previa a la imagen del MD4 también fue rota por Gaëtan Leurent, con un ataque de 2.102 . [7] En 2010, Guo et al publicaron un ataque de 2 99,7 . [8]
En 2011, RFC 6150 declaró que RFC 1320 (MD4) es histórico (obsoleto).
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 veloz zorro marrón salta sobre el perro perezoso " )= 1bee69a46ba811185c194762abaeae90
Incluso un pequeño cambio en el mensaje dará como resultado (con una probabilidad abrumadora) un hash completamente diferente, por ejemplo, cambiando d
a c
:
MD4("El rápido zorro marrón salta sobre el perezoso engranaje ")= b86e130ce7028da59e672d56ad0113df
El hash de la cadena de longitud cero es:
MD4("") = 31d6cfe0d16ae931b73c59d7e0c089c0
Los siguientes vectores de prueba están definidos en RFC 1320 (Algoritmo de resumen de mensajes MD4)
MD4 ("") = 31d6cfe0d16ae931b73c59d7e0c089c0MD4 ("a") = bde52cb31de33e46245e05fbdbd6fb24MD4 ("abc") = a448017aaf21d8525fc10ae87aa6729dMD4 ("resumen de mensaje") = d9130a8164549fe818874806e1c7014bMD4 ("abcdefghijklmnopqrstuvwxyz") = d79e1c308aa5bbcdeea8ed63df412da9MD4 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = 043f8582f241db351ce627e153e7f0e4MD4 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = e33b4ddc9c38f2199c3e7b164fcc0536
Dejar:
k1 = 839c7a4d7a92cb 5 678a5d5 b 9eea5a7573c8a74deb366c3dc20a083b69f5d2a3bb3719dc69891e9f95e809fd7e8b23ba6318ed d 45e51fe39708bf9427e9 c3e8b9 k2 = 839c7a4d7a92cb d 678a5d5 2 9eea5a7573c8a74deb366c3dc20a083b69f5d2a3bb3719dc69891e9f95e809fd7e8b23ba6318ed c 45e51fe39708bf9427e9 c3e8b9
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 64 bytes.
{{cite journal}}
: Citar diario requiere |journal=
( ayuda )La obtención de una clave a partir de una contraseña se especifica en [RFC1320] y [FIPS46-2].
{{cite journal}}
: Citar diario requiere |journal=
( ayuda ){{cite journal}}
: Citar diario requiere |journal=
( ayuda )