Puncte:1

Cum pot demonstra că preimaginea unui hash care conține un număr este mai mare decât x?

drapel ht

Așa că vreau să creez un sistem de dovedire a cunoștințelor zero pentru numere (gândiți-vă la împrumuturi și conturi bancare, vreau să demonstrez că salariul meu este mai mare de x dolari pe lună).

Mă gândeam să folosesc o dovadă de zero cunoștințe pentru preimaginea unui hash. Așadar, să presupunem că angajatorul meu îmi hashează salariul în așa fel (de exemplu, folosind arbori merkle) încât netul meu primit este hashing individual. Pot folosi o dovadă preimagine pentru a dovedi că cunosc preimaginea hashului, dar asta nu mă duce nicăieri. Vreau să demonstrez că preimaginea hash-ului este mai mare decât o cantitate stabilită.

Dar nici asta nu este foarte util, deoarece nu vreau să dezvălui hash-ul salariului meu, pentru că nu este dificil să trimiți toate sumele posibile (să spunem 500.00-5000.00, adică doar 450.000 opțiuni) și să verific dacă este egal.

Deci, ceea ce m-am gândit să fac este să atașez un șir aleatoriu la cantitate și să trimiți asta. Există vreo modalitate prin care pot demonstra că un hash al unui șir care conține un număr este mai mare decât o anumită cantitate? Sau mă gândesc la asta într-un mod greșit?

Sam Jaques avatar
drapel us
Te-ai uitat în dovezile intervalului: https://arxiv.org/abs/1907.06381?
knaccc avatar
drapel es
Răspunsul meu aici https://crypto.stackexchange.com/questions/96232/zkp-prove-that-18-while-hiding-age/97836#97836 arată cum să utilizați un angajament Pedersen în loc de un hash și cum să creați o dovadă a intervalului bazată pe semnătura inelului Schnorr care demonstrează că angajamentul este mai mare sau egal cu o anumită valoare
Puncte:-1
drapel kr

Unul dintre criteriile unei bune funcții hash este că nu dezvăluie nicio informație despre preimagine. De aceea răspunsul este: Nu, pentru o funcție hash bună nu se poate spune nimic despre preimagine.

Să presupunem că ar fi posibil. Să presupunem că o funcție hash ar răspunde cu adevărat dacă numărul hash este mai mare decât cel dat.Atunci ar fi ușor să găsești acel număr.

  1. Folosiți hash pentru a verifica dacă numărul hash este mai mare de 1 000 000.
  2. Dacă nu este mai mare, luați mediana, 500 000. Folosiți hash pentru a verifica dacă numărul hashing este mai mare de 500 000.
  3. Dacă este mai mare, luați mediana din jumătatea superioară, 750 000. Dacă nu este mai mare, luați mediana din jumătatea inferioară, 250 000. etc. Pentru 1 000 000 veți obține numărul hashing după doar 20 de pași, cu precizie +-1. Dacă mai faci 7 pași, vei cunoaște numărul cu precizie 0,01.
drapel ht
Bine, dar vreau ca cineva să demonstreze altcuiva că salariul lui este mai mare decât o valoare. Ei își pot lua cunoștințele despre ce se află în hash și le pot folosi pentru a genera o dovadă. Aceste dovezi nu vor fi generate automat, utilizatorul trebuie să le semneze cu valoarea numai pe care o știu că este în hash. Ce ar trebui să folosesc pentru această aplicație?
Manish Adhikari avatar
drapel us
Acest răspuns este greșit. @vrwim Da, ai dreptate că se poate face. Ar trebui să fie posibil să se producă o dovadă a cunoștințelor zero că o valoare v codificată acolo este mai mare decât x pentru un x cunoscut, fără a dezvălui nimic altceva despre x. Nu puteți căuta în binar valoarea doar cu acea informație, deoarece altcineva nu poate verifica dacă este mai mare decât o altă valoare y sau nu, decât dacă probatorul decide să demonstreze și asta. Problema este evident în NP și fiecare problemă din NP are o dovadă de cunoștințe zero
Manish Adhikari avatar
drapel us
Cel mai bun lucru pe care îl știu pentru astfel de dovezi ar fi ZK SNARK peste circuitul boolean pentru calcularea hash-ului, este foarte bun pentru verificare (dovada este scurtă și are timp de verificare subliniar w.r.t. dimensiunea martorului). Generarea dovezii durează ceva timp din cauza necesității de a compila programul hash și a unor operații de curbă eliptică.
kelalaka avatar
drapel in
A se vedea https://www.wisdom.weizmann.ac.il/~oded/gmw1.html
drapel kr
@Manish Adhikari: Comentariul tău este greșit. Cred că nu ai înțeles întrebarea. Întrebarea este **nu** dacă este posibilă dovada ZP. Întrebarea este dacă un hash **static** care a fost calculat de către probator **în avans** (fără nicio interacțiune cu verificatorul) poate fi utilizat pentru proba ZK. Este imposibil din cauza motivului pe care l-am descris în răspuns.
Manish Adhikari avatar
drapel us
OK, dar încă nu văd cum este formulată întrebarea pentru a însemna ceea ce spui tu. Recunosc totuși că există părți pe care nu le înțeleg cum intră angajatorul în ecuație
drapel kr
@ManishAdhikari: OP caută o modalitate de a calcula cumva un hash **unic** și de a o face **în avans**. Dovada ZK nu funcționează în acest fel.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.