Puncte:1

Dovada că cineva are acces la o cheie privată a cărei cheie publică face parte dintr-un grup cunoscut

drapel np

Sunt un începător în domeniul criptomonelor și sper să fiu îndreptat în direcția corectă. Am văzut câteva întrebări legate de genul acest dar niciuna care să-mi satisfacă cerințele.

Să presupunem că Forumul lui Jane este o comunitate mare și fiecare membru al Forumului lui Jane are o pereche de chei publică/privată. Cheia publică este asociată cu profilul lor și este vizibilă pentru oricine.

Bob's Backpack Shop este dispus să trimită un rucsac gratuit fiecărui membru al Jane's Forum, dar membrii Jane's Forum sunt foarte confidenți și nu doresc ca nimeni, chiar și Bob, să știe care dintre ei a comandat un rucsac de la Bob.

Este posibil ca membrii forumului lui Jane să-i demonstreze lui Bob că sunt înregistrați pe forum și că se califică pentru rucsacul gratuit fără a dezvălui exact care membri sunt ei?

Două cerințe care fac acest lucru mai greu:

  1. Membrii noi vor continua să se alăture forumului de-a lungul timpului, iar noii membri ar trebui să fie, de asemenea, eligibili pentru cadou de rucsac.
  2. Bob trebuie să poată verifica dacă fiecare comandă provine de la un membru unic al forumului (fiecare membru este eligibil doar pentru un singur rucsac gratuit).

Ca bonus, ar fi grozav dacă Bob ar putea identifica care membri au fost excluși din Forumul lui Jane. De exemplu, poate că Bob oferă un serviciu VPN în loc de un rucsac și dorește să închidă conturile utilizatorilor care sunt excluși de pe forum.

drapel us
Răspunde parțial asta la întrebarea ta? https://crypto.stackexchange.com/questions/92178/zero-knowledge-rsa-public-key/92203#92203
Puncte:1
drapel us

În primul rând, să abordăm partea bonus: când rezolvi acest tip de problemă, de obicei ajungeți cu un fel de protocol care să dovedească că utilizatorul de forum revendicat face parte din setul actual de utilizatori ai forumului. Când se modifică setul de utilizatori actuali ai forumului, ar trebui să puteți doar să rulați din nou acest protocol pentru a verifica dacă utilizatorul în cauză este încă autorizat.Acest lucru funcționează și mai bine dacă aveți un fel de identificator pseudo-aleatoriu determinist pentru fiecare utilizator de forum.

Pentru partea de demonstrare reală, există două opțiuni pe care le văd: Folosirea unei dovezi de zero cunoștințe cu un hash și o dovadă de apartenență la grup sau utilizarea unui protocol de calcul cu două părți cu un PRF și un predicat de apartenență la grup. Fără partea de pseudonimizare, acesta ar fi un caz standard pentru semnătura de inel sau o semnătură de grup care dovedește că puteți produce o semnătură valabilă sub o cheie publică dintr-un grup. Ca o alternativă, dacă puteți convinge operațiunea forumului să colaboreze, ar fi utilizarea de acreditări anonime / jetoane orbite, cum ar fi Pass de confidențialitate.

Partea dificilă este că trebuie ca furnizorul de servicii să învețe un identificator pentru utilizator care nu poate fi (re)ales în mod arbitrar de către utilizator și, în același timp, nu permite unui atacator plin de resurse să identifice utilizatorul exact din identificator. . Cea mai bună soluție cu care aș putea găsi pentru aceasta este să hașez / PRF cheia privată, care oricum nu ar trebui să fie forțată în mod brut și, astfel, nu scurge identitatea, împiedicând în același timp alți utilizatori să se prezinte unul pe celălalt prin partea AND a dovezii / protocol.

Concret, presupunând că aveți un protocol generic de dovezi cu zero cunoștințe, doriți să demonstrați că utilizatorul își cunoaște cheia privată $x$ astfel încât $H=\operatorname{Hash}(x)\land \exists i: \operatorname{is-public-key-of}(\text{pk}_i,x)$ ține unde $\{\text{pk}_i\}$ este setul de chei publice actuale ale utilizatorilor de forum și modelează funcția hash ca un oracol aleatoriu pentru a nu fi una dintre acele funcții hash „prostie” care scurg intrarea. O formulare alternativă a afirmației de mai sus care trebuie dovedită ar fi $H=\operatorname{Hash}(x)\land (\bigvee_i \operatorname{is-public-key-of}(\text{pk}_i,x))$ pentru a sublinia natura „SAU” a celei de-a doua părți. Această hârtie se pare că ar putea ajuta cu această abordare.

Alternativ, același lucru ar trebui, de asemenea, să fie realizabil în baza unor ipoteze diferite, folosind calcule multi-partide securizate. În special, aici ați defini o funcționalitate care preia de la utilizatorul forumului cheia privată $x$, de la furnizorul de servicii o cheie aleatorie simetrică statică $k$ și apoi ca intrare publică lista curentă de chei publice de forum. Funcționalitatea ar ieși apoi puțin $b$ indicând dacă $\bigvee_i \operatorname{este-cheia-publică-de}(\text{pk}_i,x)$ ține și un șir aleatoriu $I=\operatorname{PRF}(k,x)$ ca identificator de utilizator al forumului. Deși cred că ambele aceste sub-operațiuni tind să aibă protocoale specializate eficiente în mod individual, din păcate, nu gândi există în general o modalitate bună de a „lega” intrările la aceste protocoale împreună, astfel încât utilizatorul să nu folosească o intrare diferită pentru un sub-protocol. Pentru aceasta, un cadru 2PC cu protocol mixt ar fi probabil cea mai bună opțiune, de ex. ABY, MIŞCARE, sau ABY 2.0 deoarece vă permit să faceți verificarea relației cheii private-publice cu operații aritmetice și verificarea hash / evaluarea PRF cu cele binare.

drapel np
Mulțumesc! Am început să mă uit la ambele abordări pe care le-ați menționat și, deși încă nu am suficient context pentru a evalua în totalitate compromisurile, acest lucru mi-a oferit un loc grozav pentru a-mi continua cercetările și (important) o anumită confirmare că este posibil.

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.