スロットマシン必勝方法

  1. スロットで使用されている乱数生成器を解読し、億万長者となった男、アレックス
  2. スロットマシン関連の不正行為、ハードウェア違法操作、違法ツール
  3. スロットとソフトウェアのバグ
  4. 追記:アレックスによるアルゴリズムの仕組み

きちんとした乱数生成器を搭載し、緻密に設計されたスロットを完全に攻略するなんてことは理論上不可能です。しかし、実際には、プレイヤー側がカジノ側の設定よりも高額の払い出しを行うようにスロットマシンを巧妙に操ったケースが多く確認されています

こういった巧妙な手口の多くはただの窃盗でしかありません。コインディスペンサーや紙幣識別機といったスロットマシンのハードウェアを違法に操作するツールが用いられる場合がほとんどです。中には、カジノ側の内部関係者がスロットマシンの違法操作に加担している場合もあります。

他には、プレイヤーの運が考えられないほどに良かったケースもあります。ソフトウェアのバグを見つけ出し、利用したのです。

しかし、その中でも群を抜いて一番に興味深いのは、極々最近(2009-2018)に起きた、特定のスロットマシンモデルでの回転結果の予測を成功させ、世界中のカジノから何百万ドルと巻き上げたサンクトペテルブルク在住のロシア人の話です。

この話はとにかく驚愕的なものなので、ある程度時間をかけて、彼のテクニックをより深く分析することにしました。

この話の詳細に関して、「wired.com」と「Brendan Koerner」の記事を参考にしております。[1]

スロットで使用されている乱数生成器を解読し、億万長者となった男、アレックス

アレックスはフリーランスのプログラマーやハッカーとして勤めており、あるロシアのカジノからNovomatic社のスロットマシンの還元率を操作するために雇われていました。任務の一環として、アレックスはスロットマシン内部のメカニズムを詳細に知る必要がありました。また、彼は擬似乱数生成器に関しても、その仕組みやスロットマシンにおける利用法についても学びました。最大の発見はここです。結果を予測できる可能性がある不完全な擬似乱数生成器アルゴリズムをスロットマシンが用いていると発見したのです。

本来の乱数生成器は電磁音を使用して、完全に無作為で予測不可能な値を生成するのです。しかし、擬似乱数生成器の仕組みは違います。まず、既に決まった定数値から始まり、インプットされた他の数値とごちゃ混ぜにすることで、無限階級数を生成するのです。擬似乱数生成器のアウトプットは完全に無作為な数値のようで、一見予測不可能です。しかし、擬似乱数生成器が脆弱なアルゴリズムを用いており、そのアルゴリズムを理解していれば、次に生成される乱数の予測が可能になるのです。

擬似乱数生成器が脆弱なアルゴリズムを用いており、そのアルゴリズムを理解していれば、 次に生成される乱数の予測が可能になります。

アレックスはいくつかのスロットで用いられているアルゴリズムの脆弱性に気づいたようで、これを上手く利用することにしたのです。

そこから数年間、さらなる巧妙な作戦に向けての下記のような地盤固めを行いました。

  • 人気のあるスロットゲームにリバースエンジニアリングを行う
  • 進行中の擬似乱数生成における数値を判別し、24回分のスピンを基に、その後のスピンの結果を予測するアルゴリズムを開発する
  • 算出された結果から、賞金獲得には一体どのタイミングでスピンボタンを押せばいいのか通知するiPhoneアプリを作成する
  • 実際にプレイするメンバーを数十人雇い、6年から7年間かけて世界中のカジノから賞金を巻き上げる

アレックス曰く、この間に彼とチームは数百万ドル(数億円)ほど稼いだようです。

備考:アレックスが構築したシステムは、無料スロット一覧に掲載されている様な現代のオンラインカジノでは通用しません。というのも、オンラインカジノは本来の乱数生成器を使用しており、プレイ結果が完全に無作為であるからです。

スロットを攻略する巧妙な方法を見つけ出したロシア出身のアレックス

果たして、アレックスが構築したシステムは合法的で倫理的だった?

彼が考案したテクニックは違法なスロット操作ツールを用いているわけではありません。この記事で後ほど紹介しますが、スロットのハードウェアを弄ることで設定された払い出しよりも多く賞金を稼ぐ窃盗テクニックとは大きく違う点です。アレックスの攻略法は純粋な数学と観察力を基にしているため、正当で合法な「スロット攻略法」といえるでしょう。

ギャンブル専門家(私も含めて)の多くは、アレックスの攻略法は完全に合法的で倫理的なものであると捉えています。ブラックジャックにおけるカードカウンティングや、ボーナスハンティング、アドバンテージベッティングと似た様なものです。賢いプレイヤーがスピンの結果を予測して、それを上手く利用して賞金を稼いでいたとしても、カジノ側は自ら選んでそのスロットを設置しているのでカジノ側の問題となるのです。

多くの法域においても、この攻略法は厳密には違法なものではありません。ですから、仮にカジノの警備員がプレイしているアレックスのチームメンバーを見つけ出したとしても、賞金の没収とプレイヤーのブラックリスト化しかできません。

しかし、カジノ(特にランドカジノ)は巨額の資金を持った巨大企業であり、地元当局とも強い繋がりがあります。カジノ側がスロットをATMのごとく利用している組織を発見した際、裏で何者かが糸を引いていると考えて間違いありませんでした。当局とカジノの弁護士が、組織が行っていたことに該当する犯罪を最終的に引っ張り出すことに成功しました。つまり、「詐欺の共謀罪」です。結果として、アレックスが雇っていたメンバー4人は2015年にミズーリ州において逮捕されました。(後に有罪判決となり、連邦刑務所での2年の懲役を言い渡されました)[2]

こうしてアレックスの作戦は終わりを迎え、さらにオープンにこの賞金巻き上げ作戦について詳しく話すメンバーも現れ始めたのです。このグループは世界中ほとんどのカジノの警備員に存在が知られるようになった可能性が非常に高く、別のメンバーがシンガポールでも逮捕されることとなりました[3]

アレックスがスロット製造元と協働した試み

これ以上この作戦を続行するのはメンバーにとって危険過ぎると考えたアレックスは、このノウハウを使った最後の金儲けに出ます。アレックスは和解したスロットメーカーであるAristocrat社に直接コンタクトを取ったのです。数千万ドルと引き換えに、擬似乱数生成器アルゴリズムを改善し、セキュリティ上の課題を克服すると申し出ました。さらに、Aristocrat社がこの申し出を断るのであれば、この機密情報を競合相手に売りつけると脅しも加えたのです。しかし、アルゴリズムの脆弱性を数学的に詳しく解説したのにも関わらず、Aristocrat社はこの申し出を断りました。

Aristocrat社が申し出を断った際、アレックスはこのアルゴリズムに関する話の詳細を公表することで、もう一度交渉しようと試みました。そこで、こちらの記事においてアレックスを以前から取り上げていた男であるBrendan Koerner(ブレンダン・コーナー)にコンタクトを取ったのです。

ブレンダンは彼のストーリーについてさらに執筆することを承諾し、直接アレックスから聞いた新しい詳細を多く盛り込んだ別の記事を公開しました。このブレンダンの記事がなければ、今お読みになっているこの記事で彼の事を取り上げることはなかったでしょう。

とにかく、私にとって今世紀最大のギャンブル関連事件でした。続編も楽しみですし、映画化も期待しています。ハリウッド、どうか駄作にはしないで…ポップコーンは準備万端です。

どれほどの影響規模で?どんな影響が?

Aristocrat社製造の旧式MK IVスロットマシンに対してアレックスの戦略が通用したという証拠は多く挙がっています。Aristocrat社自身も顧客に対して該当スロットの取り替えを促したほどです。それにも関わらず、世界中のカジノには未だにこの機種が何千台も配置されている状態です。しかし、必要に応じて、ほとんどのカジノが問題なく新機種に取り替えられるはずです。

アレックス曰く、(彼の主張を裏付ける証拠も存在します[4])2009年にはNovomatic社の旧式スロットに搭載されていた擬似乱数生成器の解読にも着手したようです。しかし、Novomatic社は2011年のセキュリティーアップデートでシステムの脆弱性を除去することができた可能性がかなり高いのです。恐らく、2013年に認可されたNovomatic社の特許であるSystem and Method of Centralized Random Number Generator Processing(乱数生成器集中処理システムと方式)はこれと何らかの関係があるはずです。

アレックスはAtronic社のスロットに関しても同様に解読ができたと主張しています。

アレックスの主張の中でも群を抜いて信憑性が高いものは、Aristocrat社製造の『Helix』スロットでも同様の脆弱性を見つけたということです。『Helix』は最新モデルの一種であり、アレックスの主張が仮に本当だとすると、Aristocrat社にとっては大問題となります。セキュリティーアップデートやチップ交換で問題が解決しないのであれば特にです。しかし、一方で、 Aristocrat社は年間20億ドルの収入があり、年間利益は5億円の大企業です。ですから、問題が起きても、なんとか切り抜ける可能性が非常に高いです。(最悪の場合、大規模な内部ハードウェアの交換や評判に影響が及んだとしてもです)

けれども、あまり期待してはいけません。アレックスがアルゴリズムに関してさらなる詳細を公表したとしても、一般客がその情報を利用してプレイしようとする前にカジノ側が該当スロットの電源を落とす可能性が高いですから。

自分自身でAristocrat社のスロットを購入して、リバースエンジニアリングを行えば、楽しいこと間違いなしです。マイクロエレクトロニクスの専門家である友人の力を借りれば、私もやろうと思えばできると思います。;-)

この話、本当なの?都市伝説なの?

アレックスの主張の真偽に関しては間接的ではありますが、多くの証拠が挙がっています。嘘だとすれば、2カ国の当局がメンバーを逮捕し、刑罰を科すことはなかったでしょう。Novomatic社がスロットマシン操作を調査し、セキュリティーアップデートを行うこともなかったでしょう。

でも、スロットメーカーはセキュリティー専門家を雇ってはいないのでしょうか?そんな巨大企業がどうしてこのシステムの脆弱性を見落としたのでしょうか?

簡単に答えましょう。

私もソフトウェア開発者として10年間働いていましたが、セキュリティーの脅威というものは容易に見逃されてしまうものです。今回の様な詳細が未知で新種のタイプの攻撃に関しては、特にそうです。その時になんらかのセキュリティーマネージャーが就任していたとしても、認識している脅威(モンキーポーなど)のみを軽減できる様に訓練されているのです。発見の危険性がある脆弱性を予測して、指摘ができる真の専門家がメンバーとして開発チームにいなければ、擬似乱数生成器におけるセキュリティー脅威は簡単に見逃されていた可能性もあります。

規制当局が基準として必要としていることは、擬似乱数生成器が生成する数値が均一な分布で生成されることのみです。これは簡易的な擬似乱数生成器でも行うことが可能です。予測不可能性(暗号化セキュリティー)が検証されることは一切ないのです。

「ビジネスパーソン」にとって、擬似乱数生成器の概念はどうでもいいことなのでしょう。気にしていることがあるとすれば、ほんの少しのことです。スロットに関して気にすることといえば、以下の内容くらいでしょう。

  • クラッシュしない
  • プレイヤーに好まれる
  • 利益を生む

それに、スロットマシンのソフトウェアは小規模のアップデートだけで何世代にも渡って使用できます。そうすると、「過去15年間、問題なく機能していたものをどうして変えるのか?」ってなりますよね?ですから、現代のスロットマシンが90年代初頭に作成されたコードの一部を未だに使用しているなんてこともかなりありえる話なのです。

アレックスが用いたシステムの専門的分析

みなさんの多くはアレックスが用いたシステムを詳しく知りたいと思っている方も多いと思います。

ですから、公表されている詳細を元に、どうリバースエンジニアリングが擬似乱数生成器を搭載したスロットのプレイ結果予測に繋がるのかを実証することにしました。記事の最後に私が執筆しました専門的分析があるので、是非お読みください。

スロットマシン関連の不正行為、ハードウェア違法操作、違法ツール

前述した通り、個人的にはアレックスが構築した方式は倫理的であり、法域によっては合法なものであると考えています。しかし、これまで行われてきたスロット「攻略」が全てそうであった訳ではありません。過去にはスロットを不正行為の対象とする違法な攻略法が数え切れないほどありました。

記録に残っているスロットマシン関連の不正行為は、スロットを「騙す」ことで大金を稼ごうとハードウェア操作違法ツールを悪用したものが大半です。

スロットマシンの仕組みを変えようと、ハードウェア操作を行ったり、違法ツールを使用することは、違法です。つまり、斧を持って、スロットマシン中のお金を盗もうと筐体を破壊する様なものです。法的観点から見れば、どちらも大差ありません。

複数回に渡って犯行が及ぶこともあれば、一度の犯行で終わることもあります。全てに共通していることは、ランドカジノの実際のスロットマシンでしか通用しないという点です。スロットマシンの違法操作はプレイヤーがその場にいないといけないため、オンラインカジノは安全なのです。

また、カジノ側も不正行為を受けることが多いため、警備をさらに厳重にしたり、ハードウェアの改善を行っているため、この記事で紹介されている不正行為のほとんどは現時点では模倣不可能です

それでは見ていきましょう。以下がスロットマシンを対象とした不正行為の一部です。

偽造コインやトークン

最初にご紹介するスロット詐欺はいたってシンプルです。偽造コインや、スロットマシンが支払いとして認識するものを悪用するのです。スロットマシンがコインだと「思い込む」ものを製造できれば、それで賞金を獲得できます。

もちろん、コインの額面価値よりもコインを安く偽造できなくてはなりません。でないと、そこまでの利益を見込めないのです。

この不正行為を巧妙に悪用した男性の有名な例をご紹介します。「コイン」として知られているアメリカ人のカジノコイン偽造者、Louis Colavecchioです。彼とその仲間は大量の偽造コインとカジノトークンを捏造し、アトランティックシティとコネチカットのカジノで荒稼ぎしたのです。逮捕後は、彼に関するドキュメンタリーを製作したヒストリーチャンネルのおかげもあって、かなりの有名人になりました。

糸を結び付けたコイン(ヨーヨー)

ヨーヨーで遊んだことがある方は、上手く使いこなすとヨーヨーが下がったり上がったりするものだということはご存知でしょう。糸を結び付けたコインも同じです。まず、スロットマシンにコインを投入口に入れ、コインが認識されてゲームが開始するまで押し入れます。そして引っ張り出し、何度も同じコインを使用するのです

この手法は偽造コインとかなり類似していますが、偽造コインの大量生産をせずに済みます。糸を結び付けたコインであれば、基本的には誰でもカジノに不正行為を働くことができるのです。もちろん、誰もがそうしたわけではありませんし、したからといって成功するものでもありません。

過去にスロット攻略法として悪用された違法行為:糸を結び付けたコイン

削ったコイン

使用コインが本物かどうかを判断する技術は進化を遂げ、偽造コインの様な悪企みが通用しない、またはその企みを成功させるのがはるかに難しくなりました。スロットマシンは支払いを認証し、コインが偽物なのか本物なのか識別するために光学センサーを用い始めました。

削ってあるコインを使用すると、光学センサーによって有効な支払いだと認証はされるのですが、コインのサイズを測るコンパレータからはするりと落ちます。そして、コインはプレイヤーの元に返却され、もう一度そのコインを使用できるのです。

スロットマシンが設定されたサイズまで識別するものであれば、削ったコインと一緒に別のなにかを投入すればいいのです。そのなにかは本来のコインサイズにピッタリであるためマシン内に貯蔵され、削ってあるコインは光学センサーを「騙し」、コンパレータから落ちてきます。

コートハンガー

上記のスロットマシンを対象とした不正行為は貨幣がマシンにどう投入されるのかがポイントでした。次にご紹介するものとそれ以降のものは異なります。具体的にいえばコインを、スロットがどう賞金を払い出すのかに影響を与えるものとなっています。

プレイヤーが賞金を獲得すると直接筐体から払い出される旧式のスロットを考えてみてください。旧式のスロットは、プレイヤーが獲得した賞金分だけを払い出せるように、コインの枚数を確認する機械式のコインカウンターを搭載しています。

この不正行為では、コートハンガー(または形が似たもの)をコインカウンター周辺の部分に押し込み、その精度に影響を与えるのです。つまり、スロットは本来払い出す金額よりも多く払い出し続け、長期的に見るとより多額を稼ぐことになるのです。

トップボトムジョイント

トップボトムジョイントは2つの部分から構成されているツールです。そう、先端(トップ)と基部(ボトム)です。さらに詳しくいえば、棒状の金属を輪っか状に曲げたもの(トップ)と、長めのギターの弦や細いワイヤー(ボトム)から成っています

カジノでの不正行為で使用されるツールとして有名なものの一つがこのトップボトムジョイントです。70年代と80年代にはかなり広く使用されていました。このツールの出現によって、「スロットマシンを空っぽに」という概念が大きく変わったのです。

ツールの基部をマシンの底から挿入し、内部の電子機器に接触させ、荷電させます。そして、コイン投入口から先端部分を挿入し、回路をショートさせ、無理矢理スロットマシン内部の全てのコインを払い戻させるのです。

モンキーポー

モンキーポーは、スロットやカジノを相手にした不正行為における伝説Tommy Glenn Carmichaelによって編み出されたツールです。しかし、モンキーポーの話をする前に、まずはトップボトムジョイントの話をしなくてはなりません。Carmichaelは売れ行きのあまり良くないテレビ修理店を営んでいました。ある日、友人のRay Mingが彼にトップボトムジョイントの存在を教え、自身も試してみることにしました。

一応は成功したのですが、最終的には捕まってしまい、この違法行為だけでなく、前科があったために懲役5年を言い渡されたのです。これをきっかけに、トップボトムジョイントは既にかなり知られてしまっているツールであると気づきました。そして、カジノに不正行為を働くのであれば何か新しいものを考案する必要があると悟ったのです。

そこで、モンキーポーが開発されました。彼は実際にビデオポーカーマシンをプレイし、ツールの検証を始めました。シンプルながらも、機能性の高いツールを発明したのです。曲げた棒状の金属に金属糸を括り付けたものをスロットマシンのコイン排出口から挿入し、コイン払い出し機のスイッチを見つけるまで動かします。そして、引っ掛けて抜けばマシン内部のコイン全てを手に入れることができるのです

ライトワンド

スロットマシンが技術的に進歩し、よりセキュリティー面で安全になっていく中で、投入金額勘定に機械装置を使うことはなくなりました。光学センサーを使用し始め、前述の違法ツールの大半は使用できなくなりました。しかし、Carmichaelはこの変更にさえも対応し、光学センサーを欺く方法を編み出しました

光学センサーの「視力」を奪い、投入金額と支払い金額検出できなくする小型装置を開発したのです。スロットマシンは払い出しが完了していないと認識し、払い出しを続けるので、儲かるという寸法です。これが詐欺師をお金持ちにするシステムです。

ピアノ線

ピアノ線を使用したスロットマシン不正行為には、金銭の投入や払い出しは関係ありません。ピアノ線を使用することでプレイ結果を変えるという他に類を見ない違法行為です。

その起源は1982年、まだスロットマシンのリールが機械的に動作していた時代にまで遡ります。ピアノ線をスロットマシンの回転内部に挿入します。ピアノ線を用いてリールの回転を測定する速度計を詰まらせることで、回転結果を操作するのです。

この手法を用いたグループは5万ドルの賞金を獲得することができました。しかし、犯行の一部始終は録画されており、後に逮捕されました。儚い成功だったとしても、本当にピアノ線だけでプレイ結果を操作できたのですから大したものです。

チップ交換

Dennis Nikraschの手法は一味違います。彼は家庭で「遊べる」ようにとスロットマシンを購入しました。そして、スロットマシン内部のチップは再プログラムすることで、プレイ結果を操作できることに気づきました。再プログラムしたチップをカジノに設置されているスロットマシンに取り付ければ、大金を獲得できたのです。

そして、実際に行動へと移したのです。このチップを大量購入し、再プログラムし、スロットマシンの鍵を手に入れて、カジノに設置されたスロットマシン搭載のチップと交換しました。たったそれ「だけ」でこの作戦は大成功し、大金持ちとなったのです。もちろん、彼は2004年には逮捕され、2010年に亡くなりました。

スロットとソフトウェアのバグ

バグを利用したスロット攻略は厳密にいうと不正行為や違法行為ではないのですが、この記事で取り上げることにしました。スロットは人の手でプログラムされています。そして、人はミスを犯すものです。プログラミングのミスは、(知ってか知らずか)プレイヤーによって利用されてしまう ソフトウェアバグを引き起こす可能性があります。

スロットマシンのソフトウェアバグ

ソフトウェアバグを利用することで高額賞金を獲得したケースは以下のように多く確認されています。

  • 2015年には、イリノイ州在住の90歳女性が『Miss Kitty』スロットで4,100万ドルもの賞金を獲得した事例がありました。カジノ側はこの賞金支払いを拒否しました。
  • オーストリア出身の男性はジャックポットで4,300万ユーロもの賞金を獲得しました。しかし、カジノ側は彼がジャックポット獲得に必要なシンボル5つの内4つしか当てていないと主張したのです。そのため、賞金が支払われることなく、代わりに100ユーロと無料の食事を提供するだけで終わりました。
  • ニューヨーク州在住の女性は4,290万ドルものジャックポットを引き当てました。ですが、そのスロットマシンの最大払い出し可能賞金額は6,500ドルであり、この高額賞金はただの誤りだったのです。カジノ側は彼女の本来の賞金は2.25ドルであると頑固主張しました。

この様な事例はいくらでもあります。重要なのは、バグによる高額賞金はほとんど支払われることはないということです。さらに悪いことに、バグを口実に賞金支払いを行わない怪しいカジノも存在します。

しかし、ソフトウェアバグが毎回ジャックポットへと繋がるわけではありません。少額の賞金獲得が続いたり、プレイヤーに有利な方法で投入した実際の金額よりも多く金額を認識したりすることもあるのです。この手のものであればカジノ側にばれることもないので、悪知恵の働くプレイヤーがこのバグを上手く利用することもあるでしょう。

しかし、こういったタイプのバグを見つけるには極端に運が良い必要があります。見つけたとしても、賞金が支払われるかどうかは疑問が残ります。

ですが、忘れてはいけません!「幸運は備えあるところに訪れる」ものですから!:)

追記:アレックスのアルゴリズムの機能の仕方

まずは以下のように彼の乱数解読について知っていることからまとめましょう。

  • プレイ結果の予測には24回分の回転結果が必要
  • メンバーは回転ボタンを押すタイミングを待つ
  • (アレックスによる数学的論証から)ブレンダン・コーナーは擬似乱数生成器アルゴリズムの起源が『The Art of Computer Programming』であると突き止める

注意:Aristocrat社のエンジニアによるミスがどんなものであり、アレックスがそのミスをどう上手く利用したのかに関する下記の専門分析は私の憶測です。執筆当時において公表されていた情報は全て参考にしましたが、実際にアレックスが用いた手法は異なる場合がございます。

アレックスが用いた手法についてCasino Guruが分析を行いました

Aristocrat社製造のスロットマシンで使用されていた可能性がある擬似乱数生成器

『The Art of Computer Programming』で解説されており、満足がいく様な生成結果を出す最も単純な擬似乱数生成アルゴリズムは、以下の通り実際にかなり単純なものです。

乱数 = (a *先に生成された乱数 + c) mod m

このアルゴリズムは、線形合同法(LCG)とも知られており、今でもプログラミング言語の多く(Java等)で使用されているデフォルトの擬似乱数生成アルゴリズムです。

Aristocrat社のスロットマシン開発者達は使用プログラミング言語で用いられているデフォルトの擬似乱数生成アルゴリズムをそのまま流用したのでしょうか?最低でも一様分布の基準は満たす、最も単純な擬似乱数生成アルゴリズムを用いたのでしょうか?

どちらもありえる話だと思います。デフォルトのアルゴリズムでも十分問題なく機能しますし、生成された乱数は一様分布の基準を満たします。プログラマーに課せられていた全ての要求事項基準を満たしていたのかもしれません。

単純な擬似乱数生成器の解読法

それでは、アレックスがアルゴリズムをどう解読したのか見ていきましょう。

1.デコンパイル

最初の手順はアルゴリズムの正確な定数(定数a、c、m)を突き止めることです。これらの定数はスロットマシンごとに値が書かれているので、難しくはありません。スロットマシンのメモリーからバイナリコードを読み取り、デコンパイルすればよいだけです。適切なツールさえあれば、マイクロエレクトロニクスの専門家であれば誰でもできるような作業です。

ですが、定数a、c、mの値を知っただけでは何も変わりません。デコンパイルを用いれば、暗号化されたものも含めた全ての擬似乱数生成アルゴリズムにおける定数を特定できます。カジノに設置してある実際のスロットマシンで用いられている乱数生成シーケンスの結果を予測・利用するには、現在の乱数生成シード値を知る必要があります

2.現在の乱数生成値を特定する

線形合同法型擬似乱数生成アルゴリズムは一般的に予測可能なものであると分類されています。つまり、乱数を3つ知ることができれば、定数a、c、mを算出できてしまい、数列において次に来る値をいとも容易く予測できてしまうのです。

アレックスの場合はそうではなかったので、混同しないようにしてください。アレックスの場合だと、デコンパイルを用いて定数a、c、mは既に特定されていたのですが、現在の乱数状態値が不明だったのです。彼はプレイ録画においてリールの回転が停止した位置に注目し、間接的に生成された乱数を観察できました。

重要な点は、スロットのロジックは決定論的であり、プログラムされたものであるということです。なので、デコンパイルやリバースエンジニアリング、シミュレーションが可能なのです。スロットゲームのロジックは基本的に乱数を基にし、演算処理を用いて各リールが停止する位置を定めるのです

スロットマシンのリールには約50~100種類のシンボルが描かれており、画面上にはそのうちの3種類が表示されます。同じシンボルがリール上に繰り返し描かれていることや、リールの長さが違うこともありますが、それぞれのリールに独立した50通りの組み合わせがあるとしましょう。乱数が50種類のシンボルから1種類を選定するので、1回目の回転で1つ目のリールに注目すれば、可能性がある乱数50個の内49個(98%)を排除できることになります。

リールが5つあるスロットマシンだとしましょう。すると、平均的して3億1200万個の乱数の内1個のみがプレイヤーが観察した同一の回転結果に繋がります

乱数列(*)がどのようなプレイ結果をもたらすのか分かっていれば、全ての回転において望んだプレイ結果へと繋がる初期乱数が1個算出できます。実際、必要な回転数は初期乱数の長さに比例するのです。

ですから、可能性がある乱数をシミュレーションにかければ…ほら!って、そう上手くはいきません

スロットマシンが用いている乱数が64ビット方式だとすると、シミュレーションには圧倒的な演算処理能力が必要となります(私のパソコンでは544年かかるようです)。だとすると、アレックスがアルゴリズムを解読するには、Aristocrat社の開発者がなにか手抜かりをしたはずです。その可能性があるものを以下に2つご紹介します。

  • 短すぎる32ビットの乱数状態値を使用
  • 乱数生成の初期状態値が割り出せるような乱数利用を実行

1.32ビットの乱数初期状態値

Aristocrat社のMK IVスロットは32-bit ARM 250プロセッサを基盤として開発されています。仮にスロット開発者が乱数シード値も32ビット方式を用いたとすると、考えられる乱数生成の初期状態値はたった4,294,967,296通りです。かなり多く思えますが、現代のコンピューターは演算が速く、この程度の数であれば総当たりで特定可能です。(私のパソコンだと4秒で終わりました)

しかし、この線はないと考えています。さらに、32ビット方式の乱数だと、乱数がプレイ結果選定に足りないスロットゲームも出てくるのです。(5つのリール*90種類のシンボル)

2.乱数生成の初期状態値が「割り出しやすい」方法での乱数利用

では、64ビット方式の乱数生成の初期状態値が使用されていたとしましょう。1つのリールにつき50種類のシンボルのものが5つのリールあるとして、決定論的にプレイ結果を選定するには64ビット方式の乱数をどう用いればよいのでしょうか?均一分布を満たしつつも一番単純な数式は以下となります。

可能性1 = 乱数 modulo 50
可能性2 = (乱数 / 50) modulo 50
可能性3 = (乱数 / (50*50)) modulo 50
可能性4 = (乱数 / (50*50*50)) modulo 50
可能性5 = (乱数 / (50*50*50*50)) modulo 50

各リールに異なった乱数が該当し、個々のリールに相関関係はありません。乱数が均一分布しているとすると、どのプレイ結果が出るのかという可能性も一様分布を満たします。(**)つまり、規制当局が認証するのです。

さあ、ここから乱数生成の初期状態値を割り出してみましょう:

リールの位置が分かれば、 簡単に乱数の最終値が以下のように算出できます。(乱数 mod 50^5)

乱数の最終値 = 可能性1+可能性2*50+可能性3*50*50+可能性4*50*50*50+可能性5*50*50*50*50

これが現在の乱数状態値の特定に繋がるのでしょうか?実のところ、特定に繋がります。しかも、この数式のおかげで特定はかなり簡単になります。

この数式を利用すると、全ての考えられる乱数をシミュレーションする必要はなくなり、乱数の最終値のみに注目すればよいわけです。詳しく述べれば、最終値+X * 50^5を満たす乱数のみに注目すればよいのです。

  • 1 * 312500000+最終値
  • 2 * 312500000+最終値
  • 3 * 312500000+最終値

そうすると、2^64通り(18466744073709551616)考られる乱数から、59029581035通りにまで絞り込めるわけです。どちらにせよ膨大な数ではあるのですが、私のパソコン上の演算だと前者の解析には544年かかり、後者であればたった60秒で終了します。そう考えれば、かなりの差が出ます。

この通り乱数の解読ができたため、回転結果の予測が可能になります。

アレックスによる実際の乱数解析方法は異なるかもしれませんが、私が説明した解説と方式と共通点が多くあるはずです。

(*)実際、アレックスは乱数列の生成結果を知ってはいませんでしたが、乱数列にかなり近い乱数組を解読していたようです。

アレックスのメンバーは回転ボタンを押すタイミングを待つ必要がありました。つまり、Aristocrat社製造のMK IVスロットは一定頻度で乱数を連続的に生成していたことになります。 (これを法的規制基準として設けている法域も存在します)プレイヤーが回転ボタンを押すと、現在の乱数を元に回転結果が選定されるのです。

ここで留意すべき点は、乱数生成の頻度はスロットマシンにプログラミングされており、コードをデコンパイルすることで簡単に解読し、予測することが可能だということです。

あるスロットマシンが1秒間に100個の乱数を生成するとしましょう。24回転には60秒ほど要するとすると、約6000個の乱数が生成され、その中の24個だけが回転結果の選定に直結するわけです。だとすれば、1回目の回転結果を選定する1個目の乱数と、6000回転中から残りの23回転分の結果を算出できればよいのです。このシミュレーションも簡単なものであり、少し時間がかかるだけです。(最適化を行った場合)

(**)完全な均一分布を満たすには、2^64 – 2^64 mod (50^5)を超える数値は除く必要があります。

この話題の関連リンク:

あなたの友達にとっても役立ちそうですか?

この記事を友達とシェアしましょう。