You are on page 1of 29

Elaborado por: Aythami Ramrez Medina Antonio Perera Prez Josu Garca Vlchez

Historia Introduccin Algoritmo Conclusin Bibliografa

MD5 es uno de los algoritmos de reduccin criptogrficos diseados por el profesor Ronald Rivest del MIT (Massachusetts Institute of Technology, Instituto Tecnolgico de Massachusetts). Fue desarrollado en 1991 como reemplazo del algoritmo MD4 despus de que Hans Dobbertin descubriese su debilidad. A pesar de su amplia difusin actual, la sucesin de problemas de seguridad detectados desde que, en 1996, Hans Dobbertin anunciase una colisin de hash, plantea una serie de dudas acerca de su uso futuro.

La criptografa asimtrica permite identificar al emisor y al receptor del mensaje. Para identificar el mensaje propiamente dicho se utilizan las llamadas funciones resumen (en ingls, hash).

El resultado de aplicar una funcin resumen a un texto es un nmero grande, que cumple una series de caractersticas :
Todos los nmeros resumen generados con un mismo mtodo tienen el mismo tamao sea cual sea el texto utilizado como base. Dado un texto base, es fcil y rpido (para un ordenador) calcular su nmero resumen. Es imposible reconstruir el texto base a partir del nmero resumen. Es imposible que dos textos base diferentes tengan el mismo nmero resumen.

Las funcin de hash es una funcin para resumir o identificar probabilsticamente un gran conjunto de informacin, dando como resultado un conjunto imagen finito generalmente menor. Una propiedad fundamental del hashing es que si dos resultados de una misma funcin son diferentes, entonces las dos entradas que generaron dichos resultados tambin lo son. Son usadas en mltiples aplicaciones, como los arrays asociativos, criptografa, procesamiento de datos y firmas digitales, entre otros. Una buena funcin de hash es una que experimenta pocas colisiones en el conjunto esperado de entrada; es decir que se podrn identificar unvocamente las entradas

En criptografa, MD5 (abreviatura de Message-Digest Algorithm 5, Algoritmo de Resumen del Mensaje 5) es un algoritmo de reduccin criptogrfico de 128 bits ampliamente usado en la actualidad. Ejemplo: El siguiente cdigo de 28 bytes ASCII ser tratado con MD5 y veremos su correspondiente hash de salida:

MD5("Esto s es una prueba 02306f485f385f6ed9ab6626052a633d

de

MD5")

Este algoritmo del md5 se divide en 5 paso totalmente diferenciados:


1. 2. 3. 4. 5. Adicin de bits Longitud del mensaje Inicializar el bfer MD Procesado del mensaje en bloque de 16 palabras Salida

Mensaje a codificar: Hello World!


Se pasa el mensaje a binario: 01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100 00100001 Se mira cual es la longitud del mensaje en bits: 12 * 8 = 96 bits

El mensaje ser extendido hasta que su longitud en bits sea congruente con 448, mdulo 512. En todos los mensajes se aade al menos un bit y como mximo 512. Congruente: dos nmeros enteros y tienen el mismo resto al dividirlos por un nmero natural , llamado el mdulo. La extensin se realiza como sigue: un solo bit "1" se aade al mensaje, y despus se aaden bits "0" hasta que la longitud en bits del mensaje extendido se haga congruente con 448, mdulo 512. Aunque el mensaje ya sea congruente inicialmente hay que hacerle siempre la adicin de bits.

01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100 00100001 10000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Se le ha aadido 352 bits para que sea congruente con 448 mod 512.

Una vez efectuada la extensin en bits, hay que aadirle su longitud original en los ltimos 64 bits del bloque. En caso que la longitud del mensaje sea mayor que 2^64 (18446744073709551616 caracteres) se utilizaran los ltimos 64 bits de la longitud. Longitud del mensaje: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 01100000 = 96

Adicin al proceso:
01001000 00100000 01100100 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 01100101 01010111 00100001 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 01101100 01101111 10000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 01101100 01110010 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 01100000 01101111 01101100 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

Se utilizan los registros A, B, C, D que se inicializan a los siguientes enteros de 32 bits (valores en hexadecimal): A 67452301 B EFCDAB89 C 98BADCFE D 10325476
Los bits de menor peso primero, es decir: palabra A 01 23 45 67 palabra B 89 ab cd ef palabra C fe dc ba 98 palabra D 76 54 32 10

Definimos cuatro funciones primitivas que toman como entrada tres palabras de 32 bits y su salida es una palabra de 32 bits. F(B,C,D) = BC v not(B) D G(B,C,D) = BD v C not(D) H(B,C,D) = B Bor C Bor D I(B,C,D) = C Bor (B v not(D))
Tambin se usar una tabla de 64 elementos T[1 ... 64] construida con la funcin Seno. Denotaremos por T[i] el elemento i-simo de esta tabla, que ser igual a la parte entera de 2^32 * abs(sin(i)), donde i est en radianes. Porque abs(sin(i)) es un nmero entero entre 0 y 1, en el cual cada elemento de T puede ser representado en 32 bits.

El alma de este algoritmo es una funcin compuesta de esta forma: a = b + ((a + g(b,c,d) + X[k] + T[i]) <<< s) donde: a, b, c, d son los registros A, B, C, D. g son cada una de las funciones primitivas, F, G, H, I. <<< s Es la rotacin circular hacia la izquierda, donde s es la cantidad de bits a rotar. X[k] es cada una de las representaciones del bloque de 512 bits en palabras de 32 bits. T[i] el valor de la funcin seno. + la suma de mdulo 2^32.

Con ms detalle, el proceso consiste en 4 rondas, en la que cada una se realiza 16 operaciones, basadas en la funcin anterior. En cada ronda se utiliza la funcin primitiva de la siguiente forma: Ronda 1 F(b, c, d); Ronda 2 G(b, c, d), Ronda 3 H(b, c, d), Ronda 4 I(b, c, d). Para cada ronda se utiliza un bloque de 512 bits del mensaje ms los registros A, B, C, D. Antes del comienzo de operar cada bloque de 512 bits hay que guardar los valores originales de los registros A, B, C, D.

Comenzamos con la primera ronda donde el primer paso es de la siguiente forma: F(B,C,D) = BC v not(B) D = 10011000101110101101110011111110 (A + F(B,C,D) + X[k] + T[i]) = 10 01000011110101110000100110111111 Como el resultado sale de 34 bits, tenemos que transformarlo a 32 bits, de la siguiente forma: 10 01000011110101110000100110111111 mod 2^32

A este resultado se desplaza circularmente s bits: 01000011110101110000100110111111<<<7= 11101011100001001101111110100001 A esto le sumamos el registro B: (11101111110011011010101110001001+11101 011100001001101111110100001) mod(2^32) = 11011011010100101000101100101010 = A(registro).
nicamente se modifica el registro A, dejando B, C, D sin modificar

Para el siguiente paso los registros se desplazaran una vez a la derecha circularmente, en la que A sera D, B sera A, C sera B y D sera C. Es decir para cada ronda los registro se modificaran cuatro veces de la siguiente forma: ADCB.
Para cada una de las representaciones del bloque de 512 bits se usa las siguientes permutaciones P1(i) = orden original P2(i) = (1+5i) mod 16 P3(i) = (5+3i) mod 16 P4(i) = 7i mod 16

En cada ronda se realizan 16 operaciones dando un total de 64 operaciones. Una vez realizada todas las operaciones, se le suma a cada uno de los registros su valor original al comienzo del paso 4, usando la suma en mod 2^32. A = A + AA = 0x876207ED B = B + BB = 0x36862E53 C = C + CC = 0x921E845E D = D + DD = 0x8C0DC5BF Estas operaciones se realizaran para cada uno de los bloques.

Una vez calculada todos los bloques de 512 bits se obtiene una salida de la siguiente forma:
Se empieza con los bytes menos significativos de A y se finaliza con los bytes ms significativos de D.

El MD5 final de ste ejemplo es: 0xED076287532E86365E841E92BFC50D8C

El mtodo MD5 es un sistema criptogrfico de ejecucin rpido. Esta ampliamente expandido y utilizado en mltiples sistemas. A pesar de ello, tiene vulnerabilidades debido al funcionamiento de las funciones hash.

Cryptography and network security, William Stallings. http://es.wikipedia.org/wiki/MD5


Applet: http://nsfsecurity.pr.erau.edu/crypto/md5.ht ml

You might also like