Tempo di lettura: 4 minuti

Quando parliamo di crittovalute o Blockchain parliamo di crittografia. Spesso questa scienza viene sottovalutata e ignorata, pur venendo utilizzata in ogni transazione, creazione di wallet o esecuzione di Smart Contracts.

Oggi andremo a parlare di una tecnica crittografica di cui si sente spesso parlare:

Zero Knowledge Proof

Tradotto in Italiano risulta “Dimostrazione a conoscenza zero” e Wikipedia ci fornisce una definizione abbastanza chiara:

In crittografia una dimostrazione a conoscenza zero o protocollo a conoscenza zero è un metodo interattivo utilizzato da un soggetto per dimostrare ad un altro soggetto che una affermazione (solitamente matematica) è vera, senza rivelare nient’altro oltre alla veridicità della stessa.

Pur essendo un argomento davvero complesso e difficile, noi di Coiners non ci spaventiamo davanti a nulla, per cui proveremo a spiegarla in parole semplici attraverso 3 esempi del mondo reale!

Peggy e Victor in una caverna!

Per questo esempio utilizzeremo due attori molti famosi nel mondo della crittografia: Peggy e Victor, che si trovano nei pressi di una caverna circolare chiusa in un lato da una porta magica, apribile solo con una parola magica. Peggy afferma di conoscere la parola magica, e Victor ne vuole la dimostrazione; Peggy tuttavia non vuole rivelare la parola!

Dimostrazione intuitiva
A si trova in una galleria circolare , chiusa a metà.

Ti ricorda uno di quegli indovinelli impossibili che ti facevano da bambino? Può essere, tuttavia Victor e Peggy riescono a trovare la soluzione. Peggy si reca alla fine della galleria, prima della porta magica. Victor si porta all’entrata della galleria, ansioso di verificare le parole di Peggy!

A questo punto Victor non dovrà fare altro che urlare casualmente A oppure B, cioè uno dei due percorsi. Cosa succederà? Se Peggy dovesse arrivare dalla strada urlata da Victor, questo vorrebbe dire che Peggy avrebbe davvero la parola magica. In caso contrario vorrebbe dire che Peggy non sarebbe in possesso della chiave, sempre che Victor non scelga il percorso che non richiede l’apertura della porta.

Proprio per questo è necessario che questo test venga effettuato più volte! Ecco spiegato il funzionamento dello Zero Knowledge Proof: due attori possono scambiarsi un asset, o più semplicemente confermare una informazione limitando però le informazioni da rivelare!

Il caso delle palline da Tennis colorate

Sei in una stanza con una persona e due palline su un tavolo. Vuoi convincere la persona che queste due palline sono di colore diverso, senza fargliele vedere: com’è possibile?

Una volta bendata la persona dovrai consegnare le due palline nelle sue mani, dirgli di metterle dietro la schiena e scegliere se scambiarle o no dietro la schiena. Quando sarà pronta dovrà portare le mani da dietro la schiena e farti vedere le palline, una per mano.

Quando te le mostrerà dovrai dire – scambiata – o – non scambiata – e ci saranno due possibilità

  1. Stai mentendo: hai il 50% di possibilità di indovinare
  2. Sei sincero: con l’aumentare dei tentativi convincerai la persona bendate che effettivamente le palline sono di due colori diversi, senza che questa le abbia viste!

Quando nasce la Zero Knowledge Proof?

La prima idea di Zero Knowledge Proof nasce nel 1980 da dei ricercatori del MIT: Shafi Goldwasser, Silvio Micali e Charles Rackoff, mentre stavano lavorando ad un Proof System inizialmente chiamato Prover.

Nell’esempio appena concluso di Victor e Peggy l’informazione da non poter rivelare era la parole per aprire una porta magica, puoi immaginare un protocollo Zero Knowledge anche in un semplice sistema di autenticazione client-server, ma senza la comunicazione della password! Il client per autenticarsi non dovrebbe dire altro che una frase, che testimonierebbe la sua autenticità!

cos'è zero knowledge prof
Un po’ di applicazioni di algoritmi Zero Knowledge Proof

Dopo anni e anni di studi vennero stabilite tre regole che un algoritmo Zero Knowledge deve rispettare:

  1. Completeness: se la persona da verificare ci sta dicendo la verità e il verificatore è sincero, quest’ultimo verrà convinto (con molta probabilità, dopo tanti tentativi)
  2. Soundness: la persona da verificare può convincermi solamente se sta dicendo al verità
  3. Zero-knowledgeness: non ho imparato o scoperto informazioni sulla persona da verificare

Teoria dei grafi e cappelli

L’ultimo esempio per spiegarti la Zero Knowledge Proof utilizza la teoria dei grafi.

zero knowledge proof come funziona
Ecco una rete di nodi. Ci servirà per spiegare la ZK

Osserva la foto qui sopra. Immagina di dover inventare un algoritmo per colorare ogni nodo, con un colore diverso da tutti i nodi a lui direttamente collegati.

zero knowledge proof spiegazione
Ecco il risultato del nostro algoritmo ZK!

Questo algoritmo è davvero segreto e dispendioso di risorse, come provare ad una persona di averlo trovato?

Ordiniamo a questa persona di creare una rete di nodi come quella della prima immagine e dopo di uscire dallla stanza. A questo punto entreremo nella stanza (da soli), utilizzeremo il nostro algoritmo segreto per colorare i nodi che poi andremo a coprire con dei cappelli!

Lasciamo entrare ora il nostro Verifier: avrà il diritto di togliere i cappelli di 3 nodi vicini, scelti casualmente, di cui dovrà verificarne i colori uscendo successivamente dalla stanza.

Esatto, il verifier dovrà entrare, alzare 3 cappelli, verificare i colori ed uscire. Tante volte.

Se il procedimento non ti è chiaro puoi utilizzare questa piccola dimostrazione interattiva del MIT!

Come viene utilizzata su Blockchain?

Se stiamo parlando di Zero Knowledge Proof su Coiners, è perchè questi algoritmi vengono largamente utilizzati da diverse Blockchain, alcune già esistenti altre in fase di studio.

Impossibile non citare zkSNARKs e ZCash, la famosa moneta che permette transazioni anonime proprio grazie a Zero Knowledge Proof.

Anche Ethereum ha implementato algoritmi ZK durante l’update Byzantium. Per capire ulterioremente zkSnarks possiamo leggere l’acronimo:

  • Succinct: Lunghezza dei messaggi minore di quelle precedenti
  • Non-interactive: Non c’è (o ce n’è un minima) interazione Su zkSNARKS, dopo una fase di setup dopo l’invio di un singolo messaggio da parte del Prover (chi vuole essere verificato) verso il Verifier (chi verifica). Gli SNARKS inoltre sono dotati di una proprietà pubblica per la verifica, che permette a chiunque una successiva verifica senza nuovi messaggi.
  • ARguments: Il verificatore è protetto solamente da Provers con potenza computazione limitata, mentre un ente con computazione illimitata potrebbe creare una Proof falsa, però verificata.
  • of Knowledge: Non è possibile per il Prover costruire una Proof senza conoscere un cosiddetto testimone (ad esempio l’indirizzo mittente, il preimage di una funzione di hash o il percorso di un determinato nodo del Merkle-tree).

Conclusioni

Dopo aver spiegato la Zero Knowledge Proof attraverso tre esempi e alcune sue applicazioni possiamo concludere questo articolo un po’ speciale riguardante la crittografia.

Se qualcosa non dovesse esserti chiaro non esitare a commentare qui sotto o entrando nel nostro gruppo Telegram!

Autore

Sono uno studente Web&Cloud. Amo programmare, negli anni ho sviluppato competenze full-stack, in particolare nel mondo Javascript. Linux e la crittografia mi hanno sempre appassionato, fino a portarmi nel mondo delle cryptovalute.

Scrivi un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.