cryptography blockchain ethereum bitcoin hashing ecdsa

Criptografía Blockchain: Dominando Keccak-256, secp256k1 y Árboles de Merkle

Una inmersión profunda en las primitivas criptográficas de blockchain. Explore Keccak-256, RIPEMD-160, HASH160, la curva secp256k1, firmas ECDSA y el papel de los árboles de Merkle en la integridad de los datos.

2026-04-12

La Base de la Descentralización

La criptografía es el "cripto" en criptomoneda. Proporciona las garantías matemáticas de seguridad, propiedad e inmutabilidad que permiten que las redes descentralizadas funcionen sin una autoridad central.

En esta guía, exploraremos los algoritmos criptográficos específicos utilizados por las principales cadenas de bloques como Bitcoin y Ethereum. Examinaremos por qué se tomaron ciertas decisiones, en qué se diferencian de la criptografía web estándar y cómo trabajan juntos para asegurar activos por valor de miles de millones de dólares.


1. Estrategias de Hashing: El Doble Hash de Bitcoin y HASH160

Bitcoin utiliza el hashing para todo, desde la minería hasta la generación de direcciones. Sin embargo, rara vez utiliza un único hash SHA-256.

Doble SHA-256 (SHA-256d)

La mayoría de las operaciones en Bitcoin, incluido el Proof of Work y la construcción de IDs de bloque, utilizan SHA-256 dos veces.

  • Fórmula: SHA256(SHA256(Datos))
  • Razonamiento: Satoshi Nakamoto implementó esto principalmente como defensa contra ataques de extensión de longitud, que eran una preocupación teórica para la construcción Merkle-Damgård en ese momento.

HASH160: Eficiencia de Espacio

Para generar direcciones, Bitcoin utiliza HASH160.

  • Fórmula: RIPEMD160(SHA256(ClavePública))
  • Razonamiento: RIPEMD-160 produce un hash de 20 bytes (160 bits), que es más corto que SHA-256 (32 bytes). Esto ahorra espacio crítico en el conjunto UTXO y en la cadena de bloques, manteniendo un nivel de seguridad adecuado para la identificación de direcciones.

2. Keccak-256 de Ethereum: El SHA-3 "Real"

Ethereum eligió Keccak-256 como su función de hash principal. Esto suele ser una fuente de confusión porque Keccak-256 fue el ganador del concurso NIST SHA-3, pero no es exactamente igual al estándar final FIPS 202 SHA-3-256.

Keccak-256 vs. NIST SHA-3-256

Durante el proceso de estandarización, el NIST realizó cambios menores en el padding (relleno) de Keccak.

  • Keccak-256: Utiliza el padding 0x01.
  • NIST SHA-3-256: Utiliza el padding 0x06.

Debido a que Ethereum se construyó mientras Keccak aún estaba en proceso de estandarización, utiliza el Keccak-256 original. Esto significa que un generador de hash SHA-3-256 estándar producirá un resultado diferente al de un generador de hash Keccak-256. Para los desarrolladores de Ethereum, usar la versión correcta es vital para calcular las firmas de funciones y las raíces de Merkle.


3. La curva secp256k1 y las firmas ECDSA

Tanto Bitcoin como Ethereum utilizan el Algoritmo de Firma Digital de Curva Elíptica (ECDSA) para firmar transacciones, específicamente en la curva secp256k1.

¿Por qué secp256k1?

Mientras que la mayoría de los estándares web (como TLS) utilizan curvas NIST (por ejemplo, P-256), la comunidad blockchain prefiere secp256k1.

  • Curva Koblitz: Es una curva "Koblitz", que permite un cálculo más eficiente (multiplicación escalar) que las curvas que no son Koblitz.
  • Sin "Puertas Traseras": Existe la preocupación de que las curvas NIST puedan contener "puertas traseras" ocultas debido a la forma en que se eligieron sus parámetros. Los parámetros de secp256k1 se eligieron de una manera más transparente y determinista.

Cuando firmas una transacción, usas tu clave privada y ECDSA para producir una firma $(r, s)$. La red utiliza la curva secp256k1 y tu clave pública para verificar que la firma es válida.


4. Árboles de Merkle y Raíces de Merkle

Un Árbol de Merkle (o árbol de hash) es una estructura utilizada para resumir y verificar de manera eficiente la integridad de grandes conjuntos de datos.

Cómo funciona

  1. Hojas: Se hace un hash de cada transacción en un bloque.
  2. Nodos: Los hashes se agrupan por pares y se les vuelve a aplicar el hash de forma recursiva.
  3. Raíz: El hash único final en la parte superior es la Raíz de Merkle (Merkle Root).

La Raíz de Merkle en la Cabecera del Bloque

La Raíz de Merkle se incluye en la cabecera del bloque. Si cambia un solo bit en una sola transacción, todo el Árbol de Merkle cambia, lo que resulta en una Raíz de Merkle diferente. Esto permite a los clientes de "Verificación de Pago Simplificada" (SPV) verificar que una transacción es parte de un bloque sin descargar toda la cadena de bloques.

Un calculador de árbol de Merkle es esencial para validar las cabeceras de los bloques y probar la inclusión de transacciones.


5. Comparación: Algoritmos de Hashing y Firma

Protocolo Hash Principal Curva de Firma Hash de Dirección
Bitcoin SHA-256d secp256k1 HASH160
Ethereum Keccak-256 secp256k1 Keccak-256 (últimos 20 bytes)
Solana SHA-256 Ed25519 Clave Pública Base58
Polkadot Blake2b Ed25519/sr25519 SS58

FAQ: Criptografía Blockchain

P: ¿Es Keccak-256 más seguro que SHA-256?

R: Ambos se consideran criptográficamente seguros. Keccak (construcción de esponja) es naturalmente resistente a los ataques de extensión de longitud, mientras que SHA-256 (Merkle-Damgård) requiere el truco del "doble hashing" para lograr una resistencia similar.

P: ¿Por qué no usar Ed25519 para todo?

R: Ed25519 es más rápido y seguro que ECDSA/secp256k1. Sin embargo, cuando se crearon Bitcoin y Ethereum, Ed25519 era relativamente nuevo y no estaba tan ampliamente probado o soportado en hardware como ECDSA. Cadenas más nuevas como Solana y Cardano sí usan Ed25519.

P: ¿Qué es una "Colisión"?

R: Una colisión ocurre cuando dos entradas diferentes producen la misma salida de hash. Para Keccak-256 o SHA-256, encontrar una colisión es computacionalmente imposible con la tecnología actual.

P: ¿Cómo se calcula el hash de una transacción?

R: Normalmente, aplicando el hash a los datos de la transacción serializados. En Bitcoin, es SHA256d(tx_data). En Ethereum, es Keccak256(rlp_encoded_tx).


Conclusión

La criptografía blockchain es un conjunto de algoritmos cuidadosamente seleccionados diseñados para ofrecer alta seguridad, eficiencia y transparencia. Desde la eficiencia de secp256k1 hasta la construcción de esponja única de Keccak-256, estas primitivas son las que hacen posible la confianza descentralizada. Para cualquier desarrollador que trabaje en este espacio, comprender estos fundamentos no es solo un ejercicio académico: es la clave para crear aplicaciones descentralizadas seguras y compatibles.