Glossario / Protocollo e aggiornamenti
Firma Schnorr
Noto anche come BIP340.
- Che cos'è una firma Schnorr?
- Una firma Schnorr è lo schema di firma da 64 byte che bitcoin ha adottato con Taproot, e la sua proprietà distintiva è la linearità: più chiavi e più firme si sommano in una sola.
Specificato nel BIP-340.
Le firme ECDSA occupano 71 o 72 byte e non possono essere combinate; le firme Schnorr sono sempre di 64 byte e possono. È per questa differenza che due firmatari, o quindici, possono produrre un'unica firma verificabile con un'unica chiave pubblica, senza nulla on-chain che dica quanti erano. Bitcoin ha ottenuto lo schema nel BIP-340, creato a gennaio 2020 e applicabile dal blocco 709.632.
Come funziona
Lo schema usa la stessa curva ellittica che bitcoin ha sempre usato, secp256k1, e le stesse chiavi private. Quello che cambia è l'algebra attorno a esse.
Per firmare, scegli un nonce segreto, pubblichi il punto che genera come R e calcoli un unico numero s a partire dal nonce, da un hash di R insieme alla chiave pubblica e al messaggio, e dalla tua chiave privata. La firma è R e s scritti su 32 byte ciascuno, ed è da qui che viene la lunghezza fissa di 64 byte. La verifica riordina la stessa equazione e controlla che due punti coincidano. ECDSA richiede un'inversione modulare nel mezzo di questo calcolo; Schnorr no, e quell'inversione assente è la ragione per cui tutto resta lineare.
La linearità è il vantaggio pratico. Somma due chiavi private e la somma firma per la somma delle due chiavi pubbliche, così un gruppo può condividere un'unica chiave apparente. Consente anche la verifica per lotti: un nodo che valida un blocco può verificare centinaia di firme in un'unica operazione aggregata invece che una alla volta, il che conta soprattutto durante il download iniziale dei blocchi.
Due dettagli del BIP-340 esistono per evitare errori facili. Le chiavi pubbliche sono x-only, 32 byte con la coordinata y implicita, il che elimina l'ambiguità che un tempo creavano due codifiche della stessa chiave. E ogni hash è un hash etichettato, preceduto da una stringa di dominio, così una firma creata per uno scopo non può mai essere riprodotta come valida in un altro protocollo che per caso calcoli l'hash di byte simili.
Il nonce resta il punto critico. Riusarne uno su due messaggi diversi espone la chiave privata con semplice aritmetica, esattamente come con ECDSA, ed è per questo che il BIP-340 specifica una derivazione deterministica mescolata con casualità ausiliaria opzionale invece di lasciare la scelta agli implementatori.
C'è una ragione se nulla di tutto questo è arrivato nel 2009. Claus Schnorr deteneva il brevetto statunitense 4.995.082 sullo schema, scaduto solo a febbraio 2008, pochi mesi prima che comparisse il whitepaper di bitcoin. All'epoca ECDSA era lo standard libero da vincoli, così bitcoin uscì con la seconda opzione migliore e attese dodici anni per correggere.
Perché questo conta quando compri bitcoin
Per un wallet con una sola chiave l'effetto è un errore di arrotondamento, e per chi protegge una somma seria è la crittografia più utile che bitcoin abbia aggiunto.
Parti dal costo di tenere bitcoin su più dispositivi. Una configurazione 2-di-3 spesa al vecchio modo pubblica due firme e tre chiavi pubbliche in ogni transazione, quindi paghi l'intera policy ogni volta che muovi fondi. Spesa in modo cooperativo tramite Taproot pubblica una sola firma, e le altre chiavi non compaiono mai. Il risparmio si somma se consolidi piccole somme, che è esattamente ciò che finiscono per fare i detentori di lungo periodo.
Poi c'è la conseguenza sulla privacy, che è maggiore. Le società di analisi della blockchain classificano gli indirizzi in base alla forma, e il multisig è sempre stato una forma ben visibile. I wallet hardware che recensisce questo sito possono agire come cofirmatari in configurazioni di questo tipo, e fino a Taproot il fatto di proteggerti come si deve diceva agli osservatori che avevi qualcosa che valeva la pena proteggere. Una spesa Schnorr cooperativa elimina quell'indizio senza indebolire nulla.
Anche per un piano di successione il calcolo cambia. Poiché i rami non usati di un albero Taproot non costano nulla, puoi aggiungere un percorso di recupero con ritardo temporale per un familiare senza pagarlo su ogni spesa ordinaria. È un'opzione davvero nuova, e vale la pena leggere la nostra guida alla sicurezza prima di progettarne una, perché il modo in cui fallisce uno schema di custodia ingegnoso è perdere l'accesso, non subire un furto.
MuSig2: due firmatari, una firma
MuSig2, standardizzato come BIP-327, è il protocollo che trasforma la linearità in qualcosa che i wallet possono usare davvero.
Sommare le chiavi pubbliche in modo ingenuo non è sicuro. Se un partecipante conosce la chiave di tutti gli altri prima di annunciare la propria, può costruire una chiave che annulla quelle degli altri e ritrovarsi in grado di firmare da solo. È l'attacco della chiave canaglia, e MuSig2 lo sconfigge ponderando ogni chiave con un coefficiente derivato dall'intero insieme, così nessun partecipante può scegliere liberamente la propria.
Il flusso di firma è in due round. Ogni parte invia gli impegni sui nonce, poi ogni parte invia una firma parziale, e le firme parziali si sommano in un'unica firma Schnorr valida sotto la chiave aggregata. I due round contano perché il primo può essere fatto in anticipo, ed è ciò che rende lo schema utilizzabile nei canali Lightning, dove le firme si scambiano di continuo.
Quello che arriva on-chain è un'unica firma di 64 byte che spende un unico output di tipo key path. Una spesa cooperativa tra due parti costa circa 57,5 vbyte, meno di qualsiasi altro tipo di input, e l'osservatore non può dire se l'ha autorizzata una persona o un comitato.
Firma Schnorr vs firma
Su bitcoin la parola firma da sola significa ancora di solito ECDSA, ed entrambi gli schemi sono in uso quotidiano. I bitcoin che stanno a un indirizzo che inizia con 1, 3 o bc1q vengono spesi con ECDSA, esattamente come nel 2010. I bitcoin a un indirizzo bc1p vengono spesi con Schnorr. Un wallet che contiene entrambi i tipi, come fa la maggior parte dei wallet con un po' di storia, produce entrambi i tipi nella stessa sessione senza dirlo. Chi ti dice che bitcoin usa ECDSA, punto, descrive il protocollo com'era prima di novembre 2021.
Firma Schnorr vs MuSig2
Schnorr è lo schema di firma; MuSig2 è un protocollo costruito sopra di esso. Puoi usare Schnorr con una sola chiave per sempre senza mai toccare MuSig2, ed è ciò che fa oggi ogni normale wallet Taproot. MuSig2 entra in gioco solo quando più parti vogliono sembrare una sola, e non è l'unica opzione costruita sulla stessa proprietà: gli schemi a soglia che tollerano l'assenza di un firmatario e le firme adattatrici usate per gli atomic swap e per Lightning sono costruzioni distinte che si basano sulla stessa linearità.