Kako deci da objasnim Zero-knowledge proof?
Kucajte 2657*.
Kartica mi se razmagnetisala pa beskontaktno plaćanje ne radi. Apotekarka ne može da provuče POS uređaj kroz šalterski prorez; kabl se zamotao i prekratak je. Novac nisam ni poneo. Na kraju joj pružam karticu i kažem pomenuti broj* (koji nije pravi za potrebu ovog teksta).
Super, sad imam probiotik koji će izbalansirati moje bakteriološko stanje. Ali imam i problem. Naglas sam izrekao lični podatak. Hm...
Pored apotekarke tu je i starija gospođa koja vadi poduži spisak sa lekovima i suplementima. A tu je i lik koji je klonuo duhom jer će gospođa pazariti narednih pola sata. Ipak, deluje da nikog od prisutnih ne zanima moj PIN.
A šta ipak ako...?
Paranoja je neizbežna, ali na kraju dana, većina nas funkcioniše otprilike ovako:
Zapanjujuća je količina osetljivih informacija koje rutinski poveravamo nepoznatim licima i sistemima. Ako želimo da uđemo u bilo koju poslovnu zgradu na sastanak, ostavićemo ličnu kartu nepoznatim radnicima na ulazu. Za bilo kakvu online transakciju, obavezno dajemo email, broj telefona, fiksni, adresu, krvnu grupu. Šta god da traže.
Sa kompleksnijim procedurama, stvari postaju, pa… kompleksnije, a žetva ličnih podataka sve plodnija.
Ako hoćemo premijum životno osiguranje, dozvolićemo potpunim strancima da kopaju po istoriji naših bolesti kako bi procenili sklonost infarktu miokarda i nastanku gihta. Ako nam treba kredit za stan, pola banke će znati koliko zarađujemo, gde i šta radimo, koliko imamo do penzije, ko će otplatiti kredit ako umremo, čime vam se bavi naš supružnik, da li i koliko imamo dece, itd.
Primera iz prakse je prilično, a mogućnosti za manipulaciju isto toliko: kompromitovani mejlovi, krađe identiteta, protivpravno prisvajanje milijardi dolara sa računa i kreditnih kartica i slični katastrofični scenariji. Na nivou kompanija nema razlika. Kako bi uspešno poslovale i sarađivale, prinuđene su da razmenjuju poverljive informacije, što neretko rezultira prevarama i ogromnim novčanim gubicima.
Promena paradigme privatnosti
Da li je utopijski verovati da se može funkcionisati bez nudističkog pristupa ličnim informacijama?
Da se nadovežemo na pomenute primere, da li nekako možemo da dokažemo da ispunjavamo standarde banke za kredit, a da njeni službenici zapravo ne saznaju ništa o nama? Da li možemo da se logujemo na neki sajt a da ne ukucavamo šifru, broj telefona ili otisak prsta? Ili da dobijemo životno osiguranje a da baš niko iz osiguravajuće kuće ne sazna našu zdravstvenu sliku?
Na prvi pogled to je kontra intuitivno. Ali samo zato jer nismo naučeni da je moguće drugačije.
Međutim, Zero-knowledge proof (ZK proof) kaže da je drugačije ipak moguće.
ZK proof, ZK protokol ili na srpskom “dokaz nultog znanja” nije novotarija. Koreni ove tehnologije sežu gotovo četiri decenije unazad. Preciznije, istorija počinje 1985 kada su dvoje kompjuterskih naučika (Goldwasser, Micali) i jedan kriptograf (Rackoff) predali prvu varijantu naučnog rada pod nazivom The Knowledge Complexity of Interactive Proof Systems. Oni su definisali interaktivni sistem dokaza koji ne prenosi nikakva druga znanja (informacije) osim ispravnosti određene tvrdnje. Drugim rečima, ZK protokol predstavlja način da dokažete da ste vlasnik nečega, da znate nešto ili ste uradili nešto a da ne otkrijete šta je to nešto. Prilično kul ideja.
ZK kriptografski sistem čine dve elementa:
- dokazivač koji dokazuje određenu informaciju i
- verifikator koji utvrđuje validnost dokaza
Generalno se smatra da se dokazivaču ne može verovati, a verifikatoru može. Glavne karakteristike sistema su:
Kompletnost — Ako je iskaz tačan i obe strane (dokazivač i verifikator) su iskrene, verifikator će biti uveren bez ikakvih dodatnih informacija.
Solidnost/robusnost — Ako je iskaz lažan, dokazivač nije u mogućnosti da prevari verifikatora, tj. Zero-knowledge protokol nije u mogućnosti da izbaci “tačno” kao izlaznu veličinu.
Nulto znanje — Verifikator ne može da sazna ništa drugo osim validnosti iskaza (tačno/netačno).
U pojednostavljenoj praksi to može da izgleda ovako:
Odem u banku po kredit i kažem “ispunjavam uslove za kredit za stan, dajte mi jedan komad, molim vas”. Službenik banke ne proverava gde i za koga radim, koliko sam star, da li je firma za koju radim na crnoj listi i slično, već isključivo utvrđuje istinistost mog iskaza na osnovu kog dobijam kredit ili ne.
Ali kako on to, zapravo, radi?
Matematika i logika na kojima se temelje Zero-kowledge kriptografski protokoli su izrazito složene pa će ovde biti u potpunosti izostavljene. Zainteresovani svakako mogu pročitati originalni rad. Za potrebe ovog teksta, iskoristićemo nekoliko slikovitih primera kako bismo što jasnije predstavili ZK ideju.
Sezame, otvori se!
Sećate se Ali Babe i njegove pećine? I još bitnije magičnih vrata pećine koja su se otvarala samo uz pomoć tačne lozinke? E pa, ovaj primer se najčešće koristi kao alegorija kojom se objašnjavaju ZK protokoli.
Recimo da Ana želi da, iz bilo kog razloga, dokaže Bobanu kako zna tajnu lozinku za prolaz kroz magična vrata pećine. Međutim Ana nije poverljiva osoba i ne želi da Bobanu kaže lozinku. Kako bi razrešili problem, njih dvoje uspostavljaju set pravila kojim će utvrditi da Ana zna ispravnu lozinku.
Pretpostavimo da je pećina orijentisana tako da ima jedan zajednički ulaz/izlaz. Uz to, pećina je prstenastog oblika i magična vrata su barijera postavljena u delu prstena nasuprot ulazu (videti na slici). Međutim, pretpostavimo i da su magična vrata polupropustljiva, tj. funkcionišu tako da se uz ispravnu lozinku mogu otvoriti samo iz jednog smera.
Budući da se po prstenu tj. kružnici može kretati u dva smera, Ana i Boban se dogovoraju da na ulazu pećine označe smerove A i B kojim se može kretati pećinom ka magičnim vratima. Ana može da bira kojim će smerom iči ka vratima, a Bobanu nije dozvoljeno da to vidi. Kada Ana dođe do vrata, Boban joj saopšti kojim smerom mora da se vrati.
Ovde se dešava "magija". Ukoliko Ana zna lozinku, sigurno će moći da se vrati zadatim smerom. U suprotnom, ima 50 posto šanse da Boban izabere smer kojim je otišla ka vratima, pa kroz njih ne mora ni da prolazi.
Iz tog razloga, test se ponavlja kako bi smanjio efekat sreće. Posle drugog puta, verovatnoća greške je 25%. Posle tri 12,5%. I tako dalje. Već nakon deset uspešnih ponavljanja šanse da Ana ne zna šifru su gotovo manje od jednog promila. Posle dvadeset su beznačajne.
Inače, originalna verzija ovog primera, znatno bajkovitija i sofisticiranija, objavljena je pod naslovom “Kako da objasnite Zero-knowledge protokole svojoj deci.”
A načina da se objasne ZK protokoli je prilično. Evo još jednog.
Ana je daltonista, Boban nije. Ipak, Ana nije baš ubeđena u Bobanovu iskrenost. Kako to da utvrdi budući da ni sama ne vidi boje?
Boban: Ok, hajde na primer da uzmemo dve lopte. Identične su po svim parametrima, osim što je jedna crvena, druga je zelena.
Ana: Ne verujem ti. Meni izgledaju potpuno isto.
Boban: Dokazaću ti. Uzmi po jednu u svaku ruku i skloni ih iza leđa da ne mogu da ih vidim.
Ana: Hm…’ajd.
Boban: Sad mi pokaži mi jednu i ja ću ti reći koje je boje…. Ok, to je crvena. Sad je vrati nazad iza leđa.
Ana: Dobro, i?
Boban: Imaš dve opcije. Prva — zameni mesta loptama, tj prebaci ih iz ruke u ruku. Druga — sve ostaje kako jeste. Kad mi ponovo pokažeš loptu, ja ću ti reći da li si promenila ruku ili ne. Prosto.
Ana: Evo. Jesam li ih promenila?
Boban: Nisi.
Ana: Tačno, ali možda si lupio.
Boban: Možda. Ajmo još neki krug.
I tako dok ne postane jasno da li je Boban imao sreće ili stvarno može da razlikuje boje.
Neinteraktivni ZK protokoli
Oba navedena primera spadaju u interaktivne ZK protokole, tj one koje iziskuju aktivno učešće validatora. Iako revolucionarna ideja, usled kompleksnosti, učešća validatora i iterativnosti kao potkrepi verodostojnosti, ovaj model se ipak pokazao ograničenim. Uzmimo samo na primer da je u pitanju jedna blokčejn transakcija umesto primera sa loptama i jasno je koliko bi takav proces bio nefunkcionalan.
Dodatnu manjkavost nosi i činjenica da, i u slučaju kada je validator uveren u ispravnost dokazivačeve tvrdnje, nju nije moguće verifikovati nezavisno. Tj. ponovno dokazivanje iziskuje novi set pitanja između dokazivača i validatora.
Kako bi se taj problem izbegao, naučnici sa MIT-a (Micali, Blum i Fieldman) su u naučnom radu predložili unapređenu verziju ZK protokola. Ona je u potpunosti lišena interaktivnosti i iteracija, i funkcioniše tako da dokazivač i verifikator imaju neku vrstu zajedničkog ključa kojim se u jednom pokušaju dokazuje tvrdnja. Takođe, verifikovana tvrdnja je, uz pristup tom ključu, dostupna i drugim nezavisnim validatorima.
Kao ilustracija ove metode koristi se poznata dečja igra/slagalica Gde je Gile?
Cilj igre: pronaći Gileta u papazjaniji minijaturnih Gile-olikih likova.
Takmičari: Veliki ljudi koji znaju kako izgleda Gile, ali nemaju pojma gde je. Među njima je i Ana.
Ana otkrije gde se nalazi Gile i to želi da dokaže, ali tako da nikom drugom ne otkrije njegovu poziciju. Recimo da je nagrada veća ako niko drugi ne pronađe Gileta za određeno vreme. Kako će ona to da uradi?
Ana uzima veliko parče papira i pravi prorez dovoljan da se kroz njega uoči minijaturna figura sa slike. Potom prekrije sliku centrirajući Gileta tačno na prorez. Svima je jasno da je to zaista Gile, međutim nikom nije otkrivena informacija gde je on zaista kada Ana na kraju skloni papir.
Vremenom su se izrodili brojni načini da se kompleksnost ZK protokola približi običnom čoveku. Na primeru popularne igre sudoku nije teško doći do aha! momenta. Takođe Wired je napravio video u kom jedan kompjuterski naučnik objašnjava ovaj koncept na pet različitih nivoa težine, u rangu od deteta od 10 godina pa sve do univerzitetskog profesora.
Druga mladost velike ideje
Kao što je pomenuto, dokazivanje po principima nultog znanja nije savremena tehnologija. Međutim, ona je decenijama tavorila na rubovima akademske zajednice i kriptografske niše, tek sa naznakama nekih konkretnih primena u životima običnih ljudi početkom ovog veka.
Ipak, poslednjih nekoliko godina došlo je do ozbiljne ekspanzije ZK protokola, te promišljanja i unapređivanja inicijalne ideje. Razlog? Web3 i blokčejn. Spoj blokčejna i ZK koncepta se ispostavio nekako prirodan sled događaja budući da su za obe tehnologije privatnost i bezbednost od esencijalnog značaja. Može se reći da je blokčejn postao igralište koje je ZK čekao skoro 40 godina da pokaže svoju svestranost. Ili kripto rečnikom, ljudi su trenutno baš bullish kada je u pitanju ZKP.
Ovaj tekst predstavlja samo uvod u temeljnu priču o ZK protokolima i njihovoj primeni. U drugom delu trilogije fokusiraćemo se više na tehnički aspekt ZK protokola, saznaćemo šta se nalazi u njegovoj crnoj kutiji i koje su njegove varijante, osobenosti i nedostaci. Finalni tekst će nam otkriti šta konkretno ova tehnologija pruža već sada, a čemu se možemo nadati u bliskoj budućnosti.