News

Pošten strežnik ne zaupa nikomur, tudi nam ne

Kaj pomeni oblast strežnika: strežnik drži ploščo, preverja vsako potezo pri viru, kocke commit-reveal pa ohranjajo poštenost tudi pri hiši sami.

engineeringfairnessmultiplayer

Oblast strežnika pomeni, da strežnik drži edini izvod partije, ki šteje. Tvoja naprava pošlje potezo, ki jo hočeš odigrati, strežnik jo preizkusi proti lastnim kockam in lastnim pravilom, in šele nato se plošča spremeni. Spremenjena aplikacija lahko trdi kar koli: resnica živi tam, kamor ne seže.

Backgammon si zasluži to strogost. To je igra s kockami, z lestvico in s skladom, kar pomeni, da obstajata dva načina goljufanja: ponarediti poteze ali upogibati mete. Pošten strežnik mora zapreti oboja vrata. Druga vrata vključujejo nas, in do njih bomo prišli.

Kaj oblast strežnika v resnici pomeni?

Vsaka tekoča partija Oriona obstaja na enem mestu: na našem strežniku. Plošča na tvojem telefonu je okno, ne partija. Ko povlečeš žeton, ga aplikacija ne premakne. Pošlje kratko sporočilo, ki pravi: to hočem odigrati. Strežnik ta namen odigra na lastni plošči, z lastnim pravilnim strojem, s kockami, ki jih je vrgel za to potezo. Dovoljene poteze partijo poženejo naprej in oba igralca dobita isti novi položaj. Nedovoljene poteze se niso nikoli zgodile.

To je en strežnik za vse. Aplikacija za iOS je izvorni SwiftUI, aplikacija za Android izvorni Jetpack Compose, obe pa sta okni v isto zaledje in isto igralsko skupnost. Drugo steklo, ista resnica.

Zakaj se v igrah, ki zaupajo odjemalcu, goljufa?

Ker naprava tvojega nasprotnika pripada tvojemu nasprotniku. Vse, kar teče na njej, je mogoče spremeniti. Popravljen odjemalec lahko pošilja poteze, ki nikoli niso bile dovoljene. Urejevalnik pomnilnika lahko na mestu prepiše število in zaslon bo laž zvesto pokazal. Nič od tega ni eksotično. Orodja so brezplačna, dokumentirana in starejša od pametnih telefonov.

Igra, ki zaupa odjemalcu, od vsakega igralca zahteva obljubo, da ne bo pogledal pod pokrov. Nekateri pogledajo. Zato smo mnenje odjemalca naredili nepomembno. V Orionu ima aplikacija natanko tri naloge:

  • Risati: ploščo, žetone, kocko za podvojitev, uro.
  • Prositi: prositi strežnik, naj odigra potezo, ponuditi podvojitev, predati se.
  • Prejemati: prikazati položaj, ki ga strežnik imenuje resničnega.

Metanje kock, presojanje dovoljenosti in premikanje makar enega kovanca niso na tem seznamu. Nič, kar odloča izid, ne nastane na napravi.

Kaj se zgodi, ko odigram potezo?

Ti igraš.. Tvoja aplikacija pošlje namen: ta žeton, ta polja. Nič na tvoji napravi ne spremeni prave plošče.

Strežnik jo odigra znova.. Naš pravilni stroj potezo požene proti strežnikovi plošči in strežnikovim kockam. Če je dovoljena, gre partija naprej. Če ni, se zavrne pri viru, ne glede na to, katera aplikacija jo je poslala.

Obe strani dobita isto resnico.. Novi položaj odide k obema igralcema. Če ti pade povezava, rok za ponovno vzpostavitev na uri poteze drži tvoje mesto in vrneš se k plošči, kakršna zares je, ne kakršno si je tvoj telefon nazadnje zapomnil.

Vložki upoštevajo isto pravilo. Ko se začne partija z vstopnino, strežnik obe vstopnini drži v hrambi. Sklad živi v eni knjigi, na strežniku, in se tam poračuna, ko se partija konča. Nobenega odjemalca nikoli ne vprašajo, koliko misli, da je dobil. Kovanci in dragulji so navidezni, brez vrednosti v resničnem svetu in brez izplačila, mi pa to knjigo vseeno vodimo, kakor da bi vsebovala nekaj dragocenega, kajti vsebuje: tvoje zaupanje v položaj.

Kaj preprečuje samemu strežniku, da bi goljufal?

To je pravo vprašanje in večina iger upa, da ga ne boš nikoli postavil. Strežnik, ki kocke meče na skrivaj, bi lahko prijazno metal za tistega, ki mu daje prednost, in ti tega ne bi nikoli videl. Vsak met je videti verjeten. Take so kocke.

Zato smo to moč vzeli sami sebi. Preden se partija začne, strežnik ustvari skrivno seme in objavi zavezo SHA-256 nanj. Vsak met se nato iz tega semena izpelje s HMAC-SHA256, enega za drugim, po vrsti. Ko se partija konča, strežnik razkrije seme. Kdor koli lahko preveri, da se seme ujema z zavezo, dano pred prvim metom, in da vsak met v partiji iz nje sledi. V kriptografskem smislu so bile tvoje kocke določene, preden se je kateri koli igralec dotaknil žetona. Dvanajstega meta ne bi mogli upogniti, ne da bi prekršili obljubo, ki smo jo objavili pri metu nič.

Nič od tega ti ni treba vzeti na našo besedo. Preverjanje na orion.arthea.ai/verify preračuna celotno verigo v tvojem brskalniku, z Web Crypto, na tvoji napravi, iz javnega zapisnika partije. Brez računa, brez namestitve. Vrata na orion.arthea.ai/go nosijo povezavi za App Store in Google Play in vedno pokažejo, kaj je prav zdaj na voljo.