Unidad 7 · Lección 7.3

SHA-256

Unidad 7: Bloques, minería y Proof of Work · lección 3 de 6

Al terminar esta lección podrás

  • Describir las propiedades de una función hash: determinista, de tamaño fijo, de un solo sentido y con efecto avalancha
  • Reconocer dónde usa Bitcoin SHA-256, el doble SHA-256 y HASH160

Una función hash toma cualquier dato y devuelve una huella de tamaño fijo. SHA-256 devuelve siempre 256 bits, que se escriben como 64 caracteres hexadecimales, tanto si le das una letra como un archivo de diez gigas.

Tiene cuatro propiedades que Bitcoin necesita. Es determinista: el mismo dato da siempre el mismo hash, en cualquier ordenador. Es de un solo sentido: del hash no se puede sacar el dato, salvo probando a ciegas. Es resistente a colisiones: nadie ha encontrado dos datos distintos con el mismo hash. Y tiene efecto avalancha: cambias una letra y cambia cerca de la mitad de los bits, sin ningún parecido con el hash anterior.

Esa última propiedad es la que hace posible la minería. Como no hay forma de predecir el hash, la única manera de encontrar uno que empiece por muchos ceros es probar. Y como cualquier cambio altera el hash por completo, no se puede retocar un bloque sin que se note.

Bitcoin usa SHA-256 en tres formas. El doble SHA-256 (SHA-256 aplicado dos veces) para el hash de los bloques, los txid y el árbol Merkle. HASH160, que es SHA-256 y después RIPEMD-160, para resumir la clave pública en las direcciones que empiezan por 1 y en las bc1q… de una sola clave (P2WPKH). Y SHA-256 a secas en otras piezas, como la suma de verificación de la seed phrase. Las firmas de Taproot usan una variante con etiqueta.

Un hash no es cifrado: no hay clave ni nada que descifrar. SHA-256 lo publicó el NIST y está en la norma FIPS 180-4. Lleva más de veinte años de análisis público sin que nadie haya encontrado una forma práctica de romperlo.

Lee en Bitcoinpedia

Pruébalo

Hash LabAbrir aparte

Cambia un solo carácter en uno de los dos y mira cuántos bits del hash cambian. El texto se convierte a bytes en UTF-8.

Prueba:
O calcula el SHA-256 de un archivo

Comprueba que un archivo coincide con un hash que ya tienes. Para saber que lo publicó su autor, ese hash tiene que venir firmado. El archivo se lee en tu navegador y no se envía a ningún sitio.

100 % local: nada sale de tu navegador
Actividad

En el Hash Lab escribe tu nombre en el texto A y cámbiale solo una letra en el B. ¿Cuántos bits de 256 han cambiado? Repítelo tres veces con cambios distintos. ¿Se parece alguna vez un hash al otro?

Piénsalo o escríbelo a mano. No guardamos lo que respondas.