Wat een zero-knowledge proof doet
Iets bewijzen betekent meestal dat je het bewijs laat zien: een wachtwoord invoeren of een identiteitsbewijs overhandigen. Dat kan meer onthullen dan de ander hoeft te weten.
Een zero-knowledge proof is een cryptografische methode die dit verandert. De ene persoon, de bewijzer, toont een precieze bewering aan de andere, de verificateur, zonder het geheim te onthullen waarmee die bewering klopt. De verificateur krijgt het antwoord dat hij nodig heeft — bijvoorbeeld dat je aan een leeftijdseis voldoet — maar niet je geboortedatum, adres of documentnummer.
Het is geen vage belofte van privacy. Een bewijs moet ontworpen zijn voor precies één bewering, en een goed ontwerp maakt vals spelen zeer onwaarschijnlijk.
Het grotvoorbeeld
Stel je een grot voor met twee paden die achter een afgesloten deur samenkomen. De deur gaat alleen open met een geheim woord. Je zegt dat je het weet, maar je wilt het niet hardop zeggen.
Je gaat via een van de twee paden naar binnen, terwijl je vriend buiten wacht. Je vriend roept dan welk pad hij wil dat je terugneemt. Als je het woord kent, kun je de deur in de grot openen en via elk pad terugkomen. Gok je maar wat, dan heb je maar vijftig procent kans dat je aan de gevraagde kant staat.
Herhaal de test vaak, met elke keer een nieuwe, onvoorspelbare keuze. Na tien geslaagde rondes heeft een bluffer nog maar ongeveer één kans op 1.000 om geluk te hebben. Je vriend krijgt sterk bewijs dat je het woord kent, maar hoort het nooit.
Van grotverhaal naar echte software
Echte bewijzen gebruiken wiskunde in plaats van een grot, maar het privacydoel blijft hetzelfde. Ze kunnen aantonen dat een transactie aan de regels voldoet, zonder alle details prijs te geven. Ook kan één klein bewijs een hele reeks controles vervangen, waardoor sommige systemen sneller te verifiëren zijn.
Digitale identificatiebewijzen zijn een ander praktisch voorbeeld. In plaats van een volledig identiteitsbewijs naar elke dienst te uploaden, zou een goed ontworpen identificatiebewijs alleen de gestelde vraag kunnen beantwoorden: “Is deze persoon ouder dan 18?” of “Heeft deze persoon deze kwalificatie?”
De details zijn belangrijk. Een bewijs beschermt alleen de informatie waarvoor het is ontworpen. De app eromheen kan nog steeds gegevens verzamelen, je identificeren of ergens anders een zwakke beveiligingskeuze maken.
Zero-knowledge proof versus zero-knowledge-encryptie
De term 'zero-knowledge' wordt ook gebruikt bij cloudopslag. Dat is een ander idee. Zero-knowledge-encryptie betekent dat de opslagaanbieder je bestanden niet kan lezen, omdat hij niet over de decryptiesleutels beschikt.
Een zero-knowledge proof beantwoordt een vraag zonder het geheim achter dat antwoord bloot te geven. Zero-knowledge encryptie houdt opgeslagen bestanden onleesbaar voor een aanbieder. Beide kunnen de privacy verbeteren, maar ze zijn niet uitwisselbaar.
Een praktische privacyles
Zero-knowledge proofs herinneren je eraan om nooit meer informatie te delen dan nodig voor een taak. Ze maken je niet anoniem en beveiligen niet elk onderdeel van een app. Een dienst kan nog steeds weten dat je verbinding hebt gemaakt, wanneer je dat deed en andere gegevens buiten het bewijs om.
Sealby heeft geen zero-knowledge proofs nodig, want er is geen account of server die je om een bewijs vraagt. Bestanden worden versleuteld op je iPhone. Voor je dagelijkse privacy is de praktische vraag simpel: wat moet deze dienst echt weten — en kan het ook met minder?