SHA-2
| SHA-2 | |
|---|---|
| Tipo | Funciones hash criptográficas |
| Diseñador | Agencia de Seguridad Nacional (NSA) |
| Publicado por primera vez | 2001 |
| Estándar | FIPS PUB 180-4 |
| Tamaños de resumen | 224, 256, 384 y 512 bits |
| Estructura | Construcción Merkle–Damgård con función de compresión Davies–Meyer |
| Rondas | 64 u 80 |
| Criptoanálisis | Sin colisiones completas conocidas; ataques reducidos por rondas |
1. Resumen[editar]
SHA-2 —abreviatura de Secure Hash Algorithm 2— es una familia de funciones hash criptográficas diseñadas por la Agencia de Seguridad Nacional de los Estados Unidos (NSA) y publicada inicialmente en 2001 por el Instituto Nacional de Estándares y Tecnología (NIST) como Estándar Federal de Procesamiento de la Información (FIPS).[1]
La familia comprende las variantes SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 y SHA-512/256. Las dos variantes centrales son SHA-256 y SHA-512: producen resúmenes de 256 y 512 bits, respectivamente. Las demás son versiones truncadas o con valores iniciales distintos.
Una función hash transforma un mensaje de longitud arbitraria —un archivo de texto, una imagen, un flujo de audio o cualquier otra secuencia de datos— en un valor de longitud fija llamado hash, resumen o digesto. La misma entrada produce siempre el mismo hash, pero un cambio mínimo en la entrada produce, con probabilidad abrumadora, un hash completamente distinto. Esa propiedad se conoce como efecto avalancha y permite usar el hash para verificar la integridad de una copia sin necesidad de conservar o revelar el dato original.[2]
SHA-2 sucedió a SHA-1 y se diferencia de él por usar bloques y palabras más grandes, más rondas y funciones de compresión reforzadas. A diferencia de SHA-1, que hoy se considera roto ante ataques de colisión, SHA-2 permanece, desde 2024, considerado seguro frente a los ataques conocidos, incluidos los de computadoras cuánticas. Esa evaluación es de 2024 y seguía vigente, sin actualizar, cuando se consultó la fuente el 15 de agosto de 2026: no consta ninguna colisión completa publicada contra SHA-2. Lo que sí está publicado son ataques contra versiones reducidas del algoritmo: un ataque de 2011 rompe la resistencia a preimagen en 57 de las 80 rondas de SHA-512 y en 52 de las 64 de SHA-256, y existe un ataque de pseudocolisión contra un máximo de 46 rondas de SHA-256. Ninguno alcanza el número completo de rondas.[3]
2. Historia y normalización[editar]
2001–2002: aparición de la familia[editar]
Los algoritmos que después se denominaron SHA-2 se publicaron por primera vez en 2001 como parte del borrador FIPS PUB 180-2. En ese momento se presentaron SHA-256, SHA-384 y SHA-512. El borrador permitió revisión y comentarios públicos.[4]
En agosto de 2002, FIPS PUB 180-2 se convirtió en el nuevo Secure Hash Standard, en reemplazo de FIPS PUB 180-1, publicado en abril de 1995. La norma actualizada conservó el algoritmo SHA-1, pero unificó la notación técnica para describir el funcionamiento interno de la familia SHA-2.[5]
2004–2008: SHA-224 y actualización de 2008[editar]
En febrero de 2004 se publicó un aviso de cambio de FIPS PUB 180-2 para especificar la variante adicional SHA-224. Esa variante se definió con una salida de 224 bits para que coincidiera con la longitud de clave de Triple DES de dos claves.[6]
En octubre de 2008 el estándar se actualizó como FIPS PUB 180-3. Esta revisión incorporó SHA-224 del aviso de cambio, pero no modificó sustancialmente el estándar. Su motivación principal fue trasladar las recomendaciones de uso y la información de seguridad a las publicaciones especiales SP 800-107 y SP 800-57 del NIST.[7]
2011–2012: SHA-512/224 y SHA-512/256[editar]
En 2011, el NIST publicó SP 800-131A, en la que estableció la transición del nivel mínimo de seguridad de 80 bits —proporcionado por SHA-1—, permitido para uso federal hasta fines de 2013, al nivel de 112 bits proporcionado por SHA-2. A partir de 2014, SHA-2 pasó a ser el requisito mínimo recomendado para las aplicaciones del gobierno estadounidense.[8]
En marzo de 2012 se publicó FIPS PUB 180-4, la versión vigente del estándar. Esta revisión agregó las variantes SHA-512/224 y SHA-512/256, y describió un método para generar valores iniciales para las versiones truncadas de SHA-512. También eliminó una restricción anterior sobre el relleno de los datos de entrada, lo que permitió calcular el hash de contenido en movimiento, por ejemplo durante una transmisión de video o audio en tiempo real. El relleno del bloque de datos final debe seguir realizándose antes de producir el hash.[9]
SHA-2 no deriva de SHA-3. La competencia de funciones hash del NIST seleccionó en 2012 al algoritmo SHA-3, que usa una construcción interna diferente y no es un sucesor directo de SHA-2.[10]
2023 en adelante[editar]
En marzo de 2023, el NIST anunció su decisión de revisar FIPS 180-4. La futura FIPS 180-5 eliminaría la especificación de SHA-1, incorporaría guías de SP 800-107 y realizaría actualizaciones editoriales. La edición vigente del estándar es FIPS 180-4.[11]
3. Fundamentos de las funciones hash[editar]
Una función hash criptográfica se caracteriza por tres propiedades principales: resistencia a la preimagen, resistencia a la segunda preimagen y resistencia a colisiones.[12]
En la práctica, una función hash toma como entrada datos de cualquier longitud y produce un resumen de longitud fija. El resultado puede almacenarse o distribuirse libremente, porque no revela el contenido original y solo sirve para comparaciones. Si dos conjuntos de datos distintos producen el mismo hash, se dice que se produjo una colisión. Una colisión facilita que un atacante cree archivos con el mismo resumen y eluda controles de integridad o firma digital.
La resistencia de una función hash se mide según el número de operaciones necesarias para romperla. Para una función con un resumen de L bits:
- encontrar una entrada que corresponda a un resumen dado exige en promedio 2^L evaluaciones; es el llamado ataque de preimagen;
- encontrar dos mensajes distintos con el mismo resumen exige en promedio 2^(L/2) evaluaciones si se usa un ataque de cumpleaños.
Por eso SHA-256, con salida de 256 bits, ofrece un nivel de seguridad de 128 bits ante colisiones y de 256 bits ante preimágenes; SHA-512 ofrece 256 bits ante colisiones y 512 bits ante preimágenes.[13]
4. Diseño de la familia SHA-2[editar]
SHA-2 se construye mediante la estructura de Merkle–Damgård, que procesa el mensaje por bloques. Internamente usa una función de compresión unidireccional construida con la estructura Davies–Meyer a partir de un cifrado por bloques especializado.[14]
- SHA-256 trabaja con palabras de 32 bits, bloques de 512 bits y un estado interno de 256 bits; ejecuta 64 rondas.
- SHA-512 trabaja con palabras de 64 bits, bloques de 1024 bits y un estado interno de 512 bits; ejecuta 80 rondas.
Ambas variantes comparten prácticamente la misma estructura y solo cambian el tamaño de palabra, el número de rondas, las constantes y los desplazamientos. SHA-224 es una versión truncada de SHA-256 con valores iniciales distintos; SHA-384 es una versión truncada de SHA-512 con valores iniciales distintos. SHA-512/224 y SHA-512/256 también son versiones truncadas de SHA-512, pero sus valores iniciales se generan con el método definido en FIPS PUB 180-4.[15]
El procesamiento de SHA-256 puede resumirse así: se rellena el mensaje de modo que su longitud en bits sea un múltiplo de 512; se divide en bloques de 512 bits; para cada bloque se expanden 16 palabras de 32 bits en un programa de 64 palabras; se inicializan ocho variables de trabajo; se aplican 64 rondas de mezclado con funciones lógicas, rotaciones, desplazamientos y sumas modulares; por último, se suma el bloque comprimido al valor hash acumulado.[16]
Las constantes de inicialización de SHA-256 derivan de las partes fraccionarias de las raíces cuadradas de los primeros 8 números primos. Las constantes de cada ronda derivan de las partes fraccionarias de las raíces cúbicas de los primeros 64 números primos. SHA-512 usa el mismo principio, pero con valores de 64 bits y los primeros 80 números primos para las constantes de ronda.[17]
5. Variantes de SHA-2[editar]
[ Desplegar / Plegar variantes ]
| Variante | Salida (bits) | Tamaño de palabra (bits) | Bloque (bits) | Estado interno (bits) | Rondas | Mensaje máximo (bits) |
|---|---|---|---|---|---|---|
| SHA-224 | 224 | 32 | 512 | 256 | 64 | 2^64 − 1 |
| SHA-256 | 256 | 32 | 512 | 256 | 64 | 2^64 − 1 |
| SHA-384 | 384 | 64 | 1024 | 512 | 80 | 2^128 − 1 |
| SHA-512 | 512 | 64 | 1024 | 512 | 80 | 2^128 − 1 |
| SHA-512/224 | 224 | 64 | 1024 | 512 | 80 | 2^128 − 1 |
| SHA-512/256 | 256 | 64 | 1024 | 512 | 80 | 2^128 − 1 |
SHA-224 se introdujo en 2004 para ofrecer una salida de 224 bits acorde con la longitud de clave de Triple DES. SHA-512/224 y SHA-512/256 se añadieron en 2012, una vez incorporado el método formal de generación de valores iniciales para variantes truncadas de SHA-512. La variante SHA-512/t no permite usar t igual a 384; en ese caso debe emplearse SHA-384.[18]
6. Aplicaciones[editar]
Las funciones SHA-2 se utilizan en numerosos protocolos y sistemas de seguridad:
- TLS y SSL, para integridad de las comunicaciones y funciones de derivación de claves.
- PGP, SSH y S/MIME, para firmas y verificación de mensajes.
- IPsec, en la autenticación e integridad de paquetes.
- Bitcoin, que usa SHA-256 de doble forma para verificar transacciones y calcular la prueba de trabajo.[19]
- Debian GNU/Linux, que usa SHA-256 para identificar y verificar sus paquetes de software.
- DKIM, estándar de firma de mensajes de correo, que usa SHA-256.
- DNSSEC, que propuso SHA-256 y SHA-512 para sus funciones hash.
- Redes móviles 4G y 5G, donde HMAC-SHA-256 se emplea como función de derivación de claves, definido en las especificaciones 3GPP TS 33.401 y TS 33.501.[20]
- Contraseñas en sistemas Unix y Linux, que adoptaron SHA-2 de 256 y 512 bits para el almacenamiento seguro de credenciales.[21]
- Archivo judicial, como el sistema usado por el Tribunal Penal Internacional para Ruanda para autenticar videos con SHA-512.[22]
La adopción inicial de SHA-2 fue lenta, pese a ser más seguro que SHA-1. Algunas razones fueron la falta de soporte en Windows XP Service Pack 2 o anteriores y la ausencia de colisiones conocidas para SHA-1, lo que reducía la urgencia percibida.[23]
7. Criptoanálisis[editar]
El criptoanálisis de SHA-2 se concentra en versiones con menos rondas de las que tiene el algoritmo completo. Ninguno de los ataques publicados extiende una colisión práctica al SHA-2 completo.
[ Desplegar / Plegar ataques notables ]
| Publicado | Variante | Tipo de ataque | Rondas atacadas | Complejidad |
|---|---|---|---|---|
| 2008 | SHA-256 | Colisión | 24/64 | 2^15.5 |
| 2008 | SHA-512 | Colisión | 24/80 | 2^22.5 |
| 2009 | SHA-256 | Preimagen | 42/64 | 2^251.7 |
| 2009 | SHA-256 | Preimagen | 43/64 | 2^254.9 |
| 2009 | SHA-512 | Preimagen | 42/80 | 2^502.3 |
| 2009 | SHA-512 | Preimagen | 46/80 | 2^511.5 |
| 2010 | SHA-256 | Preimagen | 42/64 | 2^248.4 |
| 2010 | SHA-512 | Preimagen | 42/80 | 2^494.6 |
| 2011 | SHA-256 | Pseudocolisión | 46/64 | 2^178 |
| 2011 | SHA-256 | Preimagen | 45/64 | 2^255.5 |
| 2011 | SHA-512 | Preimagen | 50/80 | 2^511.5 |
| 2011 | SHA-256 | Pseudopreimagen | 52/64 | 2^255 |
| 2011 | SHA-512 | Pseudopreimagen | 57/80 | 2^511 |
| 2013 | SHA-256 | Colisión | 31/64 | 2^65.5 |
| 2013 | SHA-256 | Pseudocolisión | 38/64 | 2^37 |
| 2014 | SHA-512 | Pseudocolisión | 38/80 | 2^40.5 |
| 2016 | SHA-256 | Colisión | 28/64 | práctica |
| 2016 | SHA-512 | Colisión | 27/80 | práctica |
| 2016 | SHA-512 | Pseudocolisión | 39/80 | práctica |
| 2024 | SHA-256 | Colisión | 31/64 | 2^49.8 |
| 2024 | SHA-512 | Colisión | 31/80 | 2^115.6 |
| 2024 | SHA-256 | Pseudocolisión | 39/64 | práctica |
Fuentes distintas han citado resultados ligeramente diferentes. Por ejemplo, la Wikipedia en español hace tiempo resumió el estado de fines de 2013 diciendo que los mejores ataques públicos rompían 46 de las 64 iteraciones de SHA-256 y 46 de las 80 de SHA-512, mientras que resultados posteriores dan 52 pseudopreimagenes para SHA-256 y 57 para SHA-512.[24]
El mejor ataque completo conocido para SHA-512 es una pseudopreimagen sobre 57 de 80 rondas, y para SHA-256 una pseudopreimagen sobre 52 de 64 rondas. Ninguno alcanza el algoritmo completo ni tiene complejidad práctica.[25]
8. Validación oficial[editar]
Las implementaciones de todas las funciones de seguridad aprobadas por FIPS pueden validarse formalmente mediante el programa CMVP, ejecutado de forma conjunta por el NIST y el Communications Security Establishment (CSE) de Canadá.[26]
Para verificación informal, el NIST ofrece paquetes para generar vectores de prueba. Sin embargo, la verificación informal no reemplaza la validación formal del CMVP, que es obligatoria en ciertas aplicaciones gubernamentales de los Estados Unidos.[27]
En diciembre de 2013 se contabilizaban más de 1300 implementaciones validadas de SHA-256 y más de 900 de SHA-512. A diciembre de 2013[sin verificar], solo 5 de ellas podían manejar mensajes cuya longitud en bits no fuera múltiplo de ocho y, a la vez, soportaban ambas variantes.[28]
9. Implementaciones[editar]
SHA-2 está disponible en bibliotecas criptográficas de uso general, entre ellas:
- OpenSSL
- LibreSSL
- GnuTLS
- Crypto++
- Bouncy Castle
- libgcrypt
- Botan
- Mbed TLS
- wolfSSL
- libsodium
También está presente en bibliotecas para lenguajes como C, C++, C#, Java, Go, JavaScript, Python, PHP, Perl y Ruby.[29]
La aceleración por hardware se proporciona mediante extensiones específicas de varios conjuntos de instrucciones:
- Intel SHA extensions, disponibles en algunos procesadores Intel y AMD x86.
- VIA PadLock.
- Extensiones criptográficas ARMv8.
- IBM z/Architecture, desde 2005, mediante las extensiones Message-Security-Assist 1 y 2.[30]
- IBM Power ISA, desde la versión 2.07.
10. Vectores de prueba[editar]
Los vectores de prueba permiten verificar una implementación: si una biblioteca produce estos valores, el algoritmo funciona correctamente para esas entradas.
[ Desplegar / Plegar vectores de prueba ]
Cadena vacía
SHA-224("")
0xd14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f
SHA-256("")
0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
SHA-384("")
0x38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b
SHA-512("")
0xcf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e
SHA-512/224("")
0x6ed0dd02806fa89e25de060c19d3ac86cabb87d6a0ddd05c333b84f4
SHA-512/256("")
0xc672b8d1ef56ed28ab87c3622c5114069bdd3ad7b8f9737498d0c01ecef0967a
Frase de ejemplo
SHA-224("The quick brown fox jumps over the lazy dog")
0x730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525
SHA-224("The quick brown fox jumps over the lazy dog.")
0x619cba8e8e05826e9b8c519c0a5c68f4fb653e8a3d8aa04bb2c8cd4c
SHA-256("The quick brown fox jumps over the lazy dog")
0xd7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
SHA-256("The quick brown fox jumps over the lazy dog.")
0xef537f25c895bfa782526529a9b63d97aa631564d5d789c2b765448c8635fb6c
SHA-384("The quick brown fox jumps over the lazy dog")
0xca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1
SHA-384("The quick brown fox jumps over the lazy dog.")
0xed892481d8272ca6df370bf706e4d7bc1b5739fa2177aae6c50e946678718fc67a7af2819a021c2fc34e91bdb63409d7
SHA-512("The quick brown fox jumps over the lazy dog")
0x07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6
SHA-512("The quick brown fox jumps over the lazy dog.")
0x91ea1245f20d46ae9a037a989f54f1f790f0a47607eeb8a14d12890cea77a1bbc6c7ed9cf205e67b7f2b8fd4c7dfd3a7a8617e45f3c463d481c7e586c39ac1ed
SHA-512/224("The quick brown fox jumps over the lazy dog")
0x944cd2847fb54558d4775db0485a50003111c8e5daa63fe722c6aa37
SHA-512/224("The quick brown fox jumps over the lazy dog.")
0x6d6a9279495ec4061769752e7ff9c68b6b0b3c5a281b7917ce0572de
SHA-512/256("The quick brown fox jumps over the lazy dog")
0xdd9d67b371519c339ed8dbd25af90e976a1eeefd4ad3d889005e532fc5bef04d
SHA-512/256("The quick brown fox jumps over the lazy dog.")
0x1546741840f8a492b959d9b8b2344b9b0eb51b004bba35c0aebaac86d45264c3
La frase en inglés es un pangrama usado tradicionalmente como cadena de ejemplo. Un cambio mínimo —el punto final— modifica aproximadamente la mitad de los bits del hash.[31]
11. Comparación con otras funciones hash[editar]
[ Desplegar / Plegar comparación ]
| Algoritmo y variante | Salida (bits) | Estado interno (bits) | Bloque (bits) | Mensaje máximo (bits) | Palabra (bits) | Rondas | Colisiones encontradas |
|---|---|---|---|---|---|---|---|
| MD5 (referencia) | 128 | 128 | 512 | 2^64 − 1 | 32 | 64 | Sí |
| SHA-0 | 160 | 160 | 512 | 2^64 − 1 | 32 | 80 | Sí |
| SHA-1 | 160 | 160 | 512 | 2^64 − 1 | 32 | 80 | Sí |
| SHA-224 / SHA-256 | 224 / 256 | 256 | 512 | 2^64 − 1 | 32 | 64 | Ninguna |
| SHA-384 / SHA-512 | 384 / 512 | 512 | 1024 | 2^128 − 1 | 64 | 80 | Ninguna |
| SHA-512/224 / SHA-512/256 | 224 / 256 | 512 | 1024 | 2^128 − 1 | 64 | 80 | Ninguna |
| SHA-3 | 224/256/384/512 | 1600 | 1152/1088/832/576 | Ilimitado | 64 | 24 | Ninguna |
SHA-3 no es una derivación de SHA-2. Usa una construcción interna diferente, basada en una permutación esponja, mientras que SHA-2 usa Merkle–Damgård. Esa diferencia estructural tiene consecuencias prácticas: por ejemplo, SHA-3 no es vulnerable al ataque de extensión de longitud que afecta a SHA-2 cuando se usa de forma ingenua para construir códigos de autenticación de mensajes.[32]
12. Presencia en el mundo hispanohablante y legado[editar]
SHA-2 aparece con frecuencia en textos técnicos en español bajo la forma algoritmo de hash seguro, aunque en la práctica de la industria hispanoamericana se conserva ampliamente el término inglés hash. Los nombres de las variantes —SHA-256 o SHA-512— no se traducen.[33]
La influencia de SHA-2 en el mundo hispanohablante no proviene de una adopción regional propia, sino de su carácter ubicuo: está presente en los protocolos que usan los navegadores, los teléfonos móviles, los cajeros automáticos, las plataformas gubernamentales y las criptomonedas que operan en América Latina. Su nombre técnico se enseña en cursos universitarios de criptografía y seguridad informática de la región, habitualmente como parte de la transición de SHA-1 a algoritmos más resistentes.[34]
El legado de SHA-2 es doble. Por un lado, cerró la brecha que dejó SHA-1 al proporcionar un estándar con margen de seguridad mayor. Por otro, su estructura sirvió de base conceptual para discutir los límites de Merkle–Damgård y motivó, en parte, la búsqueda de SHA-3. La familia sigue siendo, en la práctica, la referencia cotidiana del hashing seguro en sistemas que van desde la firma de paquetes de software hasta la operación de redes móviles.[35]
SHA-2 fue diseñado por la NSA y publicado por el NIST como estándar FIPS. La familia incluye SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 y SHA-512/256. ↩︎
El efecto avalancha implica que una modificación mínima de la entrada produce, con altísima probabilidad, un hash completamente diferente. Es una propiedad deseable en algoritmos de integridad. ↩︎
La Wikipedia en inglés, con base en Algazy et al. (2024), afirma que SHA-2 permanece seguro contra ataques conocidos, incluidos los de computadoras cuánticas. ↩︎
Véase el aviso del Federal Register 02-21599, que anunció la aprobación de FIPS PUB 180-2. ↩︎
FIPS PUB 180-2 reemplazó a FIPS PUB 180-1, de abril de 1995, y actualizó la notación técnica para describir el funcionamiento interno de SHA-2. ↩︎
El aviso de cambio de FIPS PUB 180-2, de febrero de 2004, introdujo SHA-224 para igualar la longitud de clave de Triple DES de dos claves. ↩︎
Véase el aviso del Federal Register E8-24743, que anunció la aprobación de FIPS PUB 180-3 en octubre de 2008. ↩︎
NIST SP 800-131A, de enero de 2011, fijó el paso del mínimo de 80 bits al mínimo de 112 bits y recomendó SHA-2. ↩︎
Véase el aviso del Federal Register 2012-5400, que anunció la aprobación de FIPS PUB 180-4 en marzo de 2012. ↩︎
La competencia de funciones hash del NIST seleccionó a SHA-3 en 2012. SHA-3 no deriva de SHA-2. ↩︎
El NIST anunció en marzo de 2023 la decisión de revisar FIPS 180-4. La futura FIPS 180-5 eliminaría SHA-1 e incorporaría guías de SP 800-107. ↩︎
La resistencia a preimagen y la resistencia a colisiones son propiedades distintas; la primera es más costosa de romper que la segunda. ↩︎
El ataque de cumpleaños reduce la búsqueda de colisiones de 2^L a 2^(L/2) evaluaciones en promedio. ↩︎
SHA-2 usa la construcción Merkle–Damgård y una función de compresión Davies–Meyer construida a partir de un cifrado por bloques especializado. ↩︎
SHA-224 se obtiene omitiendo una parte del estado final de SHA-256; SHA-384 omite dos palabras del estado final de SHA-512. Las variantes SHA-512/224 y SHA-512/256 usan generación formal de valores iniciales. ↩︎
El texto completo de FIPS PUB 180-4 incluye ejemplos detallados y vectores de prueba; el RFC 6234 contiene una implementación de referencia en C. ↩︎
Los valores iniciales usan partes fraccionarias de raíces cuadradas de números primos; las constantes de ronda usan partes fraccionarias de raíces cúbicas. ↩︎
La variante SHA-512/t no permite t = 384; para esa salida debe usarse SHA-384. ↩︎
Bitcoin aplica SHA-256 dos veces en su sistema de prueba de trabajo y en la generación de direcciones. ↩︎
HMAC-SHA-256 aparece como función de derivación de claves en 3GPP TS 33.401, para 4G, y TS 33.501, para 5G. ↩︎
Distribuciones como Debian y Arch documentan el uso de SHA-2 de 512 bits para el hash seguro de contraseñas. ↩︎
John Markoff publicó en The New York Times de enero de 2009 que un sistema del Tribunal Penal Internacional para Ruanda usaba SHA-512 para autenticar videos de archivo. ↩︎
La adopción lenta de SHA-2 se atribuyó, entre otras razones, a la falta de soporte en Windows XP SP2 o anterior y a que aún no se conocían colisiones para SHA-1. ↩︎
La versión en español de Wikipedia resumió en su día que los mejores ataques públicos de fines de 2013 rompían 46 de 64 iteraciones de SHA-256 y 46 de 80 de SHA-512. ↩︎
Khovratovich, Rechberger y Savelieva publicaron en 2011 ataques de biclique que alcanzaban 52 pseudopreimagenes para SHA-256 y 57 para SHA-512. ↩︎
CMVP es el acrónimo de Cryptographic Module Validation Program, dirigido por el NIST y el CSE. ↩︎
La validación formal CMVP es obligatoria para ciertas aplicaciones gubernamentales estadounidenses. ↩︎
La lista de validación SHS del NIST recogía en 2016 la cifra de diciembre de 2013: más de 1300 implementaciones validadas de SHA-256 y más de 900 de SHA-512. ↩︎
Lenguajes como C, C++, Java, Python, PHP, Ruby, Go y Perl incluyen SHA-2 en sus bibliotecas estándar o en módulos criptográficos habituales. ↩︎
Intel SHA extensions, VIA PadLock, ARMv8 Cryptography Extensions e IBM z/Architecture implementan aceleración por hardware para SHA-2. ↩︎
La frase "The quick brown fox jumps over the lazy dog" es un pangrama en inglés usado como ejemplo clásico en documentación criptográfica. ↩︎
La construcción esponja de SHA-3 evita el ataque de extensión de longitud, por lo que puede usarse de forma más directa en esquemas de autenticación. ↩︎
En español técnico se usa tanto "algoritmo de hash seguro" como "función hash"; los nombres de variantes SHA-224, SHA-256, etc. no se traducen. ↩︎
La mención a cursos universitarios es una observación general sobre la enseñanza de seguridad informática en América Latina, sin un referente concreto documentado. ↩︎
La necesidad de un estándar resistente tras las debilidades de SHA-1 y el debate sobre Merkle–Damgård forman parte del contexto que rodeó la adopción de SHA-2 y la selección de SHA-3. ↩︎