MD4 es un algoritmo de resumen del mensaje (el cuarto en la serie) diseñado por el profesor Ronald Rivest del MIT. Implementa una función criptográfica de hash para el uso en comprobaciones de integridad de mensajes. La longitud del resumen es de 128 bits. El algoritmo ha influenciado diseños posteriores, tales como el MD5, el SHA o elRIPEMD-160.
Ciertas debilidades en MD4 fueron demostradas por Den Boer y Bosselaers en un documento publicado en 1991. Muchos de los diseños posteriores de resumen del mensaje basados en él siguen siendo seguros, en el sentido que no se ha publicado ningún ataque eficaz contra ellos.
En agosto del año 2004, unos investigadores divulgaron la generación de colisiones de hash en MD4 usando "cálculo a mano".
El Message-Digest Algorithm MD4 Estado de Memo thie Este memorándum proporciona información para la comunidad de Internet. Lo hace no especifica un estándar de Internet. La distribución de este memo es ilimitado. AGRADECIMIENTOS Nos gustaría dar las gracias a Don Calderero, Burt Kaliski, Ralph Merkle, y Noam Nisan para numerosos comentarios útiles y sugerencias. Tabla de contenido 1. Resumen Ejecutivo 1 2. Terminología y Notación 2 3. MD4 Algoritmo Descripción 2 4. Resumen 6 Referencias 6 ANEXO A - Referencia de Aplicación 6 Consideraciones de seguridad 20 Dirección del autor 20 1. Resumen Ejecutivo Este documento describe el algoritmo de digerir mensaje MD4 [1]. La algoritmo toma como entrada un mensaje de longitud arbitraria y produce como salida una "huella digital" de 128 bits o "resumen del mensaje" de la entrada. Se conjetura que es computacionalmente imposible para producir dos mensajes habiendo el mismo mensaje de digerir, o para producir cualquier mensaje que tiene un mensaje de destino especificado previamente dado resumen. La MD4 algoritmo está diseñado para aplicaciones de firma digital, donde un archivo grande debe ser "comprimido" de manera segura antes de ser cifrada con una clave privada (secreta) en virtud de un criptosistema de clave pública tales como RSA. El algoritmo MD4 está diseñado para ser muy rápido en máquinas de 32 bits. En Además, el algoritmo MD4 no requiere ninguna sustitución gran tablas; el algoritmo puede ser codificado bastante compacta. Rivest [Página 1] RFC 1320 MD4 Message-Digest Algorithm abril 1992 El algoritmo MD4 se pone en conocimiento del público para su revisión y posible adopción como norma. Este documento sustituye a la RFC 1186 10 1990 [2]. La principal diferencia es que la implementación de referencia de MD4 en el apéndice es más portátil. Para las aplicaciones basadas en OSI, identificador de objeto de MD4 es md4 OBJETO IDENTIFICADOR :: = {Iso (1) miembro del cuerpo (2) Estados Unidos (840) RSADSI (113.549) digestAlgorithm (2) 4} En el tipo X.509 AlgorithmIdentifier [3], los parámetros para MD4 debe tener el tipo NULL. 2. Terminología y notación En este documento una "palabra" es una cantidad de 32 bits y un "byte" es un Cantidad de ocho bits. Una secuencia de bits se puede interpretar de una de manera natural como una secuencia de bytes, donde cada grupo consecutivo de ocho bits se interpreta como un byte con el alto orden (más significativo) bit de cada byte aparece en primer lugar. Del mismo modo, una secuencia de bytes puede ser interpretada como una secuencia de palabras de 32 bits, donde cada grupo consecutivo de cuatro bytes se interpreta como una palabra con el de orden inferior (menos significativo) Byte dado por primera vez. Vamos x_i denotan "x sub i". Si el subíndice es una expresión, se rodearla entre llaves, como en x_ {i + 1}. Del mismo modo, se utiliza para ^ superíndices (exponenciación), de modo que x ^ i denota x para el i-th de energía. Deje el símbolo "+" denota adición de palabras (es decir, módulo 2 ^ 32 Además). Sea X <<< s denotan el valor de 32 bits obtenida por circularmente desplazamiento (rotación) X dada por posiciones s bits. No Sea (X) denota la bit a bit complemento de X, y sea X v Y denotan el nivel de bits de X y Y. Sea X xor Y denotan el XOR bit a bit de X e Y, y dejó XY denotar el sabio bit-Y de X e Y. 3. MD4 Algoritmo Descripción Comenzamos suponiendo que tenemos un mensaje b bits como entrada, y que deseamos encontrar su resumen del mensaje. Aquí b es un arbitrario entero no negativo; b puede ser cero, no tiene que ser un múltiplo de ocho, y puede ser arbitrariamente grande. Nos imaginamos los bits de la mensaje escrito de la siguiente manera: m_0 m_1 ... m_ {b-1} Rivest [Página 2] RFC 1320 MD4 Message-Digest Algorithm abril 1992 Los siguientes cinco pasos se realizan para calcular el resumen del mensaje del mensaje. 3.1 Paso 1. Anexar Relleno Bits El mensaje se "rellena" (extendida) de forma que su longitud (en bits) es congruente con 448, módulo 512. Es decir, el mensaje se extiende por lo que está a sólo 64 bits de tímido de ser un múltiplo de 512 bits de longitud. El relleno se realiza siempre, incluso si la longitud del mensaje es ya congruente con 448, módulo 512. El relleno se realiza como sigue: un solo bit "1" se añade a la mensaje, y luego "0" bits se añaden de manera que la longitud en bits de el mensaje de acolchado convierte en congruente con 448, módulo 512. En total, al menos un poco, y como máximo 512 bits se anexan. 3.2 Paso 2. Anexar Longitud Una representación de 64 bits de b (la longitud del mensaje antes de la bits de relleno fueron añadidos) se añade al resultado de la anterior paso. En el improbable caso de que b es mayor que 2 ^ 64, entonces sólo se utilizan los de orden inferior 64 bits de b. (Estos bits se adjuntan como dos Palabras y palabra de menor adjunta primera, de acuerdo con la de 32 bits convenciones anteriores.) En este punto el mensaje resultante (después de relleno con los bits y con b) tiene una longitud que es un múltiplo exacto de 512 bits. De manera equivalente, Este mensaje tiene una longitud que es un múltiplo exacto de 16 (32-bit) palabras. Sea M [0 ... N-1] denotan las palabras del mensaje resultante, donde N es un múltiplo de 16. 3.3 Paso 3. Inicializar MD Buffer Un tampón de cuatro palabras (A, B, C, D) se utiliza para calcular el resumen del mensaje. Aquí cada uno de A, B, C, D es un registro de 32 bits. Estos registros son inicializado a los siguientes valores en hexadecimal, bytes de orden inferior primero): Una palabra: 01 23 45 67 palabra B: 89 ab cd ef palabra C: FE DC ba 98 palabra D: 76 54 32 10
No hay comentarios:
Publicar un comentario