> For the complete documentation index, see [llms.txt](https://www.notbank.com/learn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.notbank.com/learn/academy/bitcoin/criptografia-aplicada.md).

# Criptografía Aplicada

***

> “Sin criptografía, Bitcoin sería literalmente imposible.”\
> — *Hal Finney (Bitcointalk, 2009)*

***

## 1. Introducción

Bitcoin es, en esencia, un sistema económico sustentado en matemáticas.\
No depende de instituciones, autoridades o confianza interpersonal: depende de **funciones criptográficas** que garantizan:

* irreversibilidad
* no falsificación
* verificabilidad pública
* propiedad digital
* resistencia a ataque

Este capítulo cubre los tres pilares criptográficos fundamentales:

1. **Funciones hash (SHA-256, RIPEMD-160)**
2. **Firmas digitales (ECDSA)**
3. **Curvas elípticas (secp256k1)**

Cada uno cumple un rol específico dentro del diseño de Bitcoin.

***

## 2. Hashing criptográfico en Bitcoin

### 2.1. ¿Qué es un hash?

Una **función hash criptográfica** es una transformación:

$$
H: {0,1}^\* \rightarrow {0,1}^n
$$

con las siguientes propiedades:

* **Preimagen difícil**
* **Segunda preimagen difícil**
* **Resistencia a colisiones**
* **Determinismo**
* **Eficiencia**

Bitcoin utiliza principalmente:

* **SHA-256**
* **RIPEMD-160**

Y ocasionalmente combinaciones como **SHA-256(SHA-256(x))** (*double SHA-256*).

***

### 2.2. Propiedades clave aplicadas al diseño de Bitcoin

#### 1. Resistencia a colisiones

Imposibilita encontrar dos mensajes distintos que produzcan el mismo hash.

Esto es esencial para:

* asegurar integridad de los bloques
* evitar reorganizaciones maliciosas
* garantizar unicidad de transacciones

#### 2. Unidireccionalidad

No es posible recuperar la información original desde un hash.

Facilita:

* direccionamiento sin revelar claves públicas
* resistencia a ataques de gasto futuro
* protección ante colisiones preimagen

***

### 2.3. Hashing en los distintos componentes del sistema

| Componente          | Algoritmo hash       | Propósito                    |
| ------------------- | -------------------- | ---------------------------- |
| Cabecera del bloque | SHA-256d             | Probar PoW                   |
| Árbol de Merkle     | SHA-256d             | Agregar transacciones        |
| Dirección Bitcoin   | SHA-256 + RIPEMD-160 | Crear identificadores cortos |

***

## 3. Árboles de Merkle: compresión y verificabilidad

Las transacciones dentro de cada bloque se organizan en un **árbol de Merkle**.

### 3.1. Definición formal

Un árbol de Merkle es una estructura binaria donde:

<p align="center"><span class="math">H_{l1} = SHA256d(tx1)</span><br><span class="math">H_{l2} = SHA256d(tx2)</span><br><span class="math">H_0 = SHA256d(H_{l1} | H_{l1})</span><br><br><span class="math">H_{l3} = SHA256d(tx3)</span><br><span class="math">H_{l4} = SHA256d(tx4)</span><br><span class="math">H_1 = SHA256d(H_{l3} | H_{l4})</span><br><br><span class="math">Root = SHA256d(H_{0} | H_{1})</span></p>

<figure><img src="/files/F6SsTj8DYZde6WKrNGnO" alt=""><figcaption></figcaption></figure>

### 3.2. Ventajas

* Proporcionan pruebas eficientes de inclusión (Merkle proofs)
* Permiten nodos livianos (SPV)
* Reducen necesidad de almacenamiento

Estas pruebas son fundamentales para dispositivos móviles y clientes ligeros.

***

## 4. Firmas digitales (ECDSA)

### 4.1. ¿Para qué sirven?

Bitcoin utiliza firmas digitales para verificar:

* que el propietario de una clave privada autorizó una transacción
* que la transacción no fue modificada
* que la firma es válida públicamente

### 4.2. Fundamento matemático

Si:

* $$d$$ = clave privada
* $$Q = dG$$ = clave pública (punto en curva)

entonces la firma (r, s) satisface:

$$r = (kG)\_x \mod n$$

$$s = k^{-1}(H(m) + dr) \mod n$$

donde:

* $$k$$ = número aleatorio por firma
* $$G$$ = punto generador
* $$n$$ = orden del grupo elíptico

***

### 4.3. Seguridad

ECDSA es seguro mientras:

$$k \text{ sea único y aleatorio}$$

Si se reutiliza, la clave privada puede derivarse:

$$d = \frac{s\_1k - H(m\_1)}{r} \mod n$$

Esto ha provocado hacks en implementaciones defectuosas en el pasado.

***

## 5. Curvas elípticas: la base algebraica

Bitcoin usa la curva elíptica **secp256k1**.

### 5.1. Definición matemática

Es la curva:

$$y^2 = x^3 + 7$$

sobre el campo finito:

$$\mathbb{F}\_p, \quad p = 2^{256} - 2^{32} - 977$$

### 5.2. Propiedades

* curva no aleatoria (a diferencia de curvas NIST)
* operaciones eficientes
* seguridad comprobada
* resistente a manipulación estatal (según muchos criptógrafos)

### 5.3. Multiplicación de puntos

La operación fundamental es:

$$Q = dG$$

donde:

* $$d$$ = número de 256 bits
* $$G$$ = punto generador
* $$Q$$ = clave pública

Es fácil calcular $$Q$$, pero **prácticamente imposible calcular** $$d$$.

Esto se basa en la dificultad del **Problema del Logaritmo Discreto (ECDLP)**.

***

## 6. Direcciones Bitcoin: del hash a la representación Base58Check

### 6.1. Proceso completo de generación

1.

<p align="center"><span class="math">\text{Clave pública} = Q</span></p>

2.

<p align="center"><span class="math">\text{hash160}(Q) = \text{RIPEMD160}(\text{SHA256}(Q))</span></p>

3.

<p align="center">Agregar versión:<br><span class="math">00 + hash160</span></p>

4.

<p align="center">Calcular checksum:<br><span class="math">\text{SHA256d}(00 + hash160)</span></p>

5.

<p align="center">Codificar en <strong>Base58Check</strong>.</p>

***

### 6.2. Ejemplo simplificado en pseudocódigo

```python
pub = get_public_key(priv)
h160 = RIPEMD160(SHA256(pub))
payload = 0x00 + h160
checksum = SHA256(SHA256(payload))[:4]
address = Base58Encode(payload + checksum)
```

## 7. Seguridad criptográfica frente a ataques modernos

### 7.1. Ataques cuánticos

Bitcoin resiste parcialmente ataques cuánticos:

| Función | Riesgo cuántico | Impacto                             |
| ------- | --------------- | ----------------------------------- |
| SHA-256 | Bajo            | Grover reduce seguridad al 50%      |
| ECDSA   | Medio           | Shor podría derivar claves públicas |

Mitigación actual:

* claves públicas no expuestas hasta gastar
* posibilidad futura de cambiar de algoritmo

### 7.2. Ataques de colisión

SHA-256 no presenta colisiones conocidas.

Colisión implica:

<p align="center"><span class="math">H(x)=H(y)</span></p>

<p align="center">con <span class="math">x \neq y</span></p>

La probabilidad es astronómicamente baja ($$\approx 2^{-256}$$).

### 7.3. Ataques de implementación

Los ataques más comunes:

* mala generación de aleatoriedad
* wallets defectuosas
* side-channel attacks
* hardware comprometido

Bitcoin como protocolo es seguro; implementaciones pueden no serlo.

## 8. Criptografía aplicada en la cadena de bloques

Bitcoin utiliza criptografía para asegurar:

| Componente                  | Mecanismo             |
| --------------------------- | --------------------- |
| Integridad de bloques       | Hash SHA-256d         |
| Integridad de transacciones | Merkle Root           |
| Propiedad digital           | ECDSA                 |
| Prevención de doble gasto   | PoW                   |
| Identidades pseudónimas     | Hash160               |
| Ceros iniciales del bloque  | PoW objetivo (target) |

## 9. Conclusión del capítulo

La criptografía en Bitcoin no es decorativa. Es la fuente de:

* seguridad
* descentralización
* confianza matemática
* irreversibilidad
* resistencia a censura
* propiedad digital

Bitcoin no funciona porque “todos acuerdan” su validez. Funciona porque **las matemáticas no aceptan sobornos**.

***

> Bitcoin no usa criptografía para “ocultar” datos.\
> Usa criptografía para **garantizar reglas económicas sin intermediarios.**

***


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://www.notbank.com/learn/academy/bitcoin/criptografia-aplicada.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
