Assinaturas Schnorr
Um esquema de assinatura mais simples, eficiente e seguro que o ECDSA
As assinaturas Schnorr são melhores que o ECDSA para criar e verificar assinaturas digitais. Elas são mais simples, mais eficientes e mais seguras.
Além disso, a matemática mais simples também permite somar assinaturas e verificar várias assinaturas ao mesmo tempo — dois recursos que não estão disponíveis com o ECDSA.
As assinaturas Schnorr foram adicionadas ao Bitcoin em 2021, como parte da atualização Taproot, e são usadas para destravar scripts P2TR.
Implementação
Como você cria uma assinatura Schnorr?
As assinaturas Schnorr usam a mesma curva elíptica secp256k1 do ECDSA. O par de chaves é o mesmo: chave pública = chave privada × G.
Multiplicação na Curva
A assinatura Schnorr (BIP340) tem 64 bytes e é formada por dois valores: um ponto R (32 bytes) e um escalar s (32 bytes). O cálculo de s usa uma fórmula linear simples envolvendo o nonce, um "desafio" (hash) e a chave privada.
Schnorr (assinar/verificar)
Benefícios
Por que o Schnorr é melhor que o ECDSA?
- Linearidade. A fórmula da assinatura Schnorr é linear, o que permite combinar chaves e assinaturas de várias pessoas em uma única chave e assinatura (agregação de chaves, ex.: MuSig).
- Eficiência. As assinaturas têm tamanho fixo de 64 bytes (menores que as DER do ECDSA, que variam) e podem ser verificadas em lote, mais rápido.
- Privacidade. Com a agregação, uma transação multisig complexa pode parecer um pagamento comum de uma única chave na blockchain.
- Segurança comprovável. A segurança das assinaturas Schnorr é mais fácil de provar formalmente do que a do ECDSA.
Chaves Públicas x-only
No Taproot, as chaves públicas Schnorr têm apenas 32 bytes (só a coordenada x), sem o byte de prefixo 02/03. Convenciona-se que a coordenada y é sempre par, o que economiza espaço.