MD5 o SHA-256: ¿qué hash deberías usar?
MD5 y SHA-256 convierten un archivo en una huella corta, pero solo uno de los dos sigue siendo fiable cuando alguien intenta engañarte. Cronometramos siete funciones hash y vimos qué significa de verdad «roto».
Las páginas de descarga, las herramientas de copia de seguridad y los informes forenses citan hashes: a veces MD5, a veces SHA-256, a veces ambos. Se parecen, largas cadenas de letras y dígitos, pero no son intercambiables. Cronometramos siete funciones hash en el navegador y vimos qué significa realmente «roto» para MD5, para saber cuándo conviene cada una.
Qué es un hash
Una función hash convierte cualquier cantidad de datos en una huella corta de longitud fija. Los mismos datos dan siempre la misma huella, y el cambio más pequeño da una completamente distinta. Basta con cambiar una mayúscula:
MD5 Tooloat dc73decfa67455e9850e5c5436f0f352
MD5 tooloat 3cf2985ef86fe54d497628b19ec2ffa3
SHA-256 Tooloat 593679c12c57025648598e66c6fdd88b1dcbf8b58543a3c150817e8dd48be2db
SHA-256 tooloat 31f0fbc2bb921f2f1083df2e23a4dd3bdc2a626ae71b6b8cd90849a5efc831efEso es lo que hace útiles a los hashes para verificar archivos. Si el SHA-256 de tu descarga coincide con el que publica el editor, el archivo es el que publicó, hasta el último bit.
Qué significa «roto» para MD5
Un hash seguro debe hacer prácticamente imposible encontrar dos entradas distintas con la misma huella, lo que se llama una colisión. Para MD5 eso dejó de ser cierto en 2004, cuando unos investigadores publicaron las primeras colisiones. Desde entonces los ataques no han hecho más que mejorar:
- 2008: unos investigadores usaron colisiones de MD5 para crear una autoridad de certificación falsa en la que los navegadores web habrían confiado.
- 2012: el malware de espionaje Flame usó una colisión de MD5 para falsificar un certificado de firma de código de Microsoft, de modo que parecía una actualización de Windows.
- Hoy: herramientas gratuitas generan en segundos, en una laptop normal, un par de archivos distintos con el mismo MD5.
SHA-1 corrió la misma suerte. En 2017, un equipo de Google y del CWI de Ámsterdam publicó dos archivos PDF distintos con el mismo SHA-1, y en 2020 el ataque ya era práctico contra formatos del mundo real. SHA-256, de la familia SHA-2, no tiene ninguna colisión conocida, y tampoco SHA-512 ni BLAKE3.
El ataque tiene un límite importante. Una colisión significa que alguien creó dos archivos que coinciden entre sí. No permite a nadie crear un archivo nuevo que coincida con un MD5 que ya tienes, un problema mucho más difícil que nadie ha resuelto para MD5. Esa distinción decide cuándo MD5 sigue siendo aceptable.
Velocidad
El generador de hash de Tooloat en un Intel Xeon de 2013, leyendo el archivo en trozos de 2 MB. Solo la lectura iba a 325 MB/s.
Aquí MD5 fue 1,8 veces más rápido que SHA-256. En la práctica, un video de 4 GB tarda unos 22 segundos con MD5 y unos 40 con SHA-256. La diferencia se reduce en los procesadores más nuevos, muchos de los cuales incluyen instrucciones específicas para SHA-256. El SHA-256 propio del navegador, en código nativo y no en WebAssembly, ya alcanzó 228 MB/s en la misma máquina antigua. Con archivos grandes, el límite suele ser el disco de todos modos.
Que SHA-512 sea más rápido que SHA-256 no es un error: trabaja con números de 64 bits, que encajan con los procesadores modernos, y procesa más datos en cada paso. BLAKE3 es el más reciente del grupo y está diseñado para ser aún más rápido con varios núcleos e instrucciones anchas, que nuestra prueba de un solo hilo no usa.
Cuándo MD5 sirve y cuándo no
| Uso | MD5 o SHA-1 | Usa en su lugar |
|---|---|---|
| Verificar una descarga con un checksum del editor | Solo si es lo único que publica | SHA-256 |
| Detectar daños accidentales en copias de seguridad o transferencias | Sirve | Cualquiera, incluido CRC-32 |
| Encontrar archivos duplicados en tu propio disco | Sirve | Cualquiera |
| Firmas digitales y certificados | Inseguro | SHA-256 o más fuerte |
| Demostrar que otra persona no modificó un documento | Inseguro | SHA-256 o más fuerte |
| Guardar contraseñas | Inseguro | Argon2id, bcrypt o scrypt |
La regla práctica: si alguien pudiera preparar a propósito un archivo para engañar a la verificación, usa SHA-256. Si el único peligro es un accidente, como un cable, un disco o una red que cambia un bit, MD5 aún lo detecta, y también el mucho más sencillo CRC-32.
Cómo verificar el hash de un archivo
- Abre el generador de hash y suelta el archivo. Se lee en trozos pequeños en tu navegador, así que funcionan incluso los archivos grandes y no se sube nada.
- Elige los algoritmos que necesites. Todos se calculan en una sola pasada, así que añadir más cuesta poco.
- Pega el checksum de la página de descarga en Verificar con un checksum, o todo el contenido de un archivo SHA256SUMS. La herramienta deduce el algoritmo por la coincidencia y te dice si coincide.
Si el checksum no coincide, no abras el archivo. Descárgalo de nuevo y, si sigue sin coincidir, el archivo no es el que publicó el editor.
Preguntas y respuestas
¿Es seguro usar MD5 todavía?
Para detectar corrupción accidental, sí. Para cualquier cosa en la que alguien pudiera preparar un archivo a propósito, como firmas, certificados o controles de seguridad, no: las colisiones de MD5 se crean en segundos.
¿Es SHA-256 más rápido que MD5?
No. En nuestra prueba en el navegador, MD5 fue a 186 MB/s y SHA-256 a 104 MB/s. Los procesadores con instrucciones SHA reducen la diferencia, y el SHA-256 integrado del navegador alcanzó 228 MB/s en la misma máquina.
¿Pueden dos archivos tener el mismo hash SHA-256?
En teoría sí, ya que hay más archivos posibles que hashes, pero nunca se ha encontrado un par así, y encontrarlo está muy lejos del alcance de cualquier método conocido.
¿Qué hash debo usar para los checksums?
SHA-256. Es el estándar para los checksums publicados, todos los sistemas operativos pueden calcularlo y es seguro frente a la manipulación deliberada.
Herramientas de este artículo
Más del blog
Cómo quitar la ubicación y otros metadatos de las fotos
Cada foto lleva datos ocultos sobre la cámara, la hora y a menudo el lugar. Leímos lo que aún revelaban nueve fotos publicadas, añadimos una ubicación para mostrar su precisión y comprobamos que quitarla deja la imagen intacta.
¿Cuánto se tarda en descifrar una contraseña?
La fuerza de una contraseña depende de cuántas contraseñas se podrían haber elegido, no de lo complicada que parezca. Calculamos cuánto resisten los tipos comunes de contraseña frente a una tarjeta gráfica moderna, y por qué caen primero las que inventa la gente.
¿Los conversores en línea suben tus archivos?
La mayoría de los conversores en línea envían tu archivo a un servidor; algunos hacen el trabajo en tu navegador. Así puedes saber en un minuto de qué tipo es un sitio, y así fue cada petición cuando convertimos una foto en el nuestro.