domingo, 15 de marzo de 2015

criptografía - funciones hash criptográficas

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