Visão Geral
Um par de chaves é a unidade fundamental de propriedade no Bitcoin. Consiste em uma chave privada e sua chave pública correspondente, vinculadas através da criptografia de curva elíptica. A chave privada é um número secreto que permite ao seu detentor assinar transações e gastar bitcoin. A chave pública é derivada da chave privada e é usada para gerar endereços Bitcoin e verificar assinaturas digitais. Essa relação assimétrica — onde a chave pública pode ser derivada da chave privada, mas não o contrário — é a pedra angular do modelo de segurança do Bitcoin.
Geração de Chaves
Passo 1: Gerar um número aleatório de 256 bits (chave privada)
┌──────────────────────────────────────────────────────┐
│ Chave Privada (256 bits): │
│ e9873d79c6d87dc0fb6a5778633389f4453213303da61f20bd67│
│ fc233aa33262 │
│ │
│ (Deve estar entre 1 e a ordem da curva n) │
└──────────────────────────┬───────────────────────────┘
│
Multiplicação de curva elíptica
(multiplicação de ponto em secp256k1)
│
▼
Passo 2: Derivar a chave pública
┌──────────────────────────────────────────────────────┐
│ Chave Pública = chave_privada * G (ponto gerador) │
│ │
│ Não comprimida (65 bytes): 04 + coord-x + │
│ coord-y │
│ Comprimida (33 bytes): 02/03 + coord-x │
│ (prefixo 02 se y é par, 03 se y é ímpar) │
└──────────────────────────┬───────────────────────────┘
│
Operações hash (SHA-256 + RIPEMD-160)
│
▼
Passo 3: Derivar o endereço
┌──────────────────────────────────────────────────────┐
│ Endereço Bitcoin: bc1q... (Bech32 para SegWit nativo)│
│ 1... (Base58 para P2PKH legacy) │
│ 3... (Base58 para P2SH) │
└──────────────────────────────────────────────────────┘
A Relação de Sentido Único
A segurança do Bitcoin depende da relação matemática de sentido único entre chaves privadas e públicas:
Chave Privada ──────► Chave Pública ──────► Endereço
(fácil) (fácil)
Endereço ────✗────► Chave Pública ────✗──► Chave Privada
(impossível) (impossível com matemática atual)
Esta propriedade de sentido único é baseada no Problema do Logaritmo Discreto de Curva Elíptica: dado o ponto da chave pública na curva, não existe algoritmo eficiente conhecido para calcular o escalar de chave privada que o produziu.
Formatos de Chave
Formatos de chave privada:
- Hex bruto: 64 caracteres hexadecimais (32 bytes)
- WIF (Wallet Import Format): Codificado em Base58Check, começa com '5' (não comprimido) ou 'K'/'L' (comprimido)
- Parte de uma derivação de frase semente em carteiras HD modernas
Formatos de chave pública:
- Não comprimida: 65 bytes (prefixo 04 + 32 bytes x + 32 bytes y)
- Comprimida: 33 bytes (prefixo 02 ou 03 + 32 bytes x)
- O Bitcoin moderno usa exclusivamente chaves públicas comprimidas
Melhores Práticas de Segurança
- Nunca compartilhe sua chave privada. Qualquer pessoa com a chave privada pode gastar todo o bitcoin associado a ela.
- Use geradores de números aleatórios criptograficamente seguros para geração de chaves. Aleatoriedade fraca é uma das poucas formas práticas pelas quais as chaves podem ser comprometidas.
- Armazene chaves privadas offline usando carteiras hardware ou armazenamento a frio para valores significativos.
- Use carteiras HD para que o gerenciamento de chaves seja simplificado à proteção de uma única frase semente.
- Nunca gere chaves usando brainwallets (chaves derivadas de senhas memorizadas), pois são vulneráveis a ataques de força bruta.
Conceitos Equivocados Comuns
- Você não precisa "registrar" um par de chaves em lugar nenhum. Os pares de chaves são gerados localmente e são válidos imediatamente. O espaço de endereços do Bitcoin é tão grande que colisões são virtualmente impossíveis.
- Perder uma chave privada significa perder o bitcoin permanentemente. Não existe "redefinição de senha" no Bitcoin.
- Uma chave pública não é o mesmo que um endereço. O endereço é derivado da chave pública através de hashing, adicionando uma camada adicional de segurança. A chave pública só é revelada ao gastar a partir desse endereço.