•Guías de los vídeos

Guías / Cripto · Serie 1 · Parte 02 / 04

Un hash por dentro

Qué hace SHA-256 con tu texto, ronda a ronda, con sus operaciones reales, y por qué un solo bit cambiado lo revuelve todo.

Portada del vídeo «Un hash por dentro»
64 rondas

En 30 segundos

Un hash parece magia, pero por dentro solo hace una cosa: mezclar bits, 64 veces. Tu texto se convierte en ceros y unos, se rellena hasta 512, y en cada ronda los bits se giran, se cruzan con XOR y se suman. Cambia un solo bit y en 6 rondas casi la mitad ya es distinta. No se conoce forma de darle la vuelta: la única opción es probar a ciegas.

Paso 1 · De texto a bits

Cada letra se guarda como un número (su código ASCII) y cada número como 8 bits. «hola» son 4 letras, 32 bits:

h        o        l        a
01101000 01101111 01101100 01100001

Paso 2 · Relleno hasta 512

SHA-256 trabaja en bloques de 512 bits. El mensaje se rellena siempre igual:

  1. Se añade un bit 1.
  2. Ceros hasta que solo queden 64 bits libres en el bloque.
  3. En esos 64 bits, la longitud del mensaje original.

Para «hola»: 32 bits de texto + 1 + 415 ceros + 64 de longitud (que dicen «32») = 512 exactos. Al guardar la longitud, «hola» y «hola » (con espacio) nunca pueden acabar con el mismo relleno.

Paso 3 · Preparar 64 palabras

El bloque de 512 bits se corta en 16 palabras de 32 bits. SHA-256 las estira hasta 64, mezclando las anteriores: cada palabra nueva sale de girar y sumar cuatro de las que ya hay. Así, cada uno de tus bits acaba entrando en muchas rondas distintas.

Paso 4 · 64 rondas de mezcla

Hay 8 casillas de 32 bits, llamadas a a h. Empiezan con valores fijos y públicos: los primeros bits de las raíces cuadradas de los 8 primeros números primos. Se eligieron así a propósito para demostrar que no esconden ninguna trampa (los criptógrafos lo llaman números nothing up my sleeve, «nada en la manga»).

En cada ronda se usan tres operaciones muy baratas para un procesador:

OperaciónSímboloQué hace
GirarROTRⁿmueve los bits n posiciones a la derecha; los que salen por un lado entran por el otro
XOR⊕compara bit a bit: 1 si son distintos, 0 si son iguales
Sumar+suma normal, pero si pasa de 32 bits se tira lo que sobra («módulo 2³²»)

Y con ellas se construyen cuatro funciones:

  • Σ0(a) = ROTR²(a) ⊕ ROTR¹³(a) ⊕ ROTR²²(a): la casilla a girada 2, 13 y 22 posiciones y combinada. Cada bit del resultado depende de tres bits muy separados entre sí: por eso los cambios se contagian tan rápido.
  • Σ1(e) = ROTR⁶(e) ⊕ ROTR¹¹(e) ⊕ ROTR²⁵(e): lo mismo con la casilla e.
  • Ch(e, f, g), de choose: donde e tiene un 1, coge el bit de f; donde tiene un 0, el de g. Es un «si… entonces…» bit a bit.
  • Maj(a, b, c), de majority: cada bit es el que gane la votación entre a, b y c.

Con todo eso, cada ronda calcula dos valores nuevos y desplaza las casillas una posición, como una cinta transportadora:

T1 = h + Σ1(e) + Ch(e,f,g) + K[t] + W[t]
T2 = Σ0(a) + Maj(a,b,c)
h←g  g←f  f←e  e←d+T1  d←c  c←b  b←a  a←T1+T2

W[t] es la palabra del mensaje de esa ronda y K[t] una constante distinta para cada una (sale de las raíces cúbicas de los 64 primeros primos). Tras las 64 rondas, las 8 casillas se suman a sus valores iniciales y se ponen una detrás de otra: 8 × 32 = 256 bits. Esa es la huella.

El efecto avalancha, medido

Si cambias un solo bit de la entrada, el cambio se contagia ronda a ronda. Lo ideal es que cada bit de la salida tenga un 50 % de probabilidad de cambiar, o sea, unos 128 de 256. Lo medí con un SHA-256 programado a mano, ronda a ronda:

RondaBits distintos (de 256)
6117 (el 46 %: «casi la mitad»)
64≈ 128, repartidos al azar

En 6 de 64 rondas ya está casi todo revuelto. Las otras 58 son margen de seguridad.

Por qué no se puede deshacer

Dos motivos, explicados sin fórmulas:

  • Se pierde información. Al sumar «módulo 2³²» se tira lo que sobra, y un XOR de dos números no dice cuáles eran: muchas entradas distintas llevan al mismo paso intermedio.
  • No es lineal. Ch y Maj son decisiones del tipo «si este bit es 1…». Eso impide despejar las ecuaciones como en clase de matemáticas.

El resultado: no se conoce ningún atajo. Para encontrar un texto con una huella concreta habría que probar del orden de 2²⁵⁶ textos. Guárdate esto: probar a ciegas es exactamente lo que hacen los mineros (parte 4).

Datos

DatoValorCómo se ha comprobado
Rondas, bloque, funciones y constantes64 rondas, 512 bits, Σ0, Σ1, Ch, Majestándar FIPS 180-4 del NIST
Avalancha en la ronda 6117 de 256 bits distintosSHA-256 propio, ronda a ronda, verificado contra el de Node.js

Lo que el vídeo simplifica

  • El vídeo enseña las tres operaciones de base (girar, XOR y sumar); las funciones Σ0, Σ1, Ch y Maj, la expansión a 64 palabras y las constantes son las piezas que las combinan.
  • «No se conoce forma de darle la vuelta» es exactamente eso: no está demostrado que sea imposible, pero tras más de 20 años de estudio nadie ha encontrado un atajo.