Jak porazit herní automaty (triky a podvody)
- Alex, muž, který rozluštil generátor pseudonáhodných čísel (PRNG) používaný v automatech a vydělal miliony
- Podvody s automaty, manipulace s hardwarem a speciální nástroje
- Hrací automaty a chyby v softwaru
- Dodatek: Možný princip Alexova algoritmu
Vhodně navržené casino automaty, které používají skutečné generátory náhodných čísel (RNG – Random Number Generators), jsou teoreticky neporazitelné. Ve skutečnosti však existuje mnoho zdokumentovaných případů, ve kterých se hráčům podařilo výherní automaty oklamat, aby jim vyplatily mnohem víc, než by majitelé kasina chtěli.
Většina těchto triků jsou sprostou krádeží. Obvykle mezi ně patří nástroje pro manipulaci s hardwarem výherního automatu – konkrétně s jeho zásobníkem na mince nebo přístrojem na přijímání bankovek. V jiných případech pomáhal s hracími automaty manipulovat zaměstnanec kasina.
V další skupině případů měli hráči jen neobyčejné štěstí. Podařilo se jim najít chybu v softwaru, kterou využili ve svůj prospěch.
Zatím nejzajímavějším případem je však nedávný příběh (2009–2017) ruského muže z Petrohradu, kterému se na určitých modelech herních automatů dařilo úspěšně předpovídat výsledky jednotlivých spinů, čehož využil ve svůj prospěch a podojil kasina po celém světě o miliony dolarů.
Tento příběh je tak fascinující, že jsem se rozhodl u něj pozastavit a ponořil jsem se do hlubší analýzy používaných technik.
Alex, muž, který rozluštil generátor pseudonáhodných čísel (PRNG) používaný v automatech a vydělal miliony
Alex pracoval jako programátor na volné noze a hacker, když si ho ruské casino najalo, aby zmanipuloval výhernost (RTP) u některých hracích automatů Novomatic Nejprve se musel do hloubky naučit, jak tyto automaty fungují uvnitř. Dozvěděl se také o PRNG – o tom, jak funguje a jak se ve výherních automatech používá. Zlom nastal, když zjistil, že hrací automaty používají nechráněný algoritmus PRNG, který by mohl být předvídatelný.
Zatímco skutečný RNG používá k vygenerování úplně náhodných a zcela nepředvídatelných hodnot elektromagnetický šum, PRNG pracuje jinak. Začne na předem stanovené hodnotě a potom ji zkombinuje s několika dalšími vstupy, aby vygeneroval nekonečnou sérii hodnot. Výstupní hodnoty PRNG se na první pohled zdají být zcela náhodné a nepředvídatelné. Nicméně pokud PRNG používá slabý algoritmus a vy přesně víte který, je možné další náhodné číslo předpovědět.
Alex si očividně všiml, že algoritmy používané některými herními automaty byly slabé a rozhodl se toho využít ve svůj prospěch.
V dalších několika letech se mu podařilo položit základy pro velmi sofistikovanou operaci:
- Použil metodu reverzního inženýrství a sestavil několik populárních automatů.
- Vyvinul algoritmus, který dokáže na základě 20 až 30 spinů zjistit aktuální parametry PRNG a předpovědět výsledky následujících zatočení.
- Vytvořil aplikaci pro iPhone, která podle předpovězených výsledků hráči říkala, kdy přesně stisknout tlačítko zatočení, aby vyhrál.
- Najal si desítky prostředníků, kteří byli následujících šest až sedm let pověřeni dojením kasin po celém světě.
Alex tvrdí, že během té doby se mu s týmem podařilo vydělat miliony dolarů.
Byl Alexův systém legální a morálně přijatelný?
Technika, kterou vyvinul, nevyžaduje žádnou zakázanou manipulaci s herními automaty. To je obrovský rozdíl oproti spoustě jiných zlodějských technik, které jsou popsány níže v tomto článku a které klamou hardware automatů, aby vydal více peněz, než by měl. Alexova strategie je založená na ryzí matematice z vlastního pozorování, a proto je možné ji považovat za platný a čistý způsob, jak automaty porazit.
Mnoho odborníků na hazardní hry (včetně mě) považuje Alexovo jednání za zcela bezúhonné a morálně přijatelné. Přirovnal bych ho k počítání karet v blackjacku, bonus huntingu nebo hledání výhodných kurzů při sázení. Kasina tyto výherní automaty provozují dobrovolně, a pokud někdo inteligentní dokáže předpovědět výsledky a využít je ve svůj prospěch, může si za to casino samo.
Kasina (zejména kamenná kasina) jsou však obrovské společnosti se spoustou peněz a silnými vazbami na místní orgány. Když kasina zjistila, že existuje organizovaná skupina, která jejich automaty používá jako bankomaty, určitě těchto vazeb využila. Veřejným orgánům a právníkům kasin se nakonec podařilo najít trestný čin, který odpovídal činnosti této skupiny, a sice spiknutí za účelem podvodu. Tato skutečnost v roce 2015 vedla k zatčení čtyř Alexových prostředníků v Missouri (kteří byli později obviněni a odsouzeni ke dvou letům ve federální věznici) [2].
To byl zlomový bod tohoto příběhu. Někteří prostředníci začali o podrobnostech dojícího systému mluvit otevřeněji a o skupině se velmi pravděpodobně dozvěděla většina pracovníků bezpečnostních služeb kasin po celém světě. Další zatčení následovalo v Singapuru [3].
Alexův pokus o spolupráci s výrobci hracích automatů
Alex, který si uvědomil, že používání tohoto systému se stalo pro jeho prostředníky příliš riskantní, se rozhodl učinit poslední pokus, jak své know-how využít, aby vydělal peníze. Otevřeně kontaktoval společnost Aristocrat – výrobce herních automatů, které se mu podařilo kompromitovat. V naději na osmimístnou odměnu jim nabídl vylepšení algoritmů PRNG a opravení všech bezpečnostních chyb. Zároveň jim pohrozil, že pokud nabídku nepřijmou, prodá tyto citlivé informace konkurenci. Přestože jim Alex poskytl všechny matematické podrobnosti o jejich zranitelnosti, společnost Aristocrat odmítla na pravidla jeho hry přistoupit.
Když Alexovu nabídku odmítli, rozhodl se tomu dát poslední šanci a zveřejnil podrobnosti svého příběhu, aby zatlačil ještě trochu víc na pilu. Kontaktoval Brendana Koernera – muže, který již obecně známé skutečnosti o jeho příběhu popsal v tomto článku.
Brendan souhlasil, že bude s příběhem pokračovat, a publikoval další článek s mnoha novými podrobnostmi přímo od Alexe. Kdyby se to nestalo, nečetli byste o nich v mém článku.
Jak velká tato operace byla a jaké má následky?
Existuje mnoho důkazů, podle kterých se Alexovi skutečně podařilo jeho strategii na zastaralém automatu Aristocrat MK IV úspěšně použít. Samotná společnost Aristokrat svým zákazníkům doporučila tyto automaty nahradit. V mnoha kasinech po celém světě se jich však stále najdou tisíce. Neměl by pro ně ale být problém je v případě potřeby nahradit.
Alex tvrdí (a některé zdroje jeho tvrzení podporují [4]), že v roce 2009 začal dešifrovat generátory pseudonáhodných čísel některých starších hracích automatů Novomatic. Je velmi pravděpodobné, že tuto slabinu se společnosti Novomatic podařilo odstranit pomocí aktualizace zabezpečení v roce 2011. Možná s tím má něco společného i patent společnosti Novomatic z roku 2013 (System and Method of Centralized Random Number Generator Processing).
Dále Alex tvrdí, že to samé se mu podařilo i s některými automaty od společnosti Atronic.
Jeho zatím nejsilnějším tvrzením je, že podobnou slabinu odhalil u dalšího herního automatu společnosti Aristocrat – Helix. Helix je jedním ze současných modelů, takže pokud Alex neblafuje, může mít společnost Aristocrat ještě větší problém – zvlášť pokud není možné tuto slabinu opravit aktualizací zabezpečení nebo jednoduchou výměnou mikročipu. Na druhou stranu, Aristocrat je obrovská společnost s ročním obratem ve výši dvou miliard dolarů a ročním ziskem ve výši 500 milionů dolarů. Velmi pravděpodobně to tedy přežije (v nejhorším případě bude muset provést rozsáhlou výměnu hardwaru uvnitř automatu a poškodí si dobré jméno).
Každopádně neočekávejte nic převratného. I když se Alex rozhodne zveřejnit další podrobnosti o svých algoritmech, než toho stihnou obyčejní lidé využít, kasina velmi pravděpodobně všechny dotčené výherní automaty odpojí.
Pravdivý příběh nebo povídačka?
O pravdivosti Alexova příběhu svědčí mnoho nepřímých důkazů. Pokud by nebyl pravdivý, orgány činné v trestním řízení by ve dvou zemích nezatkly a neodsoudily jeho prostředníky. Stejně tak by společnost Novomatic nevyšetřovala manipulaci s hracími automaty a nevydala by bezpečnostní aktualizace.
Nemají ale snad výrobci automatů specialisty zaměřující se právě na takové slabiny? A jak mohly tyto obrovské společnosti takovou slabinu přehlédnout?
Vlastně celkem snadno.
Deset let jsem pracoval jako vývojář softwaru a můžu vám říct, že bezpečnostní hrozby jsou snadno přehlédnutelné. Pravděpodobnost je o to vyšší, pokud se jedná o nové a neznámé typy útoků, jako je tento. I kdyby v té době nějakého správce zabezpečení zaměstnávali, měl by výcvik pouze na minimalizování známých hrozeb – opičí packa (monkey paw) a další. Pokud ve vývojovém týmu nebyl skutečný odborník, který by byl schopný nové slabiny předvídat a upozorňovat na ně, pak bylo snadné tuto hrozbu související s generátorem pseudonáhodných čísel přehlédnout.
Regulátoři od PRNG vyžadovali pouze rovnoměrné rozdělení generovaných čísel. To ale zvládnou i jednoduché generátory pseudonáhodných čísel. Nepředvídatelnost (kryptografické zabezpečení) testování vůbec nepodléhá.
Koncept PRNG je pro většinu obchodníků španělskou vesnicí. Ti se zajímají o úplně jiné věci. Ke spokojenosti jim stačí, když automat:
- bezproblémově funguje,
- má sympatie hráčů,
- vydělává peníze.
Navíc software výherních automatů často přežije několik generací pouze s drobnými aktualizacemi. Proč taky měnit něco, co posledních 15 let bezproblémově fungovalo. To je dost možná i důvod, proč řada moderních automatů zčásti používá kód napsaný začátkem 90. let.
Moje technická analýza Alexova systému
Mnozí z vás se jistě touží dozvědět, jak přesně Alexův systém fungoval.
Posbíral jsem tedy všechny zveřejněné informace a rozhodl jsem se předvést, jak lze pomocí zpětné analýzy předpovědět výsledky automatu s PRNG. Moji technickou analýzu najdete na konci článku.
Podvody s automaty, manipulace s hardwarem a speciální nástroje
Jak jsem již uvedl, věřím, že Alexův systém byl morálně přijatelný a v některých jurisdikcích dokonce legální. Nicméně ne všechny způsoby doposud používané k poražení automatů tuto vlastnost sdílí. Automaty byly totiž v minulosti podvedeny mnoha nezákonnými způsoby.
Většina ze zjištěných podvodů s automaty souvisela s manipulací s hardwarem nebo speciálními nástroji, které měly automat obelstít a vydolovat z něj peníze.
Některé způsoby se objevily vícekrát, jiné naopak pouze jednou. Společným jmenovatelem všech těchto podvodů je skutečnost, že fungují pouze na fyzických automatech, které najdete v kamenných kasinech. Jelikož hráči musí být fyzicky u automatu, aby s ním mohli manipulovat, jsou online kasina v bezpečí.
Kvůli neustálému podvádění navíc začala kasina posilovat bezpečnostní opatření a aktualizovat hardware, takže většinu podvodů, o kterých budu mluvit, není možné v dnešní době provést.
Pojďme se do toho pustit. Toto jsou některé ze způsobů, kterými byly výherní automaty v minulosti podvedeny.
Falešné mince a žetony
První podvod, o kterém se zmíním, je velmi jednoduchý. Používají se při něm falešné mince nebo cokoli, co hrací automaty mohou považovat za platný způsob platby. Pokud zvládnete vyrobit něco, o čem si automat bude myslet, že je to mince, můžete to použít k vydělání peněz.
S touto technikou slavil obrovské úspěchy americký kasinový podvodník Louis Colavecchio, také známý jako The Coin (Mincař). Spolu se svým gangem vyrobil značné množství falešných mincí a kasinových žetonů, pomocí kterých si v kasinech v Atlantic City a Connecticutu vydělávali. Po nějaké době ho však chytili a proslavil se až poté, co o něm televizní stanice The History Channel natočila dokument.
Mince na provázku (jojo)
Kdo to umí s jojem, ví, že jezdí nahoru a dolů. Úplně stejně funguje i mince na provázku. Nejprve ji vložíte do hracího automatu, necháte ji spadnout dostatečně hluboko, aby ji automat zaznamenal, a spustíte hru. Potom ji zase vytáhnete ven a používáte ji pořád dokola.
Tato technika je velmi podobná falešným mincím, ale s tím rozdílem, že nevyžaduje rozsáhlou výrobu falešných mincí. Pomocí mince na provázku mohl zkusit podvést kasino skoro každý. Ne všichni se o to samozřejmě pokusili a ne všichni byli úspěšní.
Zbroušené mince
Technologie ověřující pravost mincí se neustále zlepšovaly, a proto triky jako falešné mince přestaly fungovat, nebo se alespoň jejich provedení stalo mnohem obtížnější. U hracích automatů se začal objevovat světelný senzor, který zaznamenával platby a ověřoval pravost mincí.
Zbroušenou minci automat zaznamenal jako platný způsob platby, ale následně propadla mincovníkem, který srovnával velikost vhazovaných mincí. Mince se tedy vrátila hráči a ten ji mohl použít znova.
Někdy hrací automat vyžadoval, aby velikost mince odpovídala daným požadavkům. V takovém případě se zároveň se zbroušenou mincí vhodil do automatu další předmět. Tento předmět dokonale odpovídal velikosti mince a zůstal v automatu, zatímco zbroušená mince oklamala optický senzor a vypadla ven.
Ramínka na šaty
Vzpomeňte si na starý typ automatů, který jednoduše vyplácel mince pokaždé, když hráč něco vyhrál. Tyto automaty měly mechanické počítadlo mincí, které počet vypadávajících mincí kontrolovalo, aby se hráči vyplatila přesná částka.
Tento podvod spočíval v tom, že se do místa v blízkosti počítadla mincí zasunulo ramínko na šaty (nebo něco s podobným tvarem), které přesnost počítadla ovlivnilo. Automat pak vyplácel víc, než měl, takže z dlouhodobého hlediska bylo hraní ziskovější.
Top-bottom joint (spojení shora dolů)
Top-bottom joint byl nástroj, který se skládal z horní a dolní části. Konkrétně ho tvořil kovový drát ve tvaru kruhu (horní část) a například dlouhá kytarová struna (dolní část).
Dolní část se zasunula do spodní části automatu, tam přišla do styku s vnitřním elektrickým obvodem a odvedla z něj malou část elektrického náboje. Horní část se vložila do otvoru pro mince, tím došlo k uzavření obvodu a automat dostal impuls k vyplacení všech mincí.
Opičí packa (Monkey paw)
Opičí packu vymyslela legenda mezi automatovými a kasinovými podvodníky – Tommy Glenn Carmichael. Nejdřív se ale ještě vraťme k nástroji top-bottom joint. Carmichael vlastnil opravnu televizí, které se moc nedařilo, takže když mu jeho kamarád Ray Ming představil nástroj top-bottom joint, rozhodl se ho vyzkoušet.
Zpočátku se mu docela dařilo, ale potom ho dopadli a s přihlédnutím k jeho předchozím trestům ho odsoudili k pěti letům odnětí svobody. Potom mu došlo, že nástroj, který používal (top-bottom joint), byl již docela profláklý. Uvědomil si, že pokud má být v podvádění kasin úspěšný, musí přijít s něčím novým.
Proto vymyslel opičí packu. Sehnal si automat na video poker a začal experimentovat. Carmichaelovi se podařilo vytvořit velmi jednoduchý, ale funkční nástroj. Ke kovovému očku připevnil ocelové lanko, to zasunul do otvoru automatu a kroužil tak dlouho, dokud nenašel spínač zásobníku s mincemi. Za ten potom zatáhl a celý obsah byl jeho.
Světelná tyč (Light Wand)
Hrací automaty se postupně stávaly technologicky vyspělejšími a bezpečnějšími a mechanické soustavy k počítání peněz začaly mizet. Začaly se používat optické senzory, díky kterým přestaly výše zmíněné podvody fungovat. Carmichael se však změně přizpůsobil a vymyslel způsob, jak nové systémy obelstít.
Sestrojil malé zařízení, které dokázalo optický senzor oslepit, takže nebylo možné zjistit, kolik peněz bylo do automatu vhozeno ani kolik bylo vyplaceno. Jelikož si automat myslel, že správná částka ještě vyplacena nebyla, vyplácel víc a víc peněz a podvodníci si mastili kapsy.
Struna z klavíru
Pochází z roku 1982, kdy byly válce hracích automatů stále ještě ovládané mechanicky. Struna z klavíru se zasunula do prostoru rotujících částí automatu, kdy cílem bylo zablokovat hodiny měřící otáčení válců a zmanipulovat výsledek zatočení.
Skupině, která se pokusila touto metodou okrást casino, se podařilo vyhrát 50 000 $. Celou dobu je však natáčeli a později je zatkli. Jejich úspěch neměl dlouhého trvání, ale skutečně se jim pomocí obyčejné struny z klavíru podařilo změnit výsledek hry.
Výměna čipu
Dennis Nikrasch na to šel jinak. I on si koupil automat, aby si s ním doma trochu „pohrál", a přišel na to, že výsledek hry je možné zmanipulovat přeprogramováním čipu. Přeprogramované čipy by potom mohly být nainstalovány do automatů v kasinech a byla by z toho spousta peněz.
Tuto informaci si nenechal pro sebe. Objednal si hromadu těchto čipů, přeprogramoval je, sehnal si klíče k herním automatům a původní čipy vyměnil. Takto „jednoduše" se mu podařilo vést úspěšnou operaci, díky které zbohatl. Není žádným překvapením, že ho v roce 2004 zatkli. V roce 2010 potom zemřel.
Hrací automaty a chyby v softwaru
Ačkoli tento způsob porážení automatů není technicky vzato podvodem, rozhodl jsem se ho do tohoto článku zahrnout. Automaty programují lidé a lidé chybují. Chyba v naprogramování může vést k chybě v softwaru, kterou mohou hráči (vědomě či nevědomě) zneužít.
Existuje mnoho zdokumentovaných případů chyb v softwaru, kvůli kterým došlo k obrovským výhrám:
- V roce 2015 vyhrála jistá devadesátiletá žena ze státu Illinois na hracím automatu Miss Kitty 41 milionů dolarů. Casino jí výhru odmítlo vyplatit.
- Jeden muž v Rakousku vyhrál jackpot ve výši 43 milionů eur. Casino nicméně trvalo na tom, že se mu podařilo trefit pouze čtyři z pěti symbolů, které k jackpotu potřeboval. Z tohoto důvodu mu výhru nevyplatilo a místo toho mu nabídlo 100 dolarů a jídlo zdarma.
- Jiné ženě v New Yorku se podařilo trefit úžasný jackpot v hodnotě 42,9 milionů dolarů. Maximální výplata na automatu byla 6 500 dolarů a ta obří výhra byla pouze poruchou. Casino trvalo na tom, že má nárok pouze na svou sázku ve výši 2,25 $.
A mohl bych pokračovat dál. Snažím se tím pouze říct, že obrovské výhry, které se stanou následkem chyby v softwaru, nejsou skoro nikdy vyplaceny. Nejhorší na tom je, že některá pochybná kasina mohou tyto příběhy o poruchách zneužívat, jen aby nemusela vyplácet skutečné výhry.
Chyba v softwaru však nemusí vždycky vést k výhře jackpotu. Hráč může například zaznamenat sérii menších výher nebo může dojít k chybnému přečtení hodnoty vložených peněz ve prospěch hráče. Takovéto chyby projdou bez povšimnutí a mazaní hráči jich mohou využít.
Nezapomínejte však, že štěstí přeje připraveným. :)
Dodatek: Možný princip Alexova algoritmu
Začneme shrnutím všeho, co o jeho strategii víme:
- Aby mohl Alex předpovědět výhru, potřeboval znát výsledky asi 24 zatočení.
- Jeho prostředníci čekali na správný čas, kdy tlačítko zatočení stisknout.
- Brendanu Koernerovi se podařilo vysledovat původ algoritmu PRNG (z matematických důkazů poskytnutých Alexem) ke knize Umění programování (The Art of Computer Programming).
Generátor pseudonáhodných čísel, který mohly automaty společnosti Aristocrat používat
Nejjednodušší algoritmus PRNG s uspokojivými výsledky popsaný v knize Umění programování je ve skutečnosti poměrně jednoduchý:
RNG = (a * PreviousRNG + c) mod m
Tento algoritmus, také známý jako lineární kongruentní generátor, se používá jako výchozí algoritmus PRNG v mnoha programovacích jazycích (například Java).
Je možné, že vývojáři výherních automatů společnosti Aristocrat prostě použili výchozí algoritmus PRNG používaného programovacího jazyka? Nebo je možné, že použili nejjednodušší PRNG, který splňuje požadavky rovnoměrného rozdělení?
Já si myslím, že to možné je. Tento výchozí algoritmus funguje a zároveň splňuje kritéria rovnoměrného rozdělení generovaných náhodných čísel. Možná splňoval všechna kritéria stanovených požadavků, o která programátoři usilovali.
Jak prolomit jednoduchý PRNG
Nyní budu spekulovat o tom, jak mohl smělý Alex tento algoritmus zneužít.
1. Dekompilace
Prvním krokem je seznámení se s přesnými parametry algoritmu (parametry a, c a m). Toto je ta jednoduchá část, protože tyto parametry jsou zapsané v každém herním automatu. Alexovi stačilo přečíst binární kód z paměti automatu a dekompilovat ho. Tohle zvládne každý odborník v oblasti mikroelektroniky, pokud je vybaven správnými nástroji.
Pouhá znalost parametrů a, c a m ale nestačí. Díky dekompilaci můžete vlastně přečíst parametry všech algoritmů PRNG, dokonce i těch, které jsou kryptograficky zabezpečené. Abyste však mohli sekvenci RNG předpovědět a využít u skutečného herního automatu v kasinu, musíte znát ještě jednu věc – současnou hodnotu inicializačního stavu (seed value) RNG.
2. Zjištění současné hodnoty RNG
Lineární kongruentní algoritmus PRNG se obecně považuje za snadno předvídatelný. To znamená, že díky znalosti pouhých třech náhodných čísel můžete vypočítat parametry a, c a m a snadno předpovědět další čísla v pořadí.
Pokud vám to přijde složité, nelámejte si s tím hlavu, protože Alexovi šlo o něco jiného. Alex už parametry a, c a m znal z dekompilace, neznal však současnou hodnotu RNG. Generovaná náhodná čísla byl schopen vysledovat nepřímo tak, že sledoval pozice, ve kterých se válce při zaznamenávaných zatočeních zastavovaly.
Klíčovým aspektem je, že logika hry je deterministická a naprogramovaná uvnitř automatu. Je tedy možné ji dekompilovat, zpětně analyzovat a simulovat někde jinde. Herní logika obvykle vezme náhodné číslo a použije neznámé matematické operace, aby určila, kde by se měly jednotlivé válce zastavit.
Válce výherních automatů mívají kolem 50 až 100 symbolů, z nichž tři se zobrazují na obrazovce. Kombinace se mohou někdy opakovat a válce mohou mít různé délky, ale předpokládejme, že na každém válci existuje 50 jedinečných kombinací. Náhodné číslo vybere jednu z těchto 50 kombinací, takže pouhým prozkoumáním prvního válce při prvním zatočení můžete eliminovat 49 z 50 (98 %) potenciálních náhodných čísel.
Pokud má automat pět válců, potom v průměrů pouze jedno z 312 milionů náhodných čísel poskytne přesně ten samý výsledek, který vidí i hráč.
Pokud znáte výsledek mnoha po sobě jdoucích náhodných (*) čísel, potom velmi brzy zjistíte, které prvotní náhodné číslo stojí za požadovaným výsledkem všech zatočení. Počet potřebných zatočení je vlastně úměrný délce prvotního náhodného čísla.
Stačí tedy simulovat všechna možná náhodná čísla a voila... I když ne tak zhurta.
Pokud hrací automat používá náhodná čísla o délce 64 bitů, potom by jejich simulace vyžadovala příliš mnoho výpočetní síly (na mém notebooku 544 let). Alex by se navíc neobešel bez drobné pomoci vývojářů společnosti Aristocrat, byť neúmyslné. Přišel jsem na dvě věci, kterými mohli Alexovi pomoct:
- Použití příliš krátkého stavu RNG (32bitový).
- Použití náhodného čísla způsobem, pomocí kterého je možné najít aktuální stav RNG.
1. Příliš krátký stav RNG (32bitový)
Hrací automaty Aristocrat MK IV byly vyvinuty na 32bitovém procesoru ARM 250. Pokud se vývojáři automatů rozhodli zároveň použít i 32bitovou hodnotu inicializačního stavu náhodného čísla, potom existuje pouze 4 294 967 296 možných stavů RNG. Může se to zdát jako hodně, ale současné počítače jsou velmi rychlé a tento počet možností je možné snadno ověřit hrubou silou (mému notebooku to trvá 4 vteřiny).
Tato možnost se mi však zdá méně pravděpodobná. Navíc 32bitové náhodné číslo je příliš krátké na to, aby pokrylo všechny možné výsledky některých automatů (5 válců * 90 symbolů).
2. Použití náhodného čísla snadno zneužitelným způsobem
Nyní budeme předpokládat, že šlo o 64bitový stav RNG. Jak použijete 64bitové číslo, abyste deterministicky zastavili 5 válců – každý o 50 symbolech? Nejjednodušší přístup, který zachovává rovnoměrnost, je následující:
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
Každý válec nyní používá vlastní část náhodného čísla a mezi jednotlivými válci neexistují žádné korelace. Jestliže jsou náhodná čísla rovnoměrně rozdělená, existuje rovnoměrná šance na libovolný výsledek hry(**) a regulátor to schválí.
Nyní k tomu zneužití:
Pokud znáte pozice válců, můžete snadno spočítat konec náhodného čísla (RND mod 50^5):
RndEnd = pos1 + pos2*50 + pos3*50*50 + pos4*50*50*50 + pos5*50*50*50*50
Pomůže vám to uhádnout současný stav RNG? Vlastně ano. Pomůže vám to hodně.
Vy totiž nepotřebujete simulovat všechna možná náhodná čísla, stačí vám pouze ta, která končí na RndEnd Nebo abych byl konkrétnější, stačí vám všechna náhodná čísla, která odpovídají vzorci RndEnd + X * 50^5:
- 1 * 312500000 + RndEnd
- 2 * 312500000 + RndEnd
- 3 * 312500000 + RndEnd
- ...
Z 2^64 možných hodnot (18466744073709551616) budete muset vyzkoušet pouze 59029581035. V obou případech se jedná o obrovské množství možných hodnot, ale zatímco simulace prvního případu by na mém notebooku trvala 544 let, simulace druhého pouhých 60 vteřin. To je obrovský rozdíl.
A to je vše. Nyní náhodné číslo znáte a můžete předvídat budoucí zatočení.
Alex mohl ve skutečnosti RNG zneužít jinak, ale vsadím se, že to nebude mít daleko od procesu, který jsem tu popsal.
(*) Ve skutečnosti Alex výsledky po sobě jdoucích náhodných čísel neznal, ale znal výsledky náhodných čísel, které byly v dané sekvenci hodně blízko.
Alexovi prostředníci museli počkat na správnou chvíli, kdy tlačítko zatočení stisknout. To svědčí o tom, že automat Aristocrat MK IV generuje náhodná čísla nepřetržitě s určitou frekvencí (v některých jurisdikcích je to legislativní požadavek). Když hráč stiskne tlačítko zatočení, výsledek zatočení se určí podle aktuálního náhodného čísla.
Všimněte si, že frekvence generování náhodných čísel musí být uvnitř automatu také naprogramovaná, a proto je možné ji po dekompilaci kódu snadno přečíst a předpovědět.
Předpokládejme, že automat generuje náhodná čísla při frekvenci 100 čísel za vteřinu. Odehrání 24 kol může trvat asi 60 vteřin. Na to je potřeba asi 6 000 náhodných čísel, z nichž se pro výpočet výsledků zatočení použije 24. Úkolem je potom spočítat první náhodné číslo, ze kterého se vypočítá výsledek prvního zatočení a také výsledky zbylých 23 zatočení z následujících 6 000 cyklů. Tato simulace je také snadná, (se správnou optimalizací) trvá pouze několikrát déle.
(**) Abyste získali dokonalou rovnoměrnost, museli byste zahodit čísla, která jsou větší než 2^64 – 2^64 mod (50^5).
Zajímavé odkazy s více informacemi na toto téma:
- 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/