La computazione a parti multiple sicura o Secure multiparty computation (SMPC) è un protocollo crittografico per il calcolo distribuito che coinvolge molteplici parti senza che queste possano accedere ai dati altrui.
Bella definizione, anche se abbiamo bisogno di una visione più ampia.
Torniamo allora indietro e ripartiamo dal perché oggi questa tecnica possa essere così fondamentale.
Riflettiamo un secondo su un tema oggi fondamentale.
Perché la SMPC adesso?
Senza dubbio le aziende hanno una dipendenza dai dati che segue un inarrestabile trend crescente.
Il dati sono oggi il nuovo petrolio che alimenta la crescita della nostra economia.
Possiamo essere d’accordo o meno con questa definizione, ma innegabilmente la monetizzazione dei dati è oggi il modello di business primario comune a molte delle più grandi aziende, e la priorità di tante altre.
L’applicazione di un simile modello di business richiede tuttavia la raccolta di grandi quantità di dati, e il successo è tanto più significativo quante più correlazioni e rapporti di casualità sia possibile trovare combinando diverse fonti dati.
Devi però considerare una pericolosa insidia.
Il sottoprodotto di questo processo è infatti una possibile violazione della privacy individuale, con così tante nostre informazioni nelle mani delle aziende.
Immaginiamo un mondo in cui sia possibile usare fonti dati diverse senza la necessità di centralizzarle, garantendo che nessuna informazione grezza sia rivelata dall’operazione.
Questa è la promessa della Secure multiparty computaion (SMPC)
In altri termini, saremmo così in grado di consentire ai Data Scientist e Data Analyst di operare sui dati senza il bisogno di esporli o spostarli dalla loro sede di storage.
Perfetto.
Questa breve spiegazione è utile per chiarire la necessità della secure multiparty computation (MPC / SMPC).
Procediamo quindi a capire come funzioni realmente.
Secure Multiparty Computation
Immaginiamo che due persone intendano comparare il proprio DNA per determinare il loro grado di parentela.
Esistono oggi potenti algoritmi che possono assolvere il compito, ma in uno scenario tradizionale richiederebbero la condivisione del DNA con una terza parte.
Il problema è che rivelare il proprio DNA può essere pericoloso: le compagnie assicurative potrebbero individuare eventuali disposizioni genetiche e negare polizze sulla vita.
Facciamo anche un secondo esempio.
Yao’s Millionaires’ problem (rivisitato)
Consideriamo una plausibile situazione in cui tre colleghi, Bob, Alice e Sharon, intendano calcolare la media dei loro salari.
Per questioni psicologiche, d’imbarazzo e paura di giudizio… ok forse sto esagerando.
Riformuliamo.
Per questioni a noi ignote, i tre non solo si rifiutano di condividere il valore del proprio stipendio, ma hanno anche scarsa fiducia persino nei confronti di una eventuale altra parte fidata.
Ecco la soluzione che possiamo proporre lorro.
Bob, Alice e Sharon possono fare ricorso al protocollo di Secure Multiparty Computation per calcolare la media senza condividere informazioni private sul loro salario.
Come funziona tutto questo nella pratica?
Alla base del processo vi è una tecnica crittografica nota come Additive Secret Sharing, che consiste nella divisione di un’informazione segreta e nella sua successiva distribuzione al gruppo di partecipanti disponibili.
Approfondiamone il funzionamento, sorvolando sulle dimostrazioni matematiche che ne verificano la sicurezza crittografica.
Dicevamo? Ah sì!
Il salario di Alice è di $ 100k. La procedura di additive secret sharing ne prevede la suddivisione in unità, generate casualmente e chiamate secret shares (in questo caso abbiamo 3 secret shares): $20k, $30k, $50k.
Ora avviene l’operazione di sceret sharing.
Due delle tre unità sono criptate e poi condivise con le altre parti.
Analogamente, Bob e Sharon svolgono la stessa operazione.
Al termine del processo ognuno è quindi in possesso di tre secret shares.
L’informazione contenuta in ogni secret share è inutile se presa singolarmente: non fornisce alcuna informazione sul dato originale.
Quindi siamo certi che la privacy sia tutelata.
Ora, ciascun collega provvede alla somma delle proprie secret shares.
Il risultato parziale ottenuto è ulteriormente condiviso e impiegato nella sommatoria totale, che divisa per il numero di parti in gioco (3 in questo caso) restituisce il dato tanto atteso: la media dei salari.
Problema risolto. Privacy tutelata. Tutti felici.
Multiparty fair exchange protocol
Mi è capitato d’imbattermi in questa sottigliezza, che ho prontamente deciso di condividerti.
Definiamo Multiparty fair exchange protocol quel protocollo che prevede la consegna di un informazione se e solo se ne riceve un’altra in cambio.
Interessante.
Garanzie di sicurezza
Un protocollo di calcolo sicuro multipartitico deve offrire alcune garanzie di sicurezza, persino se alcune delle parti fossero in collusione o cercassero di violarne le regole:
- Input Privacy: Nessuna delle parti corrotte (o suo sottoinsieme) deve essere in grado di derivare alcuna informazione sui dati appartenenti alle altre parti, a eccezione di quanto rivelato dal risultato dell’operazione. Nei due esempi, la privacy è garantita perché:
- calcolo su DNA: solo la discendenza è rivelata (si / no)
- calcolo su salari: solo la media è trapelata
- Correctness: Nessuna delle parti corrotte (o suo sottoinsieme) deve essere in grado di indurre una parte onesta a produrre un risultato errato.
- calcolo su DNA: una parte corrotta non deve poter modificare il risultato
- calcolo su salari: la media deve essere effettivamente corretta
Secure Multiparty Computation Use Cases (SMPC)
Esistono diversi casi d’uso per questa tanto rivoluzionaria tecnologia. Vediamone due.
Gestione dati aziendali
In questo caso il protocollo di secure multiparty computation ha sostanzialmente bisogno dell’esistenza di multiple privacy zones, cioè due o più domini con differenti restrizioni di privacy.
Questo assunto fondamentale è utile per comprendere i contesti in cui un simile protocollo possa trovare applicazione.
Devi sapere che erroneamente si compiono ragionamenti sulla sola interazione tra diverse aziende.
Noi andiamo oltre questa limitata visione del mondo.
Il secure multiparty computation ha infatti valore nel processo:
- interaziendale, consentendo effettivamente a molteplici organizzazioni di condividere i propri dati, preziose proprietà intellettuali,
- intraziendale, dove team, dipartimenti e/o singole giurisdizioni rimangono sovente isolati.
Questa tecnica costituisce dunque un prezioso asso nella manica per le aziende intente a sviluppare un approccio data-driven.
Possiamo infatti abbattere il modus operandi tipico basato su closed data analisys e facente ricorso ai data silos, con informazioni settoriali e non condivise.
L’obiettivo ultimo è dunque quello di realizzare un ambiente di libera circolazione delle informazioni tutelando la sicurezza e la privacy dei dati coinvolti.
Sempre in un ottica di gestione dati aziendali, la possibilità di caricare dati criptati un provider, e chiavi di decriptazione in un altro, potendo comunque eseguire operazioni (e.g. ricerca per keywords) senza decifrare mai i dati.
Key Protection attraverso SMPC
Considerando la crittografia dei dati come una cassaforte in cui riporre le informazioni più sensibili e confidenziali, l’anello più debole del sistema è la chiave: nelle mani sbagliate, la sicurezza viene compromessa.
La SMPC risolve il problema della chiave come single point of failure, dividendola in più parti salvate in altrettanti server.
Un eventuale hacker dovrebbe violare ciascuno di essi per ricostruire la chiave, e poi decifrare il dato.
Proteggendo adeguatamente questi dispositivi (e.g. credenziali di accesso differenti, ambienti isolati etc) è possibile raggiungere altissimi livelli di sicurezza.
Riassumendo, grazie alla SMPC:
- la chiave è divisa in unità separate e adeguatamente protette
- un hacker dovrebbe compromettere tutte le macchine in cui si trovano le chiavi (input privacy guarantee)
- le unità non devono essere ricongiunte in una sola macchina (esponendo quindi il rischio che vengano poi rubate)
Toxic Waster Prevention
Tra i casi d’uso più affascinanti che ho individuato per te, l’eliminazione del rischio di creazione di un Toxic Waste merita certamente una nota.
Devi sapere che esistono alcune procedure, come la firma di una transazione o la convalida di un certificato, la cui autenticazione richiede il possesso di un certo segreto, spesso sotto forma di chiave privata.
In altri processi più sofisticati e dalla logica sottile, che al momento dovremo sorvolare poiché questo post non è il contesto migliore per effettuarne un’adeguata analisi, è presente un ulteriore livello di complicazione.
Seguimi, e porta con te l’attenzione.
Cos’è un Toxic Waste
Ogni processo ha un punto zero, un origine degli eventi da cui tutto nasce. Nelle operazioni crittografiche questo significa spesso generare una coppia di chiavi privata – pubblica a partire da un certo numero segreto. Il problema è che chiunque sia un possesso di questo numero segreto potrebbe di fatto generare la coppia di chiavi e fingersi l’originale fonte.
In altri termini, potrebbe ad esempio autenticare transazioni fraudolente, o validare verità fittizie con tutti i problemi derivanti.
Usando una metafora potremmo allora definire quel segreto iniziale un rifiuto tossico, un Toxic Waste la cui presenza costituisce un pericolo per ogni protocollo su di esso basato.
Immagina ad esempio di farti creare una chiave fisica, per aprire la tua cassaforte, sulla base di un disegno.
Chiunque fosse in possesso del disegno, potrebbe farsi creare una copia della tua chiave e aprire la cassaforte. Eppure abbiamo bisogno di generare la chiave. Come possiamo procedere allora?
Ricorriamo al Secure Multiparty Computation. L’obiettivo? Eliminare il rischio che il Toxic Waste venga creato.
Perché il ricorso al Secure MultiParty Computation
Il Toxic Waste, metafora per indicare il numero da cui ha origine la creazione della chiave pubblico – privata, ovvero il disegno della chiave fisica nella seconda metafora, può essere visto come contenente diverse sostanze chimiche che prese singolarmente sono innocue, ma unite creano un composto pericoloso.
Per cui, usando un protocollo di SMPC possiamo creare dei segreti divisi, che uniti siano in grado di generare la coppia di chiavi pubblico – privata, senza mai però rendere pubblico il segreto unitario.
Infine, è necessario che almeno una delle parti coinvolte nel processo di generazione distrugga la sua parte privata, impedendo così una futura ricreazione del segreto e la generazione della nuova chiave.
In questo modo è come se avessimo bisogno di creare una chiave per proteggere una cassaforte. Chiamassimo alcuni amici chiedendo loro di disegnare una parte del profilo della dentatura della chiave, e ci recassimo da un fabbro per la creazione. Ognuno di noi conoscerebbe solamente il suo disegno, e avrebbe bisogno di tutti i frammenti per farsi generare una nuova chiave.
Se però, al termine del processo anche solo uno dei nostri amici distruggesse il suo frammento, nessuno sarebbe più in grado di ricostruire la chiave. Il Toxic Waste (cioè il disegno completo) non è mai esistito eppure il nostro segreto (la chiave fisica) è stata creata.
Vantaggi
Per concludere, ecco un riepilogo dei vantaggi offerti dal secure multiparty computation:
- Assenza di una necessaria terza parte fidata per mantenere i dati sicuri.
- Nessun compromesso di Privacy-vs-Utility, poiché non dobbiamo perturbare alcun dato per tutelarne la privacy.
- GDPR compliance persino per interazioni tra aziende europee, americane e asiatiche, perché i dati non lasciano mai i confini.
- Protezione di un segreto, che può essere utilizzato per svolgere operazioni senza mai crearlo effettivamente
In questo modo le parti non hanno bisogno di fidarsi reciprocamente, anche qualora alcune di queste intendano collaborare ai danni delle altre o quando reti e macchine siano state compromesse a loro insaputa.
Ovviamente non mancano gli aspetti negativi:
- Costo computazionale elevato, richiesto per la generazione dei numeri casuali che garantiscono la sicurezza nei calcoli (particolare assente nell’esempio su questo post, ma descritto qui).
- Costo comunicativo elevato, richiesto dal network per la condivisone con i partecipanti.
- Network bound
Si tratta comunque di compromessi accettabili, prendendo in seria considerazione i vantaggi reali.
Per approfondire questo, e altri concetti, ti esorto a leggere questo documento.
Per il momento è tutto.
Per aspera, ad astra.
Un caldo abbraccio, Andrea