Miten peliautomaatti päihitetään
- Alex, tyyppi joka mursi hedelmäpeleissä käytettävän näennäissatunnaislukugeneraattorin ja tienasi miljoonia
- Peliautomaattipetokset, laitteiston manipulointi ja erikoisvälineet
- Hedelmäpelit ja ohjelmistojen toimintaviat
- Liite: Miten Alexin algoritmi saattaisi toimia
Oikealla satunnaislukugeneraattorilla toimivat hyvin suunnitellut hedelmäpelit ovat teoreettisesti lyömättömiä. Todellisuudessa on kuitenkin monia dokumentoituja tapauksia, joissa pelaajat onnistuivat huijaamaan hedelmäpelejä antamaan huomattavasti suurempia voittoja, kuin mitä kasinojen omistajat olivat toivoneet.
Monet näistä tempuista ovat räikeitä varkauksia. Yleensä näissä on mukana välineitä, joilla manipuloidaan peliautomaatin laitteistoa, eli koneen kolikkojakelijaa tai setelien vastaanottolaitetta. Joissakin tapauksissa mukana on ollut sisäpiiriläinen kasinolla, joka on auttanut manipuloimaan peliautomaattia.
Toinen joukko tapauksia koostuu pelaajista, jotka ovat olleet epätavallisen onnekkaita. He ovat onnistuneet löytämään toimintavian ohjelmistossa ja käyttäneet sitä hyväkseen.
Ehdottomasti kiinnostavin tapaus tulee kuitenkin lähimenneisyydestä (2009-2018). Tarina kertoo venäläisestä tyypistä Pietarista, joka onnistui ennustamaan kierroksen lopputuloksen tietyissä peliautomaattimalleissa ja käytti tätä edukseen lypsäen kasinoilta ympäri maailman miljoonia.
Tämä tarina on niin tyrmistyttävä, että päätin käyttää sen parissa jonkin verran aikaa ja paneutua analysoimaan tarkemmin hänen käyttämiään tekniikoita.
Alex, tyyppi joka mursi hedelmäpeleissä käytettävän näennäissatunnaislukugeneraattorin ja tienasi miljoonia
Alex teki töitä freelancer-ohjelmoijana ja hakkerina, kun venäläinen kasino palkkasi hänet manipuloimaan muutaman Novomatic-peliautomaatin palautusprosenttia. Hoitaakseen tehtävän Alexin piti tutustua näiden koneiden sisäiseen toimintaan yksityiskohtaisesti. Hän sai myös tietoa näennäissatunnaislukugeneraattoreista (PRNG), niiden toimintatavasta ja siitä, miten niitä käytetään peliautomaateissa. Läpimurto tapahtui, kun hän huomasi, että peliautomaateissa käytettiin epäluotettavaa PRNG-algoritmia, joka saattaisi olla ennustettavissa.
Aito satunnaislukugeneraattori käyttää radiotaajuushäiriötä luodakseen täysin sattumanvaraisia ja täysin odottamattomia arvoja. PRNG toimii eri tavalla. Se lähtee liikkeelle ennalta määritetystä arvosta ja sekoittaa siihen sitten muita syötteitä, joiden avulla luodaan loputon sarja arvoja. Näennäissatunnaislukugeneraattorin tuotosarvot vaikuttavat ensisilmäyksellä täysin sattumanvaraisilta ja mahdottomilta ennustaa. PRNG käyttää kuitenkin heikkoa algoritmia, ja jos tiedät tarkalleen mistä algoritmista on kyse, saatat pystyä ennustamaan seuraavan satunnaisen numeron.
Alex oli ilmeisesti huomannut, että joidenkin peliautomaattien käyttämät algoritmit olivat heikkoja, ja hän päätti hyödyntää tätä.
Seuraavien vuosien ajan hän loi perustaa sille, mistä tulisi huomattavasti hienostuneempi operaatio:
- Hän takaisinmallinsi useita suosittuja hedelmäpelejä.
- Hän kehitti algoritmin, joka pystyi selvittämään PRNG:n senhetkiset parametrit ja ennustamaan tulevien kierrosten tulokset parin tusinan hedelmäpelikierroksen avulla.
- Hän kehitti iPhone-sovelluksen, joka käytti ennustettuja tuloksia kertoakseen pelaajalle tarkasti, milloin pyöräytä-painiketta piti painaa voittaakseen.
- Hän palkkasi kymmeniä apulaisia, joiden tehtävänä oli lypsää kasinoita ympäri maailman seuraavat 6-7 vuotta.
Alex väittää, että tuona aikana hän pystyi tiiminsä kanssa tienaamaan miljoonia dollareita.
Oliko Alexin menetelmä lainmukainen ja moraalisesti hyväksyttävä?
Hänen kehittämänsä tekniikka ei sisällä peliautomaattien kiellettyä manipulointia. Tässä on valtava ero niihin moniin varkaustekniikoihin, joita tässä artikkelissa kuvataan jäljempänä, ja joissa peliautomaattilaitteistoa huijataan antamaan tarkoitettua enemmän rahaa. Alexin strategia perustui puhtaaseen matematiikkaan hänen omien huomioidensa nojalla, ja täten sitä voidaan pitää kelvollisena ja puhtaana strategiana hedelmäpelien päihittämiseen.
Monet rahapeliasiantuntijat (minä mukaan lukien) pitävät Alexin toimintaa täysin puhtaana ja moraalisesti hyväksyttävänä. Vertaisin sitä korttien laskemiseen blackjackissä, bonusten metsästämiseen tai voitolliseen vedonlyöntiin. Kasinot laittavat näitä peliautomaatteja pelattavaksi vapaaehtoisesti, ja se on kasinojen ongelma, jos joku on riittävän fiksu ennustamaan lopputuloksia ja hyötymään siitä.
Kasinot (varsinkin kivijalkakasinot) ovat kuitenkin valtavia yrityksiä, joilla on rutkasti rahaa sekä vahvat siteet paikallisiin viranomaisiin. Kun kasinot huomasivat, että järjestäytynyt ryhmä käytti peliautomaatteja pankkiautomaatteina, ne varmasti käyttivät suhteitaan tehdäkseen asialle jotakin. Lopulta viranomaiset ja kasinojen asianajajat onnistuivat löytämään rikoksen, joka vastasi tämän ryhmän toimintaa. Tämä rikos oli "salaliitto petoksen suorittamiseksi". Tämän johdosta neljä Alexin apuria pidätettiin Missourissa vuonna 2015 (heidät asetettiin myöhemmin syytteeseen ja tuomittiin 2 vuodeksi liittovaltion vankilaan) [2].
Tämä oli tarinan käännekohta, ja osa apureista alkoi kertoa avoimemmin lypsyjärjestelmän yksityiskohdista. Ryhmästä oli hyvin todennäköisesti tullut tuttu useimpien kasinoiden turvallisuushenkilökunnalle ympäri maailman, ja toinen pidätys suoritettiin Singaporessa [3].
Alexin yritys tehdä yhteistyötä hedelmäpelien valmistajien kanssa
Huomattuaan, että alkoi olla liian riskialtista antaa apurien jatkaa tämän järjestelmän käyttöä, Alex päätti ryhtyä vielä viimeiseen yritykseen hyödyntää tietojaan siitä, miten tällä tavalla ansaittiin rahaa. Hän otti suoraan yhteyttä Aristocratiin - niiden peliautomaattien valmistajaan, jotka hän oli onnistunut murtamaan. Toivoen kahdeksanlukuista palkkiota hän tarjosi palveluitaan PRNG-algoritmien parantamiseksi ja kaikkien turvallisuusongelmien korjaamiseksi. Samalla hän uhkasi, että jos Aristocrat ei tarttuisi tarjoukseen, hän myisi nämä arkaluontoiset tiedot kilpailijoille. Aristocrat kuitenkin kieltäytyi lähtemästä tähän leikkiin mukaan siitä huolimatta, että hän antoi heille kaikki haavoittuvuutta koskevat matemaattiset yksityiskohdat.
Kun Aristocrat hylkäsi Alexin tarjouksen, hän päätti antaa vielä yhden tilaisuuden ja viedä tilanteen hieman pidemmälle julkaisemalla tarinansa yksityiskohtia. Hän otti yhteyttä Brendan Koerneriin - mieheen, joka oli jo kirjoittanut hänen tarinansa tunnetuista faktoista tässä artikkelissa.
Brendan suostui jatkamaan tarinan parissa ja julkaisi toisen artikkelin, joka sisälsi runsaasti uusia tietoja, jotka hän oli saanut suoraan Alexilta. Jos näin ei olisi tapahtunut, et myöskään olisi lukemassa heistä minun artikkelistani.
Kuinka suuri juttu se oli ja mitä seuraamuksia sillä oli?
On olemassa suhteellisen paljon todisteita siitä, että Alex onnistui käyttämään strategiaansa vanhentuneessa Aristocrat MK IV -peliautomaatissa. Aristrocrat itse suosittelee tällä hetkellä, että asiakkaat vaihtaisivat nämä koneet toisiin. Tästä huolimatta näitä koneita on edelleen tuhansia useilla kasinoilla ympäri maailman. Useimmilla kasinoilla ei kuitenkaan pitäisi olla ongelmia koneiden vaihtamisessa tarvittaessa.
Alex väittää (ja tietyt merkit tukevat hänen väitettään [4]), että vuonna 2009 hän alkoi murtaa joidenkin vanhempien Novomatic-laitteiden näennäissatunnaislukugeneraattoreita. On kuitenkin erittäin todennäköistä, että Novomatic onnistui poistamaan tämän haavoittuvuuden vuoden 2011 turvallisuuspäivityksessään. Ehkä Novomaticin vuoden 2013 patentillaSystem and Method of Centralized Random Number Generator Processing (keskitetyn satunnaislukugeneraattorin käsittelyn järjestelmä ja menetelmä) oli myös asian kanssa jotakin tekemistä.
Alex väittää myös, että hän onnistui tekemään saman muutamille Atronicin valmistamille laitteille.
Alexin ehdottomasti vahvin väite on se, että hän löysi samankaltaisen haavoittuvuuden Aristocratin Helix-laitteesta. Helix on yksi nykyisistä malleista, joten jos Alex ei huijannut, Aristocratilla saattoi olla vieläkin suurempi ongelma - varsinkin, jos ongelmaa ei voi korjata turvallisuuspäivityksellä tai vähäisellä siruvaihdoksella. Toisaalta Aristocrat on valtava yritys, jonka vuosittainen liikevaihto on yli 2 miljardia dollaria ja vuosittainen tuotto 500 miljoonaa dollaria. On siis hyvin todennäköistä, että yritys selviää siitä (pahimmassa tapauksessa laitteistoille joudutaan tekemään suuria sisäisiä muutoksia ja maine kärsii).
Liikaa ei kuitenkaan kannata hauskanpitoa odottaa. Vaikka Alex päättäisi julkaista lisätietoja algoritmeistaan, kasinot hyvin todennäköisesti sammuttaisivat kaikki ne peliautomaatit, joita asia koskee, ennen kuin tavalliset ihmiset pääsisivät käyttämään tätä hyödyksi.
Tositarina vai urbaani legenda?
Olemassa on runsaasti epäsuoria todisteita siitä, että Alexin kuvailema tarina pitää paikkansa. Viranomaiset eivät olisi pidättäneet ja tuominneet hänen apureitaan kahdessa maassa, jos se ei pitäisi paikkaansa. Novomatic ei olisi tutkinut peliautomaattien manipulointia, eikä se olisi julkaissut turvallisuuspäivityksiä, jos asia ei pitäisi paikkaansa.
Mutta eikö hedelmäpelien valmistajilla ole omia turvallisuusasiantuntijoita? Miten nämä valtavat yritykset olisivat jättäneet huomiotta tällaisen haavoittuvuuden?
Vastaus tähän on suhteellisen selvä.
Olen työskennellyt ohjelmistokehittäjänä 10 vuotta, ja voin sanoa, että turvallisuusuhkia jätetään huomiotta helposti. Tämä on vielä todennäköisempää uusien ja tuntemattomien hyökkäystyyppien kohdalla, joihin tämäkin lukeutui. Vaikka yrityksellä olisi tuolloin ollut jonkinlainen turvallisuuspäällikkö, hänet oli koulutettu vain hallitsemaan niitä uhkia, jotka hänelle olivat tuolloin tuttuja (monkey paw, jne.). Jos kehitystiimissä ei ollut mukana todellista asiantuntijaa, joka pystyisi ennustamaan uusia haavoittuvuuksia ja tuomaan niitä esiin, tämä PRNG-uhka olisi helposti voinut jäädä huomaamatta.
Valvovien viranomaisten vaatimuksena oli vain, että PRNG tuottaa tasajakauman luotuja numeroita. Tämän jopa yksinkertaiset näennäissatunnaislukugeneraattorit hoitavat. Arvaamattomuutta (kryptografinen turvallisuus) ei tarvitse testata laisinkaan.
PRNG-konsepti kuulostaa vieraalta useimmille "liikemiehille". He välittävät vain muutamasta asiasta. He ovat tyytyväisiä, kun peliautomaatti:
- ei kaadu,
- on pelaajien mieleen
- ja tuottaa rahaa.
Peliautomaattien ohjelmistoa käytetään usein monien laitesukupolvien ajan vain pienillä muutoksilla. Ja miksi muuttaa jotakin, mikä on toiminut ongelmitta viimeiset 15 vuotta, eikö? Näin ollen on aivan mahdollista, että jopa monissa nykyajan koneissa käytetään koodin osia, jotka ovat peräisin 90-luvun alkupuolelta.
Oma tekninen analyysini Alexin järjestelmästä
Tiedän, että monet teistä haluaisivat kovasti tietää tarkalleen, miten Alexin järjestelmä toimi.
Siksi keräsin kokoon kaikki julkaistut yksityiskohdat ja päätin havainnollistaa, miten käänteissuunnittelua voi käyttää ennustamaan PRNG-hedelmäpelin tulevia tuloksia. Voit katsoa teknisen analyysin artikkelin lopusta.
Peliautomaattipetokset, laitteiston manipulointi ja erikoisvälineet
Kuten aiemmin sanoin, mielestäni Alexin järjestelmä oli moraalisesti hyväksyttävä ja joillakin lainkäyttöalueilla jopa laillinen. Hedelmäpelien "päihittämiseen" käytetyt tavat eivät kuitenkaan aina ole olleet tällaisia. On olemassa lukuisia laittomia tapoja, joilla hedelmäpelejä on huijattu menneisyydessä.
Suurin osa kirjatuista peliautomaattipetoksista on liittynyt jollain tapaa laitteiston manipulointiin ja/tai erikoisvälineisiin, joita on käytetty peliautomaatin huijaamiseen ja rahan tienaamiseen.
Joitakin näistä tavoista on käytetty toistuvasti, osa taas on ollut kertaluontoista toimintaa. Kaikille näille tavoille yhteistä on kuitenkin se, että ne toimivat vain fyysisillä peliautomaateilla, joita kivijalkakasinoilla on. Nettikasinot ovat näiltä suojassa, sillä pelaajan on oltava fyysisesti peliautomaatin lähellä voidakseen manipuloida sitä.
Koska kasinot joutuivat jatkuvasti huijausten kohteeksi, alkoivat ne ottaa käyttöön lisäturvatoimenpiteitä ja laitteistopäivityksiä, joiden vuoksi useimmat niistä petoksista, joita käyn läpi, olisivat mahdottomia toteuttaa nykyaikana.
Mutta mennäänpä asiaan. Tässä on muutamia niistä tavoista, joilla peliautomaatteja on aiemmin huijattu.
Väärennetyt kolikot tai pelimerkit
Ensimmäinen mainitsemani hedelmäpelipetos on hyvin yksinkertainen. Siinä käytetään väärennettyjä kolikoita tai mitä tahansa muuta, minkä peliautomaatti rekisteröi maksuvälineeksi. Jos pystyt valmistamaan jotakin, mitä kone "luulee" kolikoksi, voit käyttää sitä rahan tienaamiseen.
Yksi kuuluisa esimerkki kertoo miehestä, joka onnistui käyttämään tätä tekniikkaa erittäin onnistuneesti. Louis Colavecchio on amerikkalainen kasinoväärentäjä, joka tunnetaan myös nimellä "The Coin". Hän onnistui tiiminsä kanssa valmistamaan huomattavia määriä väärennettyjä kolikoita ja kasinoiden pelimerkkejä ja käytti niitä tienatakseen rahaa Atlantic Cityn ja Connecticutin kasinoilla. Hän jäi kiinni ja nousi myöhemmin suhteellisen suureen maineeseen, koska The History Channel teki hänestä dokumentin.
Kolikot narussa (jojo)
Jos olet koskaan leikkinyt jojolla, tiedät, että se menee oikein käsiteltynä ylös ja alas. Ja juuri näin narussa oleva kolikko toimii. Ensin kolikko asetetaan peliautomaattinen ja sen annetaan mennä riittävän pitkälle, jotta kone rekisteröi sen ja aloittaa pelin. Sitten se vedetään takaisin ulos ja samaan kolikkoa käytetään yhä uudestaan ja uudestaan.
Tämä tekniikka on hyvin lähellä väärennettyjä kolikkoja, mutta tässä vältytään suurimittaiselta väärennettyjen kolikkojen valmistamiselta. Naruun kiinnitetyllä kolikolla lähes kuka tahansa olisi voinut yrittää huijata kasinoa. Kaikki eivät tietenkään niin tehneet, ja ne jotka tekivät, eivät kaikki onnistuneet.
Kolikon muodon muuttaminen
Teknologia, jolla kolikoiden kelvollisuus tarkastetaan, kehittyy jatkuvasti. Tämän vuoksi väärennettyjen kolikoiden kaltaiset temput ovat jääneet unholaan, tai ainakin muuttuneet huomattavasti vaikeammaksi toteuttaa. Peliautomaateissa on alettu käyttää valosensoria, joka rekisteröi maksut ja selvittää, ovatko kolikot väärennettyjä vai aitoja.
Kolikko, jonka muoto on muutettu, rekisteröitiin kelvolliseksi maksuksi, mutta kyseinen kolikko putosi fyysisen erottelijan läpi, jota käytettiin syötettyjen kolikoiden koon mittaamiseen. Näin ollen kolikko palautui pelaajalle ja oli käytettävissä uudelleen.
Jos peliautomaatti vaati, että kolikko vastasi kokovaatimuksia, muotoaan muuttaneet kolikon mukana koneeseen syötettiin toinen esine. Tämä esine vastasi kolikon kokoa täydellisesti ja jäi koneeseen, kun taas muotoaan muuttanut kolikko "huijasi" optista sensoria ja putosi koneesta ulos.
Henkarit
On pidettävä mielessä, että nyt on kyse vanhanaikaisista hedelmäpeleistä, jotka antoivat kolikoita aina saman tien, kun pelaaja voitti jotakin. Näissä oli mekaaninen kolikkolaskuri, jota käytettiin laskemaan koneesta poistuvia kolikoita, jotta maksettu voitto täsmäsi pelaajan voittamaa summa.
Tässä huijauksessa henkari (tai jokin muu muodoltaan vastaava esine) työnnettiin kolikkolaskurin viereiselle alueelle, mikä vaikutti laskurin tarkkuuteen. Tämä tarkoitti sitä, että hedelmäpeli antoi jatkuvasti enemmän voittoja kuin mitä sen piti, mikä teki pelaamisesta pitkällä aikavälillä tuottoisampaa.
Top-bottom joint
Top-bottom joint oli työkalu, joka koostui kahdesta osasta. Nimestäkin sen saattaisi jo voida päätellä: ylä- ja alaosasta. Tarkemmin sanottuna kyse oli metallitangosta, joka oli taivutettu ympyräksi (yläosa) ja pitkästä kitaran kielestä tai muusta ohuesta johdosta (alaosa).
Alaosa laitettiin koneen alaosaan, missä se pääsi kosketuksiin koneen sisäisen elektroniikan kanssa ja otti sieltä pienen virtavarauksen. Yläosa asetettiin kolikkokoloon, jolloin virtapiiri sulkeutui ja tämä pakotti koneen maksamaan kaikki sen sisällä olevat kolikot voittona.
Monkey paw
Monkey paw’n luoja on peliautomaateissa ja kasinoilla huijaamisen taiteenalan legenda Tommy Glenn Carmichael. Saadaksemme käsityksen monkey paw’sta meidän on ensin palattava top-bottom jointtiin. Carmichael omisti televisiokorjaamon, jolla ei mennyt kovinkaan hyvin. Joten, kun hänen ystävänsä Ray Ming esitteli hänelle top-bottom jointin, hän päätti kokeilla sitä.
Hän onnistui jokusia kertoja, mutta myöhemmin hän jäi kiinni ja hänet tuomittiin viideksi vuodeksi vankilaan - ei pelkästään huijaamisen vuoksi, vaan myös aiempien tuomioiden ansiosta. Tällöin hän tajusi, että hänen käyttämänsä väline (top-bottom joint) oli jo suhteellisen tunnettu. Hän ymmärsi, että hänen täytyi keksiä jotakin uutta voidakseen onnistua kasinoiden huijaamisessa.
Siksi hän keksi monkey paw’n. Hän hankki itselleen videopokerikoneen ja aloitti kokeilun. Carmichael onnistui luomaan erittäin yksinkertaisen, mutta toimivan vempaimen. Hän kiinnitti taivutettuun metallitankoon metallilangan. Tämän tangon hän laittoi peliautomaatin aukkoon ja liikutteli tankoa edestakaisin, kunnes hän löysi koneen kolikkosyöttölokeron kytkimen. Hän veti tästä ja sai kaiken, mitä koneen sisällä oli.
Light wand
Kun peliautomaateista tuli teknisesti kehittyneempiä ja turvallisempia, rahan laskemiseen ei käytetty enää mekaanisia järjestelmiä. Niissä alettiin käyttää optisia sensoreita, jotka tekivät suurimman osan edellä mainituista huijaustavoista kelvottomiksi. Carmichael kuitenkin mukautui tähän muutokseen ja keksi tavan huijata uusia järjestelmiä.
Hän valmisti pienen laitteen, joka pystyi "sokaisemaan" optisen sensorin, jolloin sen oli mahdotonta havaita kuinka paljon rahaa koneeseen syötettiin ja paljonko maksettiin ulos. Koska kone luuli, että oikeaa summaa ei vielä ollut maksettu, se antoi ulos yhä enemmän ja enemmän rahaa, tehden huijareista yhä rikkaampia.
Piano wire (pianon kieli)
Tämä menetelmä on peräisin vuodelta 1982, jolloin peliautomaattien kiekot toimivat vielä mekaanisesti. Pianon kieli syötettiin peliautomaatin pyöriviin sisäosiin. Kielellä jumitettiin kello, joka mittasi rattaiden kääntymistä, mikä tarkoitti, että pelaaja pystyi manipuloimaan kierroksen tulosta.
Ryhmä, joka yritti suorittaa tämän operaation, onnistui saamaan 50 000 $ voiton. Heitä kuitenkin kuvattiin videolle koko prosessin ajan, ja myöhemmin heidät pidätettiin. Heidän menestyksenä jäi lyhytaikaisesti, mutta he todella onnistuivat muuttamaan pelin lopputulosta pelkästään pianon kielen avulla.
Sirun korvaaminen
Dennis Nikrasch onnistui tekemään asiat toisin. Myös hän hankki kotiin peliautomaatin "leikkikaluksi". Hän keksi, että koneen siru voitaisiin ohjelmoida uudelleen pelin lopputuloksen manipuloimiseksi. Uudelleen ohjelmoidut sirut voitaisiin asentaa kasinoiden peliautomaatteihin ja niiden avulla voisi tienata runsaasti rahaa.
Eikä hän pitänyt tätä seikkaa omana tietonaan. Hän tilasi kuormallisen näin siruja, ohjelmoi ne uudelleen, hankki itselleen peliautomaattien avaimia ja vaihtoi sirut. Ja näin hän onnistui "helposti" suorittamaan onnistuneen operaation, joka teki hänestä rikkaan. Hänet luonnollisesti pidätettiin myöhemmin vuonna 2004 ja hän kuoli vuonna 2010.
Hedelmäpelit ja ohjelmistojen toimintaviat
Vaikka tämä tapa päihittää hedelmäpeli ei teknisesti katsottuna ole huijaus tai petos, päätin ottaa sen kuitenkin osaksi tätä artikkelia. Hedelmäpelit ovat ihmisten ohjelmoimia. Ja ihmiset tekevät virheitä. Ohjelmointivirhe voi johtaa sovellusbugiin, jota pelaajat voivat myöhemmin hyödyntää (tietoisesti tai tietämättään).
On olemassa useita dokumentoituja tapauksia, joissa sovellusbugit ovat johtaneet valtaviin voittoihin:
- Vuonna 2015 90-vuotias nainen Illinoista voitti 41 miljoonaa dollaria pelatessaan Miss Kitty -peliautomaattia. Kasino hylkäsi voitonmaksun.
- Itävaltalainen mies voitti 43 miljoonan euron jackpotin. Kasino kuitenkin väitti, että hän oli saanut vain neljä niistä viidestä symbolista, jotka tarvittiin jackpotin käynnistämiseen. Näin ollen hänen voittoaan ei maksettu, ja hänelle tarjottiin sen sijaan satanen ja ilmainen ateria.
- New Yorkilainen nainen onnistui nappaamaan uskomattoman 42,9 miljoonan dollarin jackpotin. Pelikoneen maksimivoitonmaksu oli 6 500 $, joten valtava voitto oli vain bugi. Kasino väitti, että hän oli oikeutettu kierroksensa perusteella vain 2,25 $ voittoon.
Listaa voisi jatkaa loputtomiin. Pointtina on se, että valtavia voittoja, jotka johtuvat sovellusbugista, ei juuri koskaan makseta. Ja mikä pahinta, jotkut epämääräiset kasinot saattavat itse asiassa käyttää tätä voidakseen olla maksamatta oikeita voittoja ja syyttää bugeja.
Sovellusbugi ei kuitenkaan aina johda jackpotin voittoon. Sen sijaan se saattaa antaa pelaajalle joukon pienempiä voittoja tai tulkita koneeseen asetetun rahan väärin niin, että pelaaja hyötyy. Tämän kaltaisia tapauksia ei välttämättä huomata, ja neuvokkaat pelaajat voivat käyttää niitä hyväkseen.
Muista kuitenkin, että onni suosii valmistautunutta. :)
Liite: Miten Alexin algoritmi saattaisi toimia
Aloitetaanpa kokoamalla yhteen kaikki, mitä tiedämme tästä strategiasta:
- Alex tarvitsi noin 24 pyöräytyksen tulokset ennustaakseen tulevia tuloksia.
- Apurit odottivat oikeaa hetkeä pyöräytä-painikkeen painamiselle.
- Brendan Koerner onnistui jäljittämään PRNG-algoritmin alkuperän (Alexin antamien matemaattisten todisteiden avulla) kirjaan nimeltä The Art of Computer Programming.
PRNG, jota kenties käytettiin Aristocratin pelikoneissa
Yksinkertaisin PRNG-algoritmi, joka The Art of Computer Programming -teoksessa on kuvailtu ja antaa tyydyttäviä tuloksia, on itse asiassa melko yksinkertainen:
RNG = (a * PreviousRNG + c) mod m
Tätä algoritmia, joka tunnetaan lineaarisen kongruenssin generaattorina (LCG), käytetään edelleen näennäissatunnaislukugeneraattorien oletusalgoritmina monissa ohjelmointikielissä (esim. Java).
Olisivatko Aristocratin peliautomaattikehittäjät yksinkertaisesti voineet käyttää PRNG-oletusalgoritmia, jonka heidän käyttämänsä ohjelmointikieli tarjosi? Vai olisivatko he voineet käyttää yksinkertaisinta PRNG:tä, joka täytti yhdenmukaisuusvaatimukset?
Mielestäni tämä skenaario on mahdollinen. Oletusalgoritmi toimii ja täyttää tuotettujen satunnaislukujen yhdenmukaisuusvaatimukset. Se olisi voinut täyttää kaikki kriteerit, joiden pohjalta ohjelmoijat toimivat tarkennettujen vaatimusten osalta.
Miten yksinkertainen PRNG murretaan
Spekuloidaanpa seuraavaksi sitä, miten rohkea Alex olisi voinut käyttää tätä algoritmia hyväkseen.
1. Analysointi
Ensimmäiseksi on tutustuttava algoritmin tarkkoihin parametreihin (parametrit a, c ja m). Tämä on helppoa, sillä nämä parametrit on kirjoitettu jokaiseen peliautomaattiin. Alexin tarvitsi vain lukea pelikoneen muistista binäärikoodi ja analysoida se. Tähän tehtävään pystyy jokainen mikroelektroniikan asiantuntija, jos hänellä on oikeat työkalut.
Parametrien a, c ja m tunteminen ei pelkästään kuitenkaan riitä. Analysoinnin avulla voi itse asiassa lukea kaikkien PRNG-algoritmien parametrit - myös kryptografisesti turvalliset. Jotta voidaan ennustaa ja hyödyntää oikean kasinolla sijaitsevan peliautomaatin satunnaislukugeneraattorin lukujonoa, on tiedettävä myös jotakin muuta - satunnaislukugeneraattorin senhetkinen lähtöarvo.
2. Nykyisen RNG-arvon selvittäminen
LCG PRNG -algoritmia kuvaillaan yleisesti ottaen helposti ennustettavaksi. Tämä tarkoittaa, että pelkästään tietämällä 3 satunnaista lukua voidaan laskea parametrit a, c ja m ja helposti ennustaa lukujonon seuraavat numerot.
Älä anna tämän sekoittaa ajatuksiasi, sillä Alexin edessä ollut tehtävä ei ollut tarkalleen ottaen tämä. Alex tiesi jo analysoinnin ansiosta parametrit a, c ja m, mutta hän ei tiennyt RNG-tilan senhetkistä arvoa. Hän kykeni tarkkailemaan tuotettuja satunnaislukuja epäsuorasti seuraamalla asentoja, joihin kiekot pysähtyivät tallennetuilla kierroksilla.
Oleellista tässä on se, että peliautomaatti on luonteeltaan deterministinen ja ohjelmoitu koneen sisään. Näin ollen se voidaan analysoida, takaisinmallintaa ja simuloida jossakin muualla. Yleensä pelin logiikka perustuu satunnaisen luvun valintaan, johon käytetään matemaattisia toimintoja määrittämään, mihin kunkin kiekon pitäisi pysähtyä.
Yleensä peliautomaattien kiekoilla on 50-100 symbolia, joista näytöllä näkyy kolme. Yhdistelmät saattavat joskus toistua, ja kiekkojen pituudet voivat vaihdella, mutta oletetaan, että kullakin kiekolla on 50 ainutlaatuista yhdistelmää. Satunnaisluku valitsee yhden näistä 50 yhdistelmästä, joten pelkästään katsomalla ensimmäistä kiekkoa ensimmäisellä pyöräytyksellä voit eliminoida 49/50 (98 %) mahdollisista satunnaisluvuista.
Jos pelissä on 5 kiekkoa, keskimäärin vain yksi 312 miljoonasta satunnaisluvusta antaa tarkalleen saman tuloksen kuin pelaajan näkemä tulos.
Jos tiedetään useamman peräkkäisen satunnaisluvun (*) tulokset, hyvin pian jäljelle jaa vain 1 lähtökohtainen satunnaisluku, joka antaa halutun lopputuloksen kaikille kierroksille. Itse asiassa tarvittavien kierrosten määrä on suhteessa alkuperäisen satunnaisluvun pituuteen.
Tarvitsee siis vain simuloida kaikki mahdolliset satunnaisluvut ja voilà... odotapa vähän.
Jos peliautomaatissa käytettäisiin 64 bittiä pitkiä satunnaislukuja, kaikkien niiden simuloiminen vaatisi liikaa laskentatehoa (544 vuotta minun kannettavalla tietokoneellani). Alex siis tarvitsi edelleen hieman tahatonta apua Aristrocratin kehittäjiltä. Löysin kaksi asiaa, joilla he olisivat voineet auttaa Alexia:
- Käyttämällä liian lyhyttä RNG-tilaa (32 bittiä).
- Käyttämällä satunnaislukua niin, että sitä voidaan käyttää senhetkisen RNG-tilan selvittämiseen.
1. Liian lyhyt (32 bittiä) RNG-tila
Aristocrat MK IV -laitteet kehitettiin 32-bittisellä ARM 250 -prosessorilla. Jos hedelmäpelin kehittäjät päättivät käyttää myös 32-bittistä satunnaisluvun lähtöarvoa, mahdollisia RNG-tiloja on vain 4 294 967 296. Luku saattaa näyttää suurelta, mutta nykyajan tietokoneet ovat hyvin nopeita, ja tämänlainen vaihtoehtojoukko on helposti tutkittavissa ns. väsytystaktiikalla (minun kannettavallani tähän menee 4 sekuntia).
Pidän tätä vaihtoehtoa kuitenkin vähemmän todennäköisenä. Lisäksi 32-bittinen satunnaisluku on liian lyhyt kattamaan joidenkin pelien kaikki mahdolliset tulokset (5 kiekkoa * 90 symbolia).
2. Satunnaisluvun käyttäminen "helposti hyödynnettävällä" tavalla
Oletetaan, että käytössä oli 64-bittinen RNG-tila. Miten 64-bittistä lukua käytetään deterministisesti pysäyttämään 5 kiekkoa, joissa kussakin on 50 symbolia? Helpoin lähestymistapa, jossa yhdenmukaisuus säilyy, olisi seuraava:
Pos1 = RND modulo 50
Pos2 = (RND / 50) modulo 50
Pos3 = (RND / (50*50)) modulo 50
Pos4 = (RND / (50*50*50)) modulo 50
Pos5 = (RND / (50*50*50*50)) modulo 50
Näin kukin kiekko käyttää osansa satunnaisluvusta ja yksittäisten kiekkojen välillä ei ole korrelaatioita. Olettaen että satunnaisluvut ovat yhdenmukaisia, on kunkin mahdollisen pelituloksen todennäköisyys yhdenmukainen (**). Valvova viranomainen antaa hyväksyntänsä.
Sitten hyödyntämiseen:
Jos kiekkojen asennot tiedetään, voidaan satunnaisluvun loppu laskea helposti (RND mod 50^5):
RndEnd = pos1 + pos2*50 + pos3*50*50 + pos4*50*50*50 + pos5*50*50*50*50
Auttaako tämä arvaamaan senhetkisen RNG-tilan? Itse asiassa auttaa. Se auttaa paljon.
Nyt kaikkien mahdollisten satunnaislukujen simulointi ei ole tarpeen, vaan pelkästään niiden, jotka päättyvät RndEnd. Tai tarkemmin sanottuna kaikkien niiden satunnaislukujen, jotka vastaavat kaavaa RndEnd + X * 50^5:
- 1 * 312500000 + RndEnd
- 2 * 312500000 + RndEnd
- 3 * 312500000 + RndEnd
- …
Nyt kaikista 2^64 mahdollisesta arvosta (18 466 744 073 709 551 616) tarvitsee kokeilla vain 59 029 581 035. Kumpikin on valtava määrä mahdollisia arvoja, mutta ensimmäisen joukon simulointiin kannettavalta tietokoneeltani menisi 544 vuotta, kun taas toisen joukon simulointi on valmis 60 sekunnissa. Ero on valtava.
Ja se siitä. Nyt satunnaisluku on tiedossa ja tulevien kierrosten ennustaminen on mahdollista.
Tapa, jolla Alex todellisuudessa hyödynsi RNG:tä saattaa olla eri, mutta lyön vetoa, että sillä on runsaasti yhteistä tässä kuvailemani prosessin kanssa.
(*) Todellisuudessa Alex ei tuntenut peräkkäisten satunnaislukujen tuloksia, mutta hän tunsi suhteellisen lähellä toisiaan lukujonossa olevien satunnaislukujen tulokset.
Alexin apureiden piti odottaa tiettyä hetkeä, jolloin pyöräytä-painiketta painettiin. Tämä kertoo siitä, että Aristocrat MK IV -laite luo jatkuvasti satunnaislukuja, joissa on jonkin verran toistumaa (joillakin lainkäyttöalueilla tämä on lakisääteinen vaatimus). Kun pelaaja painaa pyöräytä-painiketta, senhetkistä satunnaislukua käytetään kierroksen lopputuloksen määrittämiseen.
Huomaa, että myös satunnaislukujen luomisen toistuvuustaajuus on ohjelmoitava peliautomaattiin. Näin ollen myös tämä tieto on helposti luettavissa ja ennustettavissa koodin analysoinnin jälkeen.
Oletetaan, että peliautomaatin satunnaislukujen luomisen frekvenssi on 100/sekunti. 24 kierroksen pelaamiseen saattaa mennä noin 60 sekuntia, joten mukana on noin 6 000 satunnaislukua, joista 24 lukua on käytetty kierroksen lopputuloksen laskemiseen. Tämän jälkeen on laskettava ensimmäinen satunnaisluku, joka antaa ensimmäisen kierroksen tuloksen, sekä myös loppujen 23 kierrosten tulokset kierrätettynä eteenpäin seuraavien 6 000 syklin sisällä. Tämä simulaatio on myös helppo toteuttaa; siihen menee vain muutama hetki (kunnon optimoinnilla).
(**) Täydellisen yhdenmukaisuuden saavuttamiseksi pitäisi heittää pois numerot, jotka ovat suurempia kuin 2^64 – 2^64 mod (50^5).
Kiinnostavia linkkejä, jotka sisältävät lisää keskustelua aiheesta:
- https://news.ycombinator.com/item?id=13579353
- https://www.schneier.com/blog/archives/2017/02/predicting_a_sl.html
- https://www.justice.gov/usao-edmo/pr/four-russian-nationals-indicted-fraud-charges
- https://www.wired.com/story/meet-alex-the-russian-casino-hacker-who-makes-millions-targeting-slot-machines/
- https://www.casino.org/blog/slot-cheats-that-work/