fbpx
Wikipedia

MD5

En criptografía, MD5 (abreviatura de Message-Digest Algorithm 5, Algoritmo de Resumen del Mensaje 5) es un algoritmo de reducción criptográfico de 128 bits ampliamente usado. Uno de sus usos es el de comprobar que algún archivo no haya sido modificado.

Historia

MD5 es uno de los algoritmos de reducción criptográficos diseñados por el profesor Ronald Rivest del MIT (Massachusetts Institute of Technology, Instituto Tecnológico de Massachusetts). Fue desarrollado en 1991 como reemplazo del algoritmo MD4 después de que Hans Dobbertin descubriese su debilidad.

A pesar de su amplia difusión actual, la sucesión de problemas de seguridad detectados desde que, en 1996, Hans Dobbertin anunciase una colisión de hash, plantea una serie de dudas acerca de su uso futuro.

Codificación

La codificación del MD5 de 128 bits es representada típicamente como un número de 32 símbolos hexadecimales. El siguiente código de 28 bytes ASCII será tratado con MD5 y veremos su correspondiente hash de salida:

 MD5("Generando un MD5 de un texto") = 5df9f63916ebf8528697b629022993e8 

Un pequeño cambio en el texto (cambiar '5' por 'S') produce una salida completamente diferente.

 MD5("Generando un MDS de un texto") = e14a3ff5b5e67ede599cac94358e1028 

Otro ejemplo sería la codificación de un campo vacío:

 MD5("") = d41d8cd98f00b204e9800998ecf8427e 

Algoritmo

  • Terminologías y notaciones

En este documento "palabra" es una entidad de 4 bytes 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 más 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 (de este modo trabajan plataformas como Intel, esta propiedad se conoce como endianness).

 El símbolo "+" significa suma de palabras. X <<< s se interpreta por una rotación de bits a la izquierda sobre 'X', 's' posiciones not(x) se entiende como el complemento de x 
  • Descripción del algoritmo md5

Se inicia suponiendo que se tiene un mensaje de 'b' bits de entrada del que se necesita su resumen. Aquí 'b' es un valor arbitrario entero no negativo, pero puede ser cero, no tiene que ser múltiplo de ocho, y puede ser tan largo como sea necesario. Supóngase los bits del mensaje escritos así:

 m0 m1 ... m{b-1} 

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

Paso 1. Adición de bits

El mensaje será extendido hasta que su longitud en bits sea congruente con 448, módulo 512. Esto es, si se le resta 448 a la longitud del mensaje tras este paso, se obtiene un múltiplo de 512. Esta extensión se realiza siempre, incluso si la longitud del mensaje es ya congruente con 448, módulo 512.

La extensión se realiza como sigue: un solo bit "1" se añade al mensaje, y después se añaden bits "0" hasta que la longitud en bits del mensaje extendido se haga congruente con 448, módulo 512. En todos los mensajes se añade al menos un bit y como máximo 512.

Paso 2. Longitud del mensaje

Un entero de 64 bits que represente la longitud 'b' del mensaje (longitud antes de añadir los bits) se concatena al resultado del paso anterior. En el supuesto no deseado de que 'b' sea mayor que 2^64, entonces sólo los 64 bits de menor peso de 'b' se usarán.

En este punto el mensaje resultante (después de rellenar con los bits y con 'b') se tiene una longitud que es un múltiplo exacto de 512 bits. A su vez, la longitud del mensaje es múltiplo de 16 palabras (32 bits por palabra). Con M[0 ... N-1] denotaremos las palabras del mensaje resultante, donde N es múltiplo de 16.

Paso 3. Inicializar el búfer MD

Un búfer 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 inicializan con los siguientes valores hexadecimales, los bytes de menor peso primero:

 palabra A: 01 23 45 67 palabra B: 89 ab cd ef palabra C: fe dc ba 98 palabra D: 76 54 32 10 

Paso 4. Procesado del mensaje en bloques de 16 palabras

Primero, se definen 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 actúa como un condicional: si X, entonces Y; si no, Z. La función F podría haber sido definida usando + en lugar de v ya que XY y not(x) Z nunca tendrán 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 actúan "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) serán independientes y no sesgados. Nótese que la función H es la comparación bit a bit "xor" o función "paridad" de sus entradas.

Este paso usa una tabla de 64 elementos T[1 ... 64] construida con la función Seno. Se denota 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.....

Código 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' */ 
 /* Guardar A como AA, B como BB, C como CC, y D como DD. */ 
 /* Ronda 1. */ /* [abcd k s i] denotarán la operación 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 22 4] [ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8] [ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12] [ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16] 
 /* Ronda 2. */ /* [abcd k s i] denotarán la operación a = b + ((a + G(b, c, d) + X[k] + T[i]) <<< s). */ /* Hacer las siguientes 16 operaciones. */ [ABCD 1 5 17] [DABC 6 9 18] [CDAB 11 14 19] [BCDA 0 20 20] [ABCD 5 5 21] [DABC 10 9 22] [CDAB 15 14 23] [BCDA 4 20 24] [ABCD 9 5 25] [DABC 14 9 26] [CDAB 3 14 27] [BCDA 8 20 28] [ABCD 13 5 29] [DABC 2 9 30] [CDAB 7 14 31] [BCDA 12 20 32] 
 /* Ronda 3. */ /* [abcd k s t] denotarán la operación a = b + ((a + H(b, c, d) + X[k] + T[i]) <<< s). */ /* Hacer las siguientes 16 operaciones. */ [ABCD 5 4 33] [DABC 8 11 34] [CDAB 11 16 35] [BCDA 14 23 36] [ABCD 1 4 37] [DABC 4 11 38] [CDAB 7 16 39] [BCDA 10 23 40] [ABCD 13 4 41] [DABC 0 11 42] [CDAB 3 16 43] [BCDA 6 23 44] [ABCD 9 4 45] [DABC 12 11 46] [CDAB 15 16 47] [BCDA 2 23 48] 
 /* Ronda 4. */ /* [abcd k s t] denotarán la operación a = b + ((a + I(b, c, d) + X[k] + T[i]) <<< s). */ /* Hacer las siguientes 16 operaciones. */ [ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52] [ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56] [ABCD 8 6 57] [DABC 15 10 58] [CDAB 6 15 59] [BCDA 13 21 60] [ABCD 4 6 61] [DABC 11 10 62] [CDAB 2 15 63] [BCDA 9 21 64] 
 /* Ahora realizar las siguientes sumas. (Este es el incremento de cada uno de los cuatro registros por el valor que tenían antes de que este bloque fuera inicializado.) */ 
 A = A + AA B = B + BB C = C + CC D = D + DD 
 fin para /* del bucle en 'i' */ 

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."pdf": {

 "imageFormat": "PNG", "isShowImages": true, "isStarsInWidget": false, "colorDayBg": -1, "appLang": "my", "opdsLargeCovers": true, "tintColor": -13665061, "remindRestTime": 60, "isAlwaysOpenAsMagazine": false, "bgImageDayTransparency": 200, "isLocked": false, "cpBGLight": -1, "sortBy": 0, "isRememberMode": false, "allocatedMemorySize": 256, "lastBookHeight": 0, "supportMOBI": false, "bolderTextOnImage": false, "isRTL": false, "lastClosedActivity": "Main_Tabs_All", "lastBookPage": 0, "isFirstSurname": false, "lastBookWidth": 0, "isBrowseGrid": false, "isEditMode": true, "searchPaths": "\/storage\/emulated\/0", "selectingByLetters": false, "widgetType": 1, "isUseTypeFace": false, "mouseWheelSpeed": 70, "downlodsPath": "\/storage\/emulated\/0\/Download\/Librera", "supportOther2": false, "tabsOrder": "0#1,1#1", "flippingInterval": 10, "annotationTextColor": "#0000FF", "isShowToolBar": true, "isBrowseImages": false, "isShowDroid": true, "tapZoneBottom": 0, "pageQuality": 1.2, "toLang": "es", "ttsPitch": 1, "coverBigSize": 139, "readColors": "1,#ffffff,#000000,0;2,#f2f0e9,#383226,0;3,#f9f5e8,#333333,0;A,#000000,#ffffff,1;B,#000000,#8cffb5,1;C,#3a3a3a,#c8c8c8,1;", 

Seguridad

A pesar de haber sido considerado criptográficamente 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 cálculo con un clúster IBM P690.[1]

Aunque dicho ataque era analítico, el tamaño del hash (128 bits) es lo suficientemente pequeño como para que resulte vulnerable frente a ataques de «fuerza bruta» tipo «cumpleaños». El proyecto de computación distribuida MD5CRK arrancó en marzo de 2004 con el propósito de demostrar que MD5 es inseguro frente a uno de tales ataques, aunque acabó poco después del aviso de la publicación de la vulnerabilidad del equipo de Wang.

Debido al descubrimiento de métodos sencillos para generar colisiones de hash, muchos investigadores recomiendan su sustitución por algoritmos alternativos tales como SHA-256 o RIPEMD-160. Algunos de estos métodos para generar colisiones (como el de Wang) tienen su implementación disponible en la red: Implementación de colisión en MD5.

Aplicaciones

Los resúmenes 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 comprobación 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 algún otro usuario malicioso pudiera incluir en el software. La comprobación de un archivo descargado contra su suma MD5 no detecta solamente los archivos alterados de una manera maliciosa, también 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. Además, también 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 este 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. Los sistemas actuales GNU/Linux utilizan funciones de hash más seguras, como pueden ser SHA-2 o SHA-3.

El MD5 también se puede usar para comprobar que los correos electrónicos no han sido alterados usando claves públicas y privadas.

Véase también

Referencias

  1. «Fast Collision Attack on MD5» (en inglés). IACR.org. Consultado el 10 de agosto de 2018. 

Enlaces externos

  • Alpha Crypt Cifra y descifra texto usando criptografía MD5 con algoritmo XOR.
  • colisiones en línea del MD5 usando tables Rainbow
  • RFC del MD5 (inglés)
  • Implementación en múltiples lenguajes del MD5 (inglés)
  • (en español)
  • MD5summer para Windows
  • Generando un hash md5 con ASP.NET y C# de forma sencilla y simple
  • MD5cracker Crakeador de hash´s MD5 Online y Offline.
  •   Datos: Q185235

este, artículo, sección, necesita, referencias, aparezcan, publicación, acreditada, este, aviso, puesto, agosto, 2018, criptografía, abreviatura, message, digest, algorithm, algoritmo, resumen, mensaje, algoritmo, reducción, criptográfico, bits, ampliamente, u. Este articulo o seccion necesita referencias que aparezcan en una publicacion acreditada Este aviso fue puesto el 20 de agosto de 2018 En criptografia MD5 abreviatura de Message Digest Algorithm 5 Algoritmo de Resumen del Mensaje 5 es un algoritmo de reduccion criptografico de 128 bits ampliamente usado Uno de sus usos es el de comprobar que algun archivo no haya sido modificado Indice 1 Historia 2 Codificacion 3 Algoritmo 3 1 Paso 1 Adicion de bits 3 2 Paso 2 Longitud del mensaje 3 3 Paso 3 Inicializar el bufer MD 3 4 Paso 4 Procesado del mensaje en bloques de 16 palabras 3 5 Paso 5 Salida 4 Seguridad 5 Aplicaciones 6 Vease tambien 7 Referencias 8 Enlaces externosHistoria EditarMD5 es uno de los algoritmos de reduccion criptograficos disenados por el profesor Ronald Rivest del MIT Massachusetts Institute of Technology Instituto Tecnologico de Massachusetts Fue desarrollado en 1991 como reemplazo del algoritmo MD4 despues de que Hans Dobbertin descubriese su debilidad A pesar de su amplia difusion actual la sucesion de problemas de seguridad detectados desde que en 1996 Hans Dobbertin anunciase una colision de hash plantea una serie de dudas acerca de su uso futuro Codificacion EditarLa codificacion del MD5 de 128 bits es representada tipicamente como un numero de 32 simbolos hexadecimales El siguiente codigo de 28 bytes ASCII sera tratado con MD5 y veremos su correspondiente hash de salida MD5 Generando un MD5 de un texto 5df9f63916ebf8528697b629022993e8 Un pequeno cambio en el texto cambiar 5 por S produce una salida completamente diferente MD5 Generando un MDS de un texto e14a3ff5b5e67ede599cac94358e1028 Otro ejemplo seria la codificacion de un campo vacio MD5 d41d8cd98f00b204e9800998ecf8427eAlgoritmo EditarTerminologias y notacionesEn este documento palabra es una entidad de 4 bytes 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 mas 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 esta al principio de este modo trabajan plataformas como Intel esta propiedad se conoce como endianness El simbolo significa suma de palabras X lt lt lt s se interpreta por una rotacion de bits a la izquierda sobre X s posiciones not x se entiende como el complemento de x Descripcion del algoritmo md5Se inicia suponiendo que se tiene un mensaje de b bits de entrada del que se necesita su resumen Aqui b es un valor arbitrario entero no negativo pero puede ser cero no tiene que ser multiplo de ocho y puede ser tan largo como sea necesario Supongase los bits del mensaje escritos asi m0 m1 m b 1 Los siguientes cinco pasos son efectuados para calcular el resumen del mensaje Paso 1 Adicion de bits Editar El mensaje sera extendido hasta que su longitud en bits sea congruente con 448 modulo 512 Esto es si se le resta 448 a la longitud del mensaje tras este paso se obtiene un multiplo de 512 Esta extension se realiza siempre incluso si la longitud del mensaje es ya congruente con 448 modulo 512 La extension se realiza como sigue un solo bit 1 se anade al mensaje y despues se anaden bits 0 hasta que la longitud en bits del mensaje extendido se haga congruente con 448 modulo 512 En todos los mensajes se anade al menos un bit y como maximo 512 Paso 2 Longitud del mensaje Editar Un entero de 64 bits que represente la longitud b del mensaje longitud antes de anadir los bits se concatena al resultado del paso anterior En el supuesto no deseado de que b sea mayor que 2 64 entonces solo los 64 bits de menor peso de b se usaran En este punto el mensaje resultante despues de rellenar con los bits y con b se tiene una longitud que es un multiplo exacto de 512 bits A su vez la longitud del mensaje es multiplo de 16 palabras 32 bits por palabra Con M 0 N 1 denotaremos las palabras del mensaje resultante donde N es multiplo de 16 Paso 3 Inicializar el bufer MD Editar Un bufer de cuatro palabras A B C D se usa para calcular el resumen del mensaje Aqui cada una de las letras A B C D representa un registro de 32 bits Estos registros se inicializan con los siguientes valores hexadecimales los bytes de menor peso primero palabra A 01 23 45 67 palabra B 89 ab cd ef palabra C fe dc ba 98 palabra D 76 54 32 10 Paso 4 Procesado del mensaje en bloques de 16 palabras Editar Primero se definen cuatro funciones auxiliares que toman como entrada tres palabras de 32 bits y su salida es una palabra de 32 bits F X Y Z X Y X Z displaystyle F X Y Z X wedge Y vee neg X wedge Z G X Y Z X Z Y Z displaystyle G X Y Z X wedge Z vee Y wedge neg Z H X Y Z X Y Z displaystyle H X Y Z X oplus Y oplus Z I X Y Z Y X Z displaystyle I X Y Z Y oplus X vee neg Z Los operadores displaystyle oplus wedge vee neg son las funciones XOR AND OR y NOT respectivamente En cada posicion de cada bit F actua como un condicional si X entonces Y si no Z La funcion F podria haber sido definida usando en lugar de v ya que XY y not x Z nunca tendran unos 1 en la misma posicion 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 sera independiente y no sesgado Las funciones G H e I son similares a la funcion F ya que actuan 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 seran independientes y no sesgados Notese que la funcion H es la comparacion bit a bit xor o funcion paridad de sus entradas Este paso usa una tabla de 64 elementos T 1 64 construida con la funcion Seno Se denota por T i el elemento i esimo de esta tabla que sera igual a la parte entera del valor absoluto del seno de i 4294967296 veces donde Codigo 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 Guardar A como AA B como BB C como CC y D como DD Ronda 1 abcd k s i denotaran la operacion a b a F b c d X k T i lt lt lt s Hacer las siguientes 16 operaciones ABCD 0 7 1 DABC 1 12 2 CDAB 2 17 3 BCDA 3 22 4 ABCD 4 7 5 DABC 5 12 6 CDAB 6 17 7 BCDA 7 22 8 ABCD 8 7 9 DABC 9 12 10 CDAB 10 17 11 BCDA 11 22 12 ABCD 12 7 13 DABC 13 12 14 CDAB 14 17 15 BCDA 15 22 16 Ronda 2 abcd k s i denotaran la operacion a b a G b c d X k T i lt lt lt s Hacer las siguientes 16 operaciones ABCD 1 5 17 DABC 6 9 18 CDAB 11 14 19 BCDA 0 20 20 ABCD 5 5 21 DABC 10 9 22 CDAB 15 14 23 BCDA 4 20 24 ABCD 9 5 25 DABC 14 9 26 CDAB 3 14 27 BCDA 8 20 28 ABCD 13 5 29 DABC 2 9 30 CDAB 7 14 31 BCDA 12 20 32 Ronda 3 abcd k s t denotaran la operacion a b a H b c d X k T i lt lt lt s Hacer las siguientes 16 operaciones ABCD 5 4 33 DABC 8 11 34 CDAB 11 16 35 BCDA 14 23 36 ABCD 1 4 37 DABC 4 11 38 CDAB 7 16 39 BCDA 10 23 40 ABCD 13 4 41 DABC 0 11 42 CDAB 3 16 43 BCDA 6 23 44 ABCD 9 4 45 DABC 12 11 46 CDAB 15 16 47 BCDA 2 23 48 Ronda 4 abcd k s t denotaran la operacion a b a I b c d X k T i lt lt lt s Hacer las siguientes 16 operaciones ABCD 0 6 49 DABC 7 10 50 CDAB 14 15 51 BCDA 5 21 52 ABCD 12 6 53 DABC 3 10 54 CDAB 10 15 55 BCDA 1 21 56 ABCD 8 6 57 DABC 15 10 58 CDAB 6 15 59 BCDA 13 21 60 ABCD 4 6 61 DABC 11 10 62 CDAB 2 15 63 BCDA 9 21 64 Ahora realizar las siguientes sumas Este es el incremento de cada uno de los cuatro registros por el valor que tenian antes de que este bloque fuera inicializado A A AA B B BB C C CC D D DD fin para del bucle en i Paso 5 Salida Editar 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 pdf imageFormat PNG isShowImages true isStarsInWidget false colorDayBg 1 appLang my opdsLargeCovers true tintColor 13665061 remindRestTime 60 isAlwaysOpenAsMagazine false bgImageDayTransparency 200 isLocked false cpBGLight 1 sortBy 0 isRememberMode false allocatedMemorySize 256 lastBookHeight 0 supportMOBI false bolderTextOnImage false isRTL false lastClosedActivity Main Tabs All lastBookPage 0 isFirstSurname false lastBookWidth 0 isBrowseGrid false isEditMode true searchPaths storage emulated 0 selectingByLetters false widgetType 1 isUseTypeFace false mouseWheelSpeed 70 downlodsPath storage emulated 0 Download Librera supportOther2 false tabsOrder 0 1 1 1 flippingInterval 10 annotationTextColor 0000FF isShowToolBar true isBrowseImages false isShowDroid true tapZoneBottom 0 pageQuality 1 2 toLang es ttsPitch 1 coverBigSize 139 readColors 1 ffffff 000000 0 2 f2f0e9 383226 0 3 f9f5e8 333333 0 A 000000 ffffff 1 B 000000 8cffb5 1 C 3a3a3a c8c8c8 1 Seguridad EditarA pesar de haber sido considerado criptograficamente 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 consumo en una hora de calculo con un cluster IBM P690 1 Aunque dicho ataque era analitico el tamano del hash 128 bits es lo suficientemente pequeno como para que resulte vulnerable frente a ataques de fuerza bruta tipo cumpleanos El proyecto de computacion distribuida MD5CRK arranco en marzo de 2004 con el proposito de demostrar que MD5 es inseguro frente a uno de tales ataques aunque acabo poco despues del aviso de la publicacion de la vulnerabilidad del equipo de Wang Debido al descubrimiento de metodos sencillos para generar colisiones de hash muchos investigadores recomiendan su sustitucion por algoritmos alternativos tales como SHA 256 o RIPEMD 160 Algunos de estos metodos para generar colisiones como el de Wang tienen su implementacion disponible en la red Implementacion de colision en MD5 Aplicaciones EditarLos resumenes 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 comprobacion 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 algun otro usuario malicioso pudiera incluir en el software La comprobacion de un archivo descargado contra su suma MD5 no detecta solamente los archivos alterados de una manera maliciosa tambien 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 Ademas tambien esta 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 este 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 sera autenticado Los sistemas actuales GNU Linux utilizan funciones de hash mas seguras como pueden ser SHA 2 o SHA 3 El MD5 tambien se puede usar para comprobar que los correos electronicos no han sido alterados usando claves publicas y privadas Vease tambien EditarMD2 MD4 SHA Tiger RIPEMD 160 WHIRLPOOL CRC HashReferencias Editar Fast Collision Attack on MD5 en ingles IACR org Consultado el 10 de agosto de 2018 Enlaces externos EditarAlpha Crypt Cifra y descifra texto usando criptografia MD5 con algoritmo XOR Kevlardisk org colisiones en linea del MD5 usando tables Rainbow RFC del MD5 ingles Implementacion en multiples lenguajes del MD5 ingles Pagina que da la salida MD4 MD5 y SHA 1 de una entrada en espanol MD5summer para Windows Generando un hash md5 con ASP NET y C de forma sencilla y simple MD5cracker Crakeador de hash s MD5 Online y Offline Datos Q185235Obtenido de https es wikipedia org w index php title MD5 amp oldid 138002492, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos