Următoarele extrase au fost preluate de pe pagina Zero-Knowledge Proof de pe Wikipedia:
În criptografie, o dovadă de cunoștințe zero sau un protocol de cunoștințe zero este o metodă prin care o parte (dovatorul) poate dovedi altei părți (verificatorul) că o anumită afirmație este adevărată, în timp ce probatorul evită transmiterea oricărei informații suplimentare în afară de faptul că afirmația este într-adevăr adevărată. Esența dovezilor zero-cunoaștere este că este trivial să dovedești că cineva posedă cunoștințe despre anumite informații prin simpla dezvăluire a acestora; provocarea este de a dovedi o astfel de posesie fără a dezvălui informațiile în sine sau orice alte informații suplimentare.
Dacă dovedirea unei declarații necesită ca probatorul să dețină informații secrete, atunci verificatorul nu va putea dovedi declarația nimănui altcineva fără să dețină informațiile secrete. Declarația care se dovedește trebuie să includă afirmația conform căreia autorul care demonstrează deține astfel de cunoștințe, dar fără a include sau transmite cunoștințele în sine în afirmație. În caz contrar, declarația nu ar fi dovedită în cunoștințe zero, deoarece oferă verificatorului informații suplimentare despre declarație până la sfârșitul protocolului. O dovadă a cunoștințelor zero-cunoștințe este un caz special când afirmația constă doar în faptul că cel care dovedește deține informațiile secrete.
Referinţă: https://en.wikipedia.org/wiki/Zero-knowledge_proof
De exemplu, să presupunem că Alice știe asta X este 123 și Y este 456, iar Alice vrea să-i demonstreze lui Bob asta X e mai puțin decât Y. Prin urmare, Alice trebuie să construiască o dovadă în așa fel încât X și Y nu sunt dezvăluite lui Bob.
Să presupunem că protocolul ZKP în cauză este implementat pe baza următoarelor ipoteze:
- A poate fi derivat din X
- B poate fi derivat din Y
- X nu poate fi derivat din A fie de Alice, fie de Bob (Alice poate deriva doar A din X)
- Y nu poate fi derivat din B fie de Alice, fie de Bob (Alice poate deriva doar B din Y)
A = f(X)
B = f(Y)
A < B // adevărat
Bob poate verifica acum asta X este într-adevăr mai mică decât Y pur prin calcul A < B
și fără ca Alice să dezvăluie vreodată X și Y lui Bob.
Întrebarea mea este, cum garantează Bob asta A și B sunt derivate din X și Y (și astfel, să știi că Alice nu este răutăcioasă) fără să știi ce X și Y sunt?