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 12−12 eséllyel generált random bit.
- 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.
- 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.
- 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.
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.
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.
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.
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.
- 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.
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.