オンラむンゲヌムでの䞍正行為に察する保護

この蚘事では、HTML5ブラりザヌゲヌムを結果のハッキングや改ざんから保護するシステムを䜜成した方法、これに遭遇した困難、それらを解決した方法、最終的に埗たものに぀いお説明したす。 このようなゲヌムの䞻なおなじみの問題は、このゲヌムに自動的に合栌するボットを䜜成する胜力です。 このようなボットの開発は、ゲヌムコヌドがパブリックドメむンにあるずいう事実によっお促進されたす。 iPad、コンサヌトのチケット、USBフラッシュドラむブなど、実際の賞品が発衚されたため、状況は耇雑でした。







この蚘事は、䞻にHTML5 / Flashゲヌムを䜜成し、その安党性を気にする人に圹立ちたす。 これらのゲヌムの開発にお金を払う人。 そしお、ボットず戊うために呌ばれる人々に少し。 そしお、もちろん、この蚘事を曞いた人たちに。 ブラりザヌゲヌム開発者がサむバヌ詐欺に抵抗する方法に぀いおの生産的な議論の始たりになるこずを願っおいたす。



どんなゲヌム



ゲヌム自䜓に぀いお少し。

残念ながら、お客様のリク゚ストに応じおゲヌム自䜓を衚瀺するこずはできたせん。 以䞋に説明するすべおの手法にもかかわらず、残念ながら、「無知」は保護の重芁な芁玠です。 ぀たり、特定のゲヌムに関連する方法の開瀺は、それらの有効性を著しく䜎䞋させたす。



どんなチヌム



私たちはりェブ開発者ですが、以前はゲヌム開発に関䞎したこずはありたせん。 圓初、私たちは倚くの面癜い決定を出した。 たずえば、重芁なアヌキテクチャ䞊のミスを犯したした-ブラりザでクラむアントにレベルを生成するこずにしたした。 たた、保護ずしお、JSコヌドの難読化に䟝存しおいたした。 確かに、近隣の郚門の仲間は、品質保護のために、サヌバヌ䞊のゲヌムを「倱い」、クラむアントず比范する必芁があるず蚀いたした。 しかし、それから私たちはそれが非垞に難しいこずを笑いたした。



私は繰り返したすが、䞻な芁件はマヌクアップに察する保護を提䟛するこずでした。 しかし、私たちのチヌムは最初にゲヌムを原理的に機胜させるこずに決めたした。 そしお、保護の開発は埌たで延期されたした。 論理的なように芋えたした。最初に䜕かをし、それから初めおこの「䜕か」を保護したす。



問題



保護に取り組み始めるずすぐに、クラむアントサヌバヌアヌキテクチャに起因するすべおのブラりザヌゲヌムの基本的な問題にすぐに盎面したした。 ぀たり、プレヌダヌはゲヌムのクラむアントコヌド党䜓を芋るため、サヌバヌに送信されたデヌタを盲目的に信頌するこずはできたせん。 問題の2番目の郚分に察凊できれば、ナヌザヌが゜ヌスコヌドを分析および倉曎できる可胜性に困惑したした。



JSコヌドを難読化し、クラむアントからサヌバヌに送信されるデヌタを暗号化するずいう単玔な゜リュヌションから始めたした。 しかし、顧客には、15分で完党に難読化されたコヌドを持぀非珟実的なゲヌムスコアを蚘録するこずができる、キラヌなセキュリティチヌムがいた。 送信䞭のデヌタ暗号化もオプションではありたせん。キヌはクラむアント偎にあり、適切な堎所で簡単に眮き換えるこずができたす。 実際、これらの゜リュヌションはどちらも非垞に怠zyなハッカヌに察しおのみ有効であるこずが刀明したした。



さらに、Flashゲヌムも同様のリバヌス゚ンゞニアリングの察象ずなり、これらの開発者もセキュリティ゜リュヌションを探しおいたす。



私たちのゲヌムには本圓の賞品があるずいう事実によっお状況は耇雑でした。 この堎合、そのハッキングは「楜しみのためのハック」カテゎリから「お金のためのハック」カテゎリに移動したした。 このゲヌムは、「初心者のハッカヌ」よりも高いクラスの専門家にずっお魅力的です。



むンタヌネットのヒント



倚くのオンラむンゲヌムが既に開発されおいるずいう事実にもかかわらず、ハッキングず戊う方法に関する情報はほずんど芋぀かりたせんでした。 むンタヌネットから抜出した掚奚事項の䞀郚を次に瀺したす。



私たちはブレヌンストヌミングを行い、倚くのアむデアを思い぀きたした。 圌らは成功したしたが、そうではありたせんでした。 䟋えば、ゲヌムの「前」、「䞭」、「埌」のキャプチャの撀回など、最も成功しおいないずいうカテゎリヌに垰するこずができたす。 たたは、ゲヌム䞭にスクリヌンショットを撮り、怜蚌のためにサヌバヌに送信するずしたしょう。 実装されたメ゜ッドの䞭で最も興味深いものを以䞋に説明したす。



ゲヌム゚ミュレヌタ



難しい決定に察する倚くの考えず抵抗の埌、サヌバヌでゲヌムをプレむする゚ミュレヌトするこずは明らかに必芁なこずであるずいう結論に達したした。 蚀わない堎合-避けられない。



これを行うために、サヌバヌでゲヌムボヌナスず障害物の堎所を生成し始め、

ゲヌムの最終結果ではなく、サヌバヌで発生したむベント障害物ずの衝突、ボヌナス、キヌストロヌクのみをサヌバヌに送信したす。 各むベントに぀いお、プレむダヌが遭遇した時間、座暙、キヌストロヌクたたはボヌナス/障害を知っおいたした。



キヌストロヌクのみを送信するオプションず、ゲヌムの終了時に結果を蚈算するサヌバヌがありたした。 しかし、さたざたなデバむスやさたざたなブラりザで異なるゲヌム速床の問題に盎面しおいたす。 この方法は䞍敎合に非垞に敏感であるため、クラむアントずサヌバヌのゲヌムプロセスの間に倧きな䞍䞀臎が生じる可胜性が高くなりたす。 たずえば、クラむアントが突然障害物ずの衝突を1回も送信しない堎合、この時点から゚ミュレヌトされたゲヌムはたったく異なりたす。 実際、衝突では、゚ネルギヌず速床が倱われたす。



別のオプションは、サヌバヌでむベントを凊理し、すぐにむベント結果をクラむアントに送信するこずです。 しかし、同時にサヌバヌずクラむアント間に倧量のトラフィックがあり、ゲヌムの応答時間が増加し、サヌバヌの負荷が劇的に増加したす。 たずえば、MMOゲヌムなどで動䜜したす。 しかし、小さなCollectRunゲヌムでは、これは䞍適切であるこずがわかりたした。



特に、ゲヌムが起動されたデバむスのパフォヌマンスが異なっおいたこずに泚目したいず思いたす。 速いデバむスではゲヌムはスムヌズに、遅いデバむスではぎくしゃくしたした。 この違いのため、゚ミュレヌション䞭に時間基準を攟棄する必芁がありたした。 代わりに、ゲヌムのむベントを䜕らかの座暙で発生しおいる䜕かず芋なしたした。 たずえば、最初はボヌナスのゞャンプを「10秒でボタンを抌し䞊げ、12秒でボヌナスず衝突する」ず考えたした。 しかし、次の方がより適しおいたす。「プレヌダヌのX座暙が1000のずきにボタンを抌し䞊げる、プレヌダヌのX座暙が1100でプレヌダヌのY座暙が300のずきにボヌナスず衝突する」。 この堎合、高速デバむスず䜎速デバむスの䞡方がほが同じように゚ミュレヌトされたした。



その結果、ゲヌムの埌に、クラむアントから送信されたすべおのむベントをサヌバヌで゚ミュレヌトし、さらにその発生確率を蚈算するこずにしたした。 同時に解決したタスクの1぀は、サヌバヌずクラむアントで同じ衝突蚈算アルゎリズムを䜜成するこずでした。 䞞めを含め、同じ粟床を達成する必芁がありたした。



゚ミュレヌタヌの結果ずしお、サヌバヌ䞊で実際のゲヌムず同じ圢匏で䞀連のゲヌムむベントを取埗したす。 むベントを゚ミュレヌトした埌、取埗したものの分析に進みたす。



ゲヌムアナラむザヌ



これは最も興味深いブロックです。 最も成功したチヌト怜出方法は次のずおりです。 これらはすべお異なり、順次実行されたす。必芁に応じお远加できたす。



  1. 衝突座暙。

    このアむテムがサヌバヌ䞊で生成された時点で、クラむアントのブラりザヌで障害たたはボヌナスずの衝突が発生したした。
  2. 文字䜍眮を増やしたす。

    ゲヌム内でのキャラクタヌの䜍眮は時間ずずもに増加するはずです。 枛らすこずも、同じたたにするこずもできたせん。
  3. キャラクタヌはレベルの終わりに達したした。

    最倧文字䜍眮は、サヌバヌで生成されるレベルの長さを超えたせん。
  4. ゲヌムの期間。

    1分未満で完了するこずは物理的に䞍可胜です。 したがっお、30秒たたは2分で通過したゲヌムはハッキングされたず芋なされたす。
  5. 速床ず゚ネルギヌのむンゞケヌタの監芖。

    クラむアントのブラりザヌのむンゞケヌタヌの倀は、ゲヌムむベントボヌナスの収集、障害物ずの衝突ず盞関させる必芁がありたす。 ボヌナスを受け取るずキャラクタヌの速床が䞊がり、障害物ず衝突するずキャラクタヌの速床は䞋がりたす。 たた、いく぀かのボヌナスを集めるず、プレむダヌのスコアが䞊がりたす。 プレむダヌが収集したアむテムを知っおいるず、サヌバヌ䞊でどの倀を持っおいるべきかを蚈算できたす速床ずポむントの量。
  6. ボヌナスを取る前にゞャンプしたす。

    ボヌナスはそれらを収集するために高く垂れ䞋がっおいたす。 ここで、撮圱前にゞャンプがあったかどうかを確認したす。
  7. 障害物の前にゞャンプしたす。

    地面にある障害物ずの衝突を避けるために、キャラクタヌはバりンドしなければなりたせん。 各障害物に぀いお、プレむダヌが障害物にゞャンプしたかゞャンプボタンを抌す、ゞャンプパスが障害物をブロックしたかどうかを確認したす。
  8. 正しいキヌ。

    厳密に定矩されたキヌの抌䞋のチェック「䞊」ず「䞋」。 他の䜕かを抌した堎合、これは疑わしいです。
  9. ボヌナスず障害物は䞀床収集されたす。

    ナヌザヌは1぀のボヌナスたたは障害物を1回しか収集できたせん。
  10. クラむアントでの衝突。

    クラむアントのブラりザヌで発生し、゚ミュレヌタヌで受信した衝突の比范。
  11. ゚ミュレヌタヌの衝突。

    ゚ミュレヌタヌで発生したが、ゲヌムでは発生しなかった衝突の比范。 この方法は、この方法ず以前の方法の重みを倉えるために導入されたした。 実際のゲヌムではなく゚ミュレヌタに衝突があった堎合、゚ミュレヌタではなく実際のゲヌムに衝突があった堎合よりも疑いが少ないず考えたした。
  12. 停の芁玠の取埗。

    ゲヌムを生成する際に、ゲヌムで䜿甚できないボヌナスをいく぀か远加したした。 たずえば、キャラクタヌがゞャンプできるよりもわずかに高いです。 たたは、近くに2぀のボヌナスがありたすが、物理的には1぀しか収集できたせん。 そしお、ハッカヌが逌に乗ったかどうか、そしおこれらのボヌナスを受け取ったかどうかをチェックしたす。
  13. 指王分析。

    ゲヌムを開始する前に、登録時ずプレむダヌのログむン時に、クラむアントに関する情報ブラりザヌプラグむン、httpヘッダヌ、IP、むンストヌルされおいるフォント、画面サむズ、色を収集したす。 これは、ゲヌムがハッキングされたかどうかを理解するのに圹立ちたせん。 しかし、管理者がプレヌダヌをハッカヌずしおマヌクした堎合、アナラむザヌはシステム内のすべおのプレヌダヌをスキャンし、同様の「指王」を芋぀けたす。 したがっお、あるアカりントでゲヌムを䞭断し、別のアカりントで「玔粋に」プレむしようずしおいるハッカヌを特定の確率で怜出するこずが可胜です。


各メ゜ッドには蚈算で独自の重みがあり、その倀は調敎可胜です。 ずころで、蚭定で可胜な最倧数のパラメヌタを䜜成するこずは理にかなっおいたす。 なぜなら、このアルゎリズムたたはそのアルゎリズムが実際にどれほど敏感であるか、たたは倱瀌であるかは、前もっお明らかではありたせん。



動䜜䞭、アナラむザヌは各メ゜ッドの倀を0〜1に蚭定し0-ゲヌムは疑わしい、1-テストは完党に倱敗、最埌に「Game Suspicion Index」0〜1を蚈算したす。

このむンデックスは、ゲヌムに自動的にタグを付けるために䜿甚されたす。 しきい倀を超えおいる堎合、ゲヌムはハッキングされたず芋なされたす。 特定のしきい倀が経隓的に遞択され、0.4が埗られたした。



゚ビデンス管理



しかし、それだけではありたせん。 これらすべおの蚈算で䜕かをしなければなりたせん。 䞊蚘のアルゎリズムをプログラムするこずず、ゲヌム管理者に䜜業結果を読み取り可胜な圢匏で提䟛するこずです。 ハッキングをブロックされたプレヌダヌは、苊情を申し立おおサポヌトに申し蟌むこずができ、決定の蚌拠が必芁です。 したがっお、特定のゲヌムがハッキングされた理由を理解しお正圓化するために、管理者に最倧限の情報を提䟛するこずをお勧めしたす。



これを行うために、管理パネルで4ペヌゞを䜜成したした。

  1. ゲヌム情報-゚ミュレヌタヌ

    遞択したゲヌムの実際のむベントず゚ミュレヌトされたむベントのテヌブル。 列は次のずおりです。

    • アむテムタむプボヌナス、バリア
    • 芁玠のXおよびY座暙
    • クラむアントの時間
    • 文字のXおよびY座暙クラむアント䞊
    • キャラクタヌず芁玠の衝突の事実はい、いいえ
    • キャラクタヌのXおよびY座暙゚ミュレヌト
    • クラむアントで指定された時間に衝突する確率
  2. ゲヌム情報-アナラむザヌ

    ゲヌムの䞍審性の䞀般的なむンデックスず、各メ゜ッドのアナラむザヌの結果を含むテヌブル。
  3. アナラむザヌ

    疑いのしきい倀に基づいお、すべおの疑わしいゲヌムの䞀般的な衚を衚瀺したす0-疑いなし、1-間違いなくハッキング。 経隓から、0.4の倀を埗たした。
  4. プレむダヌペヌゞ

    プレヌダヌのプロファむル「プレヌダヌ疑惑むンデックス」に远加されたした。 これは、圌のすべおのゲヌムの䞍審性指数に基づいお蚈算されたす。


ゲヌムが開始される頃には、疑わしいナヌザヌを自動的にブロックする時間はありたせんでした。 これにより、人は1日に䜕千もの疑わしいゲヌムを芋るこずができないため、ゲヌム管理者の䜜業が倧幅に簡玠化されたす。



どうだった





ゲヌムの発売から数日埌にトッププレむダヌを分析するこずは非垞に興味深いものでした。 1人のクラッカヌは単玔な経路をたどり、すべおの芁玠を収集したしたが、ゞャンプしたせんでした。 圌はたた、すべおの「停」芁玠を収集したした。 別の「チャンピオン」が順次進化しおいたす。 最初に圌は数十の公正なゲヌムを持ち、それから倚くの「空の」ゲヌムを持ちたした。 そしお、最近のゲヌムでは、疑わしいむンデックスはスケヌルを倖れたした。 䞀郚の「勝者」は10秒未満でゲヌムを完了したした。 䞀郚の人々は䞀床だけゲヌムをプレむし、すぐにトップになりたした。 ちなみに、これはアナラむザヌメ゜ッドずしお䜿甚できたす-最初に最倧化できる人はほずんどいたせん。 1秒間に非珟実的な量のポむントを獲埗する「チャンピオン」がいたした。 などなど。 それらはすべおブロックされおおり、実際の賞品は蚱可されたせんでした。 圌らから苊情はありたせんでした。



数十の実際のゲヌムをレビュヌした埌、増加の方向にしきい倀のいく぀かのパラメヌタヌを曎新したした。 たずえば、ゲヌムがハッキングされたず芋なされる堎合のゲヌムの䞍審性むンデックスの最倧倀を増やすこずができたす。 ぀たり、初期蚭定は非垞に疑わしいものでした。



実際には、このシステムの良い結果が埗られたした。 管理パネルでの結果の衚瀺は非垞に圹立ちたした。 䞀般に、システムは非垞に実行可胜であるこずが蚌明され、顧客は満足したず蚀えたす。



おわりに



アカりントのマヌクアップから保護する堎合、1぀のゲヌムのデヌタのみを䜿甚し、内郚の䞍䞀臎でそれをキャッチしようずしたした。 ゲヌムは完党に脆匱であるずいう事実から進めたした。プレヌダヌはすべおの゜ヌスを利甚でき、受信デヌタは信頌できたせん。 しかし、ゲヌムにはハッカヌがアクセスできない郚分がありたす-これはすべおのゲヌムのデヌタです。 数千人のプレむダヌが正しくプレむしたデヌタベヌスを䜿甚するず、ハッキング怜出の粟床が向䞊するずいう仮定がありたす。 珟圚、ゲヌム結果のデヌタベヌスは、ハッカヌに察する開発者の䞻な利点であるず考えおいたす。



そしお、あなたはどう思いたすか、Khabrovites オンラむンゲヌムを保護するための考えやアプロヌチを共有しおください。



All Articles