Glossário / Protocolo e atualizações
Assinatura Schnorr
Outros nomes: BIP340.
- O que é uma assinatura Schnorr?
- Uma assinatura Schnorr é o esquema de assinatura de 64 bytes que o bitcoin adotou com o Taproot, e sua propriedade definidora é a linearidade: várias chaves e assinaturas se somam em uma só.
Especificação no BIP-340.
As assinaturas ECDSA ocupam 71 ou 72 bytes e não podem ser combinadas; as assinaturas Schnorr têm sempre 64 e podem. Essa diferença é o motivo pelo qual dois signatários, ou quinze, podem produzir uma única assinatura que é verificada com uma única chave pública, sem nada on-chain que diga quantos deles havia. O bitcoin recebeu o esquema no BIP-340, criado em janeiro de 2020 e aplicável a partir do bloco 709.632.
Como funciona
O esquema usa a mesma curva elíptica que o bitcoin sempre usou, a secp256k1, e as mesmas chaves privadas. O que muda é a álgebra em torno delas.
Para assinar, você escolhe um nonce secreto, publica o ponto que ele gera como R e calcula um único número s a partir do nonce, de um hash de R junto com a chave pública e a mensagem, e da sua chave privada. A assinatura é R e s escritos com 32 bytes cada um, e é daí que vem o comprimento fixo de 64 bytes. A verificação reorganiza a mesma equação e confere se dois pontos coincidem. O ECDSA precisa de uma inversão modular no meio disso; o Schnorr não, e essa inversão ausente é a razão pela qual tudo permanece linear.
A linearidade é o ganho prático. Some duas chaves privadas e a soma assina pela soma das duas chaves públicas, de modo que um grupo pode manter entre si uma única chave aparente. Também permite a verificação em lote: um nó que valida um bloco pode conferir centenas de assinaturas em uma só operação agregada em vez de uma por uma, o que importa sobretudo durante o download inicial de blocos.
Dois detalhes do BIP-340 existem para evitar armadilhas. As chaves públicas são x-only, 32 bytes com a coordenada y implícita, o que elimina a ambiguidade que duas codificações da mesma chave costumavam criar. E todo hash é um hash etiquetado, precedido de uma string de domínio, de modo que uma assinatura feita para um propósito nunca pode ser reproduzida como válida em outro protocolo que por acaso faça o hash de bytes parecidos.
O nonce continua sendo a parte perigosa. Reutilizar um em duas mensagens diferentes expõe a chave privada por aritmética simples, exatamente como ocorre com o ECDSA, e é por isso que o BIP-340 especifica uma derivação determinística misturada com aleatoriedade auxiliar opcional, em vez de deixar a escolha para os implementadores.
Há uma razão pela qual nada disso chegou em 2009. Claus Schnorr detinha sobre o esquema a patente dos Estados Unidos 4.995.082, que só expirou em fevereiro de 2008, poucos meses antes de o whitepaper do bitcoin aparecer. O ECDSA era o padrão livre de patentes na época, então o bitcoin saiu com a segunda melhor opção e esperou doze anos para corrigir isso.
Por que isso importa quando você compra bitcoin
Em uma carteira de chave única o efeito é um erro de arredondamento, e para quem protege um valor sério é a criptografia mais útil que o bitcoin já acrescentou.
Comece pelo custo de guardar bitcoins em vários dispositivos. Um arranjo 2 de 3 gasto da forma antiga publica duas assinaturas e três chaves públicas em cada transação, então você paga pela política inteira cada vez que move fundos. Gasto de forma cooperativa pelo Taproot, ele publica uma única assinatura, e as outras chaves nunca aparecem. A economia se acumula se você consolida valores pequenos, que é exatamente o que os detentores de longo prazo acabam fazendo.
Depois vem a consequência para a privacidade, que é maior. As empresas de análise de cadeia classificam endereços pelo formato, e a multiassinatura sempre foi um formato chamativo. As carteiras de hardware que este site analisa podem atuar como coassinantes em arranjos assim, e até o Taproot o ato de se proteger adequadamente dizia aos observadores que você tinha algo que valia a pena proteger. Um gasto Schnorr cooperativo elimina essa pista sem enfraquecer nada.
Em um plano de herança o cálculo também muda. Como as ramificações não usadas de uma árvore do Taproot não custam nada, você pode acrescentar um caminho de recuperação com atraso no tempo para um familiar sem pagar por ele em cada gasto comum. Essa é uma opção realmente nova, e vale ler nosso guia de segurança antes de planejar uma, porque o modo de falha de um esquema de custódia engenhoso é perder o acesso, não ser roubado.
MuSig2: dois signatários, uma assinatura
O MuSig2, padronizado como BIP-327, é o protocolo que transforma a linearidade em algo que as carteiras podem de fato usar.
Somar chaves públicas de forma ingênua não é seguro. Se um participante conhece a chave de todos os outros antes de anunciar a sua, ele pode fabricar uma chave que anula as demais e acaba conseguindo assinar sozinho. Esse é o ataque da chave rogue, e o MuSig2 o neutraliza ponderando cada chave com um coeficiente derivado do conjunto inteiro, de modo que nenhum participante pode escolher a sua livremente.
O fluxo de assinatura tem duas rodadas. Cada parte envia compromissos de nonce, depois cada parte envia uma assinatura parcial, e as parciais se somam em uma única assinatura Schnorr válida sob a chave agregada. As duas rodadas importam porque a primeira pode ser feita com antecedência, e é isso que torna o esquema utilizável em canais Lightning, onde assinaturas são trocadas constantemente.
O que chega on-chain é uma única assinatura de 64 bytes que gasta uma única saída de caminho de chave. Um gasto cooperativo entre duas partes custa cerca de 57,5 vbytes, menos que qualquer outro tipo de entrada, e o observador não consegue saber se uma pessoa ou um comitê o autorizou.
Assinatura Schnorr vs assinatura
No bitcoin, a palavra assinatura sozinha ainda costuma significar ECDSA, e os dois esquemas são usados diariamente. Os bitcoins que estão em um endereço que começa por 1, 3 ou bc1q são gastos com ECDSA, exatamente como eram em 2010. Os bitcoins em um endereço bc1p são gastos com Schnorr. Uma carteira que guarda os dois tipos, como faz a maioria das carteiras com algum histórico, produz os dois tipos na mesma sessão sem mencionar isso. Quem diz que o bitcoin usa ECDSA, e ponto, está descrevendo o protocolo como ele era antes de novembro de 2021.
Assinatura Schnorr vs MuSig2
Schnorr é o esquema de assinatura; o MuSig2 é um protocolo construído sobre ele. Você pode usar Schnorr com uma única chave para sempre e nunca tocar no MuSig2, que é o que toda carteira Taproot comum faz hoje. O MuSig2 só entra em cena quando várias partes querem parecer uma só, e não é a única opção construída sobre a mesma propriedade: os esquemas de limiar que toleram um signatário ausente, e as assinaturas adaptadoras usadas em trocas atômicas e na Lightning, são construções separadas que se apoiam na mesma linearidade.