> 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/pt-br/bitcoin/criptografia-aplicada.md).

# Criptografia Aplicada

***

> “Sem criptografia, o Bitcoin seria literalmente impossível.”\
> — *Hal Finney (Bitcointalk, 2009)*

***

## 1. Introdução

O Bitcoin é, em essência, um sistema econômico sustentado por matemática.\
Não depende de instituições, autoridades ou confiança interpessoal: depende de **funções criptográficas** que garantem:

* irreversibilidade
* não falsificação
* verificabilidade pública
* propriedade digital
* resistência a ataques

Este capítulo cobre os três pilares criptográficos fundamentais:

1. **Funções hash (SHA-256, RIPEMD-160)**
2. **Assinaturas digitais (ECDSA)**
3. **Curvas elípticas (secp256k1)**

Cada uma cumpre um papel específico dentro do design do Bitcoin.

***

## 2. Hashing criptográfico no Bitcoin

### 2.1. O que é um hash?

Uma **função hash criptográfica** é uma transformação:

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

com as seguintes propriedades:

* **Dificuldade de pré-imagem**
* **Dificuldade de segunda pré-imagem**
* **Resistência a colisões**
* **Determinismo**
* **Eficiência**

O Bitcoin utiliza principalmente:

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

E ocasionalmente combinações como **SHA-256(SHA-256(x))** (*double SHA-256*).

***

### 2.2. Propriedades chave aplicadas ao design do Bitcoin

#### 1. Resistência a colisões

Impossibilita encontrar duas mensagens distintas que produzam o mesmo hash.

Isto é essencial para:

* assegurar integridade dos blocos
* evitar reorganizações maliciosas
* garantir unicidade das transações

#### 2. Unidirecionalidade

Não é possível recuperar a informação original a partir de um hash.

Facilita:

* endereçamento sem revelar chaves públicas
* resistência a ataques de gasto futuro
* proteção contra colisões de pré-imagem

***

### 2.3. Hashing nos distintos componentes do sistema

| Componente         | Algoritmo hash       | Propósito                    |
| ------------------ | -------------------- | ---------------------------- |
| Cabeçalho do bloco | SHA-256d             | Provar PoW                   |
| Árvore de Merkle   | SHA-256d             | Adicionar transações         |
| Endereço Bitcoin   | SHA-256 + RIPEMD-160 | Criar identificadores curtos |

***

## 3. Árvores de Merkle: compressão e verificabilidade

As transações dentro de cada bloco são organizadas em uma **árvore de Merkle**.

### 3.1. Definição formal

Uma árvore de Merkle é uma estrutura binária onde:

<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/5a49e021303c0944f680544cae9d661fa90447e7" alt=""><figcaption></figcaption></figure>

### 3.2. Vantagens

* Fornecem provas eficientes de inclusão (provas de Merkle)
* Permitem nós leves (SPV)
* Reduzem a necessidade de armazenamento

Essas provas são fundamentais para dispositivos móveis e clientes leves.

***

## 4. Assinaturas digitais (ECDSA)

### 4.1. Para que servem?

O Bitcoin utiliza assinaturas digitais para verificar:

* que o proprietário de uma chave privada autorizou uma transação
* que a transação não foi modificada
* que a assinatura é publicamente válida

### 4.2. Fundamento matemático

Se:

* $$d$$ = chave privada
* $$Q = dG$$ = chave pública (ponto na curva)

então a assinatura (r, s) satisfaz:

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

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

onde:

* $$k$$ = número aleatório por assinatura
* $$G$$ = ponto gerador
* $$n$$ = ordem do grupo elíptico

***

### 4.3. Segurança

ECDSA é seguro enquanto:

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

Se for reutilizada, a chave privada pode ser derivada:

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

Isto causou hacks em implementações defeituosas no passado.

***

## 5. Curvas elípticas: a base algébrica

O Bitcoin usa a curva elíptica **secp256k1**.

### 5.1. Definição matemática

É a curva:

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

sobre o campo finito:

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

### 5.2. Propriedades

* curva não aleatória (ao contrário das curvas NIST)
* operações eficientes
* segurança comprovada
* resistente à manipulação estatal (segundo muitos criptógrafos)

### 5.3. Multiplicação de pontos

A operação fundamental é:

$$Q = dG$$

onde:

* $$d$$ = número de 256 bits
* $$G$$ = ponto gerador
* $$Q$$ = chave pública

É fácil calcular $$Q$$, mas **praticamente impossível calcular** $$d$$.

Isto se baseia na dificuldade do **Problema do Logaritmo Discreto (ECDLP)**.

***

## 6. Endereços Bitcoin: do hash à representação Base58Check

### 6.1. Processo completo de geração

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">Adicionar versão:<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 em <strong>Base58Check</strong>.</p>

***

### 6.2. Exemplo simplificado em 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. Segurança criptográfica frente a ataques modernos

### 7.1. Ataques quânticos

O Bitcoin resiste parcialmente a ataques quânticos:

| Função  | Risco quântico | Impacto                              |
| ------- | -------------- | ------------------------------------ |
| SHA-256 | Baixo          | Grover reduz a segurança a 50%       |
| ECDSA   | Médio          | Shor poderia derivar chaves públicas |

Mitigação atual:

* chaves públicas não expostas até serem gastas
* possibilidade futura de mudar de algoritmo

### 7.2. Ataques de colisão

SHA-256 não apresenta colisões conhecidas.

Colisão implica:

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

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

A probabilidade é astronomicamente baixa ($$\approx 2^{-256}$$).

### 7.3. Ataques de implementação

Os ataques mais comuns:

* má geração de aleatoriedade
* carteiras defeituosas
* ataques de canal lateral
* hardware comprometido

O Bitcoin como protocolo é seguro; implementações podem não ser.

## 8. Criptografia aplicada na cadeia de blocos

O Bitcoin utiliza criptografia para assegurar:

| Componente                        | Mecanismo            |
| --------------------------------- | -------------------- |
| Integridade dos blocos            | Hash SHA-256d        |
| Integridade das transações        | Merkle Root          |
| Propriedade digital               | ECDSA                |
| Prevenção do gasto em duplicidade | PoW                  |
| Identidades pseudônimas           | Hash160              |
| Zeros iniciais do bloco           | Alvo do PoW (target) |

## 9. Conclusão do capítulo

A criptografia no Bitcoin não é decorativa. É a fonte de:

* segurança
* descentralização
* confiança matemática
* irreversibilidade
* resistência à censura
* propriedade digital

O Bitcoin não funciona porque “todos concordam” com sua validade. Funciona porque **a matemática não aceita subornos**.

***

> O Bitcoin não usa criptografia para “ocultar” dados.\
> Usa criptografia para **garantir regras econômicas sem intermediários.**

***


---

# 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/pt-br/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.
