MD5 Vs SHA-256
En estas cosas de Criptografía nunca es suficiente que alcance el 100% de seguridad, se tendría que valorar que se desea, rapidez vs seguridad
Historia:
MD5 (Message-Digest Algorithm 5) nace por el año 1991 y es el reemplazo del MD4, su creador el profesor Ronald Rivest del Massachusetts Institute of Tecnology. Fue desarrollado al descubrir las debilidades de su predecesor, ahora bien este algoritmo de 128 bits de longitud es representado como un número de 32 caracteres hexadecimales y luego surge la duda ¿Que significa HASH?
Una función criptográfica hash- usualmente conocida como “hash”- es un algoritmo matemático que transforma cualquier bloque arbitrario de datos en una nueva serie de caracteres con una longitud fija. Independientemente. Entonces empezamos a hablar de Hash MD5 o Hash 256 etc. y vamos entendiendo un poquito. Para hablar en castellano esta función criptográfica nos da como resultado una cadena de 32 caracteres no importando el tamaño de la entrada, ya sea un archivo o texto. Si ese entrada es modificada su hash seguirá siendo de 32 caracteres pero diferentes:
= 262031397020fd8df478ec13b4b096c5
=bc0cb56d1a886798d7b1b95c319c5d36
si le agregamos el acento al apellido
=3eef149959ae290494ac352b324dabcb
La mala noticia: Sin embargo, ya un año después de su publicación, quedó claro que esta función no funciona correctamente y puede ocurrir una situación en la que la función produzca el mismo resumen para dos cadenas diferentes. Esta falla es fundamental y hace que la función MD5 sea completamente inutilizable para la criptografía, ya que conduce a una serie de agujeros de seguridad. El uso de la función MD5 ha sido fuertemente desaconsejado durante muchos años.
Recomendación: si está creando su propia aplicación y necesita crear un resumen de algún texto, considere usar otras funciones de encriptación que no tengan fallas de seguridad.
Por otra parte, las funciones criptográficas hash se utilizan también para asegurar la “integridad de los mensajes”. En pocas palabras, para estar seguros de que algunas comunicaciones o archivos no fueron alterados de alguna forma, se pueden examinar los hash creados antes y después de la transmisión de los datos. Si los dos hash son idénticos, significa que no ha habido ninguna alteración. A se me olvidaba, los antivirus utilizan estas funciones para saber si un archivo esta contaminado, comparando sus Hash antes y después, incluso existen bibliotecas de hash de virus conocidos.
¿Y que hay de SHA-256?
SHA-256 significa «algoritmo de hash seguro de 256 bits» y se utiliza para la seguridad criptográfica.
Los algoritmos de hash criptográfico generan hashes irreversibles y únicos. Cuanto mayor sea la cantidad de hashes posibles, menor será la probabilidad de que dos valores creen el mismo hash. Fue desarrollado por la Agencia de Seguridad Nacional de los Estados Unidos (NSA) y el National Institute of Standards and Technology (NIST). En 1993 salió a la luz el primer protocolo SHA, también llamado coloquialmente SHA-0. Dos años más tarde, se publicó una variante mejorada más resistente, el SHA-1. Algunos años más tarde se lanzó SHA-2, que tiene cuatro variantes según el número de bits, como son SHA-224, SHA-256, SHA-384 y SHA-512.
Básicamente tiene la misma funcionalidad que el MD5, es decir no importa el tamaño de entrada, su salida será de 64 letras y números (con codificación de 256 bits, 32 bytes) y aparte es unidireccional, es decir de un valor Hash 256 no puedes regenerar la entrada y nunca tendrá un mensaje de salida igual ante dos entradas diferentes (situación que podría suceder con MD5-colisiones hash).
Las funciones hash SHA-2 están implementadas en una gran variedad de aplicaciones y protocolos de seguridad, como por ejemplo: TLS y SSL, PGP, SSH, S/MIME, Bitcoin, PPCoin y IPsec.
Desventajas: En comunicaciones se hace lenta la transmisión de datos
Ventajas: TODAS
Adendum
Para validar el Hash MD5 de un archivo podemos utilizar este script en una ventana de CMD (Con permisos de Administrador)
certutil -hashfile <file> MD5
donde <file> es el nombre del archivo, ejecuta este script en la carpeta donde esta el archivo, para MAC tendrás que abrir Terminal y ejecutar este script:
md5 <file>
Generador de HASH MD5