Zero Knowledge Proof (ZKP) è una tecnica crittografica innovativa che consente di dimostrare il possesso di dati senza rivelarne il contenuto. Ciò significa che due parti possono verificare la veridicità di un’affermazione senza doversi scambiare alcuna informazione riservata.
Origine e storia del protocollo Zero Knowledge Proof
Con ZKP, le parti possono autenticare l’accuratezza o la proprietà delle informazioni senza condividere dettagli sul contenuto dei dati stessi.
Possiamo far risalire la sua invenzione alla pubblicazione di Shafi Goldwasser, Silvio Micali e Charles Rackoff nel 1989. (Micali è lo stesso professore che ha poi inventato e legato il suo nome alla blockchain Algorand)
Goldwasser, S., Micali, S., & Rackoff, C. (1989). The knowledge complexity of interactive proof systems. SIAM Journal on Computing, 18(1), 186-208.
È possibile trovare il testo completo dell’articolo a questo indirizzo
La comprensione di ZKP non è semplice per nessuno. Non solo non è semplice implementare e capire la crittografia che la realizza, ma per molti non è semplice neanche capire esattamente che problema risolve e a cosa potrebbe servire. Un’interessante intervista a cinque diverse persone con cinque diversi gradi di istruzione, dalle scuole primarie fino allo scienziato, è disponibile in questo simpatico video
La caverna di Mik Ali Babà e i 40 ladroni
Già nel 1998 venne pubblicato un divertente saggio intitolato “How to Explain Zero-Knowledge Protocols to Your Children” che cercava di rendere con un linguaggio semplice e fiabesco la portata dell’invenzione. La cosa spassosa è che il testo riprende la fiaba di Ali Babà e i quaranta ladroni e la riporta ai giorni nostri dove il protagonista è un suo discendente chiamato Mik Ali 🙂
Jean-Jacques Quisquater, Louis C. Guillou, Thomas A. Berson. How to Explain Zero-Knowledge Protocols to Your Children. Advances in Cryptology – CRYPTO ’89: Proceedings, v.435, p.628-631, 1990. pdf
La spiegazione per bambini fa uso della caverna e delle parole magiche che il protagonista non vuol rivelare al mondo ma di cui vuol provare a tutti la conoscenza. Per chi preferisce esiste una versione meno divertente ma più leggibile nella pagina wikipedia in italiano dove al posto di Mik Ali abbiamo dei più anonimi Peggy e Victor.
In pratica Peggy può dimostrare a Victor di conoscere la frase magica, la famosa “Apriti Sesamo”, per aprire la parete senza rivelare appunto che la frase è “Apriti Sesamo”. Peggy entra nel tunnel mentre Victor resta all’ingrasso della caverna. Victor inizia la verifica indicando se Peggy debba uscire dal lato A o dal lato B. Peggy naturalmente potrà aprire la parete e uscire dalla parte giusta senza rivelare appunto la frase magica a Victor.

Il problema dei milionari
Non è legato alla stretta di mano segreta dei miliardari e neanche “quale auto abbinare con la cravatta stamattina” (pare lo facesse G. Agnelli).
Il problema consiste nel determinare fra Alice e Bob entrambi milionari chi dei due sia più milionario dell’altro. Tutto questo senza rivelare l’ammontare del proprio patrimonio.
Ne esiste anche una variante detta “socialist millionaire problem” in cui Alice e Bob cercano di capire se i loro patrimoni sono grosso modo equivalenti oppure completamente diversi, ma senza determinare chi sia il più ricco fra i due.
Come funziona la ZKP?
La Zero Knowledge Proof funziona consentendo a una parte, di solito il verificatore, di provare o verificare un’affermazione o il possesso di dati senza rivelare alcun dettaglio sottostante. La parte verificante produce una prova e la parte dimostrante la verifica attraverso la crittografia a curva ellittica combinata con la crittografia a chiave pubblica. Questo processo consente a due parti di autenticare l’accuratezza di un’asserzione senza esporre alcuna informazione sensibile.
Quali sono i diversi tipi di ZKP?
Vi sono due tipi principali di prove a conoscenza zero:
- Prove interattive: In questo tipo di ZKP, il prover e il verificatore interagiscono più volte. Il verificatore sfida il prover che risponde a queste sfide finché il verificatore non si convince. La prova con la caverna Apriti Sesamo sembra per l’appunto essere una prova interattiva.
- Prove non interattive: In questo tipo di ZKP, la prova fornita dal prover può essere verificata dal verificatore una sola volta in qualsiasi momento. Questo tipo di ZKP richiede una maggiore potenza di calcolo rispetto alle ZKP interattive, e naturalmente questo tipo di dimostrazioni sono le più interessanti
Quali sono alcuni esempi di applicazioni di ZKP?
La tecnologia Zero Knowledge Proof può essere applicata a diverse soluzioni, tra cui l’autenticazione senza password, il rilevamento delle frodi e la gestione dei diritti digitali. Poiché ZKP non si basa su API o piattaforme centralizzate, ha il potenziale per diventare un potente strumento di cybersecurity, rendendo i sistemi più sicuri e i dati più privati. Ad esempio, le banche potrebbero utilizzare la tecnologia Zero Knowledge Proof per verificare l’identità dei clienti senza accedere ai loro dati o ai rapporti di credito. Allo stesso modo, le transazioni online, come i trasferimenti di criptovalute, potrebbero beneficiare dei suoi standard di crittografia.
Ecco una panoramica di altri e interessanti casi d’uso:
- Blockchain: La trasparenza delle blockchain pubbliche, come Bitcoin ed Ethereum, consente la verifica pubblica delle transazioni. Tuttavia, implica anche una scarsa privacy e può portare alla deanonimizzazione degli utenti. Le ZKP possono introdurre una maggiore privacy nelle blockchain pubbliche. Ad esempio, la criptovaluta Zcash si basa su Zero-Knowledge Succinct Non-Interactive Argument of Knowledge (zk-SNARK), un tipo di metodo crittografico a conoscenza zero. Un altro esempio è Zero-Knowledge Scalable Transparent Argument of Knowledge (zk-STARK), utilizzato nella blockchain di Ethereum, che garantisce privacy e scalabilità.
- Banking: ING utilizza gli ZKP che consentono ai clienti di dimostrare che il loro numero segreto si trova in un intervallo noto. Ad esempio, chi richiede un mutuo può dimostrare che il suo reddito rientra nell’intervallo ammissibile senza rivelare il suo stipendio esatto.
- Voto online: Le ZKP possono consentire agli elettori di votare in modo anonimo e di verificare che il loro voto sia stato incluso nel conteggio finale.
- Autenticazione: Le ZKP possono essere utilizzate per autenticare gli utenti senza scambiare informazioni segrete come le password.
- Apprendimento automatico: Le ZKP possono consentire al proprietario di un algoritmo di apprendimento automatico di convincere gli altri dei risultati del modello senza rivelare alcuna informazione sul modello stesso.
Rispondi