Visão Geral
A Criptografia de Curva Elíptica (ECC) é a base matemática subjacente ao sistema de geração de chaves e assinatura digital do Bitcoin. Ela fornece a mesma segurança que a criptografia de chave pública tradicional (como RSA), mas com tamanhos de chave significativamente menores, tornando-a bem adequada para um sistema onde as assinaturas devem ser armazenadas permanentemente na blockchain.
A Curva secp256k1
O Bitcoin usa uma curva elíptica específica chamada secp256k1, definida pela equação:
y² = x³ + 7 (mod p)
Onde p = 2²⁵⁶ - 2³² - 977
(um número primo muito grande)
Essa curva foi uma escolha incomum quando o Bitcoin foi criado, pois a maioria dos sistemas usava a curva secp256r1 recomendada pelo NIST. A escolha de Satoshi pelo secp256k1 acredita-se ter sido motivada pelo fato de seus parâmetros não serem arbitrários, reduzindo preocupações sobre potenciais backdoors nas constantes da curva.
Geração de Chaves
┌──────────────────────────────────┐
│ 1. Gerar número aleatório de │
│ 256 bits (chave privada k) │
└──────────────┬───────────────────┘
│
▼
┌──────────────────────────────────┐
│ 2. Multiplicar o ponto gerador │
│ G pela chave privada: │
│ K = k × G │
│ (multiplicação de ponto em │
│ curva elíptica) │
└──────────────┬───────────────────┘
│
▼
┌──────────────────────────────────┐
│ 3. O resultado K é a chave │
│ pública (um ponto na curva) │
│ K = coordenadas (x, y) │
└──────────────────────────────────┘
A segurança da ECC repousa no Problema do Logaritmo Discreto de Curva Elíptica (ECDLP): dado a chave pública K e o ponto gerador G, é computacionalmente inviável determinar a chave privada k. Esta é uma função de mão única -- a multiplicação é fácil, mas a divisão (encontrar o escalar a partir do resultado) é praticamente impossível com a matemática atual.
Propriedades Principais
- Chave privada: Um inteiro aleatório de 256 bits (entre 1 e a ordem n da curva)
- Chave pública: Um ponto na curva (duas coordenadas de 256 bits, ou 33 bytes comprimidos)
- Nível de segurança: secp256k1 fornece aproximadamente 128 bits de segurança
- Espaço de chaves: Aproximadamente 2^256 chaves privadas possíveis -- mais do que o número estimado de átomos no universo observável
Por Que ECC em Vez de RSA?
| Propriedade | ECC (secp256k1) | RSA (equivalente) |
|---|---|---|
| Tamanho de chave | 256 bits | 3.072 bits |
| Tamanho de assin. | ~64-72 bytes | ~384 bytes |
| Nível de segurança | 128 bits | 128 bits |
| Velocidade | Rápida | Mais lenta |
Conceitos Errôneos Comuns
- Computadores quânticos poderiam teoricamente quebrar a ECC usando o algoritmo de Shor. No entanto, computadores quânticos práticos capazes disso não são esperados por muitos anos, e a comunidade Bitcoin tem tempo para planejar atualizações criptográficas pós-quânticas.
- A chave privada não é derivada da chave pública "revertendo" um hash. Ela é relacionada através da multiplicação de pontos de curva elíptica, que é uma operação matemática diferente.
- Chaves públicas comprimidas e não comprimidas representam o mesmo ponto na curva. As chaves comprimidas armazenam apenas a coordenada x mais um byte de paridade.