Zero Knowledge Proofs uitgelegd

Published by The Crypto Invstor on

Zero Knowledge Proofs, ook wel bekend als Zero Knowledge Protocols is een stukje techniek wat de laatste tijd erg populair is binnen de crypto wereld. Met Zero Knowledge Proofs voorzie je onder andere publiekelijke blockchain netwerken van meer privacy en veiligheid. In deze blogpost leg ik je uit wat Zero Knowledge Proofs zijn. Ik leg je uit hoe de techniek in elkaar steekt, welke cryptocurrencies ervan gebruik maken en welke waarde het biedt.

Zero Knowledge Proofs en blockchain

Als we de term Zero Knowledge Proofs ontleden en rechtstreeks vertalen dan krijg je: “Bewijzen Zonder Kennis”. Kort gezegd is dit precies waar het bij Zero Knowledge Proofs om draait. Als we het hebben over cryptovaluta dan hebben we het natuurlijk over blockchain technologie. Zoals je in de blogpost over blockchain technologie kunt lezen is decentralisatie één van de grootste zaken waar het bij blockchain technologie om draait. Door de manier waarop een blockchain netwerk werkt kun je onfeilbare, razendsnelle en goedkope transacties mogelijk maken. Echter, één van de neveneffecten van de decentralisatie binnen blockchain is dat alles voor iedereen inzichtelijk is. Elke transactie die ooit is gemaakt wordt door de miners toegevoegd aan de blockchain.

Sinds de komst van Bitcoin wordt blockchain technologie ingezet voor verschillende doeleinden. De overdracht van waarde kennen we natuurlijk allemaal maar blockchain technologie wordt ook gebruikt voor de opslag en overdracht van gegevens en voor het vastleggen van afspraken (smart contracts). Met deze implicaties kun je voorstellen dat niet iedereen even tevreden is met de openheid en transparantie die blockchain technologie te bieden heeft. Je kunt op het Ledger van een cryptocurrency zoals Bitcoin namelijk alle transacties terugzien.

Veel organisaties maar ook particulieren krijgen steeds meer de behoefte aan privacy en veiligheid terwijl ze opereren om de blockchain. Voor organisaties is dit namelijk essentieel om supply chains, de identiteit van afnemers en van leveranciers te waarborgen. Inmiddels zijn er een aantal cryptocurrencies op de markt die voorzien in deze behoefte. Voorbeelden hiervan zijn Monero, ZCash en Verge. Dit zijn cryptocurrencies die met verschillende technieken de mogelijkheid bieden tot anonieme blockchain transacties. Om deze anonieme transacties mogelijk te maken maakt Zcash onder andere gebruik van Zero Knowledge Proofs.

zcash logo

Het concept van Zero Knowledge Proofs

Bij een blockchain transactie zijn min of meer drie partijen betrokken: de verzender, de ontvanger en de validators. Zero Knowledge Proofs is een techniek waarmee de verzender aan de validators kan aantonen dat aan alle eisen voor een valide transactie is voldaan zonder informatie te geven over de transactie zelf. Op deze manier kun je gevalideerde transacties uitvoeren zonder dat de details van de transactie aan iemand bekend gemaakt worden. Dit klinkt vrij ingewikkeld maar met een voorbeeld krijg je wellicht een beter beeld van Zero Knowledge Proofs.

Het meest gebruikte voorbeeld van Zero Knowledge Proofs is het verhaal van de twee kinderen en het Halloween snoep. In dit voorbeeld hebben we Tim (de bewijzer) die aan Marieke (de validator) moet bewijzen dat hij iets weet door enkel en alleen aan Marieke te vertellen dat hij het weet zonder er details over te geven. Bij definitie moet een Zero Knowledge Proof voldoen aan drie eisen:

  1. Compleetheid
  2. Gegrondheid
  3. Absentie van kennis

Compleetheid betekent dat er een zeer hoge kans is dat als Tim de waarheid verteld dat Marieke deze waarheid ook daadwerkelijk gelooft. Gegrondheid is dat Tim alleen Marieke kan overtuigen als hij ook daadwerkelijk de waarheid vertelt. De absentie van kennis wil zeggen dat Tim geen details geeft over X maar Marieke enkel vertelt dat hij op de hoogte is van X.

De Halloween anekdote

Terug naar het Halloween verhaal. Het is Halloween en Tim en Marieke gaan langs de deuren om snoep op te halen. Ze hebben allebei een dicht tasje waar ze bij de deur steeds een hand snoep in gedumpt krijgen. Aan het einde van de avond willen Tim en Marieke weten of ze dezelfde hoeveelheid chocoladerepen hebben ontvangen zonder het aantal repen met elkaar te delen.

Laten we er vanuit gaan dat ze exact 10, 20, 30 of 40 chocoladerepen in de tas hebben zitten. Om het aantal repen dat ze hebben te vergelijken heeft Tim 4 dozen met een slotje erop. Op de eerste doos plakt hij een briefje met het getal 10, de tweede doos met het getal 20, de derde doos met 30 en de laatste doos met 40 en vervolgens doet hij alle dozen op slot. Daarna gooit Tim alle sleutels weg behalve de sleutel die de doos opent met het aantal chocoladerepen die hij heeft. Hierna geeft hij alle dozen aan Marieke.

Marieke pakt 4 stukjes papier. Op een stuk papier schrijft ze een plusteken en op de andere drie een minteken. Vervolgens stopt ze het papiertje met het plusteken door het sleutelgat van de doos die overeen komt met het aantal chocoladerepen dat zij heeft. De papiertjes met het minteken stopt ze door het sleutelgat van de andere dozen. Vervolgens komt Tim terug met de enige sleutel die hij nog over heeft en opent zijn doos. Daarin vind hij een papiertje met een plusteken of een minteken. Als er een papiertje met een plusteken in zit dan heeft Marieke hetzelfde aantal chocoladerepen. Als er een papiertje met een minteken in zit dan heeft Marieke niet hetzelfde aantal chocoladerepen als Tim. Tim opent de doos en vind er een papiertje met een minteken in. Tim weet dus nu dat hij niet hetzelfde aantal chocoladerepen heeft als Marieke. Vervolgens komt Marieke terug en laat Tim het papiertje met het minteken zien.

Nu heeft Tim dus met 100% zekerheid aan Marieke bewezen dat hij “weet” dat ze niet hetzelfde aantal repen hebben. Echter, Tim en Marieke weten van elkaar niet hoe veel chocoladerepen ze beiden hebben. Oftewel, een Zero Knowledge Proof heeft plaatsgevonden.

De twee ballen en de kleurenblinde anekdote

Naast de Halloween anekdote is er nog een vrij bekende anekdote waarmee je de kracht van Zero Knowledge Proofs kunt aantonen. Deze methode is in september 2017 door twee programmeurs voorgedaan op de internationale Blockchain Summit.

Er zijn twee vrienden: Bob en Kees. Kees is kleurenblind en heeft twee biljartballen in zijn handen. Volgens Kees hebben allebei de ballen dezelfde kleur maar volgens Bob niet. Bob gaat aan Kees proberen te bewijzen dat de ballen verschillend zijn in kleur zonder de kleuren te verhullen. Dit klinkt onmogelijk maar is eigenlijk vrij simpel. Kees doet de twee ballen achter zijn rug en haalt er steeds één tevoorschijn. Vervolgens zegt Bob tegen Kees of Kees de ballen wel of niet achter zijn rug heeft omgewisseld. Als Kees de ballen omwisselt dan zou Bob dit moeten merken aan de kleur en tegen Kees kunnen zeggen. Als je dit proces maar vaak genoeg herhaalt dan kun je er 100% zeker van worden dat Bob daadwerkelijk een verschil in kleur kan zien tussen de ballen. Als Bob geen verschil zou zien dan zou hij steeds moeten gokken of Kees al dan niet de ballen heeft omgewisseld. Met een kans van 50% om fout te gokken is de kans dat Bob eindeloos goed blijft gokken astronomisch klein. Op deze manier bewijst Bob aan Kees dat de ballen daadwerkelijk een andere kleur hebben.

De implicaties van Zero Knowledge Proofs

Zero Knowledge Proofs kunnen worden ingebakken in een stukje programmeercode. Ze zijn niet honderd procent waterdicht en voor een klein deel gebaseerd op vertrouwen. Echter, met Zero Knowledge Proofs bied je men de mogelijkheid om transacties tot stand te brengen zonder de inhoud van deze transacties te delen. Naast Zero Knowledge Proofs hanteren blockchain netwerken zoals die van Monero en Verge nog andere methoden om transacties te beveiligen en anonimiseren.