Curva Elíptica
A base matemática da criptografia de chave pública do Bitcoin
Uma curva elíptica é usada como base de alguns sistemas criptográficos.
A estrutura da curva elíptica permite realizar uma função matemática ("multiplicar") para se mover pelos pontos da curva em uma direção, sem conseguir percorrer o caminho inverso. Isso é conhecido como "função de alçapão" (trapdoor function), e é a característica-chave que torna as curvas elípticas ideais para a criptografia de chave pública.
Em resumo, as curvas elípticas têm propriedades matemáticas úteis para a criptografia, e fazem parte do sistema de assinaturas digitais do Bitcoin (ECDSA).
Parâmetros (secp256k1)
O Satoshi escolheu a curva secp256k1 para usar com o ECDSA. A equação da curva é y² = x³ + 7, definida sobre um corpo finito. Os parâmetros principais são:
- p (primo do corpo) = 2²⁵⁶ − 2³² − 977
- G (ponto gerador) = um ponto inicial fixo na curva
- n (ordem) = o número de pontos que você pode alcançar a partir de G
secp256k1 é só o nome de uma das curvas elípticas específicas usadas em criptografia. O 256 refere-se ao tamanho do primo do corpo (256 bits).
Corpo Finito
A curva no Bitcoin não é uma curva suave e contínua como você imaginaria em um gráfico. Em vez disso, ela é definida sobre um corpo finito: toda a aritmética é feita módulo o primo p. Isso transforma a curva em um conjunto finito de pontos espalhados, mas as propriedades algébricas (soma, multiplicação) continuam valendo.
A divisão em um corpo finito é feita multiplicando pelo inverso modular:
Inverso Modular
Matemática de Curva Elíptica
Como você se move pelos pontos da curva?
Há três operações fundamentais:
Soma de Pontos
Dados dois pontos na curva, você pode "somá-los" para obter um terceiro ponto na curva (geometricamente: traça-se uma reta pelos dois pontos, encontra-se o terceiro ponto onde ela cruza a curva e reflete-se sobre o eixo x).
Soma de Pontos
Duplicação de Ponto
Somar um ponto a ele mesmo (P + P). Geometricamente, usa-se a reta tangente à curva naquele ponto.
Duplicação de Ponto
Multiplicação de Ponto
Somar um ponto a ele mesmo várias vezes (k·P). É isso que cria uma chave pública a partir de uma chave privada: chave pública = chave privada × G. A multiplicação é rápida de calcular, mas é inviável reverter (descobrir k a partir de k·G) — essa é a "função de alçapão".