SHA, o Secure Hash Algorithm, es la familia de funciones hash criptográficas más utilizada en la web. Detrás de cada certificado SSL, de cada firma digital y de buena parte de los protocolos de autenticación que usas a diario hay uno de estos algoritmos. Los desarrolló la NSA y los publicó el NIST como estándar federal (FIPS), y siguen siendo la base de la seguridad en comunicaciones digitales.
Un poco de historia: de SHA-0 a SHA-1
El primer miembro de la familia llegó en 1993. Se llamó simplemente SHA, aunque hoy se le conoce como SHA-0 para distinguirlo de sus sucesores. Apenas duró en circulación: la NSA lo retiró poco después por una vulnerabilidad que nunca llegó a detallar públicamente, y en 1995 lo reemplazó con SHA-1.
SHA-1 genera un hash de 160 bits y guarda cierto parecido con MD5, el algoritmo que dominaba antes. Se integró en TLS, SSL, PGP, SSH, S/MIME e IPSec, y durante más de una década fue el estándar de facto. El problema llegó en 2010, cuando investigadores demostraron debilidades criptográficas que hacían factible fabricar colisiones. Desde entonces su uso en aplicaciones nuevas está desaconsejado, y los navegadores modernos lo marcan directamente como inseguro si lo encuentran en un certificado.
SHA-2: la familia que sigue en activo
SHA-2 no es un único algoritmo, sino un conjunto de funciones que comparten diseño pero producen hashes de distinto tamaño. Las dos variantes principales son SHA-256 (bloques de 32 bits) y SHA-512 (bloques de 64 bits). A partir de ellas existen versiones truncadas: SHA-224, SHA-384, SHA-512/224 y SHA-512/256. Todas llevan la firma de la NSA.
SHA-256 es la más extendida hoy. La encontrarás en los certificados TLS de prácticamente cualquier web con HTTPS, en la verificación de integridad de paquetes de software y en las firmas de commits de Git. Si gestionas un sitio WordPress y revisas el certificado de tu dominio, casi con toda seguridad verás SHA-256 listado como algoritmo de firma. Si necesitas más contexto sobre cómo la privacidad afecta al diseño de tu web, echa un vistazo a cómo combinar UX y privacidad sin romper la conversión.
SHA-3: el resultado de una competición abierta
En 2012 el NIST seleccionó SHA-3 tras una competición pública entre diseñadores independientes. El ganador fue Keccak, un algoritmo con una arquitectura interna completamente diferente a la del resto de la familia SHA. Comparte con SHA-2 los mismos tamaños de salida (224, 256, 384 y 512 bits), pero en lugar de la construcción Merkle-Damgård usa una estructura de esponja que ofrece garantías de seguridad distintas.
SHA-3 todavía no ha desplazado a SHA-2 en la mayoría de aplicaciones, pero es el camino a seguir cuando se necesita mayor margen de seguridad frente a ataques de longitud de extensión o cuando las especificaciones del proyecto lo exigen. Para webs corporativas que manejan datos sensibles, preparar la arquitectura para entornos de alta exigencia incluye tener claro qué primitivas criptográficas usa cada capa de la infraestructura.
Estándares FIPS y documentación oficial
Cada versión de SHA tiene su propio estándar publicado por el NIST. FIPS PUB 180 recoge el SHA original; FIPS PUB 180-1 introdujo SHA-1; FIPS PUB 180-2 amplió la familia con SHA-256, SHA-384 y SHA-512. SHA-3 tiene su propio documento: FIPS 202, separado del Secure Hash Standard (SHS) para dejar claro que es una familia independiente, no una revisión.
Si quieres profundizar en la especificación técnica de la familia SHA, la documentación del NIST es la referencia definitiva.
¿Qué versión usar hoy?
La respuesta corta: SHA-256 para la mayoría de casos, SHA-3 cuando el contexto exige algo más robusto o cuando las especificaciones del cliente lo piden.
- SHA-1: descartado. Ningún certificado nuevo, ninguna firma en producción.
- SHA-256: estándar actual para certificados TLS, firmas de código, verificación de integridad de paquetes y autenticación de APIs.
- SHA-512: útil cuando se trabaja en hardware de 64 bits y la velocidad de cómputo importa.
- SHA-3 (Keccak): para proyectos que requieren resistencia adicional o conformidad con normativas que lo exigen expresamente.
Preguntas frecuentes sobre SHA
¿SHA es un algoritmo de cifrado?
No. SHA genera un hash, que es una huella de longitud fija a partir de cualquier dato. A diferencia del cifrado, el proceso no es reversible: no puedes recuperar el original a partir del hash. Para cifrar datos se usan algoritmos como AES o RSA; SHA se usa para verificar integridad y autenticar mensajes.
¿Por qué SHA-1 ya no es seguro?
Porque es posible encontrar dos archivos distintos que produzcan el mismo hash (colisión). En 2017 el proyecto SHAttered de Google demostró la primera colisión práctica en SHA-1 con esfuerzo computacional real. Cualquier sistema que dependa de la unicidad del hash para verificar autenticidad queda comprometido.
¿Qué diferencia hay entre SHA-2 y SHA-3?
El diseño interno es completamente distinto. SHA-2 usa la construcción Merkle-Damgård, que hereda algunas limitaciones estructurales. SHA-3 usa una construcción de esponja (sponge), que ofrece mayor resistencia frente a ciertos tipos de ataque. En la práctica ambos son seguros para uso normal, pero SHA-3 tiene ventajas en escenarios específicos de alta seguridad.
¿WordPress usa SHA?
Sí, en varios niveles. El certificado TLS de tu dominio usa SHA-256 para la firma. Además, PHP —el lenguaje sobre el que corre WordPress— usa funciones hash basadas en SHA para la verificación de contraseñas y tokens de sesión. Al actualizar plugins y temas, WordPress también comprueba la integridad de los paquetes descargados mediante hashes.
¿SHA protege las contraseñas de mi web?
SHA no es la opción recomendada para almacenar contraseñas directamente, porque es demasiado rápido y eso facilita los ataques de fuerza bruta. Para contraseñas se usan funciones diseñadas para ser lentas: bcrypt, Argon2 o scrypt. WordPress usa una variante derivada de phpass que añade sal y múltiples rondas, que es mucho más adecuada para este fin.


