Puncte:1

Sortați în siguranță listele de numere de la două părți

drapel jp

Caut modalități de a sorta în siguranță două liste de numere. Problema milionarului lui Yao ia în considerare fiecare parte cu un număr secret și le compară în siguranță. Există lucrări despre extinderea acestei probleme în care fiecare parte are o listă de numere și fiecare parte va afla pozițiile fiecărui element din lista sa față de o listă concatenată fuzionată de la ambele părți? O parte nu va afla numerele exacte ale altei partide.

poncho avatar
drapel my
Va fi rezultatul concatenarea celor două liste, sortate? Ceea ce împiedică fiecare parte să deducă lista sortată a celeilalte (și dacă nimic, atunci un protocol banal al unei părți care dă lista sortată celeilalte, care le combină, este suficient).
Problem Solver avatar
drapel jp
Fiecare parte va afla pozițiile relative ale intrărilor sale în listele concatenate, dar nu va cunoaște numerele reale de la cealaltă parte. În mod ideal, vreau să fac asta pentru un număr arbitrar de partide.
Puncte:1
drapel ng

Problema are o „soluție ușoară” folosind tehnici generale.

  1. Există extensii ale problemei Milionarii lui Yao despre cum să calculezi în siguranță orice circuit $C(x, y)$. Acesta este un întreg domeniu de studiu, care se numește de obicei „Calcul Securizat” sau „Calcul Multiparty”.

  2. Există circuite care pot sorta intrările care poartă numele de rețele de sortare. În timp ce există din punct de vedere tehnic $O(n \log n)$ cele (rețea de sortare AKS + sortare în zigzag), sunt complexe din punct de vedere tehnic, cu constante proaste, deci este aproape întotdeauna mai bine în practică să folosiți un $O(n (\log n)^2)$ rețea de sortare dintre care există multe (să spunem Batcher Odd-Even Mergesort).

Aceasta înseamnă că problema dvs. este rezolvată prin calculul unei rețele de sortare (să spunem Batcher Odd-Even Mergesort) folosind tehnici generale de calcul cu două părți.

Privind implementările protocoalelor MPC, se pare că acesta de la Universitatea din Boston include o demonstrație relevantă. În special, ei

  1. suma două matrice de intrare și apoi
  2. sortați rezultatul, folosind Bubblesort.

Probabil că puteți reutiliza o parte din acest cod, dar va trebui să fiți oarecum atenți. Garanția de securitate a MPC este aceea

Protocolul MPC dezvăluie doar $C(x,y)$, de exemplu.este la fel de bun ca ambii participanți să își ofere contribuțiile $x, y$ unor terți de încredere $T$, care apoi calculează $C(x,y)$, și le spune răspunsul.

Ați putea, teoretic, să luați exemplul de cod de mai sus, să schimbați partea care însumează lucrurile la o concatenare și să continuați drumul. Acest lucru va duce la o schemă practic nesigură --- dat $x$ și $C(x,y)$, este banal de recuperat $y$.

În schimb, aș sugera să aveți $C(x,y)$ calculează (în reprezentarea sortată a concatenării $x||y$) un vector de biți care indică unde ar trebui să ajungă elementele fiecărei părți. Aceasta încă codifică toate informațiile relevante despre comandă, dar ascunde intrarea fiecărei părți de la cealaltă parte (cu excepția informațiilor despre comandă, care „trebuie să curgă”).

Acest lucru se poate face prin

  1. Cartografierea fiecărui element $t$ de $x$ la 2t $,
  2. Cartografierea fiecărui element $t$ de $y$ la $2t+1$,
  3. concatenând aceste elemente transformate,
  4. sortarea concatenării,
  5. cartografiere $t\mapsto t\bmod 2$ la sfarsit.

Acest circuit calculează funcția pe care am descris-o anterior și „rupe legăturile” între ele $x$ și $y$ prin punerea elementului de $y$ mai târziu în vector. Această alegere este arbitrară.

Desigur, aceasta este ideea mea despre un circuit sensibil $C$ pentru a calcula care vă poate atinge obiectivele. S-ar putea să credeți că scurge prea multe informații și că aveți un alt circuit pe care doriți să îl calculați. Puteți utiliza în continuare tehnicile generale ale MPC pentru a face acest lucru --- cu condiția să specificați calculul pe care doriți să îl faceți.


În comentarii ați menționat dorința pentru o versiune multipartidă a acestui lucru. Acest lucru este imediat din construcția de mai sus, dar îl voi discuta în mod explicit oricum.

Lăsa $P_0,\dots, P_{k-1}$ fii partide cu intrări $\vec x_0,\dots, \vec x_{k-1}$. Definiți un circuit $C(x_0,\dots, x_{k-1})$ acea

  1. pentru fiecare $i$, aplică funcția $t\mapsto kt + i$ la fiecare coordonată a $x_i$,
  2. concatenează toate rezultatele împreună
  3. sortează rezultatele, de exemplu cu o rețea de sortare,
  4. calculează funcția $t\mapsto t\bmod k$ pe fiecare element al ieșirii.

Rezultatul va fi un vector cu elemente în $\{0,\dots,k-1\}$. Pentru simplitate, spuneți că rezultatul este $[0,3,2,2,1,0,1,3]$. Acest lucru ar indica tuturor celor 4 părți că ordinea relativă a intrărilor lor este

  1. cel mai mic element al partidei 0
  2. cel mai mic element al partidului 3
  3. cel mai mic element al partidului 2
  4. cel mai mare element al partidului 2
  5. cel mai mic element al partidului 1
  6. cel mai mare element al partidului 0
  7. cel mai mare element al partidului 1
  8. cel mai mare element al partidului 3.

Dacă se folosește o schemă MPC adecvată (cuvintele de căutat sunt „Calcul multipartit sigur în mod rău intenționat”), atunci acesta este, probabil, tot ceea ce va învăța un adversar, modulo câteva ipoteze tehnice. Aceste ipoteze depind de schema particulară pe care o utilizați, dar de obicei sunt ceva asemănător

  • nu prea mulți participanți la protocol „se complică pentru a încălca protocolul”,
  • adversarii sunt eficienți din punct de vedere computațional și
  • poate că există o fază de „configurare de încredere”.

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.