Permiteți-mi să introduc mai întâi contextul: Să spunem că avem o evaluare a funcției hash: $$h = H(x, y),$$ Unde $x$ și $y$ sunt intrarea publică și cea privată a funcției hash $H$, respectiv.
Apoi, dacă vreau să dovedesc cuiva că acest calcul a fost calculat corect fără a dezvălui efectiv $x$, atunci trebuie să creez o dovadă a cunoștințelor zero-cunoștințe $\pi$ (care ar putea fi obținut prin ZKPoK de uz general, cum ar fi SNARKS, STARKS, ...) dintr-un $x$ astfel încât $h = H(x, y)$.
Până în acest moment, totul este în regulă.
Ce se întâmplă dacă vreau ca altcineva să verifice evaluarea hash fără a dezvălui intrarea privată $x$, nu trece prin ZKPoK cu scop generic; și mai important: păstrarea unei anumite funcții hash proprietăți precum determinismul, uniformitatea și universalitatea?
Prima mea idee de a rezolva această întrebare este să găsesc o funcție $f$ astfel încât:
- $f(x)$ poate fi făcut public (astfel încât oricine poate verifica cu ușurință calculul $H(f(x), y)$).
- $f(x)$ satisface, de asemenea, determinismul, uniformitatea și universalitatea.
De fapt, dacă o astfel de funcție $f$ există, atunci aș putea doar înlocui $H$ cu $f$. Să spunem că ceea ce încerc să găsesc este un calcul care împărtășește unele dintre proprietățile pe care le au funcțiile hash, dar care este mult mai eficient (adică, fără a fi nevoie de dovezi generice) verificabile.
O a doua idee este de a înlocui mecanismul de hashing cu altceva (de exemplu, criptare concatenată cu o semnătură...) care ar putea fi verificabil eficient, păstrând în același timp proprietățile menționate.