fairnessprovably fairdice
Dajú. Online kocky sa hádžu na serveri, ktorý nevidíš, a nič fyzicky nebráni prevádzkovateľovi zmeniť číslo skôr, než dorazí na tvoju dosku. Samotné výsledky nikdy nič nedokážu ani v jednom smere, takže poctivá otázka neznie, či je manipulácia možná. Znie: dokáže hra preukázať, že k nej nedošlo.
Robíme hru vo vrhcáby, takže tu nie sme nestranní. Práve preto na to chceme odpovedať poriadne, vrátane nepríjemných častí.
Prečo kocky na každej stránke pôsobia zmanipulovane?
Pretože rozptyl vo vrhcáboch je nemilosrdný a ľudská pamäť je zaujatá. Dve kocky padnú tridsiatimi šiestimi spôsobmi; série nie sú porucha, sú záruka, a niekde dnes večer poctivý server hodí štyri dublety po sebe proti niekomu, kto zahral každý kameň správne. Pamätáš si 5-5, ktoré zobralo tvoj odkrytý kameň. Nepamätáš si zázračný hod, ktorý ťa zachránil minulý utorok. Prehry ostávajú, úniky sa vyparia, a po troch zlých partiách za sebou začnú byť kocky osobné. Sú osobné aj pri skutočnej doske v skutočnej kaviarni. Opýtaj sa hocikoho, kto štyridsať rokov posúva drevené kamene.
A tu je pasca. Zmanipulovaná hra by pôsobila úplne rovnako. Série nedokazujú nič ani v jednom smere, takže ak je tvojím dôkazom to, ako kocky pôsobili, poctivý server od nepoctivého neodlíšiš. My tiež nie. Toto nie je obhajoba online kociek. Toto je práve ich problém.
Mohla by stránka svoje kocky naozaj upraviť?
Technicky áno, a nebolo by to ani ťažké. Server vidí celú dosku ešte pred hodom. Prevádzkovateľ, ktorý by chcel podvádzať, by mohol:
- Nakloniť pár hodov zo sta vo chvíľach, ktoré vážia najviac: hod, ktorý trafí, vstup z lavice, ktorý zlyhá, dublet, čo otočí prehratú partiu.
- Držať zápasy umelo vyrovnané, aby sedenia trvali dlhšie a prehry pôsobili ako tesné.
- Potichu nadŕžať strane, na ktorej má prevádzkovateľ záujem.
- Robiť to dosť zriedka na to, aby kocky stále prešli každým štatistickým testom, aký hráč zvládne spustiť.
Netvrdíme, že to nejaká konkrétna stránka robí. Hovoríme, že to architektúra umožňuje. Uzavretý server je zamknutá miestnosť: prevádzkovateľ hádže osamote, nahlási číslo a poprosí ťa, aby si veril. Zvonku za dverami vyzerajú poctiví aj nepoctiví prevádzkovatelia úplne rovnako.
Nedokazuje certifikovaný generátor, že sú kocky poctivé?
Prečítaj si, čo ten certifikát naozaj pokrýva. Laboratórium testuje generátor: algoritmus na skúšobnom stole, ktorý vyrába milióny čísel prechádzajúcich štatistickými kontrolami. To certifikuje súčiastku. O doručení nehovorí nič, teda o tom, či číslo, ktoré dorazilo na tvoju dosku, prišlo z toho generátora, v tej chvíli a cestou nezmenené. Overená váha v sklade nedokazuje, že tvoj chlieb bol vážený na nej.
Certifikácia je navyše momentka. Bežiace servery sa neustále nasadzujú znova a cesta kódu medzi generátorom a tvojou partiou sa mení ešte dlho potom, čo laboratórium odišlo domov. Certifikovaný generátor tak odpovedá na otázku, ktorú sa nikto naozaj nepýtal. Nejde o to, či niekde v budove existujú dobré kocky. Ide o to, či ich tvoja partia dostala, pri každom hode, dnes večer.
Čo vlastne commit-reveal mení?
Presúva poctivosť zo sľubu na dôkaz. Skôr než partia začne, server vytiahne tajné semienko a zverejní jeho odtlačok, hash SHA-256 zvaný záväzok. Každý hod v partii sa potom z toho semienka odvodí, jeden výpočet HMAC-SHA256 na hod, po poradí. Keď partia skončí, server semienko odhalí.
Teraz môže ktokoľvek skontrolovať dve veci. Zahashuj odhalené semienko: musí sedieť so záväzkom zverejneným pred prvým ťahom. Prepočítaj hody: musia sedieť s každým číslom, ktoré sa na doske objavilo. Keby server po zhliadnutí tvojej pozície zmenil čo i len jednu kocku, výpočet by nevyšiel. Manipulácia prestáva byť podozrením, ktoré sa nedá otestovať, a stáva sa lžou, ktorú možno prichytiť.
Kocky zamknuté pred partiou na ňu nemôžu reagovať.
V tom je jadro. Užitočný druh manipulácie je reaktívny: uvidieť odkrytý kameň a hodiť trafenie. Commit-reveal serveru berie oči, pretože celá postupnosť bola pevne daná pred otváracím ťahom a akýkoľvek zásah po záväzku je matematicky odhaliteľný. Čo nerobí, je že kocky nezjemní. Postupnosť bola poctivá, nie milosrdná. Stále budeš sedieť na lavici v tú najhoršiu možnú chvíľu, a teraz to budeš vedieť preukázať ako poctivé.
Ako partiu overiť v praxi?
Takto sme to postavili v Orione. Každá partia odohraná na našich serveroch nesie záväzok urobený pred prvým hodom, server overuje každý ťah pri zdroji a kontrola dohranej partie zaberie zhruba minútu:
Otvor overovač. Choď na orion.arthea.ai/verify v akomkoľvek prehliadači. Nič na inštalovanie, žiadny účet na zakladanie.
Zadaj identifikátor partie. Každá serverová partia v Orione ho má. Vlož ho.
Nechaj počítať prehliadač. Stránka prepočíta záväzok aj každý hod pomocou Web Crypto, lokálne, v tvojom prehliadači. Naše slovo do kontroly nevstupuje. Keby bolo zmenené jediné číslo, prepočet by to povedal.
Overovač beží už dnes. Samotná hra je hotová a dvere na orion.arthea.ai/go nesú odkazy na App Store a Google Play a vždy ukazujú, čo je dostupné práve teraz. Tak či onak poctivá odpoveď ostáva. Áno, online vrhcáby sa dajú zmanipulovať. Liekom nie je krajší sľub. Sú ním kocky, ktoré ukazujú svoj výpočet.