Puncte:0

Pot două părți cu un comun secret comun să emită un angajament?

drapel sy

Să presupunem că părțile A și B au un secret comun $k$. Există un protocol în care ambele părți își eliberează împreună un angajament? $k$ pentru ca mai târziu, nici A sau B să nu poată nega care a fost secretul comun?

Edit: Mai exact, sunt interesat de scenariul în care una dintre părți poate fi rău intenționată și trebuie să dovedim unei terțe părți C că un angajament $\Phi$ este de fapt cel al secretului comun $k$.

Dacă A și B împărtășesc două angajamente separat, atunci partea rău intenționată poate împărtăși un angajament pentru un complet diferit $k'$. C ar fi știut un mod de a ști care dintre ele este angajamentul $k$.

poncho avatar
drapel my
Evident, dacă amândoi dețin secretul, ar putea emite individual angajamente față de el. De ce nu este suficient? Ce altceva ai nevoie? De exemplu, o dovadă că s-au angajat la același lucru?
Ordinary avatar
drapel sy
Una dintre părți (să spunem A) este rău intenționată. Dacă B se angajează la $k$ în mod sincer și A se angajează la un alt $k'$ (nu este cunoscut de B), nu există nicio modalitate ca o terță parte C să decidă cine este sincer, adică a împărtășit angajamentul față de $k$ - secretul comun. Există vreo modalitate de a se asigura că C poate fi convins că un angajament este de secret comun $k$?
Puncte:1
drapel my

O altă soluție, posibil mai simplă, este următoarea:

  • $A$ și $B$ reuniți-vă și selectați împreună o valoare aleatorie mare, de dimensiuni fixe $r$, și publică $\text{Hash}( k || r )$

  • Ambii semnează (folosind cheile lor private de semnătură) șirul $\text{Hash}( k || r )$; sunt publicate și ambele semnături.

Oricare poate deschide angajamentul prin publicare $k$ și $r$; oricine poate verifica dacă s-a îndreptat către angajament. Și, oricine cu $A$ și $B$cheile publice ale lui pot verifica semnăturile.

Evident, deoarece există un singur angajament care poate fi deschis într-un singur sens (presupunând că $\text{Hash}$ este rezistent la coliziune și $r$ are o lungime cunoscută; de exemplu.este întotdeauna 256 de biți), nu există nicio șansă ca niciuna dintre părți să mintă. Singurul gând la care mă pot gândi pentru un actor rău intenționat este să spun „hei, cineva mi-a furat cheia privată; nu am semnat acel angajament”

Puncte:0
drapel my

Ei bine, o abordare ar fi ca ambele părți să genereze și să publice angajamente și să publice împreună o dovadă de zero cunoștințe că ambele angajamente au aceeași valoare.

Iată o abordare pentru a face asta: ambele $A$ și $B$ generează și publică angajamente Pedersen; de exemplu, $A$ selectează o valoare aleatorie $r$ și publică $C_A = g^k h^r$, in timp ce $B$ selectează o valoare aleatorie $s$ și publică $C_B = g^k h^s$ (unde acest lucru se face într-un grup în care jurnalele discrete sunt dure și nimeni nu știe jurnalul discret al $h$ cu privire la $g$).

Dovada zero-cunoștințe că ei se angajează la aceeași valoare este o dovadă a cunoașterii unei valori $v$ astfel încât $C_A C_B^{-1} = h^v$ (care, pentru angajamente oneste, este $v = r-s$); dacă o parte se angajează la o altă valoare, nimeni nu va ști o asemenea valoare $v$, și, prin urmare, nimeni (nici măcar $A, B$ în comun) vor putea publica o astfel de dovadă. Rețineți că $C_A C_B^{-1}$ poate fi calculat de oricine are acces la cele două angajamente.

Ar părea a fi destul de simplu ca cele două părți să lucreze împreună pentru a genera o astfel de dovadă Schnorr:

  • $A$ selectează o valoare aleatorie $a$ si trimite $h^a$ la $B$; $B$ selectează o valoare aleatorie $b$ si trimite $h^b$ la $A$.

  • Ambii calculează valoarea comună $c = \text{Hash}(h^a h^b)$

  • $A$ calculează $x = a + c r$, și publică $x, h^a$. $B$ calculează $y = b - c s$, și publică $y, h^b$.

Perechea $h^ah^b, x+y$ ar fi o dovadă Schnorr validă; verificatorul ar verifica dacă $h^{x+y} = (h^ah^b) (C_A C_B^{-1})^{\text{Hash}(h^ah^b)}$

Acum:

  • Eu cred că accesul la „semi-dovezi” $x, h^a$ și $y, h^b$ nu oferă nicio perspectivă asupra niciunui angajament.

  • Acest protocol este protejat de un singur actor rău intenționat; daca (spune) $A$ a fost cinstit, atunci dacă dovada zero-cunoștințe verifică, $B$ trebuie să se fi angajat la aceeași valoare. De fapt, chiar dacă ambele părți sunt rău intenționate, totuși nu se pot angaja individual la valori diferite.

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.