Resumen

  • El RFC 1186 registró 1.450.000 bytes por segundo en un Sun SPARC, unos 70.000 en un DEC MicroVAX II y unos 32.000 en un 80286 de 20 MHz. La dificultad de producir una colisión seguía siendo una conjetura.
  • El RFC 1320 sustituyó al documento de 1990 con código de referencia más portable. El RFC 6150 trasladó MD4 al estado histórico en 2011 tras los ataques documentados.

La hoja de ventas más convincente de MD4 no decía «rápido». Daba tres velocidades y nombraba las máquinas. En el RFC 1186 de octubre de 1990, Ronald Rivest presentó un algoritmo que comprimía mensajes de cualquier longitud en una huella de 128 bits. El uso propuesto incluía preparar un archivo grande para una firma RSA. Para quien tuviera que incorporar la función a un programa, la promesa de rendimiento tenía un anexo de código C y resultados observables.

El Sun SPARC alcanzaba 1.450.000 bytes por segundo; el DEC MicroVAX II, aproximadamente 70.000; un 80286 de 20 MHz, aproximadamente 32.000. Esas cifras pertenecían a tres entornos determinados. El algoritmo tampoco necesitaba grandes tablas de sustitución, otra ventaja práctica para una implementación compacta. El RFC explicaba palabras de 32 bits, bloques de 512 bits, relleno y longitud original del mensaje. El programa se podía leer, compilar y discutir.

La resistencia criptográfica pedía otra clase de prueba. El documento calificaba de conjetura que encontrar dos mensajes con la misma huella requiriera alrededor de 2^64 operaciones y que recuperar un mensaje para una huella elegida exigiera unas 2^128. Rivest pedía más análisis de un algoritmo todavía nuevo. Ejecutar el código un millón de veces medía su rapidez; un atacante que encontrara un atajo cambiaría el valor de la otra cifra de golpe.

El texto puso MD4 en el dominio público para su examen y posible adopción como estándar. El RFC era informativo, sin rango de estándar de Internet. Ese trámite tenía sentido: fijar una descripción común permitía que implementadores y criptoanalistas trabajaran sobre el mismo objeto. La apertura del código aceleraba ambos trabajos.

En abril de 1992 llegó el RFC 1320. Sustituyó al RFC 1186 y señaló como diferencia principal una implementación de referencia más portable. También incorporó un identificador para aplicaciones OSI. Las instrucciones para llevar MD4 a otros sistemas mejoraron; la pregunta sobre las colisiones seguía sobre la mesa.

El RFC 6150 dejó constancia del desenlace. Un ataque práctico de 1996 redujo la complejidad estimada de obtener colisiones a 2^20 cálculos MD4; un resultado de 2004 la llevó a 2^8. En marzo de 2011 el IETF movió RFC 1320 a Historic y recomendó retirar MD4 en favor de alternativas existentes como SHA-256. El informe también enumeró usos residuales, incluida una vía de compatibilidad de Microsoft. La decisión editorial cabía en una página de estado; sacar el algoritmo de productos y acuerdos llevaba más tiempo.

MD4 entró en la historia con números de rendimiento exactos y una hipótesis de seguridad abierta. Salió del catálogo de opciones recomendables con números de ataque mucho más pequeños. El contraste está en los documentos originales, sin necesidad de inventar una víctima ni un desastre.

Fuentes