Il Multi-Party Computation (MPC): la guida dettagliata per i più appassionati

Vuoi andare più nel dettaglio riguardo la sicurezza del mondo crypto e blockchain? Questa guida sul Multi-Party Computation ti spiegherà tutto!

Nel mondo della crittografia e della sicurezza informatica, esiste un sottile equilibrio tra la condivisione di informazioni sufficienti per una collaborazione produttiva e la protezione dei dettagli sensibili per garantire la privacy.

mpc
Adobe Stock

Questa sfida diventa particolarmente cruciale quando più parti, ognuna delle quali detiene dati privati e riservati, devono eseguire calcoli congiuntamente senza compromettere la sicurezza dei propri dati individuali. Una soluzione innovativa a questo dilemma è il Multi-Party Computation (MPC).

Cos’è il Multi-Party Computation (MPC)

Il Multi-Party Computation (MPC) è una tecnica crittografica avanzata. Il suo obiettivo principale è consentire a più entità di eseguire operazioni crittografiche. Nel frattempo, viene preservata la riservatezza dei singoli input e ne viene impedita la divulgazione a terze parti non autorizzate.

Il MPC è versatile e ha molteplici casi d’uso, che includono:

  • Data mining con protezione della privacy: facilita le organizzazioni a eseguire in modo collaborativo l’analisi dei dati senza divulgare dati riservati. Ciò consente l’identificazione di modelli, tendenze e correlazioni mantenendo rigorosi protocolli sulla privacy dei dati.
  • Auction security: il Multi-Party Computation può essere determinante nella progettazione di aste con offerte sigillate. Può determinare l’offerta più alta senza divulgare le singole offerte, garantendo così l’equità e scongiurando potenziali manipolazioni dei prezzi.
  • Servizi finanziari: per il trading sicuro, il punteggio di credito e la valutazione del rischio, le istituzioni finanziarie come le banche possono utilizzare efficacemente MPC senza esporre informazioni sensibili.
  • Sicurezza del machine learning tra più parti: l’MPC consente a diverse organizzazioni di addestrare collettivamente i modelli di machine learning sui loro set di dati combinati senza rivelare i singoli punti dati. Ciò promuove la collaborazione reciproca e aumenta le prestazioni del modello.
  • Condivisione sicura di password e segreti: può essere utilizzato per distribuire e archiviare in modo sicuro informazioni sensibili come password e chiavi crittografiche tra più entità. Ciò garantisce che le informazioni non siano accessibili da una singola parte senza il consenso di altri.

Questi sono solo alcuni esempi della miriade di applicazioni del Multi-Party Computation, che sottolineano le sue capacità ad ampio raggio in vari campi.

Approfondiamo la comprensione del Multi-Party Computation con un esempio illustrativo

Considera tre persone: Mario, Angelo ed Elena. Ognuno di loro ricopre ruoli identici in diverse aziende e sono curiosi di conoscere lo stipendio medio per il loro titolo di lavoro. Tuttavia, nessuno di loro è a suo agio nel rivelare i propri stipendi esatti.

Sappiamo che lo stipendio di Mario è di $ 60.000, quello di Angelo è di $ 70.000 e quello di Elena è di $ 80.000. Pertanto, lo stipendio medio è di $ 70.000.

Ogni input è nascosto utilizzando una funzione crittografica. In questo scenario, rappresentiamo ogni stipendio come la somma di tre valori diversi (è inteso da ciascun membro che il proprio stipendio deve essere espresso come la somma di tre componenti appunto). Mentre ci potrebbe essere un numero infinito di possibilità, per esempio, consideriamo quanto segue:

  • Mario: $ 100.000; – $ 50.000; $ 10.000
  • Angelo: $ 120.000; – $ 40.000; – $ 10.000
  • Elena: -$30.000; $ 180.000; – $ 70.000

Ogni partecipante condivide solo due delle tre quote di stipendio con gli altri, assicurandosi di non rivelare completamente i propri redditi individuali:

  • Mario: $ 100.000; – $ 40.000; – $ 70.000
  • Angelo: $ 120.000; – $ 50.000; $ 180.000
  • Elena: -$30.000; $ 10.000; $ 10.000

Ogni individuo combina la sua parte di stipendio con gli altri che ha ricevuto. Quindi, Mario ha -$10.000, Angelo ha $250.000 ed Elena ha -$30.000. Se condividono questi totali tra loro, possono facilmente calcolare il totale ($ 210.000) e, dividendolo per 3, ottengono lo stipendio medio, che è di $ 70.000. Hanno raggiunto il loro obiettivo senza rivelare i dettagli personali dello stipendio.

Le caratteristiche del Multi-Party Computation

Questo concetto trova applicazioni significative nel regno della tecnologia crypto e blockchain. Ad esempio, consente a più entità di firmare transazioni senza rivelare le proprie chiavi private individuali. Anche se questo potrebbe sembrare simile alle configurazioni dei multi-sig wallet , MPC offre numerosi miglioramenti e vantaggi.

Allora come funziona? Dato un segreto “s”, l’MPC abilita la divisione di questo segreto in “n” parti e le distribuisce tra gli “n” partecipanti coinvolti nel calcolo. Applicare questo concetto alla sfera crittografica significherebbe che la chiave privata del portafoglio è disseminata tra vari membri e, di conseguenza, su più dispositivi. Questa pratica fornisce un ulteriore livello di sicurezza alla custodia della chiave privata.

  • Portafoglio multi-sig: ogni comproprietario del portafoglio detiene una chiave privata distinta e completamente funzionante.
  • Portafoglio MPC: parti della chiave privata di un singolo portafoglio sono distribuite sui dispositivi di proprietà dei membri.

Quali sono i vantaggi di un portafoglio che utilizza il Multi-Party Computation?

  • Facilita la gestione collettiva del portafoglio. Ogni transazione deve ricevere l’approvazione l da tutti i membri o da un sottoinsieme minimo predefinito, dipendente dalla configurazione scelta. Questa è chiamata configurazione k/n del portafoglio MPC, dove “k” su “n” membri totali devono accettare di autorizzare una transazione (ad esempio, 2/3, 3/4, ecc.). Mentre una configurazione multi-sig può anche consentire la firma delle transazioni al raggiungimento di un quorum, l’MPC apre molte nuove opportunità.
  • Rimuove il rischio del “single-point-of-failure”. Ogni membro detiene un frammento della chiave privata del portafoglio, che non viene mai condiviso con altri (questo vale solo in determinate implementazioni). In quanto tale, questo rimuove il problema del single-point-of-failure che è prevalente nei portafogli, dove solo un’entità gestisce o salvaguarda la chiave. Pertanto, ciascun membro protegge la propria porzione di chiave sul rispettivo dispositivo.
  • Offre un alto livello di personalizzazione (il proprietario può determinare il numero di membri del portafoglio, scegliere l’algoritmo crittografico da utilizzare e così via).

Quali svantaggi potrebbero derivare dall’utilizzo di un portafoglio MPC?

  • I membri potrebbero archiviare la loro condivisione di chiavi su dispositivi connessi a Internet e quindi vulnerabili. Una potenziale soluzione a questo potrebbe essere che ogni membro utilizzi dispositivi di custodia air-gap o offline.
  • I membri potrebbero cadere preda di tentativi di phishing ed essere indotti a rivelare la loro condivisione di chiavi private. Ciò non porrebbe alcun problema fino a quando non viene compromesso il numero minimo di condivisioni chiave richieste per la firma.
  • Le prestazioni ne risentono quando il numero di utenti è elevato. Avere meno membri aumenta la vulnerabilità (ad esempio, con tre membri, un hacker dovrebbe compromettere “solo” tre dispositivi). Tuttavia, avere un numero maggiore di membri (come 30) rallenta la velocità e le prestazioni a causa della latenza della comunicazione.

Da qui in poi si va sul tecnico, ma basta leggere con attenzione e puoi capire tutto!

Un confronto tra Multi-Party Computation e multi-sig wallet

Mentre i portafogli MPC e le configurazioni di portafogli multi-sig hanno alcuni obiettivi comuni, i portafogli MPC offrono diversi vantaggi unici:

Aggiornamento della chiave privata

I frammenti di chiave privata condivisi tra i membri possono essere regolarmente aggiornati o aggiornati manualmente, fornendo una solida protezione a lungo termine contro gli attacchi (ad esempio, ogni stipendio potrebbe essere suddiviso in un diverso insieme di tre addendi a tempo indeterminato). Inoltre, è possibile utilizzare le chiavi una sola volta o farle scadere dopo un certo periodo.

Flessibilità

Grazie alla funzione di aggiornamento appena descritta, è facile adattare un portafoglio MPC ai cambiamenti nell’appartenenza. Un semplice aggiornamento dei frammenti di chiave può trasformare un portafoglio MPC da una configurazione k/n a una configurazione j/m, mantenendo lo stesso segreto (la chiave privata del portafoglio) e quindi lo stesso indirizzo del portafoglio derivato dalla chiave pubblica.

Chain-agnostic

A differenza dei portafogli multi-sig, che vengono creati e distribuiti su una rete specifica e hanno una compatibilità limitata con poche chain selezionate a causa della firma on-chain, i portafogli MPC mirano a gestire l’intero processo di costruzione della chiave privata condivisa off-chain. Il protocollo MPC specifico può utilizzare vari meccanismi crittografici (come ECDSA, EdDSA, firme Schnorr, ecc.), rendendo l’MPC compatibile con un’ampia gamma di blockchain.

Sistemi di recupero

Nel caso in cui un membro perda il proprio frammento di chiave, alcuni portafogli MPC dispongono di meccanismi di ripristino. Ad esempio, tutti i fondi potrebbero essere trasferiti a un indirizzo dedicato per evitare perdite permanenti. In alternativa, grazie a Threshold Signature Schemes, le transazioni possono ancora essere firmate solo con una parte dei frammenti chiave. Avere tutte le condivisioni non è un prerequisito.

Commissioni più basse

In una configurazione multi-sig, ogni membro firma e approva una transazione on-chain, mentre nei Multi-Party Computation wallet i frammenti vengono prima assemblati e quindi viene condotta una singola transazione on-chain.

Identità anonime

Poiché multi-sig opera on-chain, gli indirizzi dei membri del portafoglio sono esposti a potenziali aggressori. MPC rivela solo un indirizzo finale sulla chain, mantenendo riservate tutte le operazioni precedenti.

Gestione dei ruoli e dei limiti

Alcune implementazioni del portafoglio MPC consentono al proprietario di imporre limiti alle transazioni di ciascun membro del portafoglio (ad esempio, limitando la quantità di token che possono trasferire).

Approfondiamo gli schemi delle firme di soglia

I portafogli MPC si basano su una tecnologia di calcolo multipartitico e utilizzano diversi concetti crittografici che vale la pena comprendere.

Analogamente ai sistemi multi-sig, le configurazioni basate su MPC possono generare firme valide anche se non tutti i frammenti di chiave vengono raccolti da tutti i membri del portafoglio. È sufficiente un minimo specifico, dipendente dalla configurazione scelta. Ciò è reso possibile da alcuni schemi di soglia crittografica, tra cui:

  • Shamir Secret Sharing Scheme (SSSS)
  • Verifiable Secret Sharing (VSS)
  • Threshold Signature Scheme (TSS)
  • Shamir Secret Sharing Scheme (SSSS)

Shamir Secret Sharing Scheme (SSSS)

Lo Shamir Secret Sharing Scheme (SSSS) è una forma di condivisione segreta che sfrutta la crittografia omomorfica. Questo tipo di crittografia consente operazioni su dati crittografati senza la necessità di decrittografia.

All’interno di questo schema, un ruolo chiamato “Dealer” è incaricato di generare il segreto (chiave privata) e di distribuirne i frammenti agli “n” membri del portafoglio MPC. Quando una transazione deve essere firmata, tutti i frammenti necessari devono essere restituiti al Dealer in modo che possa ricostruire la chiave privata accurata per la firma.

Questo sistema consente al Dealer di firmare una transazione, generando una firma valida, utilizzando una chiave privata ricostruita con un set minimo di k pezzi sul totale n ricevuto dai membri del portafoglio, dove “k < n.” Questo numero minimo è noto come soglia. Se dai membri vengono raccolti solo frammenti k-1 (sotto la soglia), è impossibile rivelare alcun segreto, anche parzialmente.

Uno svantaggio notevole con lo Shamir Secret Sharing Scheme (SSSS) è il rischio posto durante la generazione e la firma della chiave, dove l’intera chiave privata è gestita dal Dealer. Ciò si traduce in un single point of failure. Quindi, come si può riassemblare la chiave privata partendo solo da una manciata di frammenti?

L’SSSS dipende dall’interpolazione polinomiale di Lagrange. Questo strumento matematico consente la ricostruzione di una curva polinomiale (di grado k-1) che interseca l’insieme minimo dato di punti dati (k) e predice il valore negli spazi tra punti noti.

Un esempio rapido

Dimostriamolo con un esempio. Supponiamo che il codice segreto sia S = 65 e puntiamo a ricostruire il segreto con k < n azioni dove k = 2 e n = 10.

Se visualizziamo S come un punto sull’asse y di un grafico, le sue coordinate sarebbero S = (0,65). Seguendo questo:

Introduciamo un punto casuale R nello spazio. Ci sarà solo una linea che interseca S e R. Etichettiamo questa linea come “linea segreta”.

La “linea segreta” contiene infiniti punti. Indichiamo questi punti come “quote segrete” e distribuiamo una “quota segreta” a ciascuno degli n = 10 membri, escluso il punto S. Questa distribuzione può avvenire in vari modi, a seconda dell’implementazione: il Dealer potrebbe stabilire una comunicazione privata canale con ciascun partecipante o trasmettere una versione crittografata del segreto a tutti (solo il destinatario corretto sarà in grado di decrittografare e leggere la condivisione segreta). Tuttavia, è essenziale che queste condivisioni chiave rimangano riservate tra il Dealer e il destinatario.

Possiamo identificare la “linea segreta” (e quindi S semplicemente intersecando con l’asse y) con due qualsiasi dei segreti dati (punti su quella linea). In questo modo, abbiamo bisogno di qualsiasi k = 2 delle azioni su n = 10.

Questo processo può essere ridimensionato a un sistema k < n dove k = 3,4,5 e così via. Ad esempio, se k = 3, la “linea segreta” sarà una “curva segreta di 2 gradi” (k-1 = 2). Se riusciamo a recuperare solo due azioni segrete, non possiamo recuperare la “curva segreta” e quindi il segreto: abbiamo bisogno di almeno k = 3 punti (azioni).

SSSS codifica il “segreto” (la chiave privata del portafoglio) come termine di grado zero di un polinomio. Quindi crea quote chiave dalla curva e le “distribuisce” ai vari membri. Come accennato, per avere un valore di stima corretto nel gap, abbiamo bisogno di un insieme minimo di punti dati k, con k <= n.

Verifiable Secret Sharing (VSS)

Una moltitudine di varianti sono scaturite dalla Shamir Secret Sharing, e Verifiable Secret Sharing (VSS) ne è un esempio. Il VSS opera con l’obiettivo centrale di garantire che le azioni dannose non vengano diffuse dal Dealer. Ciò è facilitato attraverso un sistema in cui i partecipanti convalidano il pezzo che hanno ricevuto.

Una versione frequentemente implementata di VSS è l’algoritmo Feldman VSS. Questo metodo è progettato per confermare che ogni partecipante riceve una quota segreta dal Dealer che è coerente con il resto.

Il protocollo VSS si svolge in due fasi:

  • Fase di condivisione: questa fase differisce leggermente dalla SSSS. Qui il Dealer, dopo aver distribuito le quote ai partecipanti, trasmette anche gli impegni a coefficienti. Questi termini matematici possono essere utilizzati dai membri per convalidare la legittimità della loro quota chiave.
  • Fase di verifica della validità: una volta che i partecipanti hanno ricevuto il loro pezzo privato e i coefficienti trasmessi pubblicamente, procederanno a confermare l’autenticità della loro condivisione privata.

Nel caso in cui un destinatario riceva un’azione errata, può sollevare un reclamo a cui deve rispondere l’Operatore. Se il rivenditore non riesce a risolvere il problema, viene considerato dannoso e successivamente rimosso dal protocollo. Ciò avvia una fase di controversia.

In alcuni casi, un rivenditore onesto potrebbe dover affrontare un reclamo sollevato da un membro disonesto. Durante questa fase, ciascuna delle parti deve convincere le altre della propria onestà. Ciò sottolinea il ruolo fondamentale svolto dalla fiducia e dalla verifica all’interno del protocollo Verifiable Secret Sharing (VSS).

Threshold Signature Scheme (TSS)

Il Threshold Signature Scheme (TSS) è emerso come uno sviluppo significativo dallo Shamir Secret Sharing Scheme (SSSS). Mentre l’SSSS e la sua variante, VSS, coinvolgono un’entità Dealer che conosce il segreto completo durante la generazione della condivisione della chiave e può ricostruire il segreto per firmare le transazioni, il TSS introduce un miglioramento significativo: il segreto totale non si trova mai in un unico posto. Non c’è più un’unica entità Dealer in possesso della piena conoscenza del segreto o in grado di recuperarlo durante la firma.

Questa innovazione è raggiunta attraverso due caratteristiche fondamentali:

  • Distributed key generation: qui, il segreto completo rimane sconosciuto a tutti i membri, poiché ognuno crea in modo indipendente una condivisione di chiavi. Questo processo, noto come Distributed Key Generation (DKG), si discosta dal modello convenzionale in cui una singola entità (come il Dealer) genera azioni per i membri. Invece, ogni partecipante agisce a sua volta come mazziere. Questo processo DKG applica lo schema VSS, consentendo a ciascuna entità di fungere da rivenditore per un determinato round. Ad esempio, l’Entità A crea un segreto S(A) e utilizza VSS per dividerlo in parti, distribuendo S(AA) a se stessa, S(AB) all’Entità B e S(AC) all’Entità C. Ciascuna entità verifica il validità del segreto inviato da A utilizzando VSS e solleva reclami, se necessario.
  • Distributed signing process: con TSS, i membri non sono più tenuti a trasferire la propria parte della chiave privata. Ciascun membro crea una firma utilizzando la chiave privata per ottenere una firma parziale. La firma completa viene creata combinando queste firme parziali condivise tra membri e dispositivi, che convalida le transazioni. Una delle entità che hanno fornito una firma parziale viene scelta per fungere da aggregatore, che verifica la validità di ciascuna firma parziale ricevuta, poiché alcuni firmatari potrebbero comportarsi in modo dannoso. Se tutte le firme sono valide, l’aggregatore può calcolare la firma finale. In particolare, il ruolo dell’aggregatore differisce dal ruolo del Dealer negli schemi precedenti. L’aggregatore non può mai rivelare la chiave segreta completa, anche se presentata con firme parziali o totali.

Pertanto, il TSS garantisce che il segreto totale non risieda mai con una singola entità in nessun momento. Non ci sono condivisioni di chiavi trasferite e la chiave privata completa non viene mai completamente ricostruita. Ciò si traduce in un sistema più sicuro e distribuito per la condivisione delle chiavi e la firma delle transazioni.

I problemi di sicurezza del Multi-Party Computation

Una preoccupazione cruciale all’interno di una rete MPC è il phishing, in cui un utente malintenzionato manipola i membri del portafoglio per rivelare la loro condivisione della chiave privata. Sottolinea la necessità di gestire le informazioni riservate in modo sicuro. Proprio come è imperativo per i portafogli archiviare in modo sicuro e non divulgare mai la chiave privata, i membri MPC dovrebbero archiviare le loro condivisioni di chiavi private in un ambiente sicuro e affidabile. Qualsiasi archiviazione di condivisioni chiave su dispositivi vulnerabili potrebbe potenzialmente portare a conseguenze irreversibili.

Ciò è particolarmente critico nei sistemi MPC in cui sono richieste condivisioni chiave “n / n” per la firma delle transazioni e la soglia minima è uguale al numero di membri del portafoglio. La perdita anche di una sola azione chiave comporterebbe l’impossibilità di gestire i fondi. Qui, i membri potrebbero trovare conforto nel mantenere i backup dei dati sensibili.

Tuttavia, l’aumento delle copie di backup non è necessariamente correlato a una maggiore sicurezza. Maggiore è il numero di copie di informazioni riservate, maggiore è la potenziale superficie di attacco.

I compromessi da fare nei sistemi MPC

Esiste un ulteriore compromesso all’interno dei sistemi MPC tra sicurezza e prestazioni. I portafogli basati su MPC autenticano le condivisioni delle chiavi o le firme parziali utilizzando vari algoritmi e meccanismi. All’aumentare del numero di membri della rete MPC, aumentano anche le iterazioni di un algoritmo specifico, ad esempio durante la generazione della chiave o la ricostruzione totale della firma. Ciò significa che avere meno membri può rendere il sistema più suscettibile al rischio.

Ad esempio, un malintenzionato che prende di mira un portafoglio MPC con solo tre membri dovrebbe solo compromettere tre dispositivi/membri per recuperare le condivisioni chiave. Al contrario, una base di membri più ampia (come 30) potrebbe ridurre la velocità e le prestazioni a causa dei tempi di attesa per i cicli di protocollo, requisiti di potenza di calcolo elevati, latenza di comunicazione e altro ancora.

Le vulnerabilità nelle reti MPC

Anche il canale di comunicazione merita attenzione. Poiché la tecnologia MPC si basa su una rete di firmatari connessi a Internet, potrebbe essere vulnerabile ad attacchi man-in-the-middle o di spoofing avviati da entità dannose. Inoltre, nelle implementazioni MPC che richiedono l’attività simultanea dei membri co-firmatari, un hacker potrebbe eseguire un attacco denial-of-service per interrompere l’intera rete MPC.

Si consideri uno scenario in cui sono necessari tre membri e un minimo di tre firme parziali per autorizzare una transazione. Un utente malintenzionato potrebbe costringere uno o più dei cofirmatari a disconnettersi dalla rete, rendendo impossibile il completamento della transazione.

Un altro potenziale vettore di attacco in alcuni sistemi MPC è il cosiddetto “Forget and Forgive Attack”, rilevante per implementazioni specifiche prive di controlli rigorosi durante l’aggiornamento delle condivisioni chiave.

L’MPC consente di aggiornare le condivisioni di chiavi segrete mantenendo la stessa chiave privata totale e, quindi, la chiave pubblica. Nonostante questo processo sia ripetibile all’infinito, le condivisioni di chiavi appena generate devono consentire la creazione della stessa chiave privata precedente in modo che la chiave pubblica corrisponda a quella vecchia. In caso contrario, il processo viene interrotto.

Il problema sorge in alcune implementazioni MPC quando le entità non attendono il completamento del processo prima di cancellare la loro vecchia condivisione di chiavi. Essi controlla semplicemente la validità della nuova condivisione utilizzando VSS, consentendo potenzialmente a un hacker di distribuire condivisioni di chiavi appena generate a un sottoinsieme dei membri MPC, aggirando i loro meccanismi di controllo.

L’obiettivo è fare in modo che un sottoinsieme di entità lo rifiuti e altri lo accettino, portando a un mix di condivisioni chiave vecchie e nuove che non si sommano più per emettere una firma valida. Per contrastare questo problema, le parti dovrebbero attendere il “risultato” finale prima di eliminare la loro vecchia condivisione di chiavi, possibilmente implementando meccanismi di comunicazione back-channel tra entità.

Il Multi-Party Computation è un passo avanti nella sicurezza delle operazioni

La tecnologia MPC segna un notevole passo avanti nella sicurezza delle operazioni che coinvolgono segreti condivisi tra più parti. Ciò è particolarmente pertinente nella fiorente sfera crittografica, in cui un numero crescente di aziende e organizzazioni nel dominio Web3 richiede una gestione patrimoniale condivisa tra varie entità.

SE SEI ARRIVATO FINO ALLA FINE DELL’ARTICOLO, COMPLIMENTI, NON ERA FACILE!

 

Impostazioni privacy