MD5

Una función criptográfica hash, también conocida simplemente como “hash”, es un algoritmo matemático que transforma cualquier bloque arbitrario de datos en una nueva serie de caracteres con una longitud determinada. Independientemente de la longitud de los datos de entrada, el valor hash de salida tendrá siempre la misma longitud. Este tipo de funciones criptográficas son ampliamente usadas en la informática. Sus funciones más conocidas son almacenar contraseñas de forma segura, detectar unívocamente archivos e incluso para asegurar que se ha conservado la integridad del mensaje durante un intercambio de información.

Dentro de estas funciones criptográficas, encontramos MD5. Su nombre proviene de la abreviación en inglés de Algoritmo de Resumen de Mensaje 5. Esta función hash fueuna de las más utilizadas en todo el mundo. Este algoritmo fue desarrollado por Ronald Rivest en 1995 y está basado en dos algoritmos anteriores: MD2 y MD4. Tanto MD5 como sus predecesores producen un número de 128 bits a partir de un texto de cualquier longitud.

MD4 fue publicado en 1990 para mejorar el rendimiento de MD2, sin embargo, se detectaron múltiples problemas de seguridad y en 1996 se publicó información que hace a día de hoy inservible el algoritmo MD4. MD5 sustituyó a este algoritmo criptográfico y a pesar de su menor rendimiento, resultó ser más robusto pues a día de hoy no hay información publicada sobre un compromiso en su integridad y funcionamiento. Aunque ya está está considerado “roto” y en 2008 se mejoró con MD6, esta versión sigue siendo usada. Cabe añadir que como cualquier algoritmo usado en seguridad informática tendrá fecha de caducidad y todo apunta a que en los próximos años la función criptográfica MD5 pierda su hegemonía entre los algoritmos hash.

MD5 comienza rellenando el mensaje a una longitud determinada, dejando en la parte final el espacio necesario para rellenar con el mensaje que se quiere procesar. Posteriormente se utilizan una serie de algoritmos para procesar los bloques y mezclarlos con una serie de datos del buffer de memoria que dan como resultado final un mensaje resumen de 128 bits. En este proceso hay destrucción de información con lo que, debido a esta pérdida intermedia, no puede recuperarse el contenido previo del mensaje.

MD5 por lo tanto no es una solución de cifrado sino una función hash unidireccional, no hay forma de recuperar el texto en claro a partir del hash. Es decir, no se puede descifrar, lo que lo hace inútil para la transferencia de mensajes, pero tiene la virtud de que si se repite el proceso con el mismo contenido a cifrar, se convertirá exactamente en el mismo hash MD5 tras procesar y lo convierte en muy útil para validar la inmutabilidad de un contenido.

El método más factible para recuperar el valor original es mediante un ataque de fuerza bruta que creará una cadena de texto, la cifrará en MD5 y comparará su resultado con el que se quiere descifrar, repitiendo hasta conseguir una coincidencia con lo que, en función de la complejidad del contenido inicial, puede ser tremendamente costoso en términos de tiempo y potencia de procesado.

También se suele usar Secure Hash Algorithm, (SHA)