ECDSA
O sistema de assinatura digital que controla a posse dos bitcoins
O Bitcoin usa um sistema de assinatura digital chamado ECDSA para controlar a posse dos bitcoins.
Em resumo, um sistema de assinatura digital permite gerar o seu próprio par de chaves privada/pública. Você pode então usar a chave privada para gerar assinaturas que provam que você é o dono da chave pública, sem ter que revelar a chave privada.
Qualquer um pode gerar seu par de chaves, e qualquer um pode "travar" uma saída à sua chave pública. Ninguém pode roubar esses bitcoins, porque só a pessoa com a chave privada correta consegue gerar assinaturas válidas para destravá-los.
Curvas Elípticas
A espinha dorsal matemática do ECDSA
O ECDSA usa a curva elíptica secp256k1 como base. As três operações relevantes são a soma, a duplicação e a multiplicação de pontos. A mais importante é a multiplicação, que cria a chave pública a partir da chave privada:
Multiplicação na Curva
Uso
Como o ECDSA é usado no Bitcoin?
O processo envolve três etapas:
1. Gerar as chaves
Gere uma chave privada (número aleatório) e calcule a chave pública (chave privada × G).
Chave Privada
Chave Pública
2. Assinar
Para assinar uma mensagem (um hash de 32 bytes), você combina a chave privada, o hash da mensagem e um número aleatório (nonce) usando a aritmética da curva. O resultado são dois números: r e s — a assinatura.
ECDSA (assinar/verificar)
O nonce precisa ser único e secreto a cada assinatura. Se o mesmo nonce for reutilizado em duas assinaturas diferentes, é possível calcular a chave privada a partir das duas assinaturas. Isso já causou perda de fundos no passado.
3. Verificar
Qualquer um pode verificar a assinatura usando a chave pública, o hash da mensagem e a assinatura (r, s). A aritmética da curva confirma se a assinatura foi criada pela chave privada correspondente — sem revelar a chave privada.
No Bitcoin, a assinatura ECDSA é serializada no formato DER antes de ser colocada na transação.