Saltar al contenido

BlogPrivacidad y seguridad6 min de lectura

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».

Un archivo, una huella dactilar y dos hashes, MD5 marcado como roto y SHA-256 como seguro.

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  31f0fbc2bb921f2f1083df2e23a4dd3bdc2a626ae71b6b8cd90849a5efc831ef

Eso 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

Hash de un archivo de 512 MB en el navegador
  • CRC-32222 MB/s
  • MD5186 MB/s
  • BLAKE3171 MB/s
  • SHA-1157 MB/s
  • SHA-512135 MB/s
  • SHA-256104 MB/s

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

UsoMD5 o SHA-1Usa en su lugar
Verificar una descarga con un checksum del editorSolo si es lo único que publicaSHA-256
Detectar daños accidentales en copias de seguridad o transferenciasSirveCualquiera, incluido CRC-32
Encontrar archivos duplicados en tu propio discoSirveCualquiera
Firmas digitales y certificadosInseguroSHA-256 o más fuerte
Demostrar que otra persona no modificó un documentoInseguroSHA-256 o más fuerte
Guardar contraseñasInseguroArgon2id, 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

  1. 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.
  2. Elige los algoritmos que necesites. Todos se calculan en una sola pasada, así que añadir más cuesta poco.
  3. 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

Privacidad y seguridad6 min de lectura

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.

Privacidad y seguridad6 min de lectura

¿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.

Privacidad y seguridad6 min de lectura

¿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.

Esc