Nulto znanje je moć: ZK-SNARK-ovi i ZK-STARK-ovi

Nulto znanje je moć: ZK-SNARK-ovi i ZK-STARK-ovi

Ukoliko ste čitali prvi deo triptiha o Zero-knowledge protokolima, dobili ste osnovnoškolski, ali dovoljno supstancijalan prikaz ozbiljne i složene teme. Ukoliko niste, preporuka da to ipak uradite jer se ovaj tekst nadovezuje na prethodni.

Sada je vreme da se stvari malo zakomplikuju. Da napravim koktel Ajnštajnovog čuvenog citata i Okamove oštrice: objašnjenja treba da budu što jednostavnija, ali ne jednostavnija nego što treba da budu.

Kao što je rečeno u prvom delu, Zero-knowledge protokoli pružaju mogućnost da dokažemo određenu tvrdnju bez otkrivanja bilo kakvih informacija koji se tiču same tvrdnje. Ovu definiciju smo slikoviti predstavili na primeru Ali Babine pećine.

Međutim, postavlja se pitanje šta čini mehanizam ovakvog sistema?

U slučaju interaktivnih protokola, u pitanju su tri komponente: svedok, izazov i odgovor. Njihova uloga će biti jasnija kroz nekoliko koraka interakcije između dokazivača i verifikatora.

Korak 1:

Dokazivač: Izabraću put A ili put B da dođem do magičnih vrata.

Korak 2:

Verifikator: Ok, Vrati se putem A (izazov)

Korak 3:

Dokazivač se vraća putem A (svedok)

Korak 4:

Verifikator utvrđuje da se dokazivač vratio traženim putem (odgovor)

Korak 5:

Verifikator: Ok, šanse su bile pola-pola, idemo novi krug.

Korak 6:

Dokazivač: Izabraću put A ili put B da dođem do magičnih vrata.

I tako dalje, sve dok dokazivač “dovoljan broj puta” dokaže da zna tajnu informaciju.

Uopšteno, svedok predstavlja tajnu informaciju koja ima ulogu posrednika između dokazivača i verifikatora, tj ona svedoči validnosti iskaza. Na osnovu pretpostavke da dokazivač zna tu tajnu informaciju, uspostavlja se set pitanja na koje je moguće odgovoriti samo poznavanjem tajne informacije.

Dokazivač, potom, nasumično bira pitanje i šalje odgovore verifikatoru.

Sledeća komponenta je izazov. Sada verifikator nasumično bira pitanje i upućuje ga dokazivaču.

Poslednja komponenta interaktivnog ZK sistema je odgovor. Dokazivač odgovara na pitanje a verifikator utvrđuje da li je odgovor tačan.

Kako bi smanjio mogućnost slučajnog pogotka od strane dokazivača, verifikator postavlja dodatna pitanja, iterirajući sve dok verovatnoća slučajnih pogodaka ne postane zanemarljiva. Takođe, samo jedan pogrešan odgovor automatski eliminiše mogućnost da dokazivač zna tajnu informaciju.

U prvom delu teksta je istaknuto da je interaktivni model deo pionirskog doba ZK protokola. Slanje informacija napred-nazad, potreba za aktivnim učešćem validatora i nemogućnost istovremene eksterne validacije zahtevale su da skupe i složene hardverske sisteme, stoga je bilo potrebno unaprediti ZK protokole kako bi bili isplativiji, ali i jednostavniji.

Gde su stali interaktivni protokoli, nastavili su neinteraktivni koji su, uvođenjem “zajedničkog ključa”, eliminisali potrebu za aktivnim učešćem verifikatora i omogućili nezavisnu validaciju od strane više učesnika.

Kada govorimo o konkretnoj primeni neinteraktivnih ZK protokola na blokčejn, razlikujemo dva tipa: ZK-SNARK i ZK-STARK.

ZK-SNARK-ovi

“ZK-SNARK-ovi su moćna tehnologija. Ono što su transformatori za AI, to ZK-SNARK-ovi mogu postati za kriptografiju — tehnologija opšte namene toliko snažna da omogući nastanak čitave gomile tehnički specifičnih primena za razne probleme iz poslednjih desetak godina.”

Vitalik

ZK-SNARK predstavlja skraćenicu za Zero-Knowledge Succinct Non-Interactive Argument of Knowledge. Nastanak ove varijante dokazivanja na osnovu nultog znanja veže se za naučni rad objavljen 2012. godine. U njemu su autori predstavili  tehnologiju koja svoju bezbednost temelji na eliptičkim krivama. Uključujući kompletnost i robusnost, glavne karakteristike ZK-SNARK-a su i:

Zero-knowledge kao smo već ranije definisali, znači da verifikator ne može da sazna ništa drugo osim validnosti iskaza

Non-interactive je karakteristika koja ukazuje na to da se ova vrsta protokola zasniva na direktnom dokazivanju.

Succinct, tj sažetost, označava da je zero-knowledge dokaz manji od “svedoka” i da se može brzo verifikovati.

Argument je osobenost koja ukazuje na robusnost dokaza, tako da je varanje gotovo nemoguće.

(Of) KnowledgeZero-knowledge dokaz ne može biti konstruisan bez pristupa tajnoj informaciji a.k.a “svedoku”, tj potreban je privatni input da se dokaže tvrdnja.

Zajednički ključ koji smo pomenuli ranije predstavlja javne parametre (CRS — common reference string) za koje su i dokazivač i verifikator složili da koriste za generisanje i verifikovanje.

Matematički gledano:

f(x, w) = True/False

gde je:

x — javni parametar

w — privatni parametar

Dakle, koristeći ZK-SNARK protokol, dokazivač može da dokaže da zna w, takvo da je funkcija f(x, w) tačna za određeno x i f.

Što se konkretnih primena ZK-SNARK-ova tiče, na njih ćemo se fokusirati u narednom tekstu, a sada ćemo samo pomenuti benefite.

Očekivano, privatnost je kao i za čitav koncept ZK protokola na prvom mestu. Mogućnost da, na primer, možemo da dokažemo da posedujemo određenu količinu kripta bez javnog obelodanjivanja podataka na blokčejnu je ideja na kojoj je nastao protokol Zerocash.

Ostali benefiti koje SNARK-ovi obezbeđuje blokčejn tehnologiji se tiču tri dodatna  aspekta:

1. ZK SNARK-ovi imaju brz protok, što je korisno za blokčejnove kojima je skalabilnost mana.

2. Veličina dokaza je mala što omogućava brzu verifikaciju i male količine utrošenog gasa prilikom on-chain transakcija

3. ZK-SNARK-ovi su generalno bezbedniji od drugih off-chain rešenja budući da koriste savremene kriptografske sigurnosne mehanizme.

Kao i bilo koja druga tehnologija, ZK-SNARK-ovi imaju svoje nedostatke. Generisanje javnih parametara je jedan od njih.

ZK-SNARK algoritam počiva na pretpostavci “first knowledge of exponent assumption (KEA1)” koja kaže da ako transakcija generiše izlaznu vrednost, ona mora biti tačna. U slučaju blokčejna to bi značilo da ako neko uspe da “krekuje” KEA1 imao bi neograničenu mogućnost da, recimo, kreira tokene i double-spending, a da to niko ne primeti.

Iako se ovaj hak do sada nije desio, obazrivost mora da bude na visokom nivou uzevši u obzir količinu novca koja cirkuliše protokolima. Jedan od načina da se smanje rizici prilikom generisanja javnih parametara je primena bezbednosne kriptografske metode pod nazivom multi-party computation.

Princip funkcionisanja je takav da sve strane koje učestvuju u trusted setup ceremoniji nasumično genergenerišu i enkriptuju vrednosti i pridodaju ih CRS-u. Budući da je ovaj sistem baziran na poverenju, sa sigurnošću se mora znati da je barem jedan učesnik iskren. Nakon finalnog generisanja parametara, inicijalne ulazne vrednosti svih učesnika se uništavaju kako bi se sprečila zloupotreba.

Ovakve ceremonije su prilično prisutne u blokčejn svetu. Aleo, specijalizovani blokčejn koji se u potpunosti zasniva na ZK tehnologiji je sproveo ceremoniju u kojoj je učestvovalo preko 2000 učesnika.

Treba reći da se ZK tehnologija ovim nije zaustavila u razvoju. Razlog: trusted setup je kamenčić u cipeli. A dokle god postoji ljudski faktor, prevare su moguće. Zbog toga su nastali ZK-STARK-ovi.

ZK-STARK-ovi

Druga varijanta neinteraktivnih Zero-knowledge dokaza je ZK-STARK, što predstavlja akronim za Zero-Knowledge Scalable Transparent Argument of Knowledge. Ovaj tip kriptografskog testiranja je prilično novijeg datuma, tačnije prvi put je definisan u naučnom radu iz 2018 (Sasson, Bentov, Horesh, Riabzev). Princip je vrlo sličan kao i kod ZK-SNARK uz dve jasne razlike.

ZK-STARK-ovi su:

Scalable — što znači brži su u generisanju i verifikaciji dokaza kada je veličina “svedok” veća.

Transparent — ne zasnivaju se na poverenju (ne zahtevaju trusted setup) već na javno proverivoj slučajnosti prilikom generisanja parametara.

ZK-STARK-ovi unapređuju bezbednost u odnosu na svoje prethodnike koristeći kriptografsku funkciju za sažimanje, otpornu na sudare (collision-resistant hash function). Glavna osobina ove heš funkcije je da je računarski neizvodljivo pronaći dve sudarajuće ulazne vrednosti. Takav pristup omogućava ZK-STARK protokolima da budu imuni i na opasnosti koje mogu nastati usled napada putem kvantnog računarstva.

Drugi značajan benefit koji donosi STARK tehnologija je mogućnost da se računarske operacije izvrše off-chain pa da se repostuju na glavni lanac. U prevodu, STARK protokoli su skalabilni.

Ova tehnologija je našla primenu kreiranjem L2 rešenja koja omogućavaju da se validacija transakcija obavlja izvan permissionless blokčejna, pritom ne ugrožavajući njegovu decentralizaciju i bezbednost. Prvi takav primer je StarkNet iz 2018. a sličnim primerima ćemo se detaljnije baviti u trećem delu serijala.

ZK-SNARK vs. ZK-STARK, šta je bolje?

Iako su STARK-ovi tehnologija koja se pojavila da reši manjkavosti prethodne iteracije ZK protokola (trusted setup i skalabilnost), ona ima i određene slabosti u odnosu na ZK-SNARK-ove. Pre svega, ZK-STARK-ovi generišu u proseku 10 do 100 puta veće dokaze u odnosu na SNARK-ove što u većini slučajeva znači duži proces verifikacije, što opet povlači više utrošenog gasa.

Posmatrano iz developerske perspektive, ZK-STARK-ovi su izrazito mlada tehnologija i još uvek nedovoljno usvojena. Nasuprot njima, ekosistem ZK-SNARK-ova je obimniji, tj. trenutno se više projekata zasniva na njima. Ipak, bitno je napomenuti da Ethereum fondacija finansijski podržava razvoj ZK-STARK-ova.

Samim tim odgovor na pitanje iz podnaslova je i suvišan jer niko sa sigurnošću ne može da tvrdi koja će konkretna tehnologija u budućnosti proizvesti kvalitetnijih rešenja. Ono što je sigurno, budućnost ZK protokola deluje obećavajuće.

U trećem delu teksta o Zero-knowledge dokazima pozabavićemo se njihovim konkretnijim primenama u Web3 okruženju.