Secure Hash Algorithm para niños
Los Algoritmos de Hash Seguro (conocidos como SHA, por sus siglas en inglés Secure Hash Algorithm) son un grupo de funciones especiales que se usan en la Criptografía. Fueron creadas y publicadas por el Instituto Nacional de Estándares y Tecnología (NIST) de Estados Unidos.
Estas funciones incluyen:
- SHA-0
- SHA-1
- SHA-2
- SHA-3
SHA-1 y SHA-2 fueron diseñados usando un método llamado construcción de Merkle-Damgård.
Contenido
¿Qué son los Algoritmos de Hash Seguro?
Los algoritmos SHA son como una "huella digital" única para cualquier tipo de información, como un documento de texto, una imagen o un archivo. Toman esa información y la transforman en una cadena de caracteres más corta y fija.
¿Cómo funcionan los algoritmos SHA?
Una característica muy importante de las funciones SHA es que son "unidireccionales". Esto significa que, si tienes la huella digital (la cadena de caracteres que produce el algoritmo), es casi imposible encontrar la información original que la generó.
Además, estas funciones están diseñadas para que sea muy difícil que dos informaciones diferentes produzcan la misma huella digital. A esto se le llama evitar "colisiones". Si ocurriera una colisión, la seguridad de los archivos podría verse afectada.
¿Para qué se usan las funciones SHA?
Las funciones SHA son muy útiles para crear estas "huellas digitales" que ayudan a llevar un registro de los cambios en la seguridad de diferentes archivos. Esto es muy importante en aplicaciones como:
- La creación de cuentas de usuario y contraseñas, para que solo el dueño conozca su clave.
- Las claves para descifrar archivos protegidos.
- La creación de cadenas de bloques en tecnologías como las criptomonedas.
En teoría, una función SHA perfecta no debería tener ninguna colisión. Sin embargo, como están diseñadas para trabajar con cualquier tipo de información, la posibilidad de una colisión, aunque sea muy pequeña, existe. Por ejemplo, SHA-1, que produce una huella de 160 bits, tiene hasta 2160 combinaciones posibles. Este es un número tan grande que sería casi imposible que una colisión ocurriera por casualidad.
Aun así, con métodos avanzados, se han logrado encontrar colisiones en algunas versiones de SHA, lo que ha llevado a crear nuevas formas de protección para aumentar la seguridad.
Tipos de funciones SHA
A lo largo del tiempo, esta familia de algoritmos ha sido probada y mejorada.
SHA-0: El inicio
- SHA-0 fue la versión original de esta función, lanzada en 1993. Producía una huella de 160 bits.
- Poco después de su lanzamiento, fue retirada debido a un "defecto importante" y fue reemplazada por una versión mejorada, SHA-1.
- En 1998, se descubrió una vulnerabilidad en SHA-0. Aunque esta no afectaba directamente a SHA-1, la Agencia de Seguridad Nacional (NSA) decidió aumentar la seguridad de SHA-1 en ese momento.
SHA-1: Un estándar importante
- SHA-1 es una función que produce una huella de 160 bits, similar al algoritmo MD5. Fue diseñada por la NSA para ser parte del Algoritmo de Firma Digital (DSA).
- Con el tiempo, se encontraron debilidades en SHA-1, y a partir de 2010, ya no se recomendó para la mayoría de los usos importantes en seguridad.
- Aunque la comunidad de expertos en seguridad estudió mucho SHA-1 y no encontró ataques fáciles, en 2004 se descubrieron ataques importantes contra funciones similares a SHA-1. Esto generó dudas sobre su seguridad a largo plazo.
SHA-0 y SHA-1 crean una huella de 160 bits (20 bytes) a partir de un mensaje que puede ser muy grande. Se basan en principios similares a los usados en los algoritmos MD4 y MD5.
Ataques contra SHA-1
En 2004, se encontró una debilidad matemática en SHA-1. Un equipo de investigadores chinos demostró que podían "romper" SHA-1 mucho más rápido de lo que se pensaba. Los ataques más recientes han logrado debilitarlo aún más.
El primer ataque de colisión real contra SHA-1 ocurrió en 2017, cuando un equipo de Google y CWI Amsterdam anunció que habían logrado crear dos archivos PDF diferentes que producían la misma huella SHA-1. Este ataque fue llamado "SHAttered".
Esto es un riesgo porque, por ejemplo, alguien podría crear dos contratos con el mismo hash. Esto significaría que un propietario podría hacer firmar un contrato con un precio bajo y luego decir que se acordó un precio mayor, ya que ambos contratos tendrían la misma huella digital.
Debido a estos ataques, los expertos recomendaron a los desarrolladores de programas de seguridad que dejaran de usar SHA-1. Aunque el NIST tiene funciones SHA más grandes (como SHA-512), muchos expertos sugieren buscar una nueva función estándar para reemplazar a SHA-1.
SHA-2: La familia más fuerte
- SHA-2 es una familia de dos funciones similares, SHA-256 y SHA-512, que se diferencian por el tamaño de las "palabras" que usan. SHA-256 usa palabras de 32 bits, y SHA-512 usa palabras de 64 bits.
- También existen versiones más cortas de SHA-2, como SHA-224, SHA-384, SHA-512/224 y SHA-512/256. Estas también fueron diseñadas por la NSA.
SHA-3: La nueva generación
- SHA-3 es una función que antes se llamaba "Keccak". Fue elegida en 2012 después de una competencia pública entre diferentes diseños.
- Puede producir huellas de las mismas longitudes que SHA-2, pero su estructura interna es muy diferente a la de las otras funciones SHA.
Comparación de funciones SHA
En la siguiente tabla, el "estado interno" se refiere a la "suma hash interna" después de cada vez que se procesa 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) |
Capacidad
contrataques 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 | And, Xor, Or, Rot, Add (mod 232) | ≤18 (colisiones encontradas) |
0 | 4,99 | 55,00 | 1992 | |
SHA-0 | 160 | 160
(5 × 32) |
512 | 80 | And, Xor, Or, Rot, Add (mod 232) | <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 | And, Xor, Or, Rot, Shr, Add (mod 232 ) | 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 | And, Xor, Or, Rot, Shr, Add (mod 264 ) | 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 | And, Xor, Rot, Not | 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 |
Véase también
En inglés: Secure Hash Algorithms Facts for Kids
- MD2
- MD4
- MD5
- Tiger
- WHIRLPOOL
- RIPEMD-160
- Códigos cíclicos
- Función Hash
- Criptografía
- Construcción Merkle–Damgård (en inglés)