fairnessprovably fairdice
Da, lahko je. Spletne kocke se mečejo na strežniku, ki ga ne vidiš, in nič fizičnega ne preprečuje upravljavcu, da bi spremenil število, preden pride na tvojo ploščo. Sami izidi ne bodo nikoli ničesar dokazali v nobeno smer, zato pošteno vprašanje ni, ali je prirejanje mogoče. Vprašanje je, ali lahko igra dokaže, da ga ni bilo.
Sami delamo igro backgammona, zato tu nismo nevtralni. Prav zato hočemo odgovoriti korektno, tudi na neprijetnih mestih.
Zakaj se kocke na vsaki strani zdijo prirejene?
Ker je varianca v backgammonu neusmiljena, človeški spomin pa nagnjen. Dve kocki lahko padeta na šestintrideset načinov; nizi niso okvara, ampak jamstvo, in nekje nocoj bo pošten strežnik vrgel štiri dvojčke zapored proti nekomu, ki je vsak žeton odigral pravilno. Zapomniš si tisti 5-5, ki ti je zadel osamljeni žeton. Ne zapomniš si čudežnega meta, ki te je rešil prejšnji torek. Porazi ostanejo, rešitve izhlapijo, in po treh slabih partijah zapored kocke postanejo osebne. Osebne postanejo tudi ob pravi plošči v pravi kavarni. Vprašaj kogar koli, ki štirideset let potiska lesene žetone.
In tu je past. Prirejena igra bi se zdela popolnoma enaka. Nizi ne dokazujejo ničesar v nobeno smer, zato če je tvoj dokaz to, kako so se kocke zdele, ne moreš ločiti poštenega strežnika od nepoštenega. Ne moremo niti mi. To ni obramba spletnih kock. To je prav njihova težava.
Bi lahko stran zares upogibala svoje kocke?
Tehnično da, in to sploh ne bi bilo težko. Strežnik vidi celotno ploščo, preden vrže. Upravljavec, ki bi hotel goljufati, bi lahko:
- Nagnil le nekaj metov od sto v trenutkih, ki najbolj tehtajo: met, ki zadene, vstop z bara, ki spodleti, dvojček, ki obrne izgubljeno partijo.
- Ohranjal dvoboje umetno tesne, da se seje podaljšujejo in porazi delujejo kot skorajšnje zmage.
- Tiho dajal prednost strani, ki upravljavcu ustreza.
- To počel dovolj redko, da kocke še vedno prestanejo vsak statistični preizkus, ki ga igralec sploh lahko izvede.
Ne trdimo, da to počne katera koli določena stran. Pravimo, da arhitektura to dopušča. Zaprt strežnik je zaklenjena soba: upravljavec meče sam, objavi število in te prosi, da mu zaupaš. Z zunanje strani vrat sta pošten in nepošten upravljavec videti enaka.
Ali certificiran generator ne dokaže, da so kocke poštene?
Preberi, kaj certifikat v resnici pokriva. Laboratorij preizkusi generator: algoritem na mizi, ki proizvede milijone števil, ki prestanejo statistične preglede. To certificira sestavni del. O dostavi ne pove nič, torej o tem, ali je število, ki je prišlo na tvojo ploščo, prišlo iz tistega generatorja, v tistem trenutku, med potjo nespremenjeno. Umerjena tehtnica v skladišču ne dokaže, da je bil tvoj kruh stehtan na njej.
Poleg tega je certifikacija posnetek trenutka. Produkcijski strežniki se nenehno znova postavljajo, pot kode med generatorjem in tvojo partijo pa se spreminja še dolgo potem, ko je laboratorij odšel domov. Certificiran generator torej odgovarja na vprašanje, ki ga v resnici nihče ni postavil. Ni pomembno, ali nekje v stavbi obstajajo dobre kocke. Pomembno je, ali jih je dobila tvoja partija, ob vsakem metu, nocoj.
Kaj commit-reveal zares spremeni?
Poštenost premakne iz obljube v dokaz. Preden se partija začne, strežnik potegne skrivno seme in objavi njegov prstni odtis, zgoščeno vrednost SHA-256, ki se imenuje zaveza. Vsak met v partiji se nato izpelje iz tega semena, en izračun HMAC-SHA256 na met, po vrsti. Ko se partija konča, strežnik razkrije seme.
Zdaj lahko kdor koli preveri dvoje. Zgoščuj razkrito seme: ujemati se mora z zavezo, objavljeno pred prvo potezo. Preračunaj mete: ujemati se morajo z vsakim številom, ki se je pojavilo na plošči. Če bi strežnik spremenil vsaj eno kocko, potem ko je videl tvoj položaj, se račun ne bi izšel. Prirejanje neha biti sum, ki ga ne moreš preizkusiti, in postane laž, ki jo lahko ujameš pri dejanju.
Kocke, zaklenjene pred partijo, se nanjo ne morejo odzvati.
To je bistvo. Uporabna vrsta prirejanja je odzivna: vidi osamljeni žeton, vrzi zadetek. Commit-reveal strežniku vzame oči, ker je bilo celotno zaporedje določeno pred uvodno potezo, vsak poseg po zavezi pa je matematično zaznaven. Česar ne stori, je, da bi kocke postale prijazne. Zaporedje je bilo pošteno, ne usmiljeno. Še vedno boš pristal na baru v najslabšem možnem trenutku, zdaj pa boš lahko dokazal, da je bilo pošteno.
Kako se partija preveri v praksi?
Tako smo to zgradili v Orionu. Vsaka partija, odigrana na naših strežnikih, nosi zavezo, dano pred prvim metom, strežnik preverja vsako potezo pri viru, preverjanje končane partije pa vzame približno minuto:
Odpri preverjanje. Pojdi na orion.arthea.ai/verify v katerem koli brskalniku. Nič ni treba namestiti, nobenega računa ni treba odpirati.
Vnesi id partije. Vsaka strežniška partija v Orionu ga ima. Prilepi ga.
Pusti brskalniku, da izračuna. Stran preračuna zavezo in vsak met z Web Crypto, lokalno, v tvojem brskalniku. Naša beseda ni del tega preverjanja. Če bi bilo spremenjeno eno samo število, bi preračun to povedal.
Preverjanje deluje že danes. Sama igra je končana, vrata na orion.arthea.ai/go pa nosijo povezavi za App Store in Google Play in vedno pokažejo, kaj je prav zdaj na voljo. Kakor koli, pošten odgovor ostane. Da, spletni backgammon je lahko zrežiran. Zdravilo ni lepša obljuba. Zdravilo so kocke, ki pokažejo svoj račun.