Skip to main content

Criptografia de Curva Elíptica (ECC) | Bitcoin Glossary | Mapping Bitcoin

Criptografia de Curva Elíptica (ECC)

Criptografia

Also known as: ECC, secp256k1

Criptografia de chave pública via curvas elípticas. Bitcoin usa secp256k1 para gerar pares de chaves e assinaturas que comprovam propriedade dos fundos.

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?

PropriedadeECC (secp256k1)RSA (equivalente)
Tamanho de chave256 bits3.072 bits
Tamanho de assin.~64-72 bytes~384 bytes
Nível de segurança128 bits128 bits
VelocidadeRápidaMais 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.