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:

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:

Ícone Ferramenta Inverso Modular
Ícone Ferramenta

Inverso Modular

Calcule o inverso modular de um número: o valor a⁻¹ tal que a · a⁻¹ ≡ 1 (mod m). Usado na divisão dentro da aritmética de curva elíptica.

(o padrão de m é o primo do corpo da secp256k1)

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).

Ícone Ferramenta Soma de Pontos
Ícone Ferramenta

Soma de Pontos

Some dois pontos na curva secp256k1. Para facilitar, cada ponto é definido como um múltiplo do ponto gerador G (ex.: a=2 significa o ponto 2G).

Duplicação de Ponto

Somar um ponto a ele mesmo (P + P). Geometricamente, usa-se a reta tangente à curva naquele ponto.

Ícone Ferramenta Duplicação de Ponto
Ícone Ferramenta

Duplicação de Ponto

Duplique um ponto na curva secp256k1 (P + P = 2P). O ponto é definido como um múltiplo do ponto gerador G.

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".

Ícone Ferramenta Multiplicação na Curva
Ícone Ferramenta

EC Multiply

Multiplique um ponto na curva elíptica secp256k1 por um número.

x:
y:
x:
y: