Nul-kennisbewijzen uitgelegd: Deel 1
Nul-kennisproeven uitgelegd Deel 2: Niet-interactieve nul-kennisproeven
Cryptografie houdt zich voornamelijk bezig met beveiligde communicatie en omvat het verbergen van informatie voor tegenstanders en authenticatie van personen.
Hashes, asymmetrische codering en symmetrische codering worden vaak samen gebruikt om veilige communicatie mogelijk te maken. In populaire cryptografische systemen, zoals PGP, OTR en VPN’s, worden vaak verschillende algoritmen samen gebruikt, waaronder:
- Hash-functies waarmee we bestanden, tekst en toetsen gemakkelijk kunnen identificeren
- Asymmetrische coderingsfuncties om coderingssleutels veilig uit te wisselen via onveilige kanalen
- Symmetrische coderingsfuncties om grote hoeveelheden gegevens efficiënt te coderen
- Sleuteluitwisselingsfuncties om veilig over coderingssleutels te onderhandelen over onveilige kanalen
Zero-kennisproeven zijn coderingsschema’s die worden gebruikt om te bewijzen dat u iets weet zonder te onthullen wat het is. U kunt bijvoorbeeld zonder twijfel laten zien dat u het antwoord op een puzzel weet zonder de oplossing daadwerkelijk te onthullen.
Nulkennisbewijzen zijn nog relatief nieuw en hebben recentelijk nog een veelvoorkomende use-case gevonden in cryptocurrencies.
Interactieve nulkennisbewijzen
Interactieve nulkennisbewijzen vereisen interactie tussen het individu (of computersysteem) die hun kennis aantoont en het individu dat het bewijs valideert.
Het systeem creëert een extra interessant kenmerk voor een nulkennisbewijs: u bewijst niet alleen dat u iets weet zonder te onthullen wat u weet, maar u onthult het ook gewoon aan het individu waarmee u communiceert. Iemand die u alleen waarneemt, kan uw claim niet verifiëren.
Hoewel dit goed is voor extra privacy, kan het ook aanzienlijke extra inspanningen en kosten met zich meebrengen bij het proberen iets aan meerdere personen te bewijzen.
Hoe zero-knowledge bewijzen werken
De situatie:
Stel je een geurloze, smaakloze en kleurloze giftige vloeistof voor die eruitziet en precies aanvoelt als water. Wat als iemand dit glas naast een identiek glas vol water plaatst? U kunt de twee vloeistoffen niet van elkaar onderscheiden. Inderdaad, je weet misschien niet eens dat ze van elkaar verschillen.
De claim:
Iemand beweert dat ze een buitengewone visie hebben waarmee ze de twee glazen uit elkaar kunnen houden. Ze willen je echter niet vertellen wat wat is. Hoe kun je hun claim verifiëren zonder erachter te komen welk glas vergif is en welk water??
Het bewijs:
U (de verificateur) blinddoekt de persoon die beweert de twee glazen uit elkaar te houden (de spreekwoord) en besluit willekeurig de bril te wisselen of niet. Nadat u de blinddoek hebt verwijderd, vraagt u de spreekbuis of de bril van positie is veranderd.
Als ze de twee vloeistoffen echt gemakkelijk uit elkaar kunnen houden, kunnen ze u vertellen of ze van plaats zijn gewisseld. Anders hebben ze het mis met een kans van 50%.
Als je vervolgens het experiment herhaalt, heeft de spreekwoord (als ze alleen maar raden) het mis met een cumulatieve kans van 75%.
Na 10 keer herhalen van de test, als de prover elke keer correct is, is er al een kans van 99,9% die ze niet hebben geraden, en het is waarschijnlijk dat ze inderdaad een manier hebben om de twee glazen te onderscheiden. Na het n keer herhalen van de test:
1 – 0,5 ^ n * 100%
Natuurlijk heeft ons voorbeeld hier enkele praktische zwakke punten. Dit kunnen beveiligingscamera’s of bewegingssensoren zijn, maar in de abstracte wereld van de wiskunde kunnen we er zeker van zijn.
Waarom nulkennisbewijzen werken
U, de verificateur, kunt nu met 99,9% zekerheid overtuigd worden dat de andere persoon echt een manier heeft om de bril te identificeren, hoewel u nog steeds niet weet welk glas vol gif is en welk glas vol is.
Iemand die u en de spreekbuis heeft waargenomen, is echter niet overtuigd. In theorie hadden de verificateur en de spreekwoord met elkaar kunnen samenspannen en een show kunnen opzetten met vooraf bepaalde bewegingen.