Mikä on zkSNARKs: Spooky Moon Math. Ethereumin siirtyessä Metropolis-vaiheeseen se aikoo tehdä useita muutoksia, jotka tekevät siitä abstraktiota ja yksityisyyttä ystävällisempää. Yksi näistä muutoksista on “Zero-Knowledge Supccinct Non-Interactive Argument of Knowledge” eli Zk-Snarks. Zk-Snarks ajaa ajatusta nollasta tiedon todistamisesta.

Tässä artikkelissa käymme läpi ajatuksen nollasta tiedon todistamisesta ja sen soveltamisesta blockchain-tekniikassa.

Mitä ovat zkSNARKit: Spooky Moon Math

Zero Knowledge todisteet syntyivät 1980-luvulla MIT-tutkijoiden työn ansiosta Shafi Goldwasser, Silvio Micali ja Charles Rackoff. He työskentelivät vuorovaikutteisten todistusjärjestelmiin liittyvien ongelmien parissa, jossa Prover vaihtaa viestejä todentajan kanssa (tarkemmin todistajien ja todentajien kanssa myöhemmin) saadakseen heidät vakuuttamaan, että heillä on tieto tietystä todisteesta ilmoittamatta mitä tieto on.

Ennen kuin he tekivät merkittävän löydöksensä, useimmat todistejärjestelmät perustuivat todistejärjestelmän “vakaus” -ominaisuuksiin. Aina oletettiin, että “sananlaskija” voi olla haitallinen kaikissa tilanteissa, joissa he yrittävät huijata todentajaa. Nämä kolme tutkijaa käänsivät ajatuksen päähän kyseenalaistamalla todentajan moraalin sananlaskun sijaan. Heidän kysymyksensä oli, kuinka kukaan voi tietää varmasti, että todentaja ei vuoda tietoa, ja herätti myös huoli siitä, kuinka paljon tietoa sananlaskijasta todentaja saa tietää todentamisprosessin aikana.

Tällä hämmennyksellä on useita tosielämän seurauksia, ja yksi tunnetuimmista niistä liittyy salasanasuojaukseen. Oletetaan, että haluat kirjautua verkkosivustolle salasanalla. Vakioprotokolla on, että asiakas (sinä) kirjoitat salasanansa ja lähetät sen palvelimelle, palvelin hajauttaa sitten salasanan ja rinnastaa sen hashiin, jonka he ovat tallentaneet järjestelmäänsä. Jos arvot vastaavat toisiaan, voit siirtyä järjestelmään.

Näetkö tämän järjestelmän valtavan puutteen oikein? 

Palvelimella on salasanasi selkokielinen versio, ja yksityisyytesi on palvelimen (tämän skenaarion todentajan) armoilla. Jos palvelin vaarantuu tai sitä hyökätään, salasanasi on haitallisen osapuolen kanssa ja seuraukset voivat olla kauheita. Näiden skenaarioiden torjumiseksi nollatiedon todistukset ovat ehdottoman välttämättömiä ja polku murtavat joka suhteessa.

Nollatiedon todistamiseen (kuten edellä todettiin) on kaksi osapuolta, sananlaskija ja todentaja. Nolla tieto kertoo, että sananlaskija voi todistaa todentajalle, että hänellä on tietty tietämys kertomatta heille, mitä tämä tieto todella on

Nollatiedon todisteen ominaisuudet

Jotta ZKP toimisi, sen on täytettävä tietyt parametrit:

  • Täydellisyys: Jos väite on totta, rehellinen sananvarmistaja voi vakuuttaa siitä rehellisen todentajan.
  • Ääni: Jos sananlaskija on epärehellinen, he eivät voi vakuuttaa todentajaa lausunnon oikeellisuudesta valehtelemalla.
  • Nollatieto: Jos lausuma on totta, todentajalla ei ole aavistustakaan, mitä lause todellisuudessa on.

Joten nyt, kun meillä on perusajatus siitä, mikä on nollatiedon todistus, katsotaanpa joitain esimerkkejä siitä, ennen kuin sukellamme syvälle zk-snarkeihin ja sen soveltamiseen blockchainissa.

Tapaus # 1 Alibaban luola

Tässä esimerkissä sananlaskija (P) sanoo todentajalle (V), että he tietävät luolan takana olevan salaisen oven salasanan ja haluavat todistaa sen todentajalle kertomatta tosiasiassa salasanaa..

Joten se näyttää siltä:

Mikä on zkSNARKs: Funny Moon Math

Kuva: Scott Twombly (YouTube-kanava)

Sananlaskija kulkee mitä tahansa polkuja A ja B, oletetaan, että he alun perin päättävät mennä polun A läpi ja saavuttaa takaosan salaisen oven. Kun he tekevät niin, todentaja V tulee sisäänkäynnille tietämättä, mitä polkua sananlaskija todella kulki, ja ilmoittaa haluavansa, että sananlaskija ilmestyy polulta B.

Kuten näette, kaaviossa sananlaskija näkyy todellakin polulla B. Mutta entä jos tämä olisi tyhmää onnea? Entä jos sananlaskija ei tiennyt pääsykoodia ja kulki polkua B, juuttui oven luona ja todellisen omaisuuden takia todentaja käski hänen ilmestyä polulta B, joka oli alun perin joka tapauksessa?

Joten pätevyyden testaamiseksi koe tehdään useita kertoja. Jos sananlaskija voi esiintyä oikealla polulla joka kerta, se todistaa todentajalle, että sananlaskija tietää salasanan, vaikka todentaja ei tiedä mikä salasana on.

Katsotaanpa, kuinka nollatiedon kolme ominaisuutta tyydytetään tässä esimerkissä:

  • Täydellisyys: Koska lausuma oli totta, rehellinen sananlaskija vakuutti rehellisen todentajan.
  • Ääni: Jos sananlaskija oli epärehellinen, he eivät olisi voineet huijata todentajaa, koska testi tehtiin useita kertoja. Lopulta sananlaskun onni oli loppumassa.
  • Nollatieto: Todentaja ei koskaan tiennyt mikä salasana on, mutta oli vakuuttunut siitä, että sananlaskijalla oli se hallussaan.

Tapaus # 2 Waldon löytäminen

Muista löytää Valdo?

Tietenkin teet, sinun on pitänyt nähdä se jonnekin joko tosielämässä tai verkossa. Niille, jotka eivät tiedä, Finding Waldo on peli, jossa sinun täytyy löytää “Waldo” joukosta ihmisiä. Se on yksinkertainen “Spot the guy” -peli. Pelkästään antaa sinulle perusidean, peli näyttää tältä:

Mikä on zkSNARKs: Funny Moon Math

Kuva: Youtube (IntoConnection)

Ja ajatuksena on löytää Waldo, joka näyttää tältä:

Mikä on zkSNARKs: Funny Moon Math

Kuva: Pinterest

Näyttää melko suoralta, eikö? Löydä tämä kaveri muiden ihmisten joukosta, jotka näet pelissä. Ok, niin missä nollatiedon käsite tulee tänne? Kuvittele, että Anna ja Carl ovat kaksi ihmistä. Anna kertoo Carlille tietävänsä missä Wally on, mutta hän ei halua näyttää hänelle missä hän on. Joten miten hän voi osoittaa hänelle löytäneensä Wallyn osoittamatta hänen tarkkaa asemaansa?

Siellä oli mielenkiintoinen Naorin, Naorin ja Reingoldin paperi, joka näyttää kaksi Zero Knowledge -ratkaisua tähän ongelmaan. On olemassa “Mid-Tech Solution” ja “Low-Tech Solution”. Keskustellaan molemmista.

Mid-Tech -ratkaisu

Syy miksi tämä ratkaisu on keskitason tekniikka, johtuu siitä, että sananlaskijamme ja todentajamme tarvitsevat pääsyn valokopiokoneeseen voidakseen toimia. Joten näin se menee. Ensin Anna ja Carl tekivät valokopion alkuperäisestä pelistä. Sitten Anna varmistaa, että Carl ei katso, leikkaa Waldo valokopiosta ja tuhoaa sitten jäännökset. Sen jälkeen hän voi näyttää Waldolle leikatun Carlille ja todistaa tietävänsä missä Waldo oli, ilman että hän olisi tarkasti määrittänyt hänen tarkkaa sijaintiaan Carlille.

Tässä ratkaisussa on ongelmia. Vaikka se täyttää “Zero Knowledge” -kriteerit, se ei täytä “Soundness” -kriteereitä. On monia tapoja, joilla Anna olisi voinut huijata täällä. Hänellä olisi voinut olla satunnainen Waldo leikattu hänen kanssaan alusta alkaen ja hän olisi voinut vain näyttää sen Carlille tietämättä, missä Waldo oli. Joten mikä on ratkaisu tähän?

Ratkaisu tähän on huolellinen ja huolellinen testaus. Ensinnäkin Anna ja Carl ottavat valokopion pelistä. Sitten Carl piirtää erottuvan kuvion valokopion takaosaan. Sen jälkeen Carl vie Annan huoneeseen, jossa hänet erotetaan eikä hänellä ole mitään mahdollisuutta huijata ollenkaan. Jos Anna tulee ulos Waldon kanssa, Carl voi olla vakuuttunut siitä, että hän tiesi, missä Waldo oli, paljastamatta ratkaisua. He voivat toistaa tämän kokeen useita kertoja, ja Carl voi verrata Waldon eri aukkoja ollakseen vielä varmempi Annan väitteen oikeellisuudesta.

Low-Tech-ratkaisu

Tämä ratkaisu vaati hyvin perustarvikkeita. Idea on yksinkertainen. Hanki valtava pahvi, joka on kaksinkertainen pelin kokoon nähden, ja leikkaa siitä pieni suorakulmio. Nyt, kun Carl ei katso, Anna voi siirtää pelin pahvia siten, että suorakulmio on suoraan Valdon päällä. Nyt hän voi kertoa Carlille katsomaan, ja tämän hän näkee:

Mikä on zkSNARKs: Funny Moon Math

Kuva Kohteliaisuus: Naor And Reingoldin soveltama lasten salaus

Joten vaikka Carl voi saada hyvin perustavan kuvan siitä, missä Waldo todella voi olla, hän ei tiedä tarkkaa sijaintia. Anna on täten osoittanut Carlille, että hän tietää missä Waldo on ilman tarkkaa sijaintia.

Tapaus # 3: Sudoku

Toinen suuri nollatiedon sovellus on Sudokussa. Niille, jotka eivät tiedä, Sudoku on japanilainen palapeli, josta saat 9X9-pöydän, joka näyttää tältä:

Mikä on zkSNARKs: Spooky Moon Math

Kuva: Laskennallisen monimutkaisuuden blogi.

Ajatuksena on täyttää jokainen rivi, sarake ja jokainen 3X3-lohko luvuilla 1-9, eikä yksikään numero saa toistaa itseään. Joten yllä olevan palapelin ratkaisu näyttää tältä:

Mikä on zkSNARKs: Spooky Moon Math

Kuva: Laskennallisen monimutkaisuuden blogi.

Kuten näette, jokainen rivi, sarake ja 3X3-lohko ovat ainutlaatuisia, eikä yhtä numeroa ole toistettu. Palataan takaisin vanhojen ystäviemme Annan ja Carlin luokse. Anna on löytänyt ratkaisun Sudoku-palapeliin, ja Carl epäilee, ettei hän usko häntä ja haluaa Annan todistavan tietävänsä ratkaisun. Anna haluaa todistaa rehellisyytensä, mutta samalla ei halua, että Carl tietää palapelin tarkan ratkaisun. Kuinka hän tulee toimeen? Anna aikoo käyttää nollatietoa todistamaan väitteensä oikeellisuuden.

Ensinnäkin, Carl ajaa Sudoku-ratkaisun tarkistetun tietokoneohjelman kautta, ollakseni rehellinen, ja ohjelma ajaa numerot satunnaisesti valitulla korvaussalauksella. Sano, että tämän erityisen ongelman salaus, jonka ohjelma on valinnut, on seuraava:

Mikä on zkSNARKs: Spooky Moon Math

Valittu ohjelma ja salaus ovat sellaiset, että kukin numero on sama mahdollisuus tulla muunnetuksi korvauksekseen kuin millä tahansa muulla numerolla. Pohjimmiltaan 1: llä on yhtä paljon mahdollisuuksia muuntamiseen kuin 3: lla ja 4: llä on yhtä paljon mahdollisuuksia muuntamiseen kuin 9 ja niin edelleen ja niin edelleen. Joten tämän salauksen käyttäminen antaa meille seuraavan ratkaisun yllä olevaan palapeliin:

Mikä on zkSNARKs: Spooky Moon Math

Kuva: Laskennallisen monimutkaisuuden blogi.

Anna saa transmutoidun ratkaisun nyt, pidä mielessä, että Carl ei vieläkään tiedä mikä alkuperäinen ratkaisu oli, eikä hänelläkään ole transmutoitua ratkaisua. Joten Anna tekee nyt, että hän piilottaa kaikki palapelin numerot käyttämällä “lockbox-mekanismia”, pohjimmiltaan Carl ei näe mitään numeroita ja näkee tyhjän 9X9-ruudukon edessään.

Carlilla on nyt edessään 28 vaihtoehtoa:

  • Paljasta rivi.
  • Paljasta sarake.
  • Paljasta 3X3-laatikko.
  • Paljastaa alkuperäisen palapelin transmutoitu versio.

Oletetaan, että Carl haluaa tietää miltä kolmas rivi näyttää:

Mikä on zkSNARKs: Spooky Moon Math

Kuva: Laskennallisen monimutkaisuuden blogi.

Tämän hän näkee. Carl näkee, että jokainen numero rivillä on yksilöllinen ja koska kaikilla alkuperäisen ratkaisun mahdollisilla numeroilla oli sama todennäköisyys transmutoida salaus, Carlilla ei ole aavistustakaan siitä, mikä alkuperäinen ratkaisu on

Oletetaan, että Carl päättää valita viimeisen vaihtoehdon ja haluaa nähdä miltä alkuperäinen palapeli näyttää, kun se muunnetaan:

Mikä on zkSNARKs: Spooky Moon Math

Kuva: Laskennallisen monimutkaisuuden blogi.

Jälleen kerran, koska salaus valittiin satunnaisesti ja kaikilla numeroilla on sama todennäköisyys transmutoida, Carlilla ei ole aavistustakaan, mikä alkuperäinen ratkaisu on. Carl voi nyt käydä läpi kaikki 28 valintaansa ja lopulta hän on tyytyväinen Annan lausunnon pätevyyteen.

Miksi?

Koska, jos Anna todellakin huijasi, ei ole mitään keinoa, että hän olisi löytänyt salakirjoituksen antaa ainutlaatuiset ratkaisut kaikkiin Carlin 28 valintaan. Jos Carl valitsi vain yhden vaihtoehdon, Annan mahdollisuudet päästä huijaamisesta on 27/28. MUTTA jos Carl päätti tehdä satunnaistestin useita kertoja, oletetaan, että hän päättää testata sitä 150 kertaa, Annan valinta huijaamisesta pääsee pudotukseksi (27/28) ^ 150, mikä on < 0,5%.

Katsotaan siis tämän skenaarion nollatiedon ominaisuudet:

  • Täydellisyys: Käytetty salausohjelma on todennettu, rehellisesti sanottuna, ja sekä Anna että Carl seuraavat protokollaa.
  • Ääni: Jos Carl tekee satunnaisia ​​testejä 150 kertaa, Annan mahdollisuudet päästä eroon huijaamisesta ovat < 0,5%.
  • Nollatieto: Annan ei tarvinnut koskaan paljastaa Carlille, mikä oli alkuperäinen ratkaisu.

Todiste vs lausuntotodistus

Nyt kun tiedämme nollatietotodistusten teoreettiset näkökohdat ja sen soveltamisen erilaisissa esimerkeissä, mikä on sen käytännön soveltaminen blockchainissa? Miksi kaikki raivostuvat Zcashista toteutuksen suhteen ZKP (nolla tietotodistusta) ja miksi kaikki ovat innoissaan siitä, että ethereum tekee samoin? Ennen kuin laajennamme sitä, on tärkeää tietää yksi tärkeä teoreettinen käsite.

Mitä todistamme tarkalleen käyttämällä ZKP: tä? Laajassa kirjassa on kaksi lausetta, jotka voit todistaa käyttämällä ZKP: tä. Todisteet eli tosiasiat ja todisteet tiedosta.

  • Todisteet: Nämä ovat universumin sisäisiä totuuksia, jotka haluat ehkä todistaa ZKP: n kautta. Esimerkiksi. “Numero X kuuluu ryhmään Y”.
  • Todistus tietämyksestä: Saatat myös haluta todistaa tietävänsä tietyn idean paljastamatta, mikä kyseinen tieto on. Kuten yllä olevista Sudokun, Waldon ja Alibaban luolan esimerkeistä voidaan nähdä.

On tärkeää huomata ero näiden kahden välillä, koska ne ovat täysin erilaisia. Salausvaluutta-maailmassa keskitymme enimmäkseen “todistamiseen tietämyksestä”. Yksi tärkeimmistä läpimurroista tiedon todistamisessa nollatietotodistuksen avulla tuli, kun Claus-Peter Schnorr 1980-luvulla keksi Schnorr-tunnistamisprotokollan. Tämä protokolla asettaa modernin avaimen allekirjoitussalauksen perusteet ja näyttää, kuinka nollatieto voidaan saumattomasti integroida nykyaikaisiin salauskäytäntöihin.

Schnorr-tunnistusprotokolla

Palataksemme vanhat ystävämme Anna ja Carl takaisin ymmärtämään, mistä Schnorr-tunnistuksessa on kyse. Anna on ilmoittanut maailmalle, että hänellä on julkinen avain ja että hän voi hyväksyä ja vastaanottaa tietoja sen kautta. Aina skeptikko Carl ajattelee Anna valehtelevan. Ainoa tapa, jolla Anna voi todistaa rehellisyytensä, on osoittaa yksityinen avain Carlille, mutta hän ei halua paljastaa yksityistä avainta.

Joten miten Anna paljastaa tietonsa yksityisestä avaimestaan ​​paljastamatta sitä? Tässä tulee sisään Schnorr-protokolla. Ennen kuin alamme edes ymmärtää protokollan toimintaa, sinun on tiedettävä tietyt parametrit:

  • p = mikä tahansa alkuluku.
  • q = kerroin p-1.
  • ”A” siten, että a ^ q = 1 mod p.

Muista nyt, että Schnorr-protokollassa nämä 3 muuttujaa ovat globaaleja. Tarkoittaa, että joku tietää, mitkä nämä 3 muuttujaa tietyssä skenaariossa ovat.

Nyt pääsemme kahden avaimen, salaisen yksityisen avaimen, jota kutsumme “s”, ja julkisen avaimen, jota kutsumme “v”,.

s voi olla mikä tahansa arvo niin kauan kuin 0

v = a ^ -s mod q.

Julkinen avain “v” on globaali ja julkinen tieto sekä p, q ja a. AINOASTI Annalla on kuitenkin tieto siitä, mitä “s” on, koska se on hänen yksityinen avain.

Joten nyt, kun olemme määrittäneet muuttujan, katsotaanpa, kuinka tiedonvaihto ja Annan lausunnon oikeellisuus voivat toimia ILMAN häntä paljastamaan yksityisen avaimen.

Anna allekirjoittaa ja lähettää salatun viestin

Oletetaan, että Anna haluaa lähettää yksityisavaimellaan koodatun viestin Carlille. Kuinka hän tekee sen, jos hän noudattaa Schnorrin protokollaa?

Ensinnäkin hän valitsee satunnaisluvun “r” siten, että 0

Nyt hän laskee arvon x siten, että:

X = a ^ r mod s.

Nyt kun hän on laskenut X: n arvon, hän yhdistää tämän alkuperäiseen viestiin. Mikä on ketjutus? Oletetaan, että meillä on kaksi merkkijonoa “hei” ja “maailma”. Jos yhdistämme nämä kaksi, saamme “hei maailma”. Ketjutus tarkoittaa periaatteessa kahden merkkijonon lisäämistä ja yhden tekemistä.

Joten hän aikoo liittää M: n ja X: n saadakseen M || X: n. ja hän aikoo tallentaa tämän arvon hajautusarvon e.

Periaatteessa e = H (M || X), jossa H () on hash-funktio.

Lopuksi, kun kaikki tämä on tehty, hän tekee lopullisen laskennan. Hän saa arvon “y” siten, että:

y = (r + s * e) mod q

Nyt kun kaikki laskelmat ovat ohi, hän lähettää seuraavat tiedot Carlille:

  • Viesti “M”.
  • Allekirjoitukset e ja y.

Carl vastaanottaa viestin ja tarkistaa Annan todistuksen tietämyksestään

Carl on saanut Annalta seuraavat tiedot: Viesti (M) ja allekirjoitukset (e ja y).

Tämän lisäksi hänellä on seuraavat julkisesti tiedossa olevat tiedot:

  • Annan julkinen avain “v”.
  • Pääluku, jonka Anna valitsi “p”.
  • “Q”, joka on Anna p-1: n tekijä.
  • Ja ”a” niin, että a ^ q = 1 mod p, myös tämä valitsi Anna.

Carlin on nyt laskettava X niin, että:

X ’= a ^ y * v ^ e mod s.

Tehdään nyt yksinkertainen korvaaminen:

Tiedämme, että v = a ^ -s, korvataan se yllä olevassa yhtälössä ja saadaan:

  • X ’= a ^ y * a ^ -se = a ^ (y-s * e).
  • Nyt tiedämme myös, että y = r + s * e.
  • Mikä tarkoittaa: r = y-s * e.

Korvataan tämä arvo yllä olevassa yhtälössä:

  • Saamme: X ’= a ^ r.
  • Kuten olemme jo nähneet edellä: X = a ^ r.
  • Joten teknisesti: X = X ’.

Mutta Carl ei tiedä X: n arvoa, koska hän ei koskaan saanut tätä arvoa. Kaikki, mitä hän sai, ovat seuraavat: Viesti M, allekirjoitukset (e ja y) ja joukko julkisia muuttujia (julkinen avain “v”, p, q ja a).

Hän ei koskaan saanut X-kirjainta, mutta hän tietää, että jos Anna puhuu totuutta, X: n on oltava yhtä suuri kuin X, mutta hän tietää e: n ja viestin M arvon.

Joten hän aikoo ratkaista e: n seuraavasti:

e = H (M || X ’).

Huomaa, että aiemmin ratkaisimme e: lle tekemällä: H (M || X).

Joten tämän logiikan mukaan, jos e: n kaksi arvoa ovat samat, se tarkoittaa X = X ’.

Tämä tarkoittaa myös sitä, että Annalla oli todellakin yksityinen avain koko ajan eikä hän valehtellut.

Suoritetaan siis koko tämä skenaario nollatiedon todistusten kolmen ominaisuuden läpi:

  • Täydellisyys: Carl oli vakuuttunut Annan rehellisyydestä, koska lopussa X = X ’.
  • Ääni: Suunnitelma oli hyvä, koska ainoa tapa, jolla Anna olisi voinut todistaa rehellisyytensä, oli yksityinen avain. Hän ei olisi voinut valehdella yksityisen avaimen saamisesta.
  • Nolla tieto: Carl ei koskaan saanut selville, mikä Annan yksityinen avain oli.

Schnorrin protokolla antaa hyvin reaalimaailman salauksen ilman nollatiedon todisteita.

Kuinka tehdä nollasta tietovarmistuksesta interaktiivinen?

Aikaisemmissa nollatietojen todentamisjärjestelmissä oli yksi iso ongelma. Jotta se toimisi, sananlaskijan ja todentajan oli oltava verkossa samanaikaisesti. Toisin sanoen prosessi oli “vuorovaikutteinen”. Tämä teki koko järjestelmästä tehoton ja melkein mahdotonta laajentaa. Todentajat eivät voineet olla online-tilassa yhtä aikaa kuin todistajat koko ajan? Tämän tehostamiseksi oli oltava järjestelmä.

Vuonna 1986 Fiat ja Shamir keksivät Fiat-Shamir -heuristisen ja muuttivat interaktiivisen nollatiedon todistuksen ei-vuorovaikutteiseksi nolla-tiedon todistukseksi. Tämä auttoi koko protokollatyötä ilman mitään vuorovaikutusta. Menettely sen takana on hyvin yksinkertainen.

Joten, antamaan sinulle esimerkin, näin ennen nollatietotodistusta toimi ennen Fiatia ja Shamiria.

Todistetaan tämä yksinkertaisilla erillisillä logaritmeilla.

  • Anna haluaa todistaa Carlille, että hän tietää arvon x siten, että y = g ^ x perustaksi g.
  • Anna poimii satunnaisarvon v arvojoukosta Z ja laskee t = g ^ v ja lähettää t Carlille.
  • Carl poimii satunnaisen arvon c joukosta Z ja lähettää sen Annalle.
  • Anna laskee r = v-c * x ja palauttaa r Carlille.
  • Carl tarkistaa, onko t = g ^ r * y ^ c voimassa vai ei (koska r = vc * x, y = g ^ x ja yksinkertaisella substituutiolla g ^ (vc * x) * g ^ c * x = g ^ v = t).
  • Carl ei tiedä x: n arvoa, vain tarkistamalla, t = g ^ r * y ^ c, hän voi varmistaa, että Anna todella tietää x: n arvon.

Vaikka yllä oleva vuorovaikutus on nolla-tietoa, ongelmana on, että Annan ja Carlin on oltava verkossa ja vaihdettava arvoja, jotta se toimisi.

Kuinka Anna voi todistaa Carlille, että hänellä on tietoa jostakin ilman, että Carl olisi verkossa? Hän voi tehdä sen käyttämällä yksinkertaista kryptografista hajautusfunktiota, kuten Fiat ja Shamir teorioivat.

Katsotaanpa, kuinka yllä oleva esimerkki toimisi ei-vuorovaikutteisella tavalla:

  • Anna haluaa todistaa Carlille, että hän tietää arvon x siten, että y = g ^ x perustaksi g.
  • Anna poimii satunnaisarvon v arvojoukosta Z ja laskee t = g ^ v.
  • Anna laskee c = H (g, y, t), jossa H () on hash-funktio.
  • Anna laskee r = v – c * x.
  • Carl tai kuka tahansa voi sitten tarkistaa, onko t = g ^ r * y ^ c.

Joten, kuten näette, nolla tiedon todistusta ei tehty interaktiiviseksi. Ja tämä loi perustan Zk-Snarksille.

Mikä on Zk-Snarksin käyttö?

Zk-Snarks on lyhenne sanoista “Zero-Knowledge Supccinct Non-Interactive Argument of Knowledge”. Sen käyttö modernissa blockchain-tekniikassa on valtava. Sen soveltamisen ymmärtämiseksi on tärkeää tietää, miten älykäs sopimus toimii. Älykäs sopimus on pohjimmiltaan varojen talletus, joka aktivoidaan, kun tietty toiminto on suoritettu.

Esimerkiksi. Anna sijoittaa 100 ETH: n älykkääseen sopimukseen, jonka hän solmii Carlin kanssa. Carlin on tehtävä tietty tehtävä, jonka suorittamisen jälkeen Carl saa 100 ETH älykkäästä sopimuksesta.

Tämä vaikeutuu, kun Carlin tehtävät ovat monikerroksisia ja luottamuksellisia. Oletetaan, että olet tehnyt älykkään sopimuksen Annan kanssa. Nyt saat maksun vain, jos teet A, B ja C. Entä jos et halua paljastaa A: n, B: n ja C: n yksityiskohtia, koska ne ovat luottamuksellisia yrityksellesi etkä halua kilpailijoita tietää mitä sinun on tehtävä?

Mitä Zk-Snarks tekee, on se, että se osoittaa, että nuo vaiheet on toteutettu älykkäässä sopimuksessa paljastamatta, mitä nuo asiat todella ovat. On erittäin hyödyllistä suojata sinua ja yrityksesi yksityisyyttä. Se voi vain paljastaa osan prosessista näyttämättä itse koko prosessia ja todistaa, että olet rehellinen vaatimuksistasi.

Kuinka ZkSnarks toimii?

Zk-Snark koostuu kolmesta algoritmista: G, P ja V.

G on avaingeneraattori ottaa syötteen “lambda” (joka on pidettävä luottamuksellisena eikä sitä saa paljastaa missään olosuhteissa) ja ohjelman C. Sen jälkeen se tuottaa kaksi julkisesti saatavilla olevaa avainta, todentavan avaimen pk ja vahvistuksen. avain vk. Nämä avaimet ovat sekä julkisia että kaikkien osapuolten saatavilla.

P on sananlaskija, joka aikoo käyttää 3 kohdetta syötteenä. Todentamisavain pk, satunnaisesti syötetty arvo x, joka on julkisesti saatavilla, ja yksityinen lausunto, jonka he haluavat todistaa tietonsa paljastamatta, mikä se todellisuudessa on. Kutsutaan tätä yksityistä lausumaa “w”: ksi. P-algoritmi tuottaa todisteen prf siten, että: prf = P (pk, x, w).

Todentamisalgoritmi V on palauttanut periaatteessa loogisen muuttujan. Boolen muuttujalla on vain kaksi vaihtoehtoa, se voi olla TOSI tai se voi olla EPÄTOSI. Joten todentaja ottaa sisään vahvistusavaimen, julkisen syötteen x ja proof prf: n, kuten:

V (vk, x, prf)

..ja palauttaa TOSI, jos sananlaskija on oikea ja väärä muuten.

Nyt parametrista lambda. Lambda-arvon on pidettävä luottamuksellisena, koska kuka tahansa voi käyttää sitä väärennettyjen todisteiden tuottamiseen. Nämä väärennetyt todisteet palauttavat TOSI-arvon riippumatta siitä, onko sananlaskijalla todellakin tietoa yksityisilmoituksesta ”w” vai ei.

ZkSnarksin toimivuus

Zk-Snarkin toimivuuden osoittamiseksi aiomme käyttää samaa esimerkkitoimintoa, jota Christian Lundkvist käytti Consensys-artikkelissaan. Näin esimerkkiohjelma näyttää:

toiminto C (x, w)

{

paluu (sha256 (w) == x);

}

Pohjimmiltaan funktio C ottaa kaksi arvoa syötteenä, julkisen hajautusarvon “x” ja salaisen lausunnon, joka on tarkistettava “w”. Jos SHA-256-hash-arvo w on “x”, funktio palauttaa arvon TOSI, muuten se palauttaa EPÄTOSI. (SHA-256 on hash-toiminto, jota käytetään bitcoinissa).

Tuo esimerkki vanhoista ystävistämme Anna ja Carl. Anna on sananlaskija ja skeptikko Carl on todentaja.

Ensimmäinen asia, jonka Carlin todentajan on tehtävä, on luoda todentamis- ja todentamisavain generaattorilla G. Tätä varten Carlin on luotava satunnaisarvo “lambda”. Kuten edellä todettiin, hänen on kuitenkin oltava erittäin varovainen Lambdan suhteen, koska hän ei voi antaa Annalle tietää sen arvosta estää häntä luomasta väärennöksiä.

Joka tapauksessa tämä näyttää tältä:

G (C, lambda) = (pk, vk).

Nyt kun kaksi avainta on luotu, Annan on todistettava lauseen oikeellisuus luomalla todiste. Hän aikoo tuottaa todistuksen käyttämällä todistusalgoritmia P. Hän aikoo todistaa, että hän tietää salaisen arvon “w”, joka hajautuu (jäsennettäessä SHA-256: n kautta) antamaan ulostulo x. Joten todisteen muodostamisen todistava algoritmi näyttää tältä:

prf = P (pk, x, w).

Nyt kun hän on luonut todisteen “prf”, hän antaa arvon Carlille, joka lopulta suorittaa Zk-Snarksin varmennusalgoritmin:

Näin se näyttää:

V (vk, x, prf).

Tässä vk on vahvistusavain ja x on tunnettu hash-arvo ja prf on todiste siitä, että hän on saanut Annan. Jos tämä algoritmi palauttaa TOSI, se tarkoittaa, että Anna oli rehellinen ja hänellä oli todellakin salainen arvo “w”. Jos se palauttaa EPÄTOSI, se tarkoittaa, että Anna valehteli tietäen mitä “w” on.

ZkSnarksin käyttö kryptovaluutassa

Mikä on zkSNARKs: Spooky Moon Math

Kuva: Zcash

Zcash on salausvaluutta, jonka Zerocoin Electic Coin Company lanseerasi 9. syyskuuta 2016, ja se on ensimmäinen esimerkki kryptovaluutasta, joka solmii lohkoketjutekniikan käsitteet ZkSnarksin kanssa. Sen tavoitteena on tarjota käyttäjilleen täysin turvallisia ja suojattuja tapahtumapaikkoja paljastamatta yksityiskohtia (kuten heidän osoitteitaan) kenellekään.

Ethereum haluaa integroida ZkSnarksin, kun se astuu Metropolis-vaiheeseensa, ja tapa, jolla he aikovat tehdä niin, on luoda liitto Zcashin kanssa, joka sisältää vastavuoroisen arvonvaihdon. Zcashin pääkehittäjä Zooko Wilcox piti Shanghain DevCon2: ssa esityksen, jossa tutkittiin tällaisen allianssin tulevaisuutta. Hänen mukaansa on kolme tapaa, joilla Z-Cash ja zk-snarks voidaan integroida ethereumiin.

Ensimmäistä menetelmää kutsutaan Baby Zoeksi (Zoe = Zcash on ethereum). Se lisää zk-snark-esikääntäjän Ethereumiin ja tekee älykkään mini-Zcash-sopimuksen Ethereumiin. Ajatuksena on nähdä, pystyykö Ethereum-järjestelmä luomaan zk-snark-yhteensopivan DAPP: n estoketjunsa päälle.

Toinen menetelmä on integroida Ethereumin laskettavuus Zcash-lohkoketjun sisään. Kuten Wilcox sanoo, ethereumin suurin voimavara on sen laskettavuus ja ihmiset haluavat nähdä, pystyvätkö he integroimaan sen zk-snark-pohjaiseen lohkoketjuun, kuten Zcash. Voivatko ihmiset luoda DAPPS: n lohkoketjuun, joka on tehty nollasta tietovarmistuksesta? Se on jotain, jonka he odottavat näkevänsä.

Kolmas ja mielenkiintoisin näkökohta on Project Alchemy. Tämä on pohjimmiltaan kahden lohkoketjun yhteys ja yhteistoiminta siten, että voidaan liikkua saumattomasti näiden kahden välillä. Tapa, jonka Zcash aikoo tehdä, on kloonata BTC-rele. Se on Ethereum-komentosarja, joka on kirjoitettu luomaan Bitcoin light -asiakas Ethereumin sisälle. Zcash-klooni käyttää samaa konseptia luodakseen Zcash light -asiakkaan Ethereumiin.

Jos tämä toimii, meillä on maailman ensimmäinen hajautettu valuuttajärjestelmä, joka helpottaa DAPPS: n luomista ilman, että siihen on juurtunut nolla tietoa.

Katse eteenpäin

Ei ole epäilystäkään siitä, että nollatietotodistusten käyttöönotto tulee olemaan valtava pelinvaihtaja Ethereumille. Yhä avoimemmassa, kytketyssä ja valvotussa maailmassa kaikenlainen yksityisyys on tervetullut. Kuinka integraatio tapahtuu, ei ole vielä nähtävissä, mutta itse teoreettisten käsitteiden mukaan ei voi olla innostumatta.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me