Curvas elípticas: como a chave pública nasce da privada
O Bitcoin usa a curva secp256k1, definida por y² = x³ + 7 sobre um corpo finito enorme. Uma chave privada é um número d; a chave pública é o ponto Q = d × G, em que G é um ponto fixo da curva.
Calcular Q a partir de d é rápido. Fazer o caminho inverso, achar d a partir de Q, é inviável com os métodos clássicos conhecidos nos tamanhos reais.
Laboratório educativo. Todo o cálculo roda no seu navegador, nada é enviado nem salvo. Nunca digite aqui sua frase de recuperação, chave privada ou passphrase reais: os exemplos usam apenas vetores de teste públicos.
Para somar P e Q: trace a reta por eles, ache o terceiro ponto onde ela cruza a curva (círculo vazio) e reflita-o no eixo x. O resultado (vermelho) é P + Q. Para dobrar um ponto (P + P), usa-se a tangente.
P = (-1.000, 2.449) · Q = (1.200, -2.954)
inclinação = -2.456 · P + Q = (5.833, 14.335)
Por que isso é só intuição
Na criptografia real não há reta desenhada: os números vivem num corpo finito, em que “reta” e “reflexo” viram contas com resto. É o que a próxima aba mostra.Teste o que aprendeu
Experimente
- Na aba “Intuição”, some dois pontos e veja a reta e o ponto refletido.
- Na aba “Corpo finito”, clique em pontos e some; use o controle de k para ver k × G.
- Na aba “Curva real”, informe um escalar de teste e veja o ponto da secp256k1.
Detalhes técnicos
- A curva de brinquedo (p = 43) tem 31 pontos incluindo o ponto no infinito e serve só para visualizar. Não tem nenhuma segurança.
- Na secp256k1, p = 2²⁵⁶ − 2³² − 977 e a ordem de G é n ≈ 1,158 × 10⁷⁷. Chaves privadas válidas ficam em [1, n−1].
- As operações reais usam a biblioteca auditada @noble/curves. Nenhuma aritmética de curva real é reimplementada aqui.
- Uma chave pública ainda não é um endereço: o endereço vem de hashes e de uma codificação por cima dela.
Termos desta lição
- Private KeyA chave privada (private key) é um número secreto usado em criptografia, funcionando de forma parecida com uma senha. No mundo das criptomoedas, ela é usada par
- Public KeyA chave pública (public key) é um identificador criptográfico único associado a uma conta on-chain. Diferente da chave privada, ela pode ser compartilhada livre
- secp256k1A secp256k1 é a curva elíptica usada pelo Bitcoin e pelo Ethereum para gerar chaves públicas a partir de chaves privadas. Sua equação é y² = x³ + 7 sobre um cor
- CryptographyCryptography (criptografia) é a prática e o estudo de métodos para trocar mensagens de forma segura entre duas ou mais partes, garantindo que apenas as pessoas
Contas feitas com bibliotecas auditadas (@scure/bip39, @scure/bip32, @noble/curves, @noble/hashes) e conferidas contra os vetores de teste oficiais dos BIP-32, BIP-39 e BIP-84. Conteúdo educativo, não é um gerador nem um serviço de recuperação de carteiras.