Een zero-knowledge proof is een manier om de geldigheid van een bewering te bewijzen zonder de bewering zelf te onthullen. De ‘prover’ is de partij die een claim probeert te bewijzen, terwijl de ‘verifier’ verantwoordelijk is voor het valideren van de claim.

Nulkennisbewijzen verschenen voor het eerst in een artikel uit 1985, “The Knowledge Complexity of Interactive Proof Systems”, dat een definitie geeft van nulkennisbewijzen die tegenwoordig veel worden gebruikt:

Een zero-knowledge-protocol is een methode waarmee de ene partij (de bewijzer) aan de andere partij (de verificateur) kan bewijzen dat iets waar is, zonder enige informatie vrij te geven, afgezien van het feit dat deze specifieke bewering waar is.

Bewijzen zonder kennis zijn in de loop der jaren verbeterd en worden nu gebruikt in verschillende real-world toepassingen.

Waarom hebben we zero-knowledge proofs nodig?

Bewijzen zonder kennis vertegenwoordigden een doorbraak in toegepaste cryptografie, aangezien ze beloofden de beveiliging van informatie voor individuen te verbeteren. Overweeg hoe u een claim (bijv. “Ik ben een staatsburger van X land”) aan een andere partij (bijv. een dienstverlener) kunt bewijzen. U moet “bewijs” overleggen om uw claim te staven, zoals een nationaal paspoort of rijbewijs.

Maar er zijn problemen met deze aanpak, vooral het gebrek aan privacy. Persoonlijk identificeerbare informatie (PII) die wordt gedeeld met services van derden, wordt opgeslagen in centrale databases, die kwetsbaar zijn voor hacks. Nu identiteitsdiefstal een kritiek probleem wordt, is er een roep om meer privacybeschermende middelen om gevoelige informatie te delen.

Zero-knowledge proofs lossen dit probleem op door de noodzaak te elimineren om informatie te onthullen om de geldigheid van claims te bewijzen. Het zero-knowledge-protocol gebruikt de verklaring (een ‘getuige’ genoemd) als invoer om een beknopt bewijs van de geldigheid ervan te genereren. Dit bewijs biedt sterke garanties dat een bewering waar is zonder de informatie bloot te leggen die bij het maken ervan is gebruikt.

Terugkomend op ons eerdere voorbeeld: het enige bewijs dat u nodig hebt om uw claim op staatsburgerschap te bewijzen, is een nulkennisbewijs. De verificateur hoeft alleen maar te controleren of bepaalde eigenschappen van het bewijs waar zijn om ervan overtuigd te zijn dat de onderliggende bewering ook waar is.

Hoe werken zero-knowledge proofs?

Met een nulkennisbewijs kunt u de waarheid van een bewering bewijzen zonder de inhoud van de bewering te delen of te onthullen hoe u de waarheid hebt ontdekt. Om dit mogelijk te maken, vertrouwen zero-knowledge-protocollen op algoritmen die bepaalde gegevens als invoer gebruiken en ‘waar’ of ‘onwaar’ als uitvoer retourneren.

Een zero-knowledge protocol moet aan de volgende criteria voldoen:

  1. Completeness: If the input is valid, the zero-knowledge protocol always returns ‘true’. Hence, if the underlying statement is true, and the prover and verifier act honestly, the proof can be accepted.
  2. Soundness: If the input is invalid, it is theoretically impossible to fool the zero-knowledge protocol to return ‘true’. Hence, a lying prover cannot trick an honest verifier into believing an invalid statement is valid (except with a tiny margin of probability).
  3. Zero-knowledge: The verifier learns nothing about a statement beyond its validity or falsity (they have “zero knowledge” of the statement). This requirement also prevents the verifier from deriving the original input (the statement’s contents) from the proof.

In basisvorm bestaat een zero-knowledge proof uit drie elementen: getuige, uitdaging en reactie.

  • Witness: With a zero-knowledge proof, the prover wants to prove knowledge of some hidden information. The secret information is the “witness” to the proof, and the prover’s assumed knowledge of the witness establishes a set of questions that can only be answered by a party with knowledge of the information. Thus, the prover starts the proving process by randomly choosing a question, calculating the answer, and sending it to the verifier.
  • Challenge: The verifier randomly picks another question from the set and asks the prover to answer it.
  • Response: The prover accepts the question, calculates the answer, and returns it to the verifier. The prover’s response allows the verifier to check if the former really has access to the witness. To ensure the prover isn’t guessing blindly and getting the correct answers by chance, the verifier picks more questions to ask. By repeating this interaction many times, the possibility of the prover faking knowledge of the witness drops significantly until the verifier is satisfied.

Het bovenstaande beschrijft de opbouw van een ‘interactieve zero-knowledge proof’. Vroege zero-knowledge-protocollen maakten gebruik van interactieve bewijzen, waarbij het verifiëren van de geldigheid van een verklaring heen en weer communicatie vereiste tussen bewijsgevers en verificateurs.

Een goed voorbeeld dat illustreert hoe interactieve proefdrukken werken, is het beroemde verhaal over de Ali Baba-grot van Jean-Jacques Quisquater. In het verhaal wil Peggy (de bewijzer) aan Victor (de verificateur) bewijzen dat ze de geheime zin kent om een magische deur te openen zonder de zin te onthullen.

Niet-interactieve zero-knowledge proofs

Hoewel revolutionair, had interactief bewijzen een beperkt nut, omdat de twee partijen hiervoor beschikbaar moesten zijn en herhaaldelijk met elkaar in contact moesten komen. Zelfs als een verificateur overtuigd was van de eerlijkheid van een bewijzer, zou het bewijs niet beschikbaar zijn voor onafhankelijke verificatie (het berekenen van een nieuw bewijs vereiste een nieuwe reeks berichten tussen de bewijzer en de verificateur).

Om dit probleem op te lossen, stelden Manuel Blum, Paul Feldman en Silvio Micali de eerste niet-interactieve zero-knowledge proofs voor waarbij de bewijzer en de verifier een gedeelde sleutel hebben. Hierdoor kan de bewijzer zijn kennis van bepaalde informatie (d.w.z. getuige) aantonen zonder de informatie zelf te verstrekken.

In tegenstelling tot interactieve bewijzen, vereisten niet-interactieve bewijzen slechts één communicatieronde tussen deelnemers (bewijzer en verificateur). De bewijzer geeft de geheime informatie door aan een speciaal algoritme om een nulkennisbewijs te berekenen. Dit bewijs wordt naar de verificateur gestuurd, die met een ander algoritme controleert of de bewijsgever de geheime informatie kent.

Niet-interactieve bewijzen verminderen de communicatie tussen bewijsgever en verificateur, waardoor ZK-proeven efficiënter worden. Bovendien, zodra een bewijs is gegenereerd, is het beschikbaar voor iedereen (met toegang tot de gedeelde sleutel en het verificatie-algoritme) om te verifiëren.

Niet-interactieve proefdrukken vertegenwoordigden een doorbraak voor zero-knowledge-technologie en stimuleerden de ontwikkeling van bewijssystemen die tegenwoordig worden gebruikt. We bespreken deze bewijstypen hieronder:

Soorten zero-knowledge bewijzen

ZK-SNARK’s

ZK-SNARK is een acroniem voor Zero-Knowledge Succinct Non-Interactive Argument of Knowledge. Het ZK-SNARK-protocol heeft de volgende eigenschappen:

  • Zero-knowledge: A verifier can validate the integrity of a statement without knowing anything else about the statement. The only knowledge the verifier has of the statement is whether it is true or false.
  • Succinct: The zero-knowledge proof is smaller than the witness and can be verified quickly.
  • Non-interactive: The proof is ‘non-interactive’ because the prover and verifier only interact once, unlike interactive proofs that require multiple rounds of communication.
  • Argument: The proof satisfies the ‘soundness’ requirement, so cheating is extremely unlikely.
  • (Of) Knowledge: The zero-knowledge proof cannot be constructed without access to the secret information (witness). It is difficult, if not impossible, for a prover who doesn’t have the witness to compute a valid zero-knowledge proof.

De eerder genoemde ‘gedeelde sleutel’ verwijst naar openbare parameters die de bewijzer en de verificateur overeenkomen te gebruiken bij het genereren en verifiëren van bewijzen. Het genereren van de openbare parameters (gezamenlijk bekend als de Common Reference String (CRS)) is een gevoelige bewerking vanwege het belang ervan voor de beveiliging van het protocol. Als de entropie (willekeurigheid) die wordt gebruikt bij het genereren van het CRS in handen komt van een oneerlijk bewijsmiddel, kunnen ze valse bewijzen berekenen.

Multi-party computation (MPC) is een manier om de risico’s bij het genereren van openbare parameters te verminderen. Meerdere partijen nemen deel aan een vertrouwde setup-ceremonie, waarbij elke persoon een aantal willekeurige waarden bijdraagt om het CRS te genereren. Zolang een eerlijke partij hun deel van de entropie vernietigt, behoudt het ZK-SNARK-protocol rekenkracht.

Vertrouwde instellingen vereisen dat gebruikers de deelnemers vertrouwen bij het genereren van parameters. De ontwikkeling van ZK-STARK’s heeft het echter mogelijk gemaakt om protocollen te testen die werken met een niet-vertrouwde opstelling.

ZK-STARK’s

ZK-STARK is een acroniem voor Zero-Knowledge Scalable Transparent Argument of Knowledge. ZK-STARK’s zijn vergelijkbaar met ZK-SNARK’s, behalve dat ze:

  • Scalable: ZK-STARK is faster than ZK-SNARK at generating and verifying proofs when the size of the witness is larger. With STARK proofs, prover and verification times only slightly increase as the witness grows (SNARK prover and verifier times increase linearly with witness size).
  • Transparent: ZK-STARK relies on publicly verifiable randomness to generate public parameters for proving and verification instead of a trusted setup. Thus, they are more transparent compared to ZK-SNARKs.

ZK-STARK’s produceren grotere bewijzen dan ZK-SNARK’s, wat betekent dat ze over het algemeen hogere verificatiekosten hebben. Er zijn echter gevallen (zoals het bewijzen van grote datasets) waarin ZK-STARK’s mogelijk kosteneffectiever zijn dan ZK-SNARK’s.

Use-cases voor zero-knowledge proofs

Anonieme betalingen

Creditcardbetalingen zijn vaak zichtbaar voor meerdere partijen, waaronder de betalingsprovider, banken en andere belanghebbenden (bijvoorbeeld overheidsinstanties). Hoewel financieel toezicht voordelen biedt voor het identificeren van illegale activiteiten, ondermijnt het ook de privacy van gewone burgers.

Cryptocurrencies waren bedoeld om gebruikers een middel te bieden om privé, peer-to-peer transacties uit te voeren. Maar de meeste cryptocurrency-transacties zijn openlijk zichtbaar op openbare blockchains. Gebruikersidentiteiten zijn vaak pseudoniem en ofwel opzettelijk gekoppeld aan identiteiten uit de echte wereld (bijvoorbeeld door ETH-adressen op Twitter- of GitHub-profielen op te nemen) of ze kunnen worden geassocieerd met identiteiten uit de echte wereld met behulp van eenvoudige on- en off-chain data-analyse.

Er zijn specifieke “privacymunten” die zijn ontworpen voor volledig anonieme transacties. Op privacy gerichte blockchains, zoals Zcash en Monero, schermen transactiedetails af, inclusief afzender-/ontvangeradressen, activatype, hoeveelheid en de transactietijdlijn.

Door zero-knowledge-technologie in het protocol in te bakken, stellen privacygerichte blockchain-netwerken nodes in staat om transacties te valideren zonder toegang tot transactiegegevens.

Zero-knowledge proofs worden ook toegepast op het anonimiseren van transacties op openbare blockchains. Een voorbeeld is Tornado Cash, een gedecentraliseerde, niet-bewarende dienst waarmee gebruikers privétransacties kunnen uitvoeren op Ethereum. Tornado Cash gebruikt zero-knowledge proofs om transactiedetails te verdoezelen en financiële privacy te garanderen. Omdat dit “opt-in” privacytools zijn, worden ze helaas in verband gebracht met ongeoorloofde activiteiten. Om dit te ondervangen, moet privacy uiteindelijk de standaard worden op openbare blockchains.
Identiteitsbescherming

De huidige identiteitsbeheersystemen brengen persoonlijke informatie in gevaar. Zero-knowledge proofs kunnen individuen helpen hun identiteit te valideren en tegelijkertijd gevoelige details te beschermen.

Bewijzen zonder kennis zijn bijzonder nuttig in de context van gedecentraliseerde identiteit. Gedecentraliseerde identiteit (ook beschreven als ‘zelf-soevereine identiteit’) geeft het individu de mogelijkheid om de toegang tot persoonlijke identificatiegegevens te controleren. Uw staatsburgerschap bewijzen zonder uw belastingnummer of paspoortgegevens vrij te geven, is een goed voorbeeld van hoe zero-knowledge-technologie gedecentraliseerde identiteit mogelijk maakt.

Authenticatie

Het gebruik van online diensten vereist het bewijzen van uw identiteit en recht op toegang tot die platforms. Dit vereist vaak het verstrekken van persoonlijke informatie, zoals namen, e-mailadressen, geboortedata, enzovoort. Mogelijk moet u ook lange wachtwoorden onthouden, anders loopt u het risico de toegang te verliezen.

Zero-knowledge proofs kunnen authenticatie echter vereenvoudigen voor zowel platforms als gebruikers. Zodra een ZK-bewijs is gegenereerd met behulp van openbare input (bijv. gegevens waaruit blijkt dat de gebruiker lid is van het platform) en privé-invoer (bijv. de gegevens van de gebruiker), kan de gebruiker het eenvoudig presenteren om zijn identiteit te verifiëren wanneer hij toegang nodig heeft de dienst. Dit verbetert de ervaring voor gebruikers en verlost organisaties van de noodzaak om enorme hoeveelheden gebruikersinformatie op te slaan.

Verifieerbare berekening

Verifieerbare berekeningen zijn een andere toepassing van zero-knowledge-technologie voor het verbeteren van blockchain-ontwerpen. Verifieerbaar computergebruik stelt ons in staat om berekeningen uit te besteden aan een andere entiteit met behoud van verifieerbare resultaten. De entiteit dient het resultaat in samen met een bewijs dat bevestigt dat het programma correct is uitgevoerd.

Verifieerbare berekeningen zijn van cruciaal belang om de verwerkingssnelheden op blockchains te verbeteren zonder de beveiliging te verminderen. Om dit te begrijpen, moet u de verschillen in voorgestelde oplossingen voor het opschalen van Ethereum kennen.

On-chain schaaloplossingen, zoals sharding, vereisen een uitgebreide aanpassing van de basislaag van de blockchain. Deze aanpak is echter zeer complex en fouten bij de implementatie kunnen het beveiligingsmodel van Ethereum ondermijnen.

Off-chain schaaloplossingen vereisen geen herontwerp van het kernprotocol van Ethereum. In plaats daarvan vertrouwen ze op een uitbesteed rekenmodel om de doorvoer op de basislaag van Ethereum te verbeteren.

Het voordeel hier is dat Ethereum geen uitvoering hoeft te doen en alleen resultaten van uitbestede berekeningen hoeft toe te passen op zijn staat. Dit vermindert netwerkcongestie en verbetert ook transactiesnelheden (off-chain-protocollen optimaliseren voor snellere uitvoering).

De keten heeft een manier nodig om off-chain transacties te valideren zonder ze opnieuw uit te voeren, anders gaat de waarde van off-chain uitvoering verloren.

Dit is waar verifieerbare berekening in het spel komt. Wanneer een knooppunt een transactie buiten Ethereum uitvoert, dient het een nulkennisbewijs in om de juistheid van off-chain uitvoering te bewijzen. Dit bewijs (geldigheidsbewijs genoemd

) garandeert dat een transactie geldig is, waardoor Ethereum het resultaat op zijn staat kan toepassen – zonder te wachten tot iemand het betwist.

Zero-knowledge rollups en validiums zijn twee off-chain schaaloplossingen die validiteitsbewijzen gebruiken om veilige schaalbaarheid te bieden. Deze protocollen voeren duizenden transacties off-chain uit en dienen bewijzen in voor verificatie op Ethereum. Die resultaten kunnen onmiddellijk worden toegepast zodra het bewijs is geverifieerd, waardoor Ethereum meer transacties kan verwerken zonder de berekening op de basislaag te verhogen.

Categorieën: Crypto

0 reacties

Geef een antwoord

Avatar plaatshouder

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *