MD5
El MD5 o Message-Digest Algorithm 5 es un algoritmo de hashing conocido como un algoritmo de reducción criptográfico de mensajes.
[alert type=»info» icon-size=»small»]Hay varias versiones de MD, desde el primer MD seguido por MD2, MD3, MD4 y por último MD5. Estas versiones de MD fueron mejorando una tras otra.[/alert]
Sobre MD5
MD5 crea mensajes de 128 bits donde el texto de entrada se procesa en bloques de 512 bits que se separan en 16 sub-bloques de 32 bits. El resultado del algoritmo MD5 construyó un conjunto de cuatro bloques de 32 bits que crea un resumen de mensajes de 128 bits.
[alert type=»info» icon-size=»small»]Con el desarrollo de varios algoritmos hash, los expertos han notado que MD5 tiene serias debilidades en términos de no ser «resistente a las colisiones».[/alert]
Una colisión ocurre cuando dos valores de hash son similares o iguales. Para funcionar correctamente, cada valor de hash individual tiene que ser único. Debido a que esta funcionalidad es necesaria para protocolos de autenticación populares como Secure Sockets Layer (SSL), MD5 ha sido reemplazado a menudo por otros tipos de algoritmos hash.
[alert type=»info» icon-size=»small»]Los hash MD5 ya no se consideran criptográficamente seguros y no deben utilizarse para la autenticación criptográfica.[/alert]
En 2011, el IETF publicó el RFC 6151, «Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms» (Consideraciones de seguridad actualizadas para los algoritmos MD5 Message-Digest y HMAC-MD5), en el que se citaban varios ataques recientes contra hashes MD5, especialmente uno que generaba colisiones de hash en un minuto o menos en un portátil estándar y otro que podía generar una colisión en tan sólo 10 segundos en un sistema Pentium 4 de 2,66 GHz.
Como resultado, la IETF sugirió que los nuevos diseños de protocolos no deberían utilizar MD5 en ningún caso, y que los recientes ataques de investigación contra el algoritmo «han proporcionado una razón suficiente para eliminar el uso de MD5 en aplicaciones en las que se requiere resistencia a la colisión, como las firmas digitales«.
Funcionamiento
-
- Relleno – Es el primer paso de MD5 en el que se añaden bits de relleno al mensaje original para hacer que el mensaje original sea igual a un valor divisible por 512.
- Añadir longitud – Se utiliza para calcular la longitud del mensaje original (es decir, excluyendo los bits de relleno) expresada en un valor de 64 bits y luego añadiéndola al final del mensaje original junto con los bits de relleno.
- División de entrada – En este paso, el mensaje de entrada se divide en bloques de 512 bits.
- Inicializar variables de encadenamiento – Ahora, inicializamos las cuatro variables de encadenamiento de 32 bits llamadas A, B, C y D.
- Bloque de proceso – En este paso, el algoritmo real comienza a funcionar. No es fácil explicar el bloque de proceso en un lapso de tiempo, por lo que vamos a introducir este paso en un subpaso.
- a: Las cuatro variables de encadenamiento se copian en cuatro variables correspondientes a,b,c y d. Por lo tanto, tenemos a=A, b=B, c=C y d=D. La combinación de a,b,c y d se ve como un único registro capaz de contener los resultados intermedios y finales.
- b: Este paso realiza la división sobre el bloque de 512 bits para hacer 16 sub-bloques de 32 bits cada uno.
- c: Ahora, los 16 sub-bloques se procesan en cuatro rondas. Cada ronda tiene 16 sub-bloques de entrada acompañados de las variables a,b,c,d,d y algunas constantes. Una sola ronda se explica en el diagrama que se muestra a continuación.
Estas rondas varían de una manera importante: el paso 1 de las cuatro rondas podría tener un procesamiento diferente, mientras que los otros pasos de las cuatro rondas son los mismos.
Cada ronda está compuesta por 16 sub-bloques de entrada llamados M[0], M[1],….., M[15] o comúnmente, M[i], donde i va de 0-15. Además, hay una serie de constantes que se dan como entrada denotadas por t, t[1], t[2],…., t[64] o en general como t[k] donde k varía de 1 a 64, pero sólo se utilizan 16 de los 64 valores de t.
Fuentes : Wikipedia, Techdifferences, TechTarget, Techopedia.