Zero Knowledge Proof: protezione dei dati senza compromessi

2022-11-18

La prova a conoscenza zero è un metodo per dimostrare la conoscenza di qualcosa senza rivelare la conoscenza stessa. Può essere utilizzato, ad esempio, per accedere a un servizio senza dover trasferire la password. Qui spieghiamo come funziona.

Ogni giorno rinunciamo a un po' della nostra privacy per poter utilizzare un sito web o un'applicazione. Perché siamo onesti: quanti di noi hanno letto nel dettaglio l'informativa sulla privacy o le condizioni d'uso e poi hanno deciso di non voler utilizzare quel servizio?

Tecnicamente, sarebbe del tutto possibile proteggere meglio la privacy e i dati degli utenti. Un esempio è il modello "Zero Knowlegde Proof" descritto da Shafi Goldwasser, Silvio Micali e Charles Rackoff nel loro articolo "The knowledge complexity of interactive proof systems".

Esempio di applicazione delle password

Il suo scopo è quello di risolvere un problema in particolare: Come posso dimostrare di essere a conoscenza di qualcosa senza rivelarlo? Un esempio pratico: le password. Tutti noi abbiamo decine di dati di accesso a diversi servizi. Per poter accedere, inviamo la password al servizio in questione, che la confronta con le informazioni che ha memorizzato.

Questa procedura offre diversi punti di attacco, ad esempio sul proprio dispositivo, sul server del servizio e sul percorso di trasmissione. Esistono misure di sicurezza, come una connessione crittografata, che in genere offrono un elevato livello di protezione. Tuttavia, con la giusta motivazione, si possono trovare modi e mezzi per superarle. Un esempio è l'attacco "man-in-the-middle", in cui le informazioni scambiate vengono intercettate ed eventualmente manipolate da una terza parte.

Infine, ma non meno importante, le persone stesse sono spesso l'anello più debole della catena di sicurezza e gli aggressori a volte utilizzano tattiche sorprendentemente sofisticate quando trovano obiettivi validi.

Per i punti di accesso particolarmente importanti, sarebbe meglio poter accedere senza rivelare la password. Il protocollo "Secure Remote Password", ad esempio, si basa sulla prova di conoscenza zero. Si tratta di un altro modo per dimostrare di avere le conoscenze necessarie e di essere autorizzati ad accedere.

Ma come funziona?

La prova della conoscenza zero spiegata in modo semplice

Una storia raccontata da Jean-Jacques Quisquater, Louis Guillou et al. in "How to explain zero-knowledge protocols to your children" (Come spiegare i protocolli a conoscenza zero ai vostri bambini) è adatta a illustrare l'idea della prova a conoscenza zero.

In poche parole, funziona così: C'è un bivio in una caverna e, indipendentemente da quale dei due percorsi si segua, alla fine si finisce davanti a una porta. Se si riuscisse ad aprirla, ci si renderebbe conto che dietro di essa c'è l'altro sentiero che non si è imboccato al bivio. I due percorsi dal bivio sono quindi collegati, interrotti dalla porta chiusa.

Se ora la persona A sostiene di poter aprire la porta, potrebbe portare con sé la persona B e dimostrarlo semplicemente. In quel momento, però, rivelerebbe come apre la porta. Come possono invece dimostrare di possedere questa conoscenza senza rivelarla allo stesso tempo?

Nella storia di cui sopra, questo funziona come segue: La persona A entra nella caverna e sceglie a caso uno dei due percorsi al bivio. La persona B prima aspetta fuori, poi entra e chiede alla persona A da quale parte del bivio deve tornare. Se la persona A è già sul lato giusto, torna semplicemente indietro. Se si trova sul lato sbagliato, deve aprire la porta per utilizzare l'altro percorso.

Entrambi ripetono questo processo fino a quando la persona B si convince che la persona A non si trova ogni volta dalla parte giusta per caso, ma che può effettivamente aprire la porta nel mezzo. Più spesso si ripete questo processo, più diventa probabile.

La persona A di questo esempio viene definita "prover" in una prova a conoscenza zero, mentre la persona B è il "verificatore".

Le sfide delle applicazioni a conoscenza zero

Una delle principali difficoltà è lo sviluppo e l'implementazione di un test appropriato. Un'altra sfida può essere quella di rintracciare gli errori: Dopo tutto, i processi si svolgono intenzionalmente in modo tale da non essere facilmente visibili.

Un altro problema è di natura pratica: se un utente perde la propria password, non c'è modo per il provider di recuperarla o cambiarla. L'utente ha quindi la responsabilità di mantenerla al sicuro.

Parole di chiusura

È emerso che, con l'ingegno e lo sforzo necessari, è possibile trovare una soluzione che non trasmette alcun dato che un aggressore potrebbe intercettare e sfruttare. La "prova della conoscenza zero" e le architetture e le applicazioni basate su di essa sono quindi un buon esempio di soluzioni particolarmente sicure e a risparmio di dati.

Siete pronti per la sicurezza digitale con qualità svizzera?