approfondimento

Dimostrazioni a conoscenza zero (ZKP) in pratica: cosa sono, esempi



Indirizzo copiato

Le dimostrazioni a conoscenza zero permettono di dimostrare che una certa affermazione è vera senza rivelare nient’altro oltre alla sua veridicità. È un approccio utile quando l’obiettivo è ridurre al minimo i dati condivisi, mantenendo comunque garanzie crittografiche solide

Pubblicato il 30 gen 2026

Luca Di Domenico

Consulente atsec information security srl



Zero-Knowledge Proof

Con dimostrazione a conoscenza zero (in inglese, Zero-Knowledge Proof, spesso abbreviato con ZKP) i crittografi intendono un protocollo informatico grazie al quale una entità dimostra a una seconda entità distinta che una certa affermazione è vera, senza rivelare altri dettagli che non riguardino la veridicità stessa dell’affermazione selezionata. In gergo, l’entità che vuole dimostrare una certa informazione è detta dimostratore (o prover in inglese), mentre la seconda entità è detta verificatore (o verifier in inglese).

Zero Knowledge Proofs

In questo articolo vedremo innanzitutto le tre proprietà fondamentali attraverso le quali un protocollo può essere definito “dimostrazione a conoscenza zero”, e poi, per convincerci che un protocollo del genere possa effettivamente esistere, vedremo un esempio di uno ZKP fatto con oggetti della realtà quotidiana.

Fatto ciò, passeremo in rassegna alcune possibili applicazioni di questa tipologia di protocolli, e parleremo di come sia altamente probabile che un recente protocollo ZKP creato da Google venga presto implementato in servizi informatici dell’Unione Europea.

Tre proprietà delle dimostrazioni a conoscenza zero: completezza, correttezza, conoscenza zero

Una dimostrazione a conoscenza zero, per essere definita tale, deve soddisfare le tre seguenti proprietà.

La prima, chiamata completezza (completeness in inglese), si riferisce al fatto che il protocollo ZKP deve sempre convincere il verificatore nel caso in cui il dimostratore stia affermando una proprietà vera e in cui il verificatore stesso stia seguendo tutto il protocollo. La completezza è indispensabile per garantire che il protocollo funzioni quando tutto è in regola.

La seconda proprietà è chiamata correttezza (soundness in inglese), e riguarda il fatto che il protocollo debba fornire la garanzia che sia altamente improbabile che un verificatore si convinca di una proprietà falsa. Se un dimostratore sta tentando di far passare come lecita un’affermazione falsa, è giusto che il verificatore abbia una probabilità sostanzialmente pari a zero di accettare tale bugia mentre esegue il protocollo ZKP.

Infine, la terza proprietà è chiamata conoscenza zero (zero-knowledge in inglese), e consiste nel fatto che un verificatore malevolo, una volta ottenuta la conferma di un’informazione vera, non deve essere in grado di ricavare ulteriori dettagli riguardo al dimostratore.

Perché la “conoscenza zero” è la parte meno banale

Non è un caso che la terza proprietà sia quella che regala al protocollo ZKP il proprio nome. In un certo senso, completezza e correttezza sono indispensabili per il corretto funzionamento di svariati protocolli di Internet. Dopotutto, anche un algoritmo di firma resistente all’avvento dei computer quantistici come ML-KEM soddisfa queste due proprietà basilari.

Semplificando molto, in un generale algoritmo di firma una entità verificatrice deve essere convinta che un certo messaggio sia stato “firmato” da una certa entità dimostratrice. Nelle implementazioni effettive, la firma consiste nell’ingarbugliare il messaggio per mascherarlo e renderlo illeggibile a entità malevole, mentre la verifica avviene tramite l’utilizzo di dati aggiuntivi legati al dimostratore per “smascherare” i dati ingarbugliati e ritornare al messaggio originale.

Se il dimostratore di un algoritmo di firma è onesto, allora il verificatore è in grado di risalire precisamente al messaggio in chiaro originale, e in questo senso ogni algoritmo di firma soddisfa la proprietà della completezza. Al contrario, se un attaccante sta provando a forgiare la firma di un certo dimostratore onesto, allora il tentativo di “smascheramento” del messaggio, che sfrutta i dati aggiuntivi legati al dimostratore onesto, porterà alla creazione di dati incomprensibili in sostanzialmente ogni singolo caso possibile. In questo senso, un algoritmo di firma soddisfa anche la proprietà della correttezza.

È la conoscenza zero ad essere la proprietà meno triviale tra le tre. In un algoritmo di firma, l’accesso a dati aggiuntivi legati al dimostratore (la cosiddetta chiave pubblica) non solo è cruciale per il funzionamento dell’algoritmo stesso, ma si basa su una complessa infrastruttura mondiale atta ad associare i corrispettivi dati aggiuntivi a ogni dimostratore. Eppure, è possibile soddisfare questa proprietà di conoscenza zero, come vedremo nell’esempio a seguire.

Esempio di protocollo di dimostrazione a conoscenza zero: trova Wally

Tra gli esempi più semplici di protocolli ZKP che è possibile produrre nella realtà troviamo quello che sfrutta un libro della serie “Dov’è Wally?”. Ogni pagina di un libro di questa serie consiste in un’illustrazione estremamente dettagliata in cui compare un grande numero di piccoli personaggi. Lo scopo del gioco consiste nello scovare in ogni illustrazione Wally, ovvero quel personaggio distinto da tutti gli altri per via della maglietta a righe bianche e rosse, del cappello di lana e degli occhiali.

Supponiamo che un certo dimostratore onesto voglia convincerci della seguente informazione: «il dimostratore ha memorizzato la posizione di Wally in una pagina qualsiasi di un certo libro di “Dov’è Wally?”». Attenzione: l’informazione che il dimostratore vuole fornirci non è la posizione esatta di Wally in ogni illustrazione. Per ottenere questo, basterebbe che noi aprissimo una pagina a caso e che il dimostratore indichi rapidamente con il dito Wally nell’illustrazione corrispondente.

In questo caso, però, il dimostratore non vuole rovinarci il gioco. Mira solo a farci sapere che ha memorizzato tutte le posizioni di Wally nelle varie pagine, non la posizione esatta di Wally dentro una data pagina.

Il protocollo con il cartone e il “buco”

Per ottenere questa informazione più contenuta, noi e il dimostratore possiamo seguire il seguente protocollo ZKP.

Ci muniamo innanzitutto di un grande foglio di cartone. In particolare, questo foglio è grande più del doppio del libro in tutte le direzioni, in modo che sia facile nascondere la posizione esatta del libro dietro di esso. Inoltre, facciamo un piccolo buco nel foglio, più o meno grande abbastanza per farci entrare un personaggio di un’illustrazione del libro.

Il resto del protocollo è intuibile. Come primo passo, senza concentrarci su alcuna illustrazione, noi apriamo a caso il libro, lo diamo al dimostratore, decidiamo la pagina destra o sinistra, e chiudiamo gli occhi per una decina di secondi. Assumendo che il dimostratore abbia effettivamente memorizzato la posizione di Wally in ogni illustrazione, in questo lasso di tempo egli sarà in grado di localizzare Wally e di posizionarlo esattamente dietro il buco del foglio di cartone.

Quindi, non appena riapriamo gli occhi, siamo in grado di vedere Wally, ma non riusciamo a capire precisamente in quale punto della pagina si trovi. Ripetendo una ventina di volte questi passaggi di “selezione casuale della pagina, chiusura degli occhi, conferma di vedere Wally”, ci possiamo lasciar convincere con grande certezza dell’ottima abilità mnemonica del dimostratore.

Perché l’esempio soddisfa completezza, correttezza e conoscenza zero

Il protocollo di cui sopra soddisfa le tre proprietà elencate nel paragrafo precedente ed è, per definizione, una dimostrazione a conoscenza zero.

Innanzitutto, il protocollo gode della proprietà della completezza: visto che il dimostratore ha memorizzato ogni illustrazione, egli sarà sempre in grado di posizionare correttamente Wally dietro il buco del foglio di cartone.

Inoltre, il protocollo gode anche della proprietà della correttezza. Se una persona che non ha memorizzato la posizione di Wally in ogni illustrazione tenta di convincerci altrimenti, avrà parecchie difficoltà a posizionare Wally dietro il buco del cartone in così poco tempo. È possibile che per una o due pagine questa persona possa trovare Wally molto in fretta, magari per fortuna o per caso, ma è altamente improbabile che possa continuare la sua farsa per dieci o venti volte consecutive.

Infine, anche la proprietà della conoscenza zero è sostanzialmente soddisfatta. Certo, a voler essere molto pignoli, oltre a dimostrare l’abilità mnemonica di un dimostratore onesto, il protocollo ci fa vedere all’incirca anche la posa del corpo di Wally. Ma questa informazione non ci aiuta più di tanto nel caso in cui anche noi stessi volessimo provare a trovare Wally in un’illustrazione casuale.

Possibili applicazioni delle dimostrazioni a conoscenza zero

Nel mondo digitale, la possibilità di inviare esclusivamente i dati strettamente necessari al fine di un certo scopo è molto utile e consigliata. In un certo senso, meno informazioni personali o aziendali inviamo tramite Internet, meno siamo esposti a possibili rischi di intercettazione o fuga di dati.

In fondo, Internet rimane un canale di comunicazione non sicuro per design, e per violare una privacy basta spesso una svista o un utilizzo erroneo di algoritmi crittografici atti a tutelare la sicurezza dei dati informatici.

Sfruttando concetti matematici avanzati, i protocolli ZKP eseguibili dai computer moderni permettono idealmente di limitare la quantità di dati sensibili che vengono trasmessi su Internet. Nella pratica, però, anche loro si devono basare su qualche altra infrastruttura o applicazione per poter funzionare al meglio.

Range proof: dimostrare uno stipendio senza rivelarlo

Ad esempio, supponiamo di stare per attivare una nuova assicurazione sanitaria statale. Con buona probabilità, questa tipologia di assicurazione ci costa più o meno denaro a seconda del nostro stipendio lavorativo annuale. Tipicamente, per concludere l’attivazione, bisogna rilasciare alla compagnia assicurativa numerosi dettagli riguardo alla nostra attività lavorativa: luogo di lavoro, stipendio preciso, attività e/o ruolo lavorativo preciso, eccetera.

Però, supponendo di fidarci pienamente del nostro luogo di lavoro e supponendo che il nostro luogo di lavoro sia in contatto con la compagnia assicurativa, potremmo richiedere al nostro datore di comunicare il nostro stipendio utilizzando una dimostrazione a conoscenza zero di intervallo (in inglese, zero knowledge range proof). Come suggerisce il nome, questa sottocategoria di ZKP permette di dimostrare a un verificatore esterno che un certo valore (in questo caso, lo stipendio) si trova in un intervallo di valori possibili (ovvero tra un minimo e un massimo).

Controllo accessi: ruoli e permessi senza esporre profili completi

Oppure, facendo un altro esempio, supponiamo che un’università offra un servizio digitale nel quale studenti e professori possono inserire informazioni come il corso di laurea seguito, cattedre tenute, esami superati, e altri dettagli simili.

Utilizzando un idoneo protocollo ZKP, il servizio potrebbe imporre un controllo di accesso alle dispense di tutti i corsi di laurea. Se il sito verifica che il dimostratore è un professore di fisica, allora il sito potrebbe permettere al dimostratore di caricare nuove diapositive e di cancellare le vecchie. Se il sito invece verifica che il dimostratore è qualcuno che segue un corso di analisi, allora il sito potrebbe permettere al dimostratore di vedere solo le dispense di analisi e non anche quelle di fisica, e così via.

Protocolli ZKP e servizi di identità digitale

I protocolli ZKP si sposano particolarmente bene con servizi di identità digitale. Caricando un proprio documento identificativo come carta di identità o passaporto, un servizio di identità digitale funge da intermediario tra i nostri documenti e un servizio terzo. Nell’Unione Europea si sta sviluppando l’EUDI wallet proprio per svolgere questa funzione di servizio intermediario.

Dal punto di vista organizzativo e della sicurezza informatica, è più facile creare un servizio standard forte di identità digitale che faccia da intermediario, piuttosto che inviare separatamente i nostri documenti identificativi a qualsiasi servizio terzo. Questa idea vale anche nonostante il fatto che esistano attacchi che riguardano l’infrastruttura dell’identità digitale.

Supponiamo che un adolescente abbia accesso a un servizio di identità digitale simile a quello di EUDI wallet, e supponiamo che ci abbia caricato sopra la sua carta d’identità. Dalla carta d’identità, il servizio è in grado di ricavare il nome, il codice fiscale, il sesso, l’età precisa e altri dettagli dell’adolescente stesso.

Se opportunamente implementati, servizi di streaming e piattaforme di social media potrebbero verificare l’età di utenti adolescenti chiedendo una opportuna dimostrazione a conoscenza zero di intervallo di età al corrispettivo servizio di identità digitale. Il vantaggio di utilizzare solo una ZKP invece di richiedere l’intera carta d’identità è evidente: con un protocollo automatico, il sito riceve precisamente la conferma sull’età di un utente che gli serve senza avere accesso all’età precisa dell’utente, alla foto del documento di identità, al nome, al codice fiscale, eccetera.

Insomma, è possibile limitare i contenuti non adatti ai minorenni senza minacciare in maniera sostanziale la privacy degli utenti.

L’Unione Europea, la verifica dell’età e la ZKP di Google

La realtà in cui i minorenni hanno accesso nullo o limitato ai social media potrebbe essere più vicina di quel che pensiamo. A giugno 2025 il presidente francese Emmanuel Macron ha reso ben chiaro all’Unione Europea che vuole imporre un divieto di accesso ai social media per i minori di 15 anni. Alla mezzanotte del 10 dicembre 2025, in Australia, è entrata in vigore una legge per vietare i social media ai minori di 16 anni. In Australia le aziende tecnologiche che forniscono i servizi di Facebook, Instagram, YouTube, Twitch e TikTok sono tenute a verificare l’età dei propri utenti, oppure devono pagare una penale parecchio costosa.

L’Unione Europea sta sviluppando un approccio armonizzato e valido per tutta l’Unione Europea per verificare l’età di un dato individuo. In particolare, l’UE sta lavorando per produrre una applicazione open source chiamata Soluzione di verifica dell’età che possa funzionare per ogni singolo Stato membro in maniera efficace.

Nel luglio 2025 è iniziata una fase di prova preliminare e preparazione per l’effettiva distribuzione nei vari Stati membri della soluzione. Nel frattempo è già disponibile una Specifica tecnica dove si descrive il tipo di architettura e i requisiti software necessari per questa applicazione open source.

Nella Specifica tecnica stessa viene sottolineato che una soluzione ZKP sarà considerata come funzionalità sperimentale nella prossima versione del documento. Poi, per indicare una versione già implementata e a libero accesso di un protocollo ZKP, la Specifica tecnica rimanda a una pagina chiamata longfellow-zk del sito GitHub. Questa pagina è ufficialmente mantenuta dall’azienda Google (proprio la stessa del browser Google Chrome).

In un apposito articolo online pubblicato da Google stessa, viene non solo ribadita l’importanza di far passare sotto scrutinio pubblico un algoritmo crittografico, ma viene anche esplicitamente detto che Google si augura che gli Stati membri dell’UE possano integrare longfellow-zk anche dentro l’EUDI wallet, accelerando lo sviluppo e la realizzazione effettiva di quest’ultimo.

Conclusione

Le dimostrazioni a conoscenza zero, rilasciando solamente l’informazione precisa che viene loro richiesta, offrono una strada nuova e alternativa per tutelare la privacy degli utenti. Permettono di verificare l’intervallo in cui ricade un certo stipendio e la dispensa a cui può accedere uno studente universitario. Persino l’Unione Europea sta pensando di implementare protocolli ZKP nell’EUDI wallet e nella sua applicazione open source di verifica dell’età.

Il diavolo, però, si nasconde nei dettagli delle implementazioni. Al contrario del nostro esempio “giocattolo” di trovare Wally, i protocolli ZKP sono parecchio complessi e sfruttano concetti di matematica avanzata per ottenere le loro garanzie di sicurezza. I crittografi sanno bene che, a lungo andare, lasciare un algoritmo crittografico sotto studio e scrutinio pubblico aumenta la sua robustezza.

Di questo è al corrente anche Google, che si è già attivata rilasciando un’implementazione pubblica di una ZKP con la volontà di aiutare l’UE. Questo spirito di collaborazione può portare a una soluzione robusta e duratura.

guest

0 Commenti
Più recenti
Più votati
Inline Feedback
Vedi tutti i commenti

Articoli correlati

0
Lascia un commento, la tua opinione conta.x