Multisig, Shamir's Secret Sharing e MPC a confronto
Uno sguardo più da vicino ai modelli di soglia di sicurezza per la custodia di bitcoin di livello istituzionale.
Tradotto dall’originale di Tom Honzik - pubblicato su Unchained
Per chiunque possieda ingenti quantità di bitcoin, una struttura di custodia che includa un singolo punto di rottura dovrebbe essere considerata inaccettabile. Se un portafoglio ha un singolo componente che, se perso o rubato, può portare a una perdita permanente dei fondi, allora è semplicemente troppo pericoloso da prendere in considerazione. Nessuno vuole tenere una ricchezza significativa in bilico sull'orlo della catastrofe.
I singoli possessori di bitcoin hanno a disposizione numerosi strumenti che possono contribuire a ridurre il rischio di perdita o furto. In un precedente articolo, abbiamo trattato alcuni di questi strumenti, evidenziando le modifiche comunemente applicate ai portafogli singlesig. Tuttavia, abbiamo anche spiegato perché questi approcci non sono in grado di eliminare completamente i singoli punti di fallimento.
Per un'azienda, un governo o un'altra istituzione che voglia mettere in sicurezza la i propri bitcoin, l'eliminazione dei singoli punti di rottura non è solo una necessità, ma un prerequisito. Gli unici modelli di custodia che vale la pena prendere in considerazione per queste entità sono quelli che includono un requisito di soglia per accedere ai fondi. Un requisito di soglia descrive una struttura che coinvolge più componenti garantiti separatamente, dove un sottoinsieme di tali componenti è necessario per approvare qualsiasi prelievo. Questo è l'unico modo per ottenere una sicurezza di livello istituzionale, eliminando completamente i singoli punti di rottura.
In questo articolo, vedremo come applicare la sicurezza a soglia utilizzando tre metodi diversi: Script Multisig, condivisione del segreto di Shamir (SSS) e calcolo multi-party (MPC). Inoltre, analizzeremo i compromessi associati a ciascun approccio e il modo in cui un'istituzione può scegliere la configurazione migliore per soddisfare le proprie esigenze.
Che cos'è il multisig?
Se non siete sicuri di cosa sia uno Script MultiSig, vi consigliamo di consultare il nostro precedente articolo dedicato a spiegare come funzionano e a cosa servono i portafogli Multisig. Per un rapido ripasso, un portafoglio Multisig coinvolge più chiavi private e può essere configurato in modo che un numero specifico (soglia) di tali chiavi private sia necessario per firmare qualsiasi transazione. Le firme possono essere prodotte in tempi e luoghi diversi, consentendo a ciascuna chiave di rimanere fisicamente separata. Una volta prodotto un numero limite di firme, queste possono essere combinate in un'unica transazione bitcoin in grado di spendere i fondi.
Questo modo relativamente semplice di creare un requisito di soglia è molto efficace per eliminare tutti i singoli punti di fallimento. Finché la soglia di spesa è maggiore di uno ma inferiore al numero totale di chiavi, ogni singola chiave può essere persa, rubata o distrutta senza che i bitcoin diventino irrecuperabili. Le chiavi rimanenti possono firmare una transazione di recupero che trasferisce i fondi a una nuova configurazione Multisig.
Satoshi Nakamoto ha gettato le basi per il Multisig quando bitcoin è stato rilasciato per la prima volta, prevedendo che potesse diventare un meccanismo popolare per garantire i fondi. Tuttavia, è stato solo con il softfork P2SH nel 2012 che il Multisig ha iniziato a diventare uno strumento ampiamente utilizzato. Da allora il Multisig ha dimostrato di essere un modello di sicurezza collaudato da oltre un decennio, con diversi tipi di indirizzi.
Che cos’è lo Shamir’s Secret Sharing?
La condivisione segreta di Shamir (SSS) è un algoritmo di condivisione segreta sviluppato dal famoso crittografo Adi Shamir nel 1979. Può essere utilizzato come un altro modo per introdurre un requisito di soglia per la protezione dei bitcoin. L'SSS consente agli utenti di suddividere una chiave in diverse "azioni" distribuite, con solo una certa soglia di azioni necessarie per riassemblare la chiave. Questo può essere usato per progettare quorum come 2-di-3 o 3-di-5, simili al Multisig.
Tuttavia, questo approccio porta a singoli punti di rottura in alcuni momenti del suo ciclo di vita. Un esempio è la suddivisione iniziale della chiave in quote SSS. Questa operazione viene solitamente eseguita su un singolo dispositivo in un unico momento e luogo. Se un aggressore compromette quel dispositivo, il processo di generazione della chiave o il processo di creazione delle condivisioni, ha compromesso la chiave. Un altro esempio è quando l'utente deve riassemblare la chiave per firmare una transazione. È necessario riunire un numero limite di azioni, ancora una volta su un unico dispositivo, in un unico momento e in un unico luogo, che un aggressore potrebbe sfruttare.
Un metodo abbastanza semplice e ampiamente utilizzato per implementare la tecnologia SSS per la custodia delle criptovalute è il backup Shamir, sviluppato da Satoshi Labs nel 2017. È disponibile come opzione in alcuni modelli di portafogli hardware Trezor.
Che cos'è l'MPC?
L'MPC (Multi-Party Computation, n.d.t.), o calcolo multipartitico, è un sottocampo della crittografia che risale agli anni Settanta. L'obiettivo dell'MPC è quello di consentire a più partecipanti di eseguire congiuntamente un calcolo, mentre il contributo di ciascun partecipante al calcolo non viene rivelato al resto del gruppo e può quindi rimanere privato. Ciò consente a più parti di collaborare in vari contesti senza doversi fidare l'una dell'altra.
Quando viene applicato alla custodia dei bitcoin, l'MPC comporta la distribuzione di "quote", simili a quelle dell'SSS. Tuttavia, a differenza dell'SSS, le quote non vengono suddivise da una chiave privata né utilizzate per ricostruire una chiave privata. Invece, più parti calcolano una singola firma direttamente da una soglia delle loro quote.
A differenza dell'SSS, l'MPC non richiede un singolo punto di rottura. Le azioni MPC possono essere generate separatamente l'una dall'altra e non devono mai essere riunite per far funzionare il portafoglio. Le informazioni prodotte da una quota possono essere comunicate agli altri partecipanti, senza che la quota stessa venga rivelata.
Poiché bitcoin e altre criptovalute hanno utilizzato principalmente un sistema di firma basato su ECDSA (Elliptic Curve Digital Signature Algorithm), è stato necessario adattare MPC a questo contesto. I primi protocolli di soglia pratici per ECDSA sono stati pubblicati nel 2018. [GG18, LNR18]
Quali sono i compromessi tra i modelli di soglia?
Con tre diversi modelli di sicurezza delle soglie tra cui scegliere, il passo successivo è la comprensione dei punti di forza e di debolezza di ciascuna opzione.
I compromessi con il Multisig
Lo Script Multisig è un metodo standardizzato per ottenere una soglia di sicurezza, nativo del protocollo bitcoin. La struttura è considerata relativamente semplice e robusta. Anche la barriera all'ingresso è ridotta: se un utente di bitcoin sa come gestire un portafoglio Singlesig, non è un grande salto imparare a configurare e utilizzare un portafoglio Multisig.
Quando un portafoglio Multisig viene inizializzato, gli indirizzi prodotti per ricevere bitcoin nel portafoglio hanno il requisito della soglia incorporato. Una volta che un indirizzo Multisig è stato finanziato, i bitcoin sono protetti da un contratto immutabile che è stato essenzialmente scritto nella blockchain stessa.
L'unico modo per alterare il contratto (ad esempio cambiando la politica di controllo degli accessi, modificando le chiavi che proteggono i bitcoin) è spostare i bitcoin a un nuovo indirizzo costruito con un contratto diverso.
Per più parti che collaborano per proteggere i bitcoin, questo meccanismo di contratto immutabile a livello di base può fornire il massimo grado di rassicurazione sul fatto che il denaro sia protetto secondo le intenzioni di tutte le parti. Se qualcosa dovesse essere modificato in modo sostanziale, diventerebbe evidente a tutti attraverso una transazione pubblica e le chiavi che hanno approvato la modifica sarebbero note. Questo è il motivo per cui i fornitori di servizi di custodia collaborativa si affidano allo Script Multisig per i propri prodotti.
Tuttavia, la distribuzione dei contratti pubblicamente sulla blockchain comporta dei compromessi. Quando i bitcoin vengono spesi da un indirizzo Multisig, la politica di controllo degli accessi per quell'indirizzo deve essere pubblicata in modo permanente sulla blockchain. Gli osservatori possono quindi vedere i dettagli del quorum Multisig utilizzato. Anche se i fondi rimanenti possono essere facilmente migrati a un nuovo indirizzo, il fatto che gli accordi di sicurezza passati siano esposti non è l'ideale. Inoltre, la necessità di spostare bitcoin da un indirizzo all'altro per regolare la politica di controllo degli accessi implica sempre delle spese di transazione (e più grande è il quorum, più costoso sarà il processo).
Per le entità che danno valore alla custodia di altcoin, come gli exchange di criptovalute, lo script Multisig può rappresentare una sfida maggiore rispetto agli altri due metodi di sicurezza della soglia. Questo perché il quorum di soglia Multisig è imposto a livello di blockchain e le diverse criptovalute utilizzano blockchain diverse. Molte criptovalute non supportano nemmeno un'implementazione Multisig nativa e robusta. Nel frattempo, SSS e MPC applicano quorum di soglia a livello di chiave e appaiono pubblicamente come transazioni Singlesig. Dal momento che quasi tutte le criptovalute supportano uno standard simile per la custodia Singlesig (la stessa chiave può essere utilizzata per la maggior parte delle criptovalute), ciò consente a SSS e MPC di essere più compatibili tra le varie blockchain.
I compromessi con lo Shamir’s Secret Sharing
L'SSS offre un altro modo di progettare un requisito di soglia basato su una crittografia relativamente semplice e collaudata. Ai fini della custodia delle criptovalute, l'SSS ha anche un metodo ampiamente diffuso con una bassa barriera all'ingresso (Shamir backup). Una volta acquisita esperienza nell'uso di un portafoglio convenzionale a Singlesig, non è un grande salto usare un Trezor (o un altro hardware wallet, n.d.t.) per configurare un portafoglio con backup Shamir.
A differenza del Multisig, l'SSS opera completamente al di fuori degli indirizzi e delle transazioni pubbliche sulla blockchain. Invece, il requisito di soglia è deciso dal modo in cui la chiave privata viene suddivisa in quote. Ciò significa che la suddivisione di una chiave in quote e il successivo riassemblaggio possono essere effettuati in privato, in modo che solo le persone che partecipano all'accordo di custodia dei bitcoin siano a conoscenza dell'utilizzo dell'SSS. Oltre ai vantaggi in termini di privacy, mantenere la struttura della soglia al di fuori della blockchain significa anche che le transazioni SSS non comporteranno un aumento delle commissioni e potranno essere utilizzate per proteggere molte criptovalute diverse. Sebbene la maggior parte delle criptovalute abbia una propria blockchain, tutte possono condividere la stessa chiave privata come punto di accesso, che può essere a sua volta suddivisa utilizzando l'SSS.
Il principale svantaggio dell'SSS è già stato menzionato in precedenza: la chiave privata deve esistere in un unico luogo e in un unico momento, prima di essere suddivisa in quote e anche quando le quote vengono ricombinate per l'approvazione di un prelievo.
Queste vulnerabilità creano singoli punti di rottura temporanei, il che significa che l'SSS di per sé non offre una sicurezza di livello veramente istituzionale, a differenza del Multisig o dell'MPC.
Inoltre, l'SSS non offre un metodo nativo per regolare la politica di controllo degli accessi. Una volta che una chiave privata viene suddivisa in un quorum di azioni, queste ultime manterranno sempre la capacità di riprodurre quella chiave. Se un gruppo sta proteggendo un tesoro utilizzando SSS e un membro del gruppo se ne va, la revoca dei permessi per quell'individuo in modo sicuro può rappresentare una sfida. I membri rimanenti del gruppo potrebbero riassemblare la chiave e dividerla in nuove azioni, ma le vecchie azioni dovrebbero essere distrutte in modo verificabile. Altrimenti, i fondi dovrebbero essere inviati a un portafoglio completamente nuovo protetto da una chiave diversa.
I compromessi con l'MPC
Come l'SSS, l'MPC applica il requisito della soglia a livello di chiave anziché a livello di blockchain. Ciò consente di ottenere vantaggi simili, come garantire una maggiore capacità di privacy, evitare un aumento delle commissioni di transazione e consentire l'utilizzo di una struttura di custodia MPC per molte criptovalute diverse.
È importante notare che l'MPC riesce a evitare i singoli punti di rottura temporanei che si verificano con l'utilizzo dell'SSS. Utilizzando un metodo crittografico diverso, le quote delle chiavi possono esistere separatamente dal momento in cui il portafoglio viene creato per la prima volta, e rimanere separate anche durante la firma delle transazioni di prelievo. La maggior parte delle implementazioni di MPC include anche un metodo nativo per regolare la politica di controllo degli accessi (creando un nuovo quorum di azioni) senza dover inviare fondi a un nuovo indirizzo di portafoglio.
Tuttavia, l'MPC per ECDSA a soglia è considerato una crittografia molto complessa e non esiste uno standard concordato per il suo utilizzo. Esistono molti protocolli diversi, con i primi due sviluppati indipendentemente nel 2018 da Gennaro e Goldfeder [GG18] e Lindell et al. [LNR18]. Da allora, abbiamo visto anche i protocolli di Doerner et al. [DKLs19], Castagnos et al. [CCL+20], Damgård et al. [DJM+20], Canetti et al. [CMP20], Gągol et al. [GKSS20], Gennaro e Goldfeder [GG20], Canetti et al. [CGG+21], Abram et al. [ANO+21], Doerner et al. [DKLs23] e forse altri. Sebbene i protocolli più recenti tendano ad apportare alcuni miglioramenti rispetto a quelli più vecchi, è possibile che abbiano avuto meno opportunità di revisione paritaria, audit e altri test.
L'elevato livello di complessità dell'MPC crea una superficie di attacco più ampia. Con l'aggiunta di componenti e procedure, c'è più spazio per errori e potenziali vulnerabilità di sicurezza.
L'evidenza di gravi falle nella sicurezza, compresi gli attacchi per l'estrazione completa della chiave privata, si è già presentata più di una volta, colpendo alcuni dei protocolli ECDSA di soglia sopra elencati.
Gli esempi includono:
Vulnerabilità AS20, settembre 2020, che interessano le implementazioni GG18
Vulnerabilità di Alpha-Rays, dicembre 2021, che interessano GG18 e GG20
Vulnerabilità di TSSHOCK, agosto 2023, che colpisce GG18, GG20 e CGG+21
Vulnerabilità di BitForge, agosto 2023, che interessano GG18 e GG20
"La crittografia deve superare la prova del tempo per raggiungere la longevità, e questi nuovi protocolli chiaramente non hanno superato la prova del tempo[...] questa ricerca non era pronta per l'implementazione o l'adozione diffusa. Dal mio punto di vista, implementare e produrre una ricerca così recente è piuttosto pericoloso".
— Charles Guillemet, CTO di Ledger, risposta di Alpha-Rays del dicembre 2021.
"[MPC è] più complicato, è più facile sbagliare. I protocolli di crittografia avanzati sono fragili nei dettagli e nell'implementazione. Mi sentirei più sicuro nel Multisig, che è super semplice e solido come una roccia".
— Post del famoso crittografo Adam Back, gennaio 2023
L'MPC è anche limitato da chi può realisticamente utilizzarlo. Come già detto, la soglia ECDSA è molto complicata. Per l'individuo medio, non ci sono strumenti disponibili per impostare in modo sicuro e semplice l'MPC in modo indipendente. Sebbene alcune aziende offrano portafogli MPC a custodia collaborativa abbastanza facili da usare, queste aziende non offrono agli utenti un modo semplice per recuperare i fondi se l'azienda scompare (o non lo fanno affatto, nel qual caso rappresentano un singolo punto di rottura). Poiché lo script Multisig è uno standard semplice e aperto, le aziende che forniscono soluzioni di custodia collaborativa utilizzando il Multisig possono offrire strumenti di recupero open-source e facili da usare. In questo modo, i clienti hanno la possibilità di recuperare i propri fondi anche se l'azienda di Multisig collaborativa non è più disponibile ad assistere.
Qual è il modello migliore?
Come abbiamo appena visto, esistono numerosi compromessi tra l'uso di Multisig, SSS e MPC. Per un confronto visivo, si possono disporre in un grafico:
Se un'azienda è specializzata nella custodia di molte criptovalute diverse, potrebbe essere motivata ad assumere un team di professionisti per impostare con cura un modello di custodia MPC. Tuttavia, se un'azienda o un privato cercasse un modo semplice e affidabile per proteggere i bitcoin a lungo termine, potrebbe preferire l'uso di Script Multisig e accettare i compromessi sulla privacy. L'SSS è raramente utilizzato da solo a causa della sua incapacità di applicare sempre requisiti di soglia di livello istituzionale.
Combinazione di modelli per la custodia collaborativa
Sebbene Multisig, SSS e MPC siano spesso considerati modelli di sicurezza concorrenti, è possibile incorporarne più di uno in una struttura di custodia complessiva. Come descritto in precedenza, SSS e MPC consentono una soglia di quote di chiavi per produrre una firma per una transazione. Se la firma serve a spendere fondi da un portafoglio Singleig, non è necessario altro per completare la transazione. Tuttavia, se invece la firma serve per spendere fondi da un portafoglio Multisig, potrebbero essere necessarie firme aggiuntive da altre chiavi.
Sebbene questa combinazione di tecniche possa sembrare inutile e macchinosa, ci sono alcuni contesti in cui ha un senso pratico. Con l'aumento della popolarità degli agenti per le chiavi (key agents, n.d.t.) e della custodia multiistituzionale, cresce il numero di aziende specializzate che vengono incaricate da privati e istituzioni di custodire una delle chiavi di un portafoglio Multisig. Questi agenti per le chiavi distribuiti possono contribuire a ridurre il rischio di custodia. Ma in che modo un key agent deve proteggere la singola chiave di cui è responsabile?
L'SSS o l'MPC possono essere una strategia per ridurre al minimo o eliminare i singoli punti di fallimento da questo compito. Un key agent aziendale può progettare un sistema in cui diversi funzionari all'interno dell'azienda detengono ciascuno quote di chiavi, e quindi una firma può essere prodotta solo previo accordo di una soglia di tali funzionari. Inoltre, se dovesse verificarsi un attacco durante il riassemblaggio di un SSS o se un'implementazione MPC dovesse soffrire di una nuova vulnerabilità nell'estrazione delle chiavi, come quelle elencate in precedenza, i fondi dei clienti non sarebbero immediatamente a rischio. Il key agent avrebbe il tempo di reagire e risolvere il problema, mentre i bitcoin rimarrebbero protetti dal portafoglio Multisig più ampio.
L'utilizzo di Script Multisig per creare un requisito di soglia come contratto immutabile di base, e poi commissionare a key agents professionisti la protezione di una chiave Multisig utilizzando la propria soglia SSS o MPC, è di gran lunga il metodo più sicuro per un istituto per mantenere i bitcoin protetti a lungo termine.
Nuove funzionalità con Taproot
Nel novembre del 2021 si è verificata la soft-fork di Taproot, che ha aggiunto nuovi strumenti all'ecosistema bitcoin. Alcuni di questi strumenti hanno un impatto sul futuro della custodia di bitcoin di livello istituzionale, consentendo alcuni miglioramenti e opzioni.
Schnorr signatures: L'algoritmo di firma Schnorr è ora disponibile in bitcoin come alternativa a ECDSA. L'utilizzo di MPC su Schnorr porta a schemi di sicurezza a soglia che sono molto meno complicati, e quindi offrono anche una maggiore fiducia nella loro sicurezza, rispetto ai protocolli ECDSA menzionati in precedenza. FROST è il principale protocollo di firma a soglia Schnorr, mentre MuSig2 è disponibile anche per i quorum N-of-N. Entrambi questi schemi di firma sono in procinto di diventare strumenti standardizzati in tutto il settore bitcoin e si prevede che renderanno l'MPC disponibile per le persone normali, con un'esperienza d'uso simile a quella dello script multisig.
Script type privacy: Gli indirizzi Pay-to-Taproot (P2TR) sono un nuovo tipo di indirizzo che consente agli indirizzi bitcoin script multisig di apparire identici agli indirizzi utilizzati per i portafogli singlesig. Questo offre un significativo miglioramento della privacy, perché significa che l'indirizzo bitcoin stesso non fornisce alcun indizio sul modello di sicurezza del suo proprietario, come ad esempio l'utilizzo o meno di script multisig.
Multiple spending paths: Gli indirizzi P2TR hanno anche la possibilità di contenere percorsi di spesa multipli. Ciò può creare nuovi modi di strutturare la soglia di sicurezza per la custodia di livello istituzionale, come descritto nel BIP 342 (motivazione, sezione 5). Ad esempio, un utente potrebbe creare un percorso di spesa Multisig di N script per ogni combinazione di chiavi che può spendere fondi. Invece di creare un quorum di 2 su 3 con le chiavi A, B e C, si può ottenere un risultato simile con tre quorum separati di 2 su 2 come possibili percorsi di spesa: uno con le chiavi A e B, uno con le chiavi A e C e uno con le chiavi B e C. Questa strategia può aumentare la privacy, perché viene rivelato solo il percorso di spesa che finisce per essere utilizzato. Un concetto simile può essere applicato ai quorum di condivisione delle chiavi MPC, consentendo di utilizzare MuSig2 per le soglie.
Questi strumenti Taproot sono relativamente nuovi e la loro adozione è ancora in fase iniziale. Molti software e servizi bitcoin non offrono ancora un supporto completo per ciò che Taproot ha da offrire. Vale anche la pena di notare che la maggior parte delle altcoin non dispone di questi strumenti in modo nativo.
Considerazioni finali
Un numero crescente di istituzioni si sta interessando alla sicurezza di una tesoreria in bitcoin e richiede soluzioni efficaci. Evitare singoli punti di rottura e minimizzare il rischio di controparte sono considerazioni fondamentali. Il modo migliore per soddisfare questi criteri è sfruttare una struttura Multisig, in cui le chiavi possono essere distribuite tra vari key agents aziendali, nessuno dei quali avrà il controllo unilaterale sui bitcoin. Ogni key agent può utilizzare SSS o MPC per aggiungere una soglia di protezione supplementare per la propria chiave.
Una singola società non dovrebbe mai essere in grado di perdere i vostri bitcoin.
Come acquistare Bitcoin?
Reputo il miglior servizio quello offerto da Relai.
Per acquistare bitcoin risparmiando lo 0,5% in commissioni puoi usare il codice “REL3166”.
Si tratta di un’applicazione sviluppata da un’azienda svizzera che applica una politica di KYC light: a differenza dei grandi exchange non richiede registrazioni o dati personali, tutto ciò che serve per acquistare è il tuo IBAN.
E’ lo strumento ottimale per impostare dei piani di accumulo (DCA).
Per ridurre al massimo le commissioni di acquisto, ti consiglio di:
effettuare acquisti maggiori di 100€ (-0,5%)
impostare un piano di accumulo settimanale o mensile (-0,5%)
applicare il codice invito REL3166 (-0,5%)
Una delle migliori caratteristiche è il servizio non-custodial. Gli euro bonificati a Relai vengono convertiti automaticamente in bitcoin e trasferiti su un wallet di cui sei solo tu ad avere il controllo. I grossi exchange, al contrario, non forniscono le chiavi private ai clienti. In più Relai non vende centinaia di inutili criptovalute, ma solo bitcoin.
Cosa ci guadagno? Quello che fanno guadagnare i referral code. In questo caso se acquisti usando il codice “REL3166” risparmi lo 0,5% sulle commissioni e io ricevo (in bitcoin) lo 0,5% dell’importo che hai deciso di investire.
Per ulteriori informazioni, o per effettuare il primo acquisto, premi sul pulsante sottostante e ti verrà mostrata una dettagliata guida in italiano.
NOTA - Questo NON è un messaggio pubblicitario. Relai è un servizio che utilizzo personalmente e che reputo tra i migliori sul mercato in termini di affidabilità, sicurezza e facilità d’uso. Lo consiglio spesso ad amici e parenti.