La privacy è da sempre considerata un elemento importante nel campo delle
criptovalute. E’ il precursore della fungibilità, necessaria per una forma di moneta ampiamente utilizzata. Allo stesso modo, la grande maggioranza dei possessori di crypto non vuole che i propri fondi e la cronologia delle proprie transazioni sia completamente pubblica. Tra le varie tecniche crittografiche che puntano a garantire la privacy nelle blockchain, i sistemi zk-SNARK zk-STARK sono due esempi rilevanti.
zk-SNARK sta per zero-knowledge succinct non-interactive argument of knowledge, mentre zk-STARK significa zero-knowledge succinct transparent argument of knowledge. Le prove zk-SNARK sono attualmente già in uso in Zcash, sul sistema di pagamento basato su blockchain di JP Morgan Chase e come metodo per autenticare clienti su server in modo sicuro. Sebbene il sistema zk-SNARK abbia compiuto progressi notevoli in termini di sviluppo e adozione, le prove zk-STARK sono attualmente pubblicizzate come la nuova e aggiornata versione del protocollo che risolve diversi aspetti negativi propri delle zk-SNARK.
La Caverna di Ali Baba
Nel 1990, un
documento intitolato "How to Explain Zero-Knowledge Protocols to Your Children" viene pubblicato dal crittografo Jean-Jacques Quisquater (insieme ad altri collaboratori). Il testo introduce il concetto di
prove ZK con una parabola che coinvolge la caverna di Ali Baba. Sin dalla sua creazione, questa parabola è stata modificata più volte e ne esistono attualmente diverse varianti. Tuttavia, le informazioni di base sono essenzialmente le stesse.
Immagina una caverna a forma di anello con una singola entrata e una porta magica che la separa in due parti, due percorsi. Per poter attraversare la porta magica, è necessario sussurrare le giuste parole segrete. Supponiamo che Alice (giallo) vuole provare a Bob (blu) che conosce le parole segrete - senza però rivelarle. Per farlo, Bob accetta di rimanere fuori, mentre Alice entra nella caverna e arriva alla fine di uno dei due percorsi possibili. In questo esempio, sceglie il Percorso 1.
Dopo un po’, Bob si reca nell’ingresso e grida da quale parte vuole che Alice appaia (in questo caso il Percorso 2).
Se Alice conosce davvero le parole segrete, arriverà dal percorso che Bob ha scelto.
L’intero processo può essere ripetuto diverse volte in modo da confermare che Alice non stia scegliendo il percorso giusto per mera fortuna.
La parabola della caverna di Ali Baba illustra il concetto delle prove a conoscenza zero, che fanno parte dei protocolli zk-SNARK e zk-STARK. Le prove ZK possono essere usate per dimostrare il possesso di determinate conoscenze senza rivelare informazioni a riguardo.
zk-SNARK
Zcash è la prima applicazione del sistema zk-SNARK diffusa ampiamente. Mentre altri progetti sulla privacy come Monero utilizzano ring signature (firma ad anello) e altre tecniche - creando una copertura attorno a chi ha inviato cosa - zk-SNARK fondamentalmente cambia il modo in cui i dati vengono condivisi. La privacy di Zcash deriva dal fatto che le transazioni nel network possono rimanere
criptate, verificandone la validità usando
prove a conoscenza zero. Quindi, chi ha la responsabilità di applicare le regole di
consenso non ha bisogno di sapere tutti i dati contenuti in ogni transazione. E’ importante sottolineare che le funzioni per la privacy in Zcash non sono attive di default, ma sono opzionali e dipendenti da configurazione manuale. Le prove a conoscenza zero consentono a un individuo di dimostrare a un altro che un’affermazione è vera, senza rivelare informazioni all’infuori della sua validità. Le parti coinvolte sono comunemente definite come prover e verificatore, e l’affermazione che tengono in segreto è chiamata witness. L’obiettivo centrale di queste prove è rivelare meno dati possibili tra le due parti. In altre parole, una persona può usare prove a conoscenza zero per dimostrare che possiedono una certa conoscenza senza rivelare alcuna informazione riguardo alla conoscenza stessa.
Nell’acronimo SNARK, “succinct” significa che queste prove sono di piccole dimensioni e possono essere verificate velocemente. “Non-interactive” significa che c’è un’interazione minima o nulla tra il prover e il verificatore. Versioni precedenti dei protocolli a conoscenza zero richiedono in genere una fitta comunicazione tra prover e verificatore, e sono quindi considerate prove zk “Interactive”. Nelle strutture “non-interactive”, prover e verificatori devono scambiarsi solo una prova.
Attualmente, le prove zk-SNARK dipendono da una configurazione iniziale fidata tra prover e verificatore, quindi è necessaria una serie di parametri pubblici per elaborare prove a conoscenza zero e, di conseguenza, transazioni private. Questi parametri corrispondono in un certo senso alle regole del gioco, sono incorporate nel protocollo e sono uno dei fattori necessari per la dimostrazione di validità di una transazione. Tuttavia, questo crea un potenziale problema di centralizzazione, dato che i parametri sono spesso formulati da un gruppo molto piccolo.
Sebbene una configurazione pubblica iniziale sia fondamentale per le attuali implementazioni di zk-SNARK, diversi ricercatori stanno lavorando ad altre alternative per ridurre il fattore di fiducia richiesto dal processo. La fase di configurazione iniziale è importante per la prevenzione di transazioni contraffatte. Infatti, se qualcuno avesse accesso alla casualità che ha generato i parametri, potrebbe creare prove false che risultano valide al verificatore. In Zcash, la fase di configurazione iniziale è conosciuta come
Parameter Generation Ceremony.
La lettera successiva dell’acronimo rappresenta “Arguments”. Le prove zk-SNARK sono considerate computazionalmente valide, quindi un prover disonesto che tenta di ingannare il sistema ha una probabilità di successo molto bassa. Questa proprietà è conosciuta come soundness e presuppone che il prover abbia a disposizione una potenza di calcolo limitata. In teoria, un prover con una sufficiente potenza computazionale potrebbe creare prove false, una delle ragioni per cui i computer quantistici sono considerati da molti una minaccia al protocollo zk-SNARK e ai sistemi
blockchain.
La lettera finale dell’acronimo sta per “of Knowledge,” ovvero non è possibile per il prover elaborare una prova senza possedere effettivamente la conoscenza (o witness) per supportare la propria affermazione.
Le prove a conoscenza zero sono verificabili velocemente e in genere occupano uno spazio molto inferiore rispetto a una transazione
Bitcoin standard. Tutto ciò rende la tecnologia zk-SNARK una valida soluzione per quanto riguarda privacy e scalabilità.
zk-STARK
Le prove zk-STARK sono state create come una versione alternativa alle zk-SNARK e sono considerate un’implementazione più veloce e più economica della tecnologia. Ma, ancora più importante, le zk-STARK non richiedono una configurazione iniziale fidata (per questo l’acronimo contiene la “T” per trasparente).
Tecnicamente parlando, il sistema Zk-STARK non richiede una configurazione iniziale fidata perché si basano su una
crittografia simmetrica più leggera attraverso funzioni di hash con resistenza alla collisione. Questo approccio elimina anche le ipotesi numero-teoriche delle prove zk-SNARK, le quali sono costose in termini computazionali e teoricamente soggette ad attacchi da parte di computer quantistici.
Una delle ragioni principali per cui le zk-STARK offrono un’implementazione più economica e veloce è legata al numero di comunicazioni tra prover e verificatori, il quale rimane costante a prescindere dall’aumento di computazione. Al contrario, nel protocollo zk-SNARK, maggiore è la computazione richiesta, maggiori sono i messaggi che le parti devono scambiarsi. Di conseguenza, le dimensioni complessive delle zk-SNARK sono molto più grandi di quelle delle prove zk-STARK.
E’ chiaro che sia le zk-SNARK che le zk-STARK si rivolgono alla crescente preoccupazioni in merito di privacy. Nel contesto delle
criptovalute, questi protocolli hanno un grande potenziale e potrebbero avere una funzione rivoluzionaria nell’adozione generale.