El Algoritmo de Hash Seguro (SHA) es una familia de funciones hash criptográficas que convierte datos de cualquier longitud en un resumen de longitud fija, o «huella digital». Sirve de base para las comprobaciones de integridad, las firmas digitales y la confianza en los certificados, y autentica los túneles en IPsec, TLS y DTLS.
Puntos clave
- El SHA convierte cualquier dato de entrada en un resumen de longitud fija que permite verificar su integridad.
- SHA-1 ha quedado obsoleto; SHA-2 (SHA-256, SHA-384, SHA-512) es el estándar actual.
- SHA-3 utiliza un diseño interno diferente como respaldo estructural de SHA-2.
- HMAC-SHA combina SHA con una clave secreta para autenticar mensajes.
- VersaLas transformaciones IKE, IPsec, TLS y DTLS ofrecen todas ellas funciones de hash basadas en SHA.
En esta página: Por qué es importanteCómo funcionaTiposSHA y VersaPreguntas frecuentes
¿Por qué es importante el SHA?
Casi todos los mecanismos que demuestran que los datos no han sido alterados se basan en una función hash, y SHA es la familia que se ha convertido en estándar en Internet. Las autoridades de certificación firman los certificados con resúmenes basados en SHA; las sesiones TLS e IPsec utilizan SHA, directamente o a través de HMAC, para confirmar que los paquetes no han sido manipulados durante la transmisión; y los distribuidores de software publican sumas de comprobación SHA-256 para que se puedan verificar las descargas.
Esa dependencia es también la razón por la que la historia de SHA es importante. SHA-1, que fue el algoritmo dominante durante dos décadas, fue vulnerado mediante un ataque de colisión práctico en 2017, lo que obligó a los navegadores y a las autoridades de certificación a migrar a SHA-2. Saber qué variante de SHA utiliza un sistema es un requisito previo básico para determinar si sus garantías de integridad siguen siendo válidas.
¿Qué es el SHA?
Una función hash toma una entrada de cualquier tamaño y genera una salida de longitud fija: el resumen. SHA-256, por ejemplo, siempre devuelve 256 bits, tanto si la entrada es de un byte como de un gigabyte. Hay tres propiedades que la hacen útil: la función es unidireccional (recuperar la entrada es computacionalmente inviable), determinista (la misma entrada siempre produce el mismo resumen) y resistente a las colisiones (encontrar dos entradas diferentes con el mismo resumen debería ser prácticamente imposible).
Por sí solo, el SHA genera huellas digitales de los datos para comprobar su integridad. Combinado con una clave secreta como HMAC-SHA (código de autenticación de mensajes basado en hash), autentica los mensajes, demostrando tanto que los datos no han sido alterados como que proceden de alguien que posee la clave compartida. Esto es lo que utilizan IPsec y TLS para autenticar paquetes y mensajes de establecimiento de conexión.
Tipos de SHA
SHA-1 genera un resumen de 160 bits y se publicó en 1995. Un ataque de colisión demostrado (la investigación «SHAttered» de 2017) rompió su resistencia a las colisiones, por lo que ahora su uso está desaconsejado para nuevas implementaciones, aunque sigue apareciendo en opciones de configuración heredadas.
SHA-2 es el estándar actual, publicado en 2001. Se trata de una familia de tamaños de hash —SHA-224, SHA-256, SHA-384, SHA-512 y variantes truncadas—, siendo SHA-256 la referencia más habitual para los certificados TLS, la firma de código y las transformaciones IPsec. No se conoce ningún ataque de colisión práctico contra SHA-2.
SHA-3, publicado en 2015, presenta una estructura diferente: utiliza una construcción tipo «esponja» (Keccak) en lugar del diseño de Merkle–Damgård que comparten SHA-1 y SHA-2. Se normalizó como alternativa, no como sustituto, y su uso en protocolos de red es menor que el de SHA-2 en la actualidad.
SHA y Versa
VersaLa configuración del Servicio de Acceso Seguro expone el algoritmo SHA directamente en la criptografía del túnel. La configuración de la transformación IKE para un servidor de acceso seguro o un perfil de client SASE a empareja un algoritmo de cifrado (3DES, AES de 128 bits o AES de 256 bits) con un algoritmo de hash —MD5, SHA-1, SHA-256, SHA-384 o SHA-512— para el canal de control de intercambio de claves. La transformación IPsec (ESP) ofrece las mismas opciones de SHA para el túnel del plano de datos, junto con modos GCM que integran la autenticación en el cifrado en lugar de emparejarla con un hash SHA independiente.
SHA también aparece en los conjuntos de cifrado TLS y DTLS que se ofrecen para los portales de acceso seguro y las sesiones de cliente de SASE ; por ejemplo, TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384 – donde la variante SHA final determina el algoritmo de integridad del protocolo de establecimiento de conexión. Los administradores ajustan el nivel de seguridad de SHA por túnel, tanto en implementaciones con « Secure SD-WAN » como en aquellas protegidas por un NGFW: se recomienda utilizar SHA-256 o un algoritmo más seguro, y considerar SHA-1 y MD5 únicamente como opciones de compatibilidad.
Preguntas frecuentes
¿Cuál es la diferencia entre SHA-1 y SHA-256?
SHA-1 genera un resumen de 160 bits y es vulnerable a los ataques de colisión, por lo que no debería utilizarse para nuevos fines de seguridad. SHA-256, que forma parte de la familia SHA-2, genera un resumen de 256 bits, no presenta ningún ataque de colisión práctico conocido y es la norma de referencia recomendada actualmente.
¿El SHA es un cifrado o un algoritmo de hash?
Función hash, no cifrado. El cifrado es reversible con la clave adecuada; la función hash es unidireccional por diseño: no existe ninguna clave que permita recuperar la entrada original a partir de un resumen SHA. SHA verifica la integridad de los datos y, combinado con una clave como HMAC, los autentifica.
¿Por qué se dejó de utilizar SHA-1?
En 2017, unos investigadores demostraron la existencia de una colisión práctica —dos entradas diferentes que generaban el mismo resumen SHA-1—, lo que socavó la propiedad que hacía que SHA-1 fuera fiable para firmas y certificados. A raíz de ello, los navegadores y las autoridades de certificación pasaron a exigir el uso de SHA-2 o versiones posteriores para los nuevos certificados.
¿Qué es HMAC-SHA y en qué se diferencia del SHA por sí solo?
HMAC-SHA combina una función hash SHA con una clave secreta para generar un código de autenticación con clave. El SHA sin más demuestra que los datos no han sido alterados; HMAC-SHA demuestra además que el remitente poseía la clave compartida, que es lo que utilizan IPsec y TLS para autenticar el tráfico del túnel.
¿Qué variante de SHA debería utilizar hoy?
En la actualidad, SHA-256 es el estándar de facto para certificados, handshakes TLS y transformaciones IPsec. SHA-384 o SHA-512 aportan un margen adicional para implementaciones de mayor seguridad que pueden admitir un tamaño de resumen mayor. El uso de SHA-1 y MD5 debe limitarse estrictamente a la interoperabilidad con sistemas heredados que no puedan actualizarse.
Más información sobre SHA
Si quieres saber más, estas son algunas fuentes en las que confiamos.
| RFC 3174: Algoritmo de hash seguro 1 (SHA-1) de EE. UU. | RFC 6234: Algoritmos de hash seguros de EE. UU. (SHA y HMAC) |
|---|---|
| La especificación original de la IETF del algoritmo SHA-1, que incluye pseudocódigo y una implementación de referencia completa para su verificación. | La especificación de la IETF que abarca SHA-1 y la familia de funciones de resumen SHA-2, además de las construcciones HMAC y HKDF basadas en SHA que se han desarrollado a partir de ellas. |
Términos relacionados
Si estás leyendo sobre SHA, te conviene echar un vistazo a lo siguiente.
| Estándar de cifrado avanzado | Modo Galois/Counter | Seguridad de la capa de transporte de datagramas |
|---|---|---|
| El cifrado simétrico SHA suele combinarse con transformaciones IPsec y TLS para proporcionar cifrado e integridad. | Un modo de cifrado autenticado que integra el hash en el propio cifrado, que se ofrece como alternativa a las transformaciones separadas de tipo «AES más SHA». | Un protocolo de túnel basado en UDP cuyas suites de cifrado, al igual que las de TLS, incorporan una variante de SHA para garantizar la integridad del protocolo de establecimiento de conexión. |