ZKProofs, cosa sono le prove a conoscenza zero e come possono essere utilizzate

Una delle aree di applicazione più promettenti della protezione crittografica dei processi di elaborazione è il machine learning che preserva la privacy. Oppure la privacy differenziale, una tecnica di anonimizzazione che raccoglie dati dagli utenti senza conoscere in chiaro tutte le informazioni personali

Pubblicato il 22 Set 2020

Paolo Maria Innocenzi

Cybersecurity Specialist

Low-Code e No-Code

Si chiamano prove “al buio” (Zero Knowledge Proofs) abbreviato ZKProof: cioè prove senza conoscenza o a conoscenza zero. Sono esempi di impiego di algoritmi chiamati prove probabilistiche in cui una delle parti – con una certa probabilità – convince l’altra parte nella validità della propria identità, ma senza rivelarla.

Per capire di cosa parliamo, ecco un esempio di una banale conversazione al citofono tra due fratelli, senza password, per rientrare in casa, senza chiave e senza codice, con una probabilità del 95% di essere davvero “io”.

(al citofono)

  • Chi è?
  • Babbo Natale! Apri il cancello e mi fai entrare?

Supponiamo anche di poter accedere a un sito, ma senza alcuna password memorizzata, o a una porta, ma senza alcuna chiave da inserire. Supponiamo cioè di poter pagare con una carta di credito, senza dare né i nostri dati, né quelli della carta di credito. Né PIN.

Ora comincia a manifestarsi una certa chiarezza nell’impiego di una tecnologia come questa. Perché si tratta sostanzialmente, non esponendo le “prove”, di non esporre chiavi o dati personali. In pratica la soluzione totale, globale, al GDPR (General data protection regulation).

Oppure può essere la soluzione al controspionaggio in caso di lancio balistico nucleare, ma senza codice.

E questo proprio perché, non essendoci alcuna necessità di memorizzare a priori una password o un codice di annullamento dell’ordigno, se cadesse in mani sbagliate o in possesso di ingegneri al servizio di stati canaglia, anche con un reverse-engineering sarebbe impossibile risalire ad un codice, perché il codice, nel missile, semplicemente non c’è: viene indagato ogni volta.

Ora dobbiamo chiederci:

  1. Come è mai possibile gestire una precisa identità senza dover mettere in gioco i dati personali, cioè almeno una propria password che li indirizzi?
  2. Se è possibile quanto riportato in 1): come si fa?

Sarebbe molto comodo, non avere nessuna chiave da identificare, perché:

  1. Non dovremmo esporre dati identificativi personali e dunque soggetti a privacy
  2. Nessuno ruberebbe mai la nostra password perché non ci sarebbe nessuna identità da rubare.

Attualmente, le “prove a conoscenza zero” hanno un grande interesse pratico, perché cominciano a essere incorporate in molti sistemi di protezione delle informazioni.

Un tipico metodo di ZKProof è quello “a prova interattiva”: è un protocollo di colloquio tra due interlocutori, uno che potrei essere io, che dovrei permettervi un accesso in discoteca riconoscendovi, e voi, che volete accedere facendovi riconoscere. Io e voi cominciamo a scambiarci un “colloquio” confidenziale botta-e-risposta finché la probabilità che voi siate veramente chi dite di essere diventa talmente alta e il margine d’errore talmente basso che rende inutile continuare il colloquio, e mi consente con una certa sicurezza di abilitarvi l’accesso. Se questo colloquio si svolge tra computer, anziché tra esseri umani, o tra il mio smartphone e un computer, o tra il mio smartphone e il vostro, allora il colloquio sarà talmente veloce da essere neanche notato: io vi saluto, voi rispondete, vi faccio cenno di passare e voi entrate.

Un esempio di “prova a conoscenza zero”

Per poter entrare dovete convincermi che state arrivando partendo dalla piazza del Colosseo, (ma senza dirmi chi siete, cioè senza esporre i vostri dati) quindi mi dite che siete arrivati a me identificandomi come una persona che abita a Piazza del Colosseo, a Roma, fino a Monte Mario dove è la mia discoteca, dove vorreste entrare. Io per parte mia non sono affatto sicuro che siate chi dite di essere perché la strada tra il Colosseo e Monte Mario (Quartiere Romano) non avete ancora dimostrato di conoscerla.

Per capire se conoscete la strada vi chiedo un luogo a metà della strada.

Diciamo che mi rispondete che alla metà del percorso esiste piazzale delle Belle Arti.

Dopo che io ho verificato sulla mia mappa di Roma che davvero piazzale delle Belle Arti fa parte di un probabile percorso neanche in questo caso vi faccio accedere perché decido che vi siate buttati a indovinare e non vi reputo affidabili. Allora voi mi lasciate scegliere una delle due metà del percorso, io scelgo la metà tra piazzale belle Arti e Colosseo, e a quel punto voi mi rispondete che in mezzo a metà si trova Ponte Sisto, il che corrisponde alla mia personale mappa di Roma.

Ora la probabilità che non proveniate dal Colosseo è più bassa perché voi non avreste potuto sapere precisamente quale metà dei percorsi sezionati avrei scelto, eppure avete sempre giustamente indicato su quella metà un altro punto appartenente al percorso, come se lo conosceste davvero tutto ma senza rivelarmelo interamente perché, come dicevo, non vi deve essere uno scambio dati (che nel nostro caso dovrebbe essere tutto un percorso, su una mappa). Se non mi fidassi e vi chiedessi un’altra prova, voi indichereste un punto a metà, che è via della Greca (altro punto reale) e poi mi chiedereste di scegliere di nuovo di scegliere tra: via della Greca – Colosseo oppure via della Greca- Ponte Sisto.

Credo si cominci a capire il meccanismo.

Come fareste, davvero, se foste un impostore a conoscere tutti questi punti sul percorso, se non provenite davvero dalla piazza del Colosseo avendo fatto tutto il percorso intero?

Qualcuno potrebbe obbiettare che sono pochi punti (5 in tutto):

  • Escludendo la nota piazza del Colosseo, dalla affermo di provenire
  • via della Greca
  • Ponte Sisto
  • piazzale delle Belle Arti
  • escludendo Monte Mario, che è la mia destinazione nota.

La domanda è: quante probabilità ho, a ciascuna ripiegatura del percorso (punto sul tragitto) di conoscere “davvero” il mio percorso? Se continuassimo a ripiegare il percorso su se stesso ogni volta della metà, avremmo ogni volta il doppio delle probabilità che sia veramente io.

Diciamo che appena ci conosciamo e vi dico di venire da monte Mario voi abbiate idea che sia veramente io con una probabilità funzione di quanti punti voglio considerare (che poi diventeranno le cifre del numero di una carta di credito, i simboli dei miei dati personali o il mio set di coordinate satellitari).

Dimezzando ogni volta il percorso, si aumentano ogniqualvolta i particolari che avrei dovuto conoscere per individuare un punto giusto sulla mappa e dunque le probabilità che io sia davvero io. E dopo pochi passaggi la probabilità è che io sia davvero chi dico di essere è diventata accettabile cioè molto vicina a 1 (da 87% in su).

Va notato che sono attualmente in corso sforzi scientifici e procedurali per la standardizzazione internazionale delle “prove a conoscenza zero”.

Tutto senza aver mai trasmesso l’intero percorso, l’intero numero, l’intero codice.

Un attacker che avesse voluto sferrare un colpo alla mia privacy, sarebbe dovuto essere presente a molte delle interrogazioni per costruirsi un set di risposte probabili, ma siccome si può dividere una linea infinitamente per 2 ottenendo due segmenti, il suo ascolto dovrebbe diventare infinito, senza mai conoscere perfettamente il codice e sempre con il rischio che possa essergli richiesta quella parte di password che non ha mai visto.

Apprendimento automatico a tutela della privacy

Una delle aree di applicazione più promettenti della protezione crittografica dei processi di elaborazione è il machine learning che preserva la privacy. Consideriamo la situazione in cui io possa possedere alcuni vostri dati riservati, in particolare medici. Uno studio di ricerca, potrebbe essere interessato ad averli per addestrare un modello di machine learning per condurre uno studio sulle malattie respiratorie, tuttavia non possono (e non vogliono) averne il controllo, né io sono autorizzato in alcun modo a rivelarli.

D’altronde, anche l’ente stesso di ricerca, potrebbe non volere che i parametri del proprio brevetto vengano resi noti ad altri, compresi coloro che forniscono dati per addestrare il modello.

Si tratta dunque di una situazione a “doppio cieco” dove chi usa i dati non vuole essere costretto a rivelare che modello sta addestrando anche semplicemente descrivendolo attraverso i dati che richiede, e voi non vogliate (e dunque io) rivelare alcunché dei vostri dati.

Tuttavia, sia i proprietari dei dati che il proprietario del modello sono interessati a un’attività comune.

Supponiamo che il proprietario dello studio è comunque interessato e che pagherebbe eventualmente i dati richiesti, se ci fosse modo di recuperarli in modo non esplicito e anonimo.

È possibile implementare questo scenario mantenendo la privacy di ciascuna parte utilizzando protocolli di machine learning che preservano la privacy.

Molte altre tecniche di anonimizzazione si sono rivelate inefficaci in quanto già in passato si è capito che per ottenere l’anonimato è necessario

  1. distruggere i dati oppure
  2. applicare una cifratura affidabile.

La privacy differenziale

Da ciò l’elaborazione di nuove tecniche di protezione della privacy, tra le quali la più promettente sembra essere la privacy differenziale.

Si studia da vari anni, una delle prime ricerche in materia risale al 2008, e i suoi sviluppatori sono Cynthia Dwork, ricercatrice Microsoft, Nissim, McSherry e Smith, Aaron Roth, che è autore di uno studio del 2014 scritto insieme a Cynthia Dwork.

  • l’hashing, una funzione crittografica che trasforma in modo irreversibile i dati in una stringa di caratteri pseudo-casuali,
  • il sottocampionamento, cioè prendere solo una parte dei dati, e infine
  • l’iniezione di rumore per oscurare i dati reali.

La privacy differenziale, quindi, è una tecnica di anonimizzazione progettata per raccogliere dati dagli utenti senza conoscere in chiaro tutte le informazioni personali.

La privacy differenziale un tema di ricerca specifico nell’ambito della statistica e analisi dei dati, con ampia documentazione nella letteratura scientifica.

Supponiamo anche qui come esempio di avere un database (anonimo!) che consente di calcolare il reddito complessivo dei residenti di Milano. Sapendo che il signor Rossi si trasferisce a Roma, interrogando il database prima e dopo il trasferimento è facile conoscere il reddito del signor Rossi. È proprio grazie all’introduzione di rumore casuale attraverso il “meccanismo di Laplace” che si garantisce che il risultato non consenta di conoscere il dato specifico (reddito del signor Rossi).
Ovviamente non è così semplice, perché basterebbe interrogare il database più volte e fare una media delle interrogazioni, per ottenere il dato reale ripulito del rumore casuale aggiunto. Quindi il sistema funziona solo finché si garantisce che il numero delle interrogazioni è inferiore al numero che consente di calcolare la media per ricavare il dato reale.

Chiunque sia determinato a un databreach (l’attacker) cercherà di analizzare i dati in tutti i modi possibili e utilizzare i risultati delle analisi per ricostruire anche dati incrociati sullo stesso utente. È noto il caso di un insieme di dati offerto già “offuscato” da Netflix, spogliato dai dati di identificazione (anonimo quindi), che però ha consentito comunque a due studiosi di identificare parte degli individui dell’insieme semplicemente incrociando i dati  con altri dati pubblici.

L’iniezione di rumore in un modello di utilizzo è il metodo descritto ampiamente e, man mano che più persone condividono lo stesso modello, cominciano a emergere modelli generali in grado di migliorare l’esperienza del singolo utente.  Si tratta, quindi, di introdurre elementi spuri all’interno di un insieme in modo che non sia possibile riconoscere i dati veri da quelli falsi.

Il crittografo Matthew Green, professore presso la Johns Hopkins University, precisa che quante più richieste vengono effettuate al database, maggiore è il rumore che deve essere iniettato per mantenere un certo livello di privacy.

Conclusioni

Grazie quindi allo sviluppo attivo di questi protocolli crittografici forti, può essere fornito un modo molto più efficiente per un protocollo specifico di interrogazione. Uno dei compiti più importanti che consentirà l’implementazione dei processi aziendali con l’utilizzo di meccanismi di protezione crittografica dei processi di elaborazione delle informazioni è proprio il machine learning di preservazione della privacy, che consentirà di addestrare algoritmi neurali, per riconoscere i dati necessari senza divulgazione dei propri dati riservati (o proprietà intellettuale) da parte dei partecipanti al modello processo di apprendimento.

I protocolli crittografici qui affrontati hanno tutte le carte in regola per diventare lo strumento principale per la creazione di servizi informativi personalizzati sicuri, in grado di fornire agli utenti informazioni e servizi informatici seguendo le esigenze individuali senza divulgare i propri dati privati. E l’emergere di tali servizi può dare impulso all’implementazione di nuovi processi aziendali e allo sviluppo di nuove aree di business.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 3