Los algoritmos de hash seguro son una familia de funciones de hash criptográficas publicadas por el Instituto Nacional de Estándares y Tecnología (NIST) como un estándar federal de procesamiento de información (FIPS) de EE. UU ., Que incluyen:
- SHA-0 : Un retrónimo aplicado a la versión original de la función hash de 160 bits publicada en 1993 con el nombre "SHA". Fue retirado poco después de su publicación debido a un "defecto significativo" no revelado y reemplazado por la versión ligeramente revisada SHA-1.
- SHA-1 : una función hash de 160 bits que se parece alalgoritmo MD5 anterior. Esto fue diseñado por la Agencia de Seguridad Nacional (NSA) para ser parte del Algoritmo de Firma Digital . Se descubrieron debilidades criptográficas en SHA-1, y el estándar ya no fue aprobado para la mayoría de los usos criptográficos después de 2010.
- SHA-2 : una familia de dos funciones hash similares, con diferentes tamaños de bloque, conocidas como SHA-256 y SHA-512 . Se diferencian por el tamaño de las palabras; SHA-256 usa palabras de 32 bytes donde SHA-512 usa palabras de 64 bytes. También hay versiones truncadas de cada estándar, conocidas como SHA-224 , SHA-384 , SHA-512/224 y SHA-512/256 . Estos también fueron diseñados por la NSA.
- SHA-3 : una función hash anteriormente llamada Keccak , elegida en 2012 después de una competencia pública entre diseñadores que no pertenecen a la NSA. Admite las mismas longitudes de hash que SHA-2 y su estructura interna difiere significativamente del resto de la familia SHA.
Los estándares correspondientes son FIPS PUB 180 (SHA original), FIPS PUB 180-1 (SHA-1), FIPS PUB 180-2 (SHA-1, SHA-256, SHA-384 y SHA-512). NIST ha actualizado el borrador de la publicación FIPS 202, estándar SHA-3 por separado del estándar Secure Hash (SHS).
Comparación de funciones SHA
En la siguiente tabla, el estado interno significa la "suma hash interna" después de cada compresión de un bloque de datos.
Algoritmo y variante | Tamaño de salida (bits) | Tamaño del estado interno (bits) | Tamaño de bloque (bits) | Rondas | Operaciones | Seguridad contra ataques de colisión (bits) | Seguridad contra ataques de extensión de longitud (bits) | Rendimiento en Skylake ( cpb mediano ) [1] | Publicado por primera vez | ||
---|---|---|---|---|---|---|---|---|---|---|---|
Mensajes largos | 8 bytes | ||||||||||
MD5 (como referencia) | 128 | 128 (4 × 32) | 512 | 64 | Y, Xor, Rot, Add (mod 2 32 ), O | ≤ 18 (colisiones encontradas) [2] | 0 | 4,99 | 55,00 | 1992 | |
SHA-0 | 160 | 160 (5 × 32) | 512 | 80 | Y, Xor, Rot, Add (mod 2 32 ), O | <34 (colisiones encontradas) | 0 | ≈ SHA-1 | ≈ SHA-1 | 1993 | |
SHA-1 | <63 (colisiones encontradas) [3] | 3,47 | 52,00 | 1995 | |||||||
SHA-2 | SHA-224 SHA-256 | 224 256 | 256 (8 × 32) | 512 | 64 | Y, Xor, Rot, Add (mod 2 32 ), Or, Shr | 112 128 | 32 0 | 7,62 7,63 | 84,50 85,25 | 2004 2001 |
SHA-384 SHA-512 | 384 512 | 512 (8 × 64) | 1024 | 80 | Y, Xor, Rot, Add (mod 2 64 ), Or, Shr | 192 256 | 128 (≤ 384) 0 [4] | 5.12 5.06 | 135,75 135,50 | 2001 | |
SHA-512/224 SHA-512/256 | 224 256 | 112 128 | 288 256 | ≈ SHA-384 | ≈ SHA-384 | 2012 | |||||
SHA-3 | SHA3-224 SHA3-256 SHA3-384 SHA3-512 | 224 256 384 512 | 1600 (5 × 5 × 64) | 1152 1088 832 576 | 24 [5] | Y, Xor, Rot, No | 112 128 192 256 | 448 512 768 1024 | 8.12 8.59 11.06 15.88 | 154,25 155,50 164,00 164,00 | 2015 |
SHAKE128 SHAKE256 | d (arbitrario) d (arbitrario) | 1344 1088 | min ( d / 2, 128) min ( d / 2, 256) | 256 512 | 7.08 8.59 | 155.25 155.50 |
Validación
Todos los algoritmos de la familia SHA, como funciones de seguridad aprobadas por FIPS, están sujetos a la validación oficial del CMVP (Programa de validación del módulo criptográfico), un programa conjunto dirigido por el Instituto Nacional Estadounidense de Estándares y Tecnología (NIST) y el Establecimiento Canadiense de Seguridad de las Comunicaciones (CSE).
Referencias
- ^ "Tabla de medidas" . bench.cr.yp.to .
- ^ Tao, Xie; Liu, Fanbao; Feng, Dengguo (2013). Ataque de colisión rápido en MD5 (PDF) . Cryptology ePrint Archive (informe técnico). IACR .
- ^ Stevens, Marc ; Bursztein, Elie ; Karpman, Pierre; Albertini, Ange; Markov, Yarik. La primera colisión para SHA-1 completo (PDF) (Informe técnico). Investigación de Google . Resumen de Lay - Blog de seguridad de Google (23 de febrero de 2017).
- ^ Sin truncamiento, se conoce el estado interno completo de la función hash, independientemente de la resistencia a la colisión. Si se trunca la salida, se debe buscar y encontrar la parte eliminada del estado antes de que se pueda reanudar la función hash, lo que permite que el ataque continúe.
- ^ "La familia de funciones de esponja Keccak" . Consultado el 27 de enero de 2016 .