Tema 14

14. MD5, SHA-1, SHA-2, SHA-3 y el análisis de algoritmos hash obsoletos y vigentes

No todas las funciones hash criptográficas tienen hoy el mismo valor. Algunas, como MD5 y SHA-1, fueron muy importantes históricamente, pero ya no se consideran adecuadas para muchos usos críticos. Otras, como SHA-2 y SHA-3, siguen siendo referencias actuales. Entender esta evolución es clave para no mezclar tradición con seguridad real.

Objetivo Distinguir algoritmos hash obsoletos de los vigentes
Enfoque Histórico, comparativo y práctico
Resultado Saber qué familias hash conviene usar hoy y por qué

14.1 Introducción

Después de estudiar qué propiedades debe cumplir una función hash criptográfica, el siguiente paso es bajar esa teoría a algoritmos concretos. En la práctica, no alcanza con decir "uso un hash": importa muchísimo cuál se usa, para qué se usa y si sigue siendo confiable frente al estado actual del criptoanálisis.

Algunos algoritmos fueron estándares durante años, pero hoy ya no ofrecen garantías suficientes. Otros continúan vigentes y se utilizan ampliamente en sistemas modernos. Entender esa distinción evita decisiones peligrosas basadas en costumbre o compatibilidad heredada.

14.2 Por qué los algoritmos hash envejecen

Un algoritmo hash puede quedar obsoleto por varias razones: aparición de ataques más eficientes, colisiones prácticas, debilidades estructurales o simplemente porque el avance del cómputo vuelve insuficiente su margen de seguridad. La criptografía no es estática. Un diseño que parecía robusto en una época puede dejar de serlo más adelante.

Esto no significa que todo algoritmo viejo sea automáticamente inútil, pero sí que debe evaluarse según el propósito y el estado real de la investigación criptográfica.

14.3 MD5: contexto histórico

MD5 fue diseñado por Ronald Rivest en 1991 como una mejora sobre funciones hash anteriores. Durante mucho tiempo fue enormemente popular por su velocidad y simplicidad. Se utilizó para verificación de archivos, firmas, certificados, almacenamiento de contraseñas y muchas otras tareas.

Su salida tiene 128 bits, lo cual en su momento se consideró aceptable para muchos usos. Sin embargo, con el paso del tiempo comenzaron a aparecer debilidades serias.

14.4 Qué falló en MD5

El problema más grave de MD5 fue la resistencia a colisiones. Se desarrollaron ataques que permitieron construir colisiones de manera práctica, lo que lo volvió inadecuado para firmas digitales, certificados y cualquier contexto donde la colisión tenga impacto de seguridad.

En otras palabras, aunque MD5 siga produciendo un resumen y pueda servir para detectar cambios accidentales simples, ya no debe considerarse un hash criptográficamente seguro para contextos adversariales.

14.5 MD5 hoy

Hoy MD5 se considera obsoleto para seguridad criptográfica. Puede seguir apareciendo en herramientas antiguas, compatibilidad heredada o usos no críticos, pero no debería elegirse para nuevas aplicaciones donde haya riesgo real de manipulación, colisiones o adversarios activos.

Que un algoritmo siga siendo rápido o común no significa que siga siendo seguro.

14.6 SHA-1: la siguiente gran referencia histórica

SHA-1 fue durante años uno de los algoritmos hash más usados del mundo. Diseñado por la NSA y estandarizado por NIST, produce una salida de 160 bits y fue adoptado en firmas digitales, certificados, control de integridad, sistemas operativos y repositorios de código.

Durante bastante tiempo se lo consideró una mejora sobre alternativas anteriores, pero con el tiempo también comenzaron a aparecer debilidades.

14.7 Qué ocurrió con SHA-1

El punto crítico de SHA-1 fue nuevamente la resistencia a colisiones. Durante años hubo ataques teóricos cada vez mejores hasta que finalmente se demostraron colisiones prácticas bajo condiciones controladas. Eso cambió por completo su estatus de seguridad.

Desde entonces, SHA-1 dejó de ser recomendable para firmas, certificados y otros usos donde una colisión pueda ser explotada por un atacante.

14.8 SHA-1 hoy

Al igual que MD5, SHA-1 debe considerarse obsoleto para usos criptográficos serios. Puede seguir apareciendo en sistemas heredados o identificadores históricos, pero no debería adoptarse en diseños nuevos si existe riesgo real de manipulación deliberada.

14.9 La familia SHA-2

SHA-2 es una familia más moderna y robusta que incluye variantes como SHA-224, SHA-256, SHA-384 y SHA-512. Estas funciones fueron diseñadas para reemplazar progresivamente a SHA-1 y hoy siguen siendo ampliamente recomendadas y utilizadas.

Entre ellas, SHA-256 es probablemente la variante más conocida y usada en práctica general.

14.10 Por qué SHA-2 sigue vigente

Hasta el momento, SHA-2 no ha sufrido ataques prácticos comparables a los que volvieron obsoletos a MD5 o SHA-1 en contextos generales. Sigue ofreciendo un equilibrio sólido entre seguridad, eficiencia, adopción masiva y compatibilidad.

Por eso es común verla en certificados, firmas, HMAC, derivaciones, integridad de software y numerosos protocolos de seguridad actuales.

14.11 SHA-256, SHA-384 y SHA-512

Estas variantes pertenecen a la familia SHA-2, pero difieren en tamaño de salida y ciertos detalles internos. En términos prácticos:

  • SHA-256: referencia general muy extendida.
  • SHA-384: variante con salida más larga, útil cuando se desea mayor margen o consistencia con ciertos tamaños de clave.
  • SHA-512: salida de 512 bits y buen rendimiento en algunas arquitecturas de 64 bits.

La elección depende del contexto, del estándar utilizado y del nivel de seguridad requerido.

14.12 La familia SHA-3

SHA-3 representa otra familia moderna de funciones hash, seleccionada tras un concurso público organizado por NIST. A diferencia de SHA-2, que sigue una línea de diseño basada en estructuras tipo Merkle-Damgård y compresión iterativa, SHA-3 se basa en una construcción diferente llamada sponge.

Esto no significa que SHA-2 esté rota ni que SHA-3 la reemplace automáticamente. Significa que existe una familia alternativa, bien analizada y útil como diversidad criptográfica y opción robusta.

14.13 Qué aporta SHA-3

SHA-3 aporta una arquitectura distinta y flexibilidad interesante. Su existencia es valiosa porque evita depender por completo de una sola línea de diseño hash. También ofrece variantes como SHAKE, funciones extensibles que permiten obtener salidas de longitud variable.

En muchos sistemas actuales sigue predominando SHA-2, pero SHA-3 ocupa un lugar relevante como alternativa moderna y estandarizada.

14.14 SHA-2 versus SHA-3

No es correcto plantear la discusión como si una de las dos familias fuera "la única buena" y la otra estuviera descartada. Ambas siguen siendo consideradas adecuadas en contextos modernos, pero con perfiles de adopción diferentes.

Familia Estado actual Ventaja práctica Comentario
SHA-2 Vigente Amplísima adopción y compatibilidad Muy usada en práctica real
SHA-3 Vigente Diseño alternativo moderno Útil como diversidad y robustez complementaria

14.15 Longitud de salida y propósito

No siempre se necesita la misma longitud de salida para todos los problemas. Una firma digital, un HMAC, un sistema de integridad o una estructura distribuida pueden tener requerimientos distintos. Sin embargo, elegir una salida más corta solo por ahorrar espacio puede reducir el margen frente a colisiones o ataques genéricos.

Por eso la longitud del hash debe alinearse con el nivel de seguridad buscado y con el sistema en el que se integra.

14.16 Integridad accidental versus integridad adversarial

A veces un sistema solo quiere detectar corrupción accidental de datos. En otros casos quiere defenderse frente a un atacante que intenta construir un archivo falso con el mismo hash. La diferencia es enorme.

En el primer caso, incluso algoritmos antiguos pueden todavía detectar cambios casuales. En el segundo, usar MD5 o SHA-1 es una mala práctica porque ya no resisten ataques de colisión adecuados.

14.17 Algoritmos obsoletos no significan idéntico riesgo para todo

Decir que MD5 o SHA-1 están obsoletos no implica que cualquier uso residual de ellos sea igualmente catastrófico. El riesgo depende del contexto. Pero desde el punto de vista de diseño seguro, lo correcto es no introducirlos en sistemas nuevos con fines criptográficos.

La razón es simple: hoy existen alternativas mejores, estandarizadas y ampliamente disponibles. No hay justificación seria para seguir eligiendo algoritmos conocidos por sus debilidades cuando se diseña algo nuevo.

14.18 Hashes rápidos y contraseñas

Otro error muy común es pensar que si SHA-256 o SHA-512 son hashes vigentes, entonces bastan para almacenar contraseñas directamente. No es así. Un hash rápido puede ser excelente para integridad o firmas y, al mismo tiempo, inadecuado para contraseñas porque permite demasiadas pruebas por segundo en ataques de fuerza bruta.

Por eso el almacenamiento de contraseñas requiere algoritmos específicos como Argon2, bcrypt, scrypt o PBKDF2, tema que veremos aparte.

14.19 Resumen comparativo de familias hash

Algoritmo o familia Salida típica Estado general Comentario práctico
MD5 128 bits Obsoleto No recomendable para seguridad criptográfica
SHA-1 160 bits Obsoleto No recomendable para firmas ni integridad adversarial
SHA-2 224 a 512 bits Vigente Familia más usada actualmente
SHA-3 224 a 512 bits y extensibles Vigente Alternativa moderna con diseño diferente

14.20 Buenas prácticas actuales

  • Evitar MD5 y SHA-1 en nuevos sistemas con fines criptográficos.
  • Preferir SHA-2 o SHA-3 según el contexto y el estándar aplicable.
  • No usar hashes rápidos como sustituto directo de algoritmos específicos para contraseñas.
  • Entender si el uso requiere integridad casual, integridad frente a adversarios o autenticación con clave.
  • Apoyarse en bibliotecas y estándares vigentes en lugar de mantener decisiones heredadas sin revisión.

14.21 Errores conceptuales frecuentes

  • Creer que "siempre que un hash detecta cambios, ya es criptográficamente seguro".
  • Usar MD5 o SHA-1 porque aún aparecen en herramientas antiguas.
  • Suponer que SHA-3 reemplazó completamente a SHA-2 en todos los contextos.
  • Confundir vigencia del algoritmo con adecuación para contraseñas.
  • Pensar que todos los problemas hash se reducen a "qué tan largo es el digest".

14.22 Qué debes recordar de este tema

  • MD5 y SHA-1 fueron importantes históricamente, pero hoy se consideran obsoletos para muchos usos criptográficos.
  • SHA-2 sigue siendo la familia hash más extendida y recomendada en práctica general.
  • SHA-3 es una alternativa moderna y vigente con un diseño interno diferente.
  • El contexto importa: no es lo mismo detectar errores accidentales que resistir ataques adversariales.
  • Un hash vigente para integridad no necesariamente es adecuado para almacenar contraseñas.
  • Diseñar sistemas nuevos con algoritmos hash obsoletos es una mala decisión evitable.

14.23 Conclusión

La evolución de MD5, SHA-1, SHA-2 y SHA-3 muestra con claridad cómo progresa la criptografía: los algoritmos no son eternos y deben reevaluarse a medida que aparecen nuevos ataques y nuevas necesidades. Entender qué quedó atrás y qué sigue vigente es una parte esencial del criterio técnico.

En el próximo tema estudiaremos el almacenamiento seguro de contraseñas y veremos por qué ese problema requiere técnicas específicas como sal, pepper, stretching y algoritmos como Argon2, bcrypt, scrypt y PBKDF2.