Arquitectura técnica

SHA-256

SHA-256 (Secure Hash Algorithm 256-bit) es la función hash criptográfica que Bitcoin usa para la prueba de trabajo, la derivación de direcciones y la construcción de árboles de Merkle. Es el motor matemático sobre el que se construye la seguridad del protocolo.
En este artículo

¿Qué es una función hash?

Una función hash toma cualquier cantidad de datos y produce una salida de longitud fija. SHA-256 produce siempre 256 bits (32 bytes, o 64 caracteres hexadecimales). Es determinista (la misma entrada siempre produce la misma salida), irreversible (no se puede obtener la entrada a partir de la salida) y resistente a colisiones (es casi imposible encontrar dos entradas que produzcan la misma salida).

SHA-256 en Bitcoin

Minería: los mineros aplican SHA-256 dos veces (SHA-256d) a la cabecera del bloque, variando el nonce, hasta encontrar un hash menor que el objetivo de dificultad. Los ASICs son chips diseñados exclusivamente para calcular SHA-256 a velocidades de terahashes por segundo.

Direcciones: en las direcciones P2PKH (1…) y P2WPKH (bc1q… de una sola clave), la clave pública se resume aplicando SHA-256 y RIPEMD-160 sucesivamente. Las Taproot (bc1p…) no usan ese hash.

Árboles de Merkle: los txid y cada pareja de hashes se calculan con SHA-256 aplicado dos veces para construir el árbol de Merkle de cada bloque.

¿Por qué importa?

SHA-256 lo diseñó la NSA y el NIST lo publicó como norma en 2002 (FIPS 180-2; hoy está en FIPS 180-4). Lleva más de dos décadas de análisis público sin que se haya encontrado una forma práctica de romperlo. Si SHA-256 se rompiera, la seguridad de Bitcoin se vería comprometida, pero también la de gran parte de la infraestructura digital mundial (TLS, certificados, firmas digitales).

Errores habituales

  • Confundir SHA-256 con cifrado (SHA-256 es una función hash, no un algoritmo de cifrado; no se puede "descifrar")
  • Creer que la NSA tiene una "puerta trasera" en SHA-256 (el algoritmo es público y ha sido analizado exhaustivamente por criptógrafos independientes)

Conceptos relacionados

Fuentes primarias

  1. FIPS 180-4 (NIST)
  2. Mastering Bitcoin, A. Antonopoulos