Comprensione di blockchain a conoscenza zero

Come dimostrarti di sapere qualcosa senza mostrare ciò che sai

Venerdì scorso ha visto il lancio di Zcash, una nuova blockchain pubblica e criptovaluta associata che hanno attirato molta attenzione. Ormai ci sono centinaia di criptovalute, quindi qualsiasi giovane concorrente in erba ha bisogno di un serio differenziatore per superare la mischia. Nel caso di Zcash, questo è facile: gli utenti Zcash possono scambiarsi denaro a vicenda in assoluta privacy. Per una criptovaluta basata su una blockchain, questo è un risultato tecnico notevole. (Anche se va notato che altre catene come Monero ed Dash mirare allo stesso obiettivo usando mezzi più semplici ma meno efficaci.)

Come ho fatto scritto prima, in senso generale le blockchain (pubbliche o private) rappresentano un compromesso in cui si ottiene la disintermediazione a scapito della riservatezza. Le blockchain forniscono un nuovo modo intelligente per i partecipanti di condividere in sicurezza un database, anche se non si fidano l'uno dell'altro, senza richiedere un intermediario centrale. Ma c'è un prezzo da pagare per questo decentramento peer-to-peer: il "nodo" che appartiene a ogni partecipante alla catena deve verificare ogni transazione per se stesso, e questo a sua volta significa che vede ciò che tutti gli altri stanno facendo.

Due modi per incatenare

Nel caso di blockchain pubblici e criptovalute, il database condiviso serve principalmente come un record di chi controlla (e quindi possiede effettivamente) quanta criptovaluta, con una spolverata opzionale di "metadati" (bitcoin) o logica contrattuale (Ethereum) in cima. Al contrario, nelle blockchain private, tendiamo a vedere due principali classi di casi d'uso: (a) la proprietà e il trasferimento di risorse esterne rappresentate da token sulla catena e (b) applicazioni più generali relative all'archiviazione e al recupero dei dati. Ad esempio, nel nostro prodotto più giri, queste due classi di casi d'uso vengono implementate utilizzando rispettivamente asset nativi e flussi di dati.

Quando si tratta di archiviazione generale dei dati, la blockchain fornisce una serie di servizi: dimostrare da dove proviene un dato, timestamparlo e autenticare immutabilmente per impedire la modifica da parte di una minoranza di partecipanti alla blockchain. Ma la blockchain non deve avere nulla da dire sui dati stessi: ogni applicazione può decidere cosa significa un dato e se è valido. I dati errati possono essere semplicemente ignorati a livello di applicazione, senza causare danni allo stato della blockchain nel suo complesso.

Al contrario, se le blockchain trasferiscono direttamente asset tokenizzati, devono applicare regole interne riguardanti la validità di tali trasferimenti. Per dirla semplicemente, un evento come "Alice paga un euro a Bob" sarà approvato dalla catena solo se Alice ha almeno un euro a suo nome. Mentre diversi tipi di blockchain esprimono questa regola in modi diversi (vincoli di transazione bitcoin vs contratti intelligenti Ethereum), condividono tutti la proprietà che le finanze di Alice devono essere conosciute da ogni nodo della catena. Ciò consente loro di valutare se il suo pagamento è valido, sapere quanto ha Bob come risultato e valutare eventuali pagamenti futuri da Bob a Charlie e altri.

A questo punto, i lettori che hanno familiarità con le blockchain faranno notare che Alice e Bob non sono identificati direttamente per nome su una catena. Invece, ognuno effettua transazioni sotto uno o più "indirizzi", che sono lunghe stringhe alfanumeriche di parole incomprensibili che non hanno alcuna relazione con le loro identità del mondo reale. Anche se questo è vero, in realtà non aiuta molto, perché ci sono diversi modi in cui si può dedurre la connessione tra gli utenti ei loro indirizzi.

Innanzitutto e più semplicemente, per effettuare transazioni con qualcuno su una blockchain, devo conoscere almeno uno dei loro indirizzi. Quindi, se mando loro del denaro, posso vedere dove vanno a finire quei soldi, e se mi pagano, posso vedere da dove provengono. In secondo luogo, se mi capita di sapere qualcosa su un partecipante dal mondo reale (ad es. Quali tipi di asset scambiano a che ora del giorno), posso cercare nell'attività della catena schemi corrispondenti e quindi dedurre il loro indirizzo con un alto livello di fiducia. Infine, una volta che conosco un indirizzo di un partecipante, posso spesso capire quali altri indirizzi possiedono e utilizzano, monitorando l'intero flusso di fondi sulla catena. Anche se questo non è banale da raggiungere, è certamente possibile con una motivazione sufficiente, come dimostrato da aziende come Chainalysis ed Skry che si guadagnano da vivere fornendo questo tipo di "analisi di rete" per bitcoin.

Salvato dalla crittografia?

Il contrasto tra asset e dati tocca direttamente la questione della crittografia. Nel caso dell'archiviazione generale dei dati su una blockchain, possiamo crittografare le informazioni archiviate, ottenendo comunque i vantaggi di provenienza dei dati, timestamp e immutabilità. Nessuna di queste funzionalità richiede informazioni dettagliate sui dati stessi. Pertanto è perfettamente valido che due partecipanti utilizzino una blockchain per archiviare informazioni che solo loro possono leggere, ottenendo comunque il vantaggio di altri partecipanti che si impegnano sull'origine di quei dati e sulla loro esistenza in un certo momento.

Al contrario, la crittografia di questa natura non può essere utilizzata da transazioni che rappresentano trasferimenti di risorse tokenizzate. Se Alice e Bob dovessero crittografare la loro transazione, le risorse in questione non potrebbero essere utilizzate in modo sicuro da nessun altro partecipante alla catena, perché nessun altro saprebbe dove si trovano effettivamente le risorse. I beni cesserebbero di avere qualsiasi significato collettivo sulla catena, il che distrugge l'intero punto.

Nel settore finanziario, questo conflitto tra privacy e liquidità è la difficoltà principale dell'utilizzo di blockchain per trasferire asset, infrangendo le speranze di molte startup nello spazio. Mentre il tecnico la fattibilità dello spostamento delle risorse su una blockchain è stata dimostrata da innumerevoli progetti pilota, in pratica questo fa sì che venga rivelata troppa attività tra pari. La fuga di informazioni è uno svantaggio nel migliore dei casi, ma è un vero e proprio ostacolo quando i partecipanti di una catena sono in una forte concorrenza o dove la regolamentazione lo proibisce.

Di conseguenza, molte importanti startup di "registro distribuito" si sono allontanate dall'idea di regolamento a catena, tornando a transazioni bilaterali più tradizionali che sono crittografate e autenticate su una blockchain sotto il paradigma di "archiviazione generale dei dati". Ciò può prevenire controversie e doppie spese, ma la risoluzione stessa rimane esterna alla catena. Sebbene la blockchain fornisca ancora un certo valore, è meno trasformativa di quanto originariamente sperato. Senza dubbio ci sono stati più di pochi incontri con la faccia rossa tra le startup e i loro investitori.

Eppure, dopo tutta la delusione, la salvezza può finalmente essere a portata di mano. Inserisci la blockchain a conoscenza zero.

Presentazione della conoscenza zero

Prima di discutere di questo nuovo tipo di blockchain, è utile comprendere il principio della conoscenza zero stessa. In senso generale, una prova di conoscenza zero è quella che dimostra la verità di una certa affermazione, senza rivelare alcuna informazione aggiuntiva oltre a ciò che sta cercando di dimostrare.

Per fare un esempio, diciamo che ho un amico daltonico che possiede due penne, identiche tranne che una è verde e l'altra è blu. La mia amica non riesce a distinguerli e voglio convincerla che sono davvero diversi. Certo, non posso farlo semplicemente dicendole i colori, perché non può valutare se sto mentendo o no.

Quindi cosa posso fare? (Perché non prenderti un minuto e provare a capire tu stesso la risposta ...) Beh, posso chiederle di prendere un pezzo di carta e tracciarne due linee in un'altra stanza. Nel fare ciò, può decidere liberamente se utilizzare la stessa penna per entrambe le linee o una penna per ciascuna. Dal suo punto di vista il risultato sembra lo stesso in entrambi i modi. Poi torna con il foglio e le dico se ha usato una penna o due. Naturalmente, se le penne fossero dello stesso colore, non avrei modo di saperlo. Quindi il fatto che io abbia capito bene dimostra che sono diversi.

Beh, non proprio. C'è un problema con questa logica. Anche se le penne fossero identiche avrei comunque il 50% di possibilità di dare la risposta giusta, perché ci sono solo due possibilità (ha usato una o due penne). Quindi un'ipotesi fortunata non prova assolutamente nulla. Per rafforzare la mia tesi, il gioco deve essere giocato su più round. Dopo ogni round, le mie possibilità di avere sempre ragione si riducono della metà. Quindi, con 5 round, ho 1 possibilità su 32 di fingere con successo. Con 10 round, è 1 su 1024 e con 20 round, 1 su 1048576, in altre parole, uno su un milione. A seconda del livello relativo di noia e sospetto della mia amica, può raggiungere qualsiasi livello probabilistico di prova che desidera, anche se mai certezza assoluta.

Metti gli snark

Le prove di conoscenza zero nelle blockchain applicano un principio simile, anche se ovviamente non riguardano il colore delle penne. Piuttosto, mirano a dimostrare l'affermazione "questo trasferimento di attività è valido", senza rivelare nulla di importante sul trasferimento stesso. Zcash utilizza una tecnica relativamente nuova per prove a conoscenza zero chiamata zk-SNARK, il file spiegazione completa di quale è (per usare un eufemismo) oltre lo scopo di questo pezzo. Ma l'idea di base è questa: qualsiasi condizione computazionale può essere rappresentata da un circuito aritmetico, che prende alcuni dati come input e fornisce una risposta di "vero" o "falso" in risposta. Uno zk-SNARK utilizza un modello di questo circuito per permettermi di dimostrare, con qualsiasi grado di certezza desiderato, che possiedo un input che fornisce una risposta vera, senza rivelare l'input stesso. Almeno filosoficamente, è come provare che due penne sono di colori diversi, senza rivelare cosa siano quei colori.

Uno zk-SNARK usa un piccolo trucco per evitare l'interattività tipica delle prove a conoscenza zero, in cui una parte scettica presenta ripetutamente una sfida a chi fa un'affermazione. Nel caso delle nostre penne, questa sfida è la scelta del mio amico tra l'utilizzo di una o due penne in ogni round. Questo tipo di interattività non è fattibile su una blockchain perché non esiste una parte centrale fidata per impostare le sfide. Invece, uno zk-SNARK utilizza un'approssimazione di un "oracolo casuale" in cui le sfide vengono create in modo deterministico da un codice, ma si comportano a tutti gli effetti come se fossero casuali. Non a caso, questa combinazione di determinismo e imprevedibilità utilizza lo stesso tipo di funzione hash che protegge una blockchain stessa.

Le prove di conoscenza zero sono in circolazione da un po ', ma gli zk-SNARK introducono una serie di innovazioni che le rendono utilizzabili nelle blockchain. Ancora più importante, gli zk-SNARK riducono la dimensione delle prove e lo sforzo computazionale richiesto per verificarle. Zerocoin, un precedente tentativo di utilizzare prove a conoscenza zero in blockchain, richiede transazioni di 45 kb, ciascuna delle quali impiega mezzo secondo per controllare (cifre prese dal white paper su cui si basa Zcash). Questo è drasticamente peggiore del bitcoin, le cui transazioni sono in genere di 0.3 kb e possono essere verificate in meno di un millisecondo. Al contrario, le transazioni Zcash pesano 1kb e possono essere archiviate in meno di 6 millisecondi. Questo mette Zcash nella stessa lega di scalabilità del bitcoin: un risultato notevole. Se ci siamo tolti di cappello al creatore (i) di bitcoin, dovremmo toglierci i calzini e le scarpe per questo.

Attenzione consigliata

Prima di convertire tutti i tuoi bitcoin in Zcash, ci sono alcuni avvertimenti da tenere a mente. Innanzitutto, la crittografia di Zcash si basa su un processo di configurazione affidabile, in cui due chiavi pubbliche lunghe derivano da una singola chiave privata generata casualmente. È assolutamente vitale che questa chiave privata venga distrutta, poiché chiunque la possieda può falsificare le prove su cui si basa il sistema. Nel caso di Zcash, la chiave privata è stata creata in una cerimonia elaborata, descritta in dettaglio qui. La cerimonia ha coinvolto diversi personaggi noti del mondo delle criptovalute, ognuno dei quali (ci viene detto) aveva solo una visione parziale della chiave privata. A sua volta, questo significa che Zcash può essere compromesso solo se tutti i partecipanti alla cerimonia sono collusi maliziosamente. Spetta al lettore decidere quanto si sente sicuro al riguardo.

Secondo, anche se è relativamente veloce verificare una transazione Zcash anonima, la creazione di ciascuna di queste transazioni comporta un grave onere computazionale. Secondo il Zcash Speed ​​Center, attualmente sono necessari 48 secondi su un server di fascia alta e oltre 3 GB di memoria. Ciò rende impraticabile effettuare transazioni in modo anonimo da dispositivi mobili e desktop e laptop meno recenti. Zcash aggira parzialmente questa limitazione supportando sia le normali criptovalute visibili (con transazioni veloci) che le "note" anonime (con quelle lente), con un metodo integrato per la conversione tra le due.

Terzo, anche supponendo che la crittografia sottostante sia valida, potrebbero esserci bug in agguato nel codice Zcash che consentono di evocare note anonime dal nulla. Ciò consentirebbe di gonfiare senza limiti la base monetaria di Zcash, rendendo alla fine inutile la criptovaluta. A differenza delle criptovalute trasparenti come bitcoin, questo evento catastrofico non può essere rilevato, perché l'intero punto di Zcash sta mantenendo nascoste le transazioni. Tuttavia, secondo Zooko Wilcox, CEO di Zcash, sono già in corso lavori per trovare una soluzione, quindi non vediamo l'ora di vederla.

Infine, come con qualsiasi criptovaluta basata sulla prova di lavoro, rimane il potenziale di attacchi del 51%. Ciò significa che un gruppo di "minatori" con oltre la metà della potenza di calcolo della rete può collaborare per annullare transazioni che tutti gli altri pensavano fossero complete (i cattivi minatori non possono ancora falsificare le transazioni che rubano i fondi degli altri). Zcash fa affidamento in modo intelligente Equihash, un algoritmo di hashing diverso dallo SHA-256 di bitcoin, il che significa che l'enorme massa della potenza di mining di bitcoin esistente non può essere confrontata con Zcash. Equihash è anche progettato per essere più resistente agli "ASIC" (microprocessori per scopi speciali) che hanno trasformato il mining di bitcoin in un oligopolio, ma solo il tempo dirà se gli ingegneri hardware possono trovare una soluzione alternativa ea quale costo.

Blockchain privati ​​a conoscenza zero

Finora, abbiamo concentrato la nostra discussione sulla blockchain e sulla criptovaluta Zcash pubbliche. Ma che dire delle risorse esterne che si spostano su blockchain privati ​​o autorizzati e registri condivisi? È possibile utilizzare le stesse tecniche di conoscenza zero?

A livello tecnico, la risposta è senza dubbio sì. Rispetto al tour de force teorico e tecnologico alla base di Zcash, è banale estendere il protocollo per supportare le risorse emesse su una catena. Tutto ciò che serve è estendere le condizioni dimostrate da uno zk-SNARK per imporre la conservazione di più risorse, invece di una singola criptovaluta. O ancora più semplicemente, crea più sottosistemi anonimi distinti su una singola blockchain, ognuno dei quali rappresenta un diverso tipo di risorsa, ed effettua transazioni all'interno di ciascun sottosistema esattamente come fa Zcash oggi. Questo secondo metodo non richiederebbe alcuna comprensione degli zk-SNARK.

Come sarebbe il ciclo di vita di un asset in questo modello? Innanzitutto, un'entità fidata emette token che rappresentano l'asset, inviando una transazione blockchain visibile che certifica il valore di tali token. La stessa entità eseguirà quindi una seconda transazione che converte i token visibili in "note" anonime in stile Zcash, spostando di fatto l'asset sottoterra. Queste note possono quindi essere trasferite segretamente dall'emittente ad altri e poi tra i partecipanti della catena. Come con Zcash, le transazioni di trasferimento possono essere verificate come valide da tutti i partecipanti alla blockchain senza rivelarne il contenuto. Infine, quando un detentore desidera riscattare una nota, la riconverte in token visibili utilizzando un'altra transazione in stile Zcash, inviano tali token all'emittente originale e ricevono in cambio l'equivalente asset del mondo reale. Potremmo anche consentire il riscatto diretto delle note in modo anonimo, nel qual caso i partecipanti alla blockchain non saprebbero quanta parte dell'asset rimane in circolazione.

Quindi le transazioni a conoscenza zero promettono di sciogliere il nodo gordiano che ha impedito l'utilizzo di blockchain per il regolamento nel settore finanziario. Per ricapitolare, in una normale transazione blockchain, quando un asset viene inviato da una banca all'altra, i dettagli di quella transazione sono visibili a tutte le altre banche della catena. Al contrario, in una transazione a conoscenza zero, gli altri sanno solo che è avvenuta una transazione valida, ma nulla sul mittente, destinatario, classe di attività (se siamo intelligenti) e quantità. Anche il volume delle transazioni può essere offuscato dai partecipanti che creano regolarmente transazioni false in cui inviano risorse a se stessi.

In termini di privacy, questo è buono come un lingotto d'oro che viaggia in una valigetta da una banca all'altra, ma senza il costo e il tempo di spostare fisicamente l'oro. Ed è meglio che usare un intermediario fidato come una banca depositaria, perché non c'è nemmeno quella singola parte che vede tutto ciò che accade. Per la prima volta, i blockchain zero knowledge consentono di eseguire digitalmente i trasferimenti di risorse su base peer-to-peer, in perfetta segretezza.

Non buttare via quel database (ancora)

Supponendo che i fondamenti tecnici di Zcash siano solidi, mi aspetto che raggiunga il livello più alto delle criptovalute in termini di interesse degli sviluppatori e capitalizzazione di mercato. Ma esiste un futuro altrettanto brillante per le transazioni a conoscenza zero in un bagno blockchain? Faranno la transizione dal laboratorio ai sistemi di qualità della produzione spostando denaro reale in tutto il mondo?

Ovviamente è troppo presto per dirlo. Ma ci sono una serie di domande a cui è necessario rispondere prima che i sostenitori della blockchain autorizzati possano puntare a zero transazioni di conoscenza e dichiarare trionfante la vittoria.

Primo, e soprattutto, è sicuro? Possiamo davvero essere certi che sia la crittografia sottostante che le sue implementazioni codificate siano abbastanza forti da impedire a un malintenzionato di generare risorse dal nulla? Come accennato in precedenza, a differenza delle blockchain trasparenti, non è ancora possibile rilevare se la base monetaria di una blockchain a conoscenza zero sia stata compromessa. Tuttavia, non esiste un test più sicuro di questa tecnologia che rilasciarla come una blockchain pubblica aperta che è disponibile per tutti la vista e l'attacco, e questo è esattamente ciò che sta facendo Zcash. Dopo diversi anni passati a vedere Zcash funzionare senza intoppi, le istituzioni potrebbero convincersi che i blockchain a conoscenza zero possono davvero salvaguardare le loro risorse. Come per tutte le questioni blockchain, è richiesta pazienza.

Un problema correlato è la novità della crittografia a conoscenza zero stessa. È vero che le blockchain regolari si basano sulla crittografia avanzata, ovvero sulla crittografia asimmetrica (chiavi pubbliche / private) e sulle funzioni hash crittografiche (impronte digitali). Ed è anche vero che la grande maggioranza dei programmatori blockchain e degli sviluppatori di applicazioni non comprende i principi matematici alla base di queste tecniche. Ma il punto più ampio è questo: se trattati come scatole nere, questi metodi sono stati ampiamente utilizzati per decenni, da un numero enorme di sviluppatori e utenti (sentito parlare di https?) E tutti credono che funzionino. Al contrario, fino a tempi recenti le prove di conoscenza zero erano note solo a una piccola comunità di accademici e non avevano ampie applicazioni su Internet o altrove. Possiamo aspettarci che questa oscurità riduca la volontà del CIO o del responsabile del rischio di una banca di spostare i propri processi di base su blockchain a conoscenza zero, almeno per i prossimi cinque anni. E non iniziamo nemmeno a immaginare quanto tempo impiegheranno i regolatori per prendere confidenza con gli asset che si muovono in questo modo.

Parlare di regolamentazione solleva un altro problema pratico con blockchain a conoscenza zero. Le transazioni anonime in una blockchain contengono dichiarazioni riguardanti i trasferimenti di asset e la proprietà, ma tali dichiarazioni sono visibili solo a parti selezionate (ovvero quelle direttamente coinvolte). Anche se diamo a un regolatore piena visibilità su una blockchain a conoscenza zero e sulle identità dei suoi partecipanti, non ha modo di sapere cosa sta realmente accadendo all'interno. Ovviamente, il regolatore potrebbe chiedere a tutti i partecipanti di identificare e rivelare le loro transazioni, e possono farlo in modo efficiente utilizzando "chiavi di visualizzazione" in stile Zcash. Tuttavia, se le parti di una determinata transazione vogliono mantenerla segreta, il regolatore è bloccato e non sa a chi multare. Non esiste una banca depositaria dalla quale ottenere il quadro completo e l'unica opzione per l'esecuzione è chiudere l'intera catena.

Allora qual è la linea di fondo? Almeno per ora, suggerisco semplicemente di seguire l'andamento della blockchain pubblica di Zcash, per vedere come si sviluppa e cresce. Se la storia di Ethereum si ripete, ci saranno sorprese e vulnerabilità in agguato sotto la superficie, in attesa di essere sfruttate da avidi opportunisti. Tuttavia, a lungo termine, non commettere errori: le transazioni a conoscenza zero sono una svolta rivoluzionaria per le blockchain. Se i principi crittografici sottostanti si dimostrano validi, aspettati che ampliano in modo significativo la gamma di casi d'uso a cui possono essere applicate le blockchain.

Si prega di inviare eventuali commenti LinkedIn.

Timestamp:

Di più da più giri