Cos'è uno Schema di Firma Soglia (TSS)?
Basics
Threshold Signature Scheme (TSS) è un primitivo crittografico che consente la generazione distribuita di chiavi e la firma distribuita. La sua applicazione nei client blockchain può offrire una vasta gamma di benefici, in particolare nell'ambito della sicurezza. Questa innovazione può anche influenzare lo sviluppo di sistemi di gestione delle chiavi, come i portafogli crypto, e persino aprire la strada a supporti nativi nei casi d'uso DeFi. Tuttavia, essendo ancora una tecnologia relativamente nuova, è fondamentale considerare i limiti e i potenziali rischi associati al TSS.
Esploriamo lo Schema di Firma Soglia, definiamo i suoi potenziali vantaggi nel contesto della blockchain e dettagliamo come può essere integrato in un client blockchain. L'articolo confronterà inoltre il TSS con altre tecnologie crittografiche simili, come la condivisione segreta di Shamir e il Multisig. Inoltre, verranno discusse le varie modalità in cui il TSS può essere usato per la gestione distribuita delle chiavi, prima di concludere con una panoramica sui rischi e i limiti associati a questa tecnologia.
The Power of Cryptography
Prima di addentrarci nelle complessità dello Schema di Firma Soglia, è essenziale avere una comprensione di base della crittografia. Fin dagli anni '70, la crittografia asimmetrica, nota anche come crittografia a chiave pubblica (PKC), è stata ampiamente impiegata nei sistemi Internet come TLS e PGP. La PKC utilizza due chiavi: una pubblica e una privata. La chiave pubblica può essere usata e pubblicata liberamente, mentre la chiave privata viene mantenuta confidenziale per garantire la sicurezza.
La PKC ha due principali utilizzi: la crittografia e le firme digitali. Entrambe le applicazioni si basano su un insieme di tre algoritmi. Prima viene eseguita la generazione della coppia di chiavi privata e pubblica. Secondo, viene generato il cifrato/la firma. Infine, si esegue il processo di decrittazione/verifica. Per quanto riguarda le firme digitali, l'algoritmo di firma richiede la chiave privata, nota solo al proprietario, per produrre una firma unica che può essere allegata a un dato messaggio. Chiunque possieda la chiave pubblica può quindi verificare l'autenticità e la correttezza della firma.
Blockchain
La tecnologia blockchain ha guadagnato grande popolarità grazie alla sua capacità di organizzare e registrare eventi tramite uno strato di consenso, che può potenzialmente essere utilizzato per stabilire economie decentralizzate e persino governi. Le firme digitali sono l'unica forma di crittografia necessaria per far funzionare una blockchain di base. Nel contesto della blockchain, le chiavi private agiscono come identità, mentre le firme fungono da dichiarazioni o affermazioni pubbliche fatte da un'identità. La blockchain valida e ordina queste dichiarazioni secondo un insieme di regole, assicurando che le firme siano non falsificabili e corrette.
Le tecniche crittografiche moderne, come le prove a conoscenza zero, la crittografia omomorfica e i calcoli multipartiti, hanno ampliato la gamma di strumenti disponibili in crittografia. La ricerca sulla blockchain ha contribuito in modo significativo ai progressi della crittografia applicata nell'ultimo decennio. Questo articolo si concentrerà su una di queste innovazioni: le firme soglia efficienti e sicure.
MPC and the TSS
Lo schema di firma soglia è un metodo che combina la generazione distribuita delle chiavi (DKG) e la firma distribuita in uno schema di firma soglia. Il calcolo multipartito (MPC) è un ramo della crittografia che esiste da quasi 40 anni. Permette a parti che non si fidano l'una dell'altra di calcolare congiuntamente una funzione sui loro input mantenendo tali input privati. Per esempio, immaginate i dipendenti di un'azienda che vogliono sapere chi viene pagato di più senza rivelare i propri stipendi reciproci. Con l'MPC, il calcolo viene effettuato in modo che neppure un singolo cedolino venga divulgato durante il processo. In modo distribuito, possiamo usare l'MPC per calcolare una firma digitale. Ci sono tre passaggi per creare una firma: generazione della chiave, firma e verifica.
Nel primo passaggio, generiamo una chiave pubblica, utilizzata per verificare le firme future, e segreti individuali per ogni parte, noti come condivisioni segrete. Per mantenere privacy e correttezza, la funzione deve produrre la stessa chiave pubblica per tutte le parti e una condivisione segreta diversa per ciascuna. Il criterio di privacy stabilisce che nessun dato delle condivisioni segrete venga divulgato tra le parti, mentre il criterio di correttezza garantisce che la chiave pubblica sia una funzione delle condivisioni segrete.
Nel secondo passaggio, ogni parte usa la propria condivisione segreta come input per una funzione di generazione della firma e un messaggio noto a tutte le parti. L'output di questo passaggio è una firma digitale, e la proprietà di privacy assicura che non si verifichino perdite di dati delle condivisioni segrete durante il calcolo.
Il terzo passaggio riguarda un algoritmo di verifica che rimane identico a quello dell'impostazione classica. Chiunque conosca la chiave pubblica può verificare e convalidare le firme, rendendolo compatibile con le firme a chiave singola.
In sintesi, TSS è il nome dato alla combinazione di generazione distribuita di chiavi e firma distribuita in uno schema di firma soglia che utilizza MPC.
Integrating TSS With Blockchains
Per incorporare la tecnologia TSS in una blockchain, è necessario modificare il client blockchain per eseguire calcoli distribuiti invece di comandi legati a chiavi private. Nel design tradizionale delle blockchain, un nuovo indirizzo viene creato generando una chiave privata, calcolando la chiave pubblica e poi derivando l'indirizzo blockchain dalla chiave pubblica.
Con il TSS, un gruppo di parti può calcolare congiuntamente la chiave pubblica, con ciascuno che detiene una condivisione segreta della chiave privata. La condivisione di ciascuna parte rimane confidenziale, rendendo la chiave privata un'entità distribuita. La blockchain rimane invariata. Questo approccio offre il vantaggio di non avere un singolo punto di vulnerabilità per la chiave privata, poiché ogni parte detiene solo una parte di essa.
Allo stesso modo, quando si firmano le transazioni, una singola parte viene sostituita da una generazione distribuita della firma tra più parti. Ciascuna parte può contribuire a generare una firma valida se un numero sufficiente di esse è onesto. Inoltre, la generazione distribuita delle chiavi è in grado di gestire varie strutture di accesso. L'impostazione "t su n" può tollerare fino a t guasti arbitrari senza compromettere la sicurezza.
TSS vs. Multisig
In sostanza, multisig e TSS cercano di raggiungere obiettivi simili. Tuttavia, il multisig avviene on-chain, mentre il TSS usa crittografia off-chain. Sebbene alcune blockchain possano avere funzionalità TSS integrate o programmabili, il multisig è uno strato applicativo della blockchain.
Un limite del multisig è che la struttura di accesso è esposta sulla blockchain, il che può compromettere la privacy. Inoltre, le transazioni multisig sono più costose a causa delle informazioni sui diversi firmatari che devono essere comunicate on-chain. Al contrario, il TSS incorpora i dettagli dei firmatari in una transazione dall'aspetto ordinario, riducendo i costi e preservando la privacy.
Nonostante la comodità del multisig, che è non interattivo, esso è specifico per ogni blockchain e deve essere reimplementato per ciascuna, o talvolta non è supportato affatto. Il TSS, invece, si basa sulla crittografia, rendendolo universalmente supportabile.
TSS vs. Shamir
Ci sono due differenze principali nel confrontare lo schema di condivisione segreta di Shamir (SSSS) con il TSS. Primo, nello SSSS esiste una singola parte chiamata "dealer" che genera le condivisioni segrete della chiave privata e poi le distribuisce in diverse localizzazioni. Ciò significa che la chiave privata è inizialmente generata in un'unica sede e poi distribuita, creando un potenziale singolo punto di vulnerabilità. Al contrario, il TSS non si affida a un singolo dealer. Invece, la generazione delle chiavi è distribuita, garantendo che la chiave privata non si trovi mai in un'unica località.
Secondo, nello SSSS le parti devono ricostruire la chiave privata completa per firmare, creando un altro potenziale singolo punto di vulnerabilità ogni volta che è necessaria una firma. Il TSS gestisce la firma in modo diverso eseguendola in maniera distribuita senza ricostruire le condivisioni segrete.
In sintesi, il TSS assicura che la chiave privata non sia mai in un'unica sede durante il suo ciclo di vita, mentre lo SSSS presenta un punto singolo di vulnerabilità durante la generazione della chiave e la firma.
Threshold Wallets
A differenza dei portafogli di criptovalute tradizionali, un portafoglio basato su tecnologia TSS funziona in modo differente. Tipicamente, un portafoglio convenzionale genera una frase seed per derivare gli indirizzi in modo deterministico. L'utente può quindi usare questa struttura deterministica gerarchica (HD) per ottenere le chiavi private corrispondenti agli indirizzi del portafoglio e firmare transazioni, nonché recuperare tutte le chiavi del portafoglio usando la frase seed.
Tuttavia, in un portafoglio soglia le cose sono più complesse. Sebbene sia possibile generare una struttura HD, la sua generazione deve essere calcolata in modo distribuito usando un altro protocollo MPC. Le parti devono decidere congiuntamente la prossima chiave da utilizzare, con ciascuna parte che possiede una propria frase seed. Le frasi seed vengono generate separatamente e mai combinate, in modo che una singola parte non possa derivare da sola le chiavi private dalla propria seed.
I portafogli basati su TSS offrono una funzione di sicurezza che permette la rotazione delle chiavi private senza cambiare la corrispondente chiave pubblica e l'indirizzo blockchain. Questa funzione, nota anche come proactive secret sharing, prende in input le condivisioni segrete e produce un nuovo insieme di condivisioni segrete. Le vecchie condivisioni segrete possono essere cancellate e le nuove possono essere usate allo stesso modo.
Questa struttura di sicurezza nella dimensione temporale rende difficile per un attaccante violare un portafoglio soglia. Combinare le condivisioni segrete prima e dopo la rotazione non fornisce poteri aggiuntivi agli aggressori che vogliono falsificare una firma.
Tuttavia, un aspetto negativo di questo tipo di portafoglio è la mancanza di una frase seed unica, rendendolo incompatibile con i sistemi di portafogli a chiave singola. È essenziale considerare quali parti deterranno le condivisioni segrete. Ci sono tre possibili architetture:
- Esternalizzazione del TSS: l'utente permetterà a "n" server di eseguire i calcoli per suo conto, esternalizzando di fatto la generazione, la gestione e la firma delle chiavi a fornitori di servizi. Tuttavia, i fornitori di servizi potrebbero colludere e rubare i beni dell'utente.
- Uso di più dispositivi: l'utente eseguirà il TSS tra i propri dispositivi, come un dispositivo IoT, uno smartphone e un laptop. Tuttavia, questo metodo può risultare macchinoso durante le transazioni.
- Ibrido: il TSS verrà eseguito con alcune parti controllate da provider esterni e alcune parti su dispositivi di proprietà dell'utente. Questa opzione offre un modo semplice e veloce per effettuare transazioni senza compromettere la sicurezza.
In sintesi, la tecnologia TSS aggiunge un nuovo livello di sicurezza ai portafogli di criptovalute, rendendoli meno suscettibili agli attacchi. L'approccio ibrido è considerato la scelta migliore per gli utenti, poiché fornisce un equilibrio tra comodità e sicurezza.
TSS and Smart Contracts
Le firme digitali hanno molti usi che possono essere impegnativi. TSS è un primitivo crittografico che migliora la sicurezza. La crittografia basata su TSS può sostituire molte funzionalità nelle blockchain. Atomic swap, eredità, soluzioni di scaling layer 2 e applicazioni decentralizzate possono essere costruite usando il framework TSS, sostituendo operazioni on-chain costose e pericolose con alternative più affidabili ed economiche. I Multi-Hop Locks, che utilizzano con abilità firme a due parti, possono rappresentare una sostituzione per la rete Lightning di Bitcoin per un network di canali di pagamento sicuro e privato. ShareLock, basato sulla verifica di una singola firma soglia, è probabilmente la soluzione di mixing on-chain più economica per Ethereum.
Risks
Nonostante la crescente popolarità delle implementazioni TSS negli ultimi anni, la tecnologia presenta ancora alcuni limiti e preoccupazioni in quanto campo relativamente nuovo. Sebbene i protocolli TSS possano migliorare la sicurezza, sono anche molto più complessi rispetto alla classica crittografia a chiave pubblica e non hanno ancora subito test rigorosi. Inoltre, il TSS spesso richiede assunzioni crittografiche più deboli rispetto alle configurazioni tradizionali, portando alla scoperta di nuovi vettori d'attacco. Tuttavia, ingegneri della sicurezza e crittografi possono contribuire a garantire il dispiegamento sicuro del TSS nei vostri sistemi. In senso positivo, contributi di qualità, revisioni tra pari, audit e miglioramenti delle prestazioni algoritmiche contribuiscono tutti a implementazioni TSS più robuste.
Conclusion
In conclusione, lo Schema di Firma Soglia è una tecnologia crittografica innovativa che ha il potenziale di offrire una vasta gamma di benefici, in particolare nell'ambito della sicurezza blockchain. La sua applicazione nei client blockchain può rivoluzionare i sistemi di gestione delle chiavi, come i portafogli crypto, e persino aprire la strada al supporto nativo nei casi d'uso DeFi. Tuttavia, sebbene il TSS offra diversi vantaggi, è ancora una tecnologia nuova ed è fondamentale considerarne i limiti e i potenziali rischi. Pertanto, è cruciale rimanere aggiornati sugli ultimi sviluppi e sulla ricerca inerente al TSS per prendere decisioni informate riguardo alla sua implementazione.