Puncte:4

Care este relația dintre dovezile de cunoștințe cu zero cunoștințe și circuite?

drapel in

Odată cu creșterea popularității dovezilor Zero-Knowledge of Knowledge (ZKPoKs), cum ar fi Pinocchio, Creșterea16 și Sonic, pentru a numi câteva ZKPoK-uri cunoscute în mod popular ca zk-SNARK-uri, m-am logodit pentru a înțelege ce se întâmplă în spatele capotei acestor protocoale.

Singura problemă pe care am întâlnit-o este că nu înțeleg clar care este relația ZKPoK-uri și schema de bază pe zk-SNAKRK-uri: Circuite aritmetice.

Permiteți-mi să pun câteva întrebări despre asta:

  1. De ce sunt circuitele aritmetice interesante în lumea cu cunoștințe zero?
  2. De ce sunt ZKPoK bazate pe circuite considerate „generice”?
  3. Este vreun ZKPoK specific (a.k.a. care nu se bazează pe circuite) „practic” să fie efectuat de circuite?
  4. Sunt ZKPoK-urile bazate pe circuite mai eficiente (în timp sau spaţiu) decât anumite ZKPoK?
Puncte:2
drapel us

De ce sunt circuitele aritmetice interesante în lumea cu cunoștințe zero?

Există două modele principale de calcul general: Circuite și Turing-Machines.
Descrierea căii de calcul a mașinilor Turing este ceea ce încearcă să facă majoritatea limbajelor de programare mainstream, totuși pentru procesarea criptografică există dezavantaje asociate cu Turing-Machines. Și anume, trebuie să se ocupe de memorie și în plus, Turing-Machines nu sunt tocmai cel mai eficient model de programare și toate cele mai eficiente vor adăuga de obicei mult mai multă complexitate, complicând protocoalele criptografice. Deci, în schimb, ceea ce fac oamenii este că folosesc circuite care pot exprima destul de ușor multe enunțuri imediat interesante și, de obicei, trebuie să specificați doar procesarea pentru o mână de operații, adică ce să faceți când întâlniți o înmulțire și când întâlniți o adunare. Aceste două operații sunt suficiente pentru a descrie toate funcțiile, deși unele sunt descrise mai puțin eficient decât altele și multe funcții de interes se întâmplă să fie mici.

De ce sunt ZKPoK bazate pe circuite considerate „generice”?

Folosind considerentele de mai sus, acestea vă permit să formulați dovezi precum „Știu $x$ pentru un anumit public $v$ și un circuit public $C$ astfel încât $C(x,v)=1$„ ceea ce le face pe deplin generice în declarația dovedită.

Este vreun ZKPoK specific (a.k.a. care nu se bazează pe circuite) „practic” să fie realizat de circuite?

Orice ZKPoK poate fi reformulat în termeni de unul bazat pe circuit, întrebarea devine atunci cât de mari sunt pierderile de eficiență și dacă merită potențialele beneficii ale compoziției.

Sunt ZKPoK-urile bazate pe circuite mai eficiente (în timp sau spațiu) decât anumite ZKPoK?

De obicei, scopul ZKPoK-urilor specifice este că pot exploata constrângeri și structuri pe care cele bazate pe circuite generice nu le pot face, făcându-le de obicei mai eficiente pe cele specializate. Excepția sunt, desigur, afirmațiile despre circuite în care cele bazate pe circuite generice și cele specializate vor coincide probabil într-o mare măsură.

Bean Guy avatar
drapel in
Deci, când vorbim despre „ZKPoK-uri bazate pe circuite” ne referim la protocoale de tipul care poate fi folosit pentru orice circuit la care ne putem gândi. În schimb, anumite ZKPoK sunt protocoale care pot fi utilizate pentru un circuit **specific** (folosind reformularea pe care ați comentat-o). Am dreptate?
Bean Guy avatar
drapel in
Aveți vreo referință unde să văd o astfel de reformulare pentru un exemplu ușor? Mă gândeam cum aș putea formula [Protocolul Schnoor](https://en.wikipedia.org/wiki/Proof_of_knowledge#Schnorr_protocol) în ceea ce privește circuitele.
SEJPM avatar
drapel us
@BeanGuy ZKPoK-urile specifice dovedesc afirmații asupra unor clase specifice de circuite, de ex. $C(x,v)=g^x\stackrel{?}{=}v\bmod p$ pentru demonstrații Schnorr cu câmp finit (și variante din alte grupuri). Nu am o referință bună la îndemână pentru o comparație Schnorr, deși circuitul ar trebui să fie simplu din punct de vedere conceptual (vezi mai sus), deși, desigur, formularea exponențiației modulare sau ECC cu circuite poate genera circuite destul de mari...
Bean Guy avatar
drapel in
Să înțeleg atunci ceva: întrucât protocolul Schnorr este un protocol în 3 pași, mă gândeam că pentru a-l formula în termeni de circuite ar fi nevoie de 3 circuite, câte unul pentru fiecare pas. Dar se pare că este mai degrabă ca un circuit este capabil să comprime întregul protocol. Presupun că acest lucru este adevărat **după** aplicarea euristicii Fiat-Shamir și apoi analizarea protocolului ca o funcție. Altfel, nu văd cum poți formula un sistem interactiv la ceva (un circuit) care nu are „interacțiune”.
Geoffroy Couteau avatar
drapel cn
Circuitul nu este *protocolul*: circuitul este *limba*. Adică, protocolul Schnorr este un protocol în 3 pași pentru a demonstra „Știu $w$ astfel încât $C(x,w) = 1$”, unde $C$ este circuitul care scoate 1 dacă $g^w = x $ (peste grupul corespunzător). „ZK bazat pe circuit” se referă la dovezile ZK care sunt descrise pentru toate limbile scrise „în formă de circuit” ca mai sus. Pentru jurnalul discret, ZK standard bazat pe circuit va fi destul de ineficient, deoarece circuitul este mare; aici, utilizarea unui protocol dedicat (de exemplu, Schnorr), care este adaptat acestui limbaj specific, va fi mai eficientă.
Bean Guy avatar
drapel in
@GeoffroyCouteau Atunci, există un astfel de limbaj în cazul *specific* ZKPoK, adică nu reformulat ca circuit? Care este limba în aceste cazuri?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.