Vous êtes sur la page 1sur 10

Algoritmo

Terminologas y notaciones

En este documento "palabra" es una entidad de 32 bits y un byte es una entidad de 8 bits. Una secuencia de bytes puede ser interpretada de manera natural como una secuencia de bits, donde cada grupo consecutivo de ocho bits se interpreta como un byte con el bit ms significativo al principio. Similarmente, una secuencia de bytes puede ser interpretada como una secuencia de 32 bits (palabra), donde cada grupo consecutivo de cuatro bytes se interpreta como una palabra en la que el byte menos significativo est al principio.
El smbolo "+" significa suma de palabras. X <<< s se interpreta por un desplazamiento a la izquierda 's' posiciones not(x) se entiende como el complemento de x y

Descripcin del algoritmo md5

Empezamos suponiendo que tenemos un mensaje de 'b' bits de entrada, y que nos gustara encontrar su resumen. Aqu 'b' es un valor arbitrario entero no negativo, pero puede ser cero, no tiene por qu ser mltiplo de ocho, y puede ser muy largo. Imaginemos los bits del mensaje escritos as:
m0 m1 ... m{b -1}

Los siguientes cinco pasos son efectuados para calcular el resumen del mensaje.

[editar] Paso 1. Adicin de bits


El mensaje ser extendido hasta que su longitud en bits sea congruente con 448, mdulo 512. Esto es, si se le resta 448 a la longitud del mensaje tras este paso, se obtiene un mltiplo de 512. Esta extensin se realiza siempre, incluso si la longitud del mensaje es ya congruente con 448, mdulo 512. 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. En todos los mensajes se aade al menos un bit y como mximo 512.

[editar] Paso 2. Longitud del mensaje


Un entero de 64 bits que represente la longitud 'b' del mensaje (longitud antes de aadir los bits) se concatena al resultado del paso anterior. En el supuesto no deseado de que 'b' sea mayor que 2^64, entonces slo los 64 bits de menor peso de 'b' se usarn. En este punto el mensaje resultante (despus de rellenar con los bits y con 'b') se tiene una longitud que es un mltiplo exacto de 512 bits. A su vez, la longitud del mensaje es mltiplo de 16 palabras (32 bits por palabra). Con M[0 ... N-1] denotaremos las palabras del mensaje resultante, donde N es mltiplo de 16.

[edi

3 I i i liz

el fer MD

Un bfer de cuatro palabras (A, B, C, D) se usa para calcular el resumen del mensaje. Aqu cada una de las letras A, B, C, D representa un registro de 32 bits. Estos registros se iniciali an con los siguientes valores hexadecimales, los bits de menor peso primero:
palabra palabra palabra palabra A: B: C: D: 01 89 fe 76 23 ab dc 54 45 cd ba 32 67 ef 98 10

[edi r] Paso 4. Procesado del mensaje en bloques de 16 palabras


Primero definimos cuatro funciones auxiliares que toman como entrada tres palabras de 32 bits y su salida es una palabra de 32 bits.

Los operadores

son las funciones XOR, AND, OR y NOT respectivamente.

En cada posici n de cada bit F acta como un condicional: si X, entonces Y sino Z. La funci n F podra haber sido definida usando + en lugar de v ya que XY y not(x) Z nunca tendrn unos ('1') en la misma posici n de bit. Es interesante resaltar que si los bits de X, Y y Z son independientes y no sesgados, cada uno de los bits de F(X,Y,Z) ser independiente y no sesgado. Las funciones G, H e I son similares a la funci n F, ya que actan "bit a bit en paralelo" para producir sus salidas de los bits de X, Y y Z, en la medida que si cada bit correspondiente de X, Y y Z son independientes y no sesgados, entonces cada bit de G(X,Y,Z), H(X,Y,Z) e I(X,Y,Z) sern independientes y no sesgados. Ntese que la funcin H es la comparacin bit a bit "xor" o funcin "paridad" de sus entradas. Este paso usa una tabla de 64 elementos T[1 ... 64] construida con la funcinSeno. Denotaremos por T[i] el elemento i simo de esta tabla, que ser igual a la parte entera del valor absoluto del seno de 'i' 4294967296 veces, donde 'i' est en radianes.

Cdigo del MD5:


/* Procesar cada bloque de 16 palabras. */ para i = 0 hasta N/16 -1 hacer /* Copiar el bloque 'i' en X. */ para j = 0 hasta 15 hacer hacer X[j] de M[i *16+j].

fin para /* del bucle 'j' */ /* AA BB CC DD Guardar A como AA, B como BB, C como CC, y D como DD. */ = A = B = C = D

/* Ronda 1. */ /* [abcd k s i] denotarn la operacin a = b + ((a + F(b, c, d) + X[k] + T[i]) <<< s). */ /* Hacer las siguientes 16 operaciones. */ [ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 [ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 [ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 [ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 /* Ronda 2. */ /* [abcd k s i] denotarn la operacin a = b + ((a + G(b, c, d) + X[k] + T[i]) /* Hacer las siguientes 16 operaciones. */ [ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 [ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 [ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 [ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 /* Ronda 3. */ /* [abcd k s t] denotarn l a operacin a = b + ((a + H(b, c, d) + X[k] + T[i]) /* Hacer las siguientes 16 operaciones. */ [ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 [ABCD 13 4 4 1] [DABC 0 11 42] [CDAB 3 16 [ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 /* Ronda 4. */ /* [abcd k s t] denotarn la operacin a = b + ((a + I(b, c, d) + X[k] + T[i]) /* Hacer las siguientes 1 6 operaciones. */ [ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 [ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 [ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 [ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15

22 22 22 22

4] 8] 12] 16]

<<< s). */ 19] 23] 27] 31] [ BCDA 0 20 20] [BCDA 4 20 24] [BCDA 8 20 28] [BCDA 12 20 32]

<<< s). */ 35] 39] 43] 47] [BCDA 14 23 36] [BCDA 10 23 40] [BCDA 6 23 44] [BCDA 2 23 48]

<<< s). */ 51] 55] 59] 63] [BCDA 5 21 [BCDA 1 21 [BCDA 13 21 [BCDA 9 21 52] 56] 60] 64]

/* Ahora realizar las siguientes sumas. (Este es el incremento de cada uno de los cuatro registros por el valor que tenan antes de que este bloque fuera inicializado.) */ A B C D = = = = A B C D + + + + AA BB CC DD

fin para /* del bucle en 'i' */

[editar] Paso 5. Salida


El resumen del mensaje es la salida producida por A, B, C y D. Esto es, se comienza el byte de menor peso de A y se acaba con el byte de mayor peso de D.

[editar] Seguridad
A pesar de haber sido considerado criptogrficamente seguro en un principio, ciertas investigaciones han revelado vulnerabilidades que hacen cuestionable el uso futuro del MD5. En agosto de 2004, Xiaoyun Wang, Dengguo Feng, Xuejia Lai y Hongbo Yu anunciaron el descubrimiento de colisiones de hash para MD5. Su ataque se consum en una hora de clculo con un clster IBM P690. Aunque dicho ataque era analtico, el tamao del hash (128 bits) es lo suficientemente pequeo como para que resulte vulnerable frente a ataques de fuerza bruta tipo cumpleaos. El proyecto de computacin distribuida MD5CRK arranc en marzo de 2004 con el propsito de demostrar que MD5 es inseguro frente a uno de tales ataques, aunque acab poco despus del aviso de la publicacin de la vulnerabilidad del equipo de Wang. Debido al descubrimiento de mtodos sencillos para generar colisiones de hash, muchos investigadores recomiendan su sustitucin por algoritmos alternativos tales como SHA1 o RIPEMD-160.

[editar] Aplicaciones
Los resmenes MD5 se utilizan extensamente en el mundo del software para proporcionar la seguridad de que un archivo descargado de Internet no se ha alterado. Comparando una suma MD5 publicada con la suma de comprobacin del archivo descargado, un usuario puede tener la confianza suficiente de que el archivo es igual que el publicado por los desarrolladores. Esto protege al usuario contra los 'Caballos de Troya' o 'Troyanos' y virus que algn otro usuario malicioso pudiera incluir en el software. La comprobacin de un archivo descargado contra su suma MD5 no detecta solamente los archivos alterados de una manera maliciosa, tambin reconoce una descarga corrupta o incompleta. Para comprobar la integridad de un archivo descargado de Internet se puede utilizar una herramienta MD5 para comparar la suma MD5 de dicho archivo con un archivo MD5SUM con el resumen MD5 del primer archivo. En los sistemas UNIX, el comando de md5sum es un ejemplo de tal herramienta. Adems, tambin est implementado en el lenguaje de scripting PHP como MD5("") entre otros. En sistemas UNIX y GNU/Linux se utiliza el algoritmo MD5 para calcular el hash de las claves de los usuarios. En el disco se guarda el resultado del MD5 de la clave que se introduce al dar de alta un usuario, y cuando ste quiere entrar en el sistema se compara el hash MD5 de la clave introducida con el hash que hay guardado en el disco duro. Si coinciden, es la misma clave y el usuario ser autenticado. El MD5 tambin se puede usar para comprobar que los correos electrnicos no han sido alterados usando claves pblicas y privadas.

Esto me aumentas en la dispositiva debajo de md5 ok Md5

Paso 1. Adicin de bits Paso 2. Longitud del mensaje Paso . niciali ar el b er MD Paso 4. Procesado del mensaje en bloques de 16 palabras Paso 5. Salida

Sha1
SHA-1 es una funcin hash constituida por un bfer estado de 160 bits y trabaja con cuatro rondas conformadas por operaciones elementales de 32 bits. En lugar de procesar cada bloque del mensaje cuatro veces, SHA-1 utiliza una recurrencia lineal para utilizar 80 palabras de las 16 palabras de entrada del bloque que se esta procesando. Esta recurrencia lineal asegura que cada bit del mensaje afectar las

funciones internas al menos una docena de veces. La salida de SHA-1 es un resumen de 160 bits

Algoritmos de resumen en criptografa


y y

y y y y y y

MD5: Ron Rivest 1992. Mejoras al MD4 y MD2 (1990), es ms lento pero con mayor nivel de seguridad, es un resumen de 128 bits. SHA-1: Del NIST, National Institute of Standards and Technology, 1994. Similar a MD5 pero con resumen de 160 bits, existen otras propuestas conocidas como SHA-256 y SHA-512 posibles estndares. RIPEMD: Comunidad Europea, RACE, 1992. Resumen de 160 bits. N-Hash: Nippon Telephone and Telegraph, 1990. Resumen: 128 bits. Snefru: Ralph Merkle, 1990. Resmenes entre 128 y 256 bits, el mismo ha sido criptoanalizado y es lento. Tiger: Ross Anderson, Eli Biham, 1996. Resmenes de hasta 192 bits. Optimizado para mquinas de 64 bits (Alpha). Panama: John Daemen, Craig Clapp, 1998. Resmenes de 256 bits de longitud, trabaja en modo funcin HASH o como cifrador de flujo. Haval: Yuliang Zheng, Josef Pieprzyk y Jennifer Seberry, 1992. Admite 15 configuraciones diferentes hasta 256 bits.

Funcin Resumen SHA-1


Algoritmo: Es muy similar a MD5 tambin trata bloques de 512 bits de mensaje con un total de 80 vueltas, pero en este caso el vector inicial tiene una palabra ms de 32 bits (E) por lo que el resumen ser de 160 bits. Un resumen de 128 bits (MD5) tiene una complejidad algortmica de tan slo 264 un valor en la actualidad muy comprometido... En cambio la funcin SHA-1 (Secure Hash Algorithm) entregar un resumen de 160 bits con una complejidad algortmica de 280. Esquema del resumen SHA-1.

Vueltas unciones F, G, H, en SHA-1.

Las 80 vueltas en SHA-1.

Algoritmo y despla amiento en SHA-1.

Comparativa entre MD5 y SHA-1


y

SHA-1 genera una salida de 160 bits de longitud mientras que MD5 genera slo 128 bits. La dificultad de generar un mensaje que tenga un resumen dado es del orden de 2128 operaciones para MD5 y 2160 para SHA-1. La dificultad de generar dos mensajes aleatorios distintos y que tengan el mismo resumen (ataques basados en paradoja del cumpleaos) es del orden de 264 operaciones para MD5 y 280 para SHA-1.

y y

Esta diferencia de 16 bits a favor de SHA-1 lo convierte en ms seguro y resistente a ataques por fuerza bruta que el algoritmo MD5, aunque es ms lento que MD5, SHA-1 es hoy el estndar como funcin HASH.

Pasos y tasas de ci ra en MD5 y SHA-1. Ambos algoritmos procesan bloques de 512 bits y emplean 4 funciones primitivas para generar el resumen del mensaje, pero...
y y y

SHA-1 realiza un mayor nmero de pasos que MD5: 80 frente a los 64 que realiza MD5. SHA-1 debe procesar 160 bits de buffer en comparacin con los 128 bits de MD5. Por estos motivos la ejecucin del algoritmo SHA-1 es ms lenta que la de MD5 usando un mismo hardware, por ejemplo un programa realizado en C entregaba en un Pentium a 266 Mhz (no importa que esta velocidad sea tan baja) una tasa del orden de 20 Mbits/seg para SHA-1 y para MD5 esta tasa llegaba a los 60 Mbits/seg.

Di erencias entre MD5 y SHA-1.


y y y

La longitud mxima del mensaje para SHA-1 debe ser menor de 264 bits mientras que MD5 no tiene limitaciones de longitud. MD5 emplea 64 constantes (una por cada paso) mientras que SHA-1 slo emplea 4. (una para cada 20 pasos) MD5 se basa en la arquitectura little-endian mientras que SHA-1 se basa en la arquitectura big-endian y por ello el vector ABCD inicial en MD5 y SHA-1 son iguales: A = 01234567 (MD5) ( 67452301 (SHA -1) B = 89ABCDEF (MD5) ( EFCDAB89 (SHA-1) C = FEDCBA98 (MD5) ( 98BADCFE (SHA-1) D = 76543210 (MD5) ( 10325476 (SHA -1)

y y y y

ltimos ataques a las funciones HASH


y

A finales del ao 2004 cientficos chinos de la Shandong University presentan trabajos en los que se analizan las debilidades reales de las funciones HASH como MD5 y SHA-1 ante colisiones. Aunque no est claro que este tipo de ataques pudiese derivar en acciones de fraude, como sera suplantar un hash por otro igual y que en recepcin se aceptase como vlido si bien este ltimo proviene de un mensaje distinto, es un claro motivo de preocupacin actual. El problema de estas vulnerabilidades estriba en que muchos servidores Web presentan un certificado digital X.509 firmado en el mejor de los casos a partir de una funcin HASH SHA-1 y lo que es peor an todava hay algunos que usan un HASH MD5.... este ltimo mucho menos seguro que el primero.

Conclusiones
Arribamos a las siguientes conclusiones, luego de haber analizado las funciones HASH para la autenticacin.
y y y

Las funciones HASH (MD5, SHA-1, etc.) pueden usarse adems para autenticar a dos usuarios. Como carecen de una clave privada no pueden usarse de forma directa para estos propsitos, no obstante existen algoritmos que permiten aadirles esta funcin. Entre ellos est HMAC, una funcin que usando los HASH vistos y una clave secreta autentica a dos usuarios mediante sistemas de clave secreta, las funciones MAC (Message Authentication Code) y HMAC se dedican a la autenticacin y firma digital. HMAC se usa en plataformas IP seguras como por ejemplo en Secure Socket Layer, SSL.

Vous aimerez peut-être aussi