Wednesday, June 7, 2017

Kétszemélyes cryptogenography 0.3384 fölé

Most erről lesz szó, Doerr - Künnemann : Improved Protocols and Hardness Results for the Two-Player Cryptogenography Problem.

A setting a következő (a papír általánosabb, most ráhegyezem a kétszemélyesre):
  • Van két játékosunk, nevezzük őket A-nak és B-nek, egyikük, nevezzük ownernek, rendelkezik egy titokkal, amit csak ő ismer, ez a titok az egyszerűség kedvéért vagy a 0 bit, vagy az 1 bit. Hogy melyikük az owner és mi a titok, az függetlenül 12-12 eséllyel kerül kiosztásra a játék elején.
  • Ők ketten azzal tisztában vannak, hogy melyikük ismeri a titkos bitet, és szeretnék úgy nyilvánosságra hozni az értékét egy publikus protokollal, hogy külső megfigyelő, az ellenség, ne tudja meg (azaz kb: minél kisebb valószínűséggel tudja megtippelni), hogy melyikük rendelkezett a titokkal.
  • Ehhez használhatnak random biteket, publikusat is (amit mindenki lát, az ellenség is) és privátot is (amit pedig csak az, aki generálja).
Nyilván a WikiLeaks és társai azok, amik a sztori szerint motiválják ezt (k játékosra), hogy ez mennyire van valóban így, azt az utókorra hagynám :D mutatok egy példát, és azon keresztül megnézzük ezt a minimalizálandó valószínűség dolgot.
 
A közismert (és 2016-ig optimálisnak sejtett) "TwoBit" protokoll a következő (mindjárt elemezni is fogjuk):
  • Először az A játékos lép. Ő ebben a lépésében azt fogja kihirdetni, hogy a következő lépésben A vagy B beszéljen, mégpedig a következőképpen hirdet:
    • Ha A az owner, akkor 23 eséllyel azt mondja, hogy B beszéljen és 13 eséllyel azt mondja, hogy A beszéljen.
    • Ha A nem az owner, akkor pont fordítva: 23 eséllyel nevezi meg magát, és 13 eséllyel B-t.
  • A második körben bárki is beszél, az
    • ha ő az owner, akkor bejelenti, hogy "a titok X", ahol X a titok tényleges értéke;
    • ha nem ő az owner, akkor bejelenti, hogy "a titok X", ahol X egy 1212 eséllyel generált random bit.
Például, ha A az owner, akkor egy lehetséges lefutás:
  • bejön a 23, amekkora eséllyel átadja B-nek a beszéd jogát,
  • aztán B (mivel nem ő az owner) 12 eséllyel dob egy 0 bitet és ezt hirdeti ki.
Ennek a lefutásnak az esélye 13. Egy másik lefutás:
  • bejön a 23, amekkora eséllyel átadja B-nek a beszéd jogát,
  • aztán B (mivel nem ő az owner) 12 eséllyel dob egy 1 bitet és ezt hirdeti ki.
Ennek szintén 13 az esélye. A harmadik lefutás:
  • bejön az 13, amekkora eséllyel megtartja a beszéd jogát,
  • aztán mivel ő az owner, kihirdeti a titok tényleges értékét.
Tehát ha A az owner, akkor a három egyforma valószínű futásból kettőben a tényleges titok értékét hirdeti ki, ami 23 esély. Ha nem A az owner, akkor szintén ugyanez történik, ki lehet számolni azt is.
Persze ha csak annyi lenne a célfüggvényünk, hogy hirdessük ki a titkot, akkor A először mindenképp átadná a vezérlést az ownernak, aki aztán igazmond. Ekkor biztosan a tényleges titok értékét hirdetnénk ki, azonban ebben a feladatban az is cél (mindjárt meglátjuk, hogy hogyan), hogy amennyire lehet, titokban tartsuk az owner kilétét. Ha mindenképp az ownernak adjuk át a beszéd jogát, akkor az ellenség tudni fogja, hogy az az owner, aki megszólalt a második körben.
Elemezzük ki, hogy a TwoBit-ben mit is tud az ellenség abból, amit lát?
  • Ha azt látja, hogy A átadja B-nek a jogot, aki bejelent egy bitet, akkor azt tudja ebből kikövetkeztetni, hogy 13 eséllyel B volt az owner és 23 eséllyel A volt az owner. Ekkor ő a maximum likelihood becslés alapján rámutat A-ra, hogy "ő volt az owner!"
  • Ha azt látja, hogy A nem adja át B-nek a jogot, akkor a protokoll alapján B a valószínűbb owner, ekkor az ellenség B-t jelöli meg.
Tehát a protokoll lefutása után az ellenség kiszámítja (ismerve a protokollt ezt meg tudja tenni), hogy ki kettejük közül a valószínűbb owner, és ezt a játékost jelöli meg. Ebben a protokollban mindig azt jelöli meg az ellenség, aki a második körben csendben volt.
A és B akkor győznek, ha
  • sikerül a tényleges titokbit értékét kihirdetniük ÉS
  • az ellenség pont a másikukat jelöli meg, mint aki az owner.
Olyan protokollt kell terveznünk, ami maximalizálja ezt az esélyt.
Ha mindenképp az ownernek adjuk át a jogot, akkor ugyan mindig a tényleges titokbit értékét jelöljük meg, de utána az ellenség pontosan az ownerre tud rámutatni, így A és B veszítenek.
A TwoBit protokoll esetén mi történik? Akkor nyer A és B, ha az ellenség nem az ownert jelöli meg és a helyes bit került kihirdetésre. Ha kiszámoljuk a lehetséges eseteket:
  • ha A az ownernek adja át a jogot (1/3 eséllyel), az eltalálja a titkot (1 eséllyel), ennek összesen 1/3 az esélye, ekkor az ellenség  pont a másik játékosra fog mutatni és ekkor A és B nyernek.
  • ha pedig A nem az ownernek adja át a jogot (2/3 eséllyel), az mindegy, hogy eltalálja-e a titkot, az ellenség pont az ownerre fog mutatni és A és B veszítenek.
Tehát ebben a protokollban 1/3 az esélye annak, hogy az igazi titok kerül bejelentésre, az owner pedig megússza.
De nem ez a legjobb protokoll, amit erre a problémára adni lehet, erről szól a linkelt cikk.
Minden ilyen protokollt lehet egy fával reprezentálni a következőképpen:
  • A fa csúcsaiban (a,b,c,d)R4 négyesek vannak, nemnegatív valós számokkal.
  • A fa gyökere az (14,14,14,14) vektor, ez a kiinduló állapot.
  • Egy (a,b,c,d) levélcsúcs értéke: max.
  • Egy belső csúcsnak ha a két gyereke és , akkor a következőknek kell teljesülniük:
    • , , , , tehát a gyerek vektorok összege a szülő vektor;
    • van olyan , melyre vagy , vagy .
  • Egy belső csúcs értéke pedig a gyerekcsúcsai értékének összege.
Például:
  • gyerekei lehetnek és , mert a két vektor összege épp az uniform vektor és az első koordináta-páron megmaradnak az arányok;
  •  ha itt megállna a játék, akkor a gyökércsúcs értéke lenne;
  • de nem: legyen a csúcsnak a két gyereke és , ami valid: a két gyerekvektor összege a szülő vektor és az első koordináta-páron megmaradnak az arányok; ezeknek a leveleknek az értéke , összesen tehát lesz a csúcs értéke;
  • a -nek pedig ha a két gyereke és , akkor szintén kihoztuk -ra ennek a csúcsnak az értékét,
  • így a gyökércsúcs értéke épp lesz.
Ez a fa ezekkel az -ekkel és -okkal egyébként a cikkben elolvasható módon éppen megfelel a TwoBit protokollnak. A cikkben azt csinálták, hogy felépítettek egy keresőprogrammal egy
18.248 csúcsú fát
aminek az értéke lett, ami hát tényleg nagyobb, mint .
Azt tudjuk még, hogy az optimum értéke legfeljebb , ami kb. . Az igazság a két érték közt lehet valahol, de vajon mennyi lehet?
A tippem egyébként lenne, ha tennem kéne egy educated guesst.