Algoritmos hash seguros - Secure Hash Algorithms

Los algoritmos hash seguros son una familia de funciones 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 bits donde SHA-512 usa palabras de 64 bits. 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.

Comparación de funciones SHA
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 ) 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)
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,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
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 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 de módulos criptográficos), 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