web-dev-qa-db-ja.com

マルチプレイヤーゲームでの人工的な遅延または「ラグハッキング」の防止

「ラグハッキング」と呼ばれる攻撃があり、マルチプレイヤーゲームで人気が高まっています。 人工レイテンシ を作成するには、少なくとも2つの方法があります。人工的な遅延を導入する1つの方法は、ユーザーが意図的にネットワークケーブルを切断する lag switch を使用することです。別の方法は、synまたはudpパケットのフラッドを使用して、制御された予測可能なゲームの中断を引き起こし、プレイヤーが不当なアドバンテージを獲得できるようにします。人工的なレイテンシ攻撃 alargeマルチプレイヤーゲームに影響を与える

一部のゲーム会社は、ユーザーによるこの攻撃を認識しています ただし、解決策がないため、この脆弱性は無視しています 。この攻撃を実行するためのツールは簡単に作成できます すぐに利用でき、使いやすい 。多くの場合、攻撃元のIPアドレスを偽装して、攻撃の追跡を困難にします。

したがって、security.seは、この問題の解決策を考え出します。しかし、最初にゲームプロトコルについて少し話しましょう。オンラインゲームでは、遅延とオーバーヘッドが減少するため、一般にUDPを使用しますが、これにより、なりすましの脆弱性も増加します。ゲームプロトコルは Latency Hiding を使用して「知覚される待ち時間」を減らすことができますが、これにより人為的な遅延の影響が大きくなる可能性があります。マルチプレイヤーゲームは、多くの場合、p2pアーキテクチャを使用します(例: Hydra:ゲームのピアツーピアアーキテクチャ )。ピアはフラッディングしやすいです。 nrealネットワークアーキテクチャ は十分に文書化されており、 この攻撃に対しても脆弱です です。 (他にリストすべきリソースがある場合は、お知らせください!)

36
rook

ラグアタックを処理するための2つの概念的なパスが表示されます。

  1. 罰金の遅れ。 「人為的」ラグが検出された場合、違反者を立ち退かせ、禁止期間を強制します。これは、遅れをとって詐欺をする人々と、インターネット接続で時々しゃっくりをするだけで苦しむ人々の間で見つかる微妙なバランスがあるので、実際に行うのは難しいです。自分の顧客を倒すのは悪い商習慣です。そのような種類の解決策は、必然的に、悪い人々と不運な人々を区別するためのしきい値に終わります。詐欺師は敷居近くに留まり、これはおそらく戦略的な利点を得るのに十分でしょう。

    罰則に沿った有望なアプローチの1つは、ラグごとに小さいが累積的なペナルティを適用することです。パケットが失われたり遅れて現れた場合は常に、ヒットポイントを1つ削除し、プレーヤーをフラッシュさせます。これはゲームに統合することもできます。ユニバース(たとえば、 [〜#〜] fps [〜#〜] の場合、検出されたラグをライフルジャムに変換します)。これは、信頼性の高いインターネット接続と大きなコンピューターを持っている人々が有利になることを意味します-そして、他の多くのレジャー競技状況(たとえば、趣味の場合、スケートボードです。より優れたスケートボードは才能に取って代わるものではありませんが、それでも役立ちます。スケートボーダーはそれを人生の事実として受け入れます。最終的に、これはISPにレイテンシを少し働かせる可能性があり、ゲーマーだけでなくeverybodyに適しています。

  2. クライアントを信頼しないでください。大規模なオンラインゲームは 分散コンピューティング です。彼らのセキュリティ問題のほとんどは、多くのゲームルール、つまりプレーヤーが行動する世界のプロパティがクライアントシステムによって維持されているという事実によるものです。プレイヤー自身、特に潜在的な不正行為者は、マシンを広範囲に制御できます。既存の countermeasures ソフトウェアDRMとアンチウイルスが失敗するのと同じ理由で効果が制限される傾向があります。これは、攻撃者と防御者がパッチとカウンターパッチの速いペースの戦いに閉じ込められる武装競争です面倒で高価で継続的なメンテナンスが必要です。

    一般的なアーキテクチャの対応は、ゲームルールをサーバー側のみで維持することです。クライアントは「シン」になり、単なるディスプレイインターフェイスです。残念ながら、これは実装が困難です。これは、表示パフォーマンス(したがって、ゲームエクスペリエンス)が、人為的および自然に同様に、待ち時間に対して非常に敏感になるためです。そして ADSLリンク は50ミリ秒近くの最小限のレイテンシを持ち、これは平均的なゲーマーの反射に関して高いです。また、これはゲームserversがより多くのCPUを必要とすることを意味します。しかし、セキュリティ上の利点は非常に大きくなります。プレーヤーが遅れを誘発した場合、彼は本質的に自分自身を罰し、他のものは罰しません。

    サーバーですべてのゲームの状態とルールを維持することも、完全にサイエンスフィクションではありません。 1980年代後半、最初の1つである [〜#〜] mmo [〜#〜] ゲームは、廃れたフランスの雑誌の子孫である「CarCrash」でした Jeux etStratégie ; Minitel を介して再生されました。これは、ユーザーがローカルコンピューティング機能のないテキスト端末(グラフィックスが制限されている)を使用していたフランスのもう1つのテクノロジーです。中央サーバーはゲームのルールを維持し、すべての人の画面の更新を計算し、それは機能しました。当時のコンピュータは、現在よりもはるかに少ないCPU負荷でした。 20 MHzのCPUで「スーパーコンピュータ」と見なすのに十分でした。 2013年の35ドルのホームルーターは、その時代の大規模サーバーの10倍以上強力です。それでもうまくいきました。

    サーバーでゲームルールを維持するということは、ゲームの通常のアーキテクチャの方法から離れることを意味します。歴史的に、ほとんどのゲームはローカルであり、クライアントを相互に接続することによってマルチプレーヤーになりました。おそらく中央サーバーがランデブーポイントとしてのみ機能しました。政治的なメタファーを取るために、ゲームは confederations を形成することでマルチプレイヤーになりましたが、不正行為者に対するセキュリティには federation が必要です。

もちろん、混合戦略も可能です。核となる考え方は同じです。クライアントシステムに機密データをできるだけ少なくします。そして、あなたがそれらを何かのために信頼する必要があるとき、大きな棒または大きなニンジンを使用して、それらを一列に維持します

(プレイヤーが牛の群れのように扱われるべきだということを理解しているなら、まあ、確かにそれは真実です。牛を不幸にさせたくはありませんが、歩行方向やペースを選択させることもできません。 。)


編集:お茶が少し冷めるのを待っている間に洞察を得ました。ゲームアーキテクチャには、世界中に広がる複数の(場合によっては数十)の協力する「信頼できる」サーバーを含めることができます。各ゲーマーは、(ネットワークの意味で)「近く」にある1台のサーバーに接続してレイテンシを低くし、上で概説した表示のみの戦略を可能にします。 ISP自体が取引に関与できる場合(各ISPは独自のインフラストラクチャでいくつかのサーバーをホストします)、これはビジネス上意味のあることです。

25
Thomas Pornin

舌の一部のみが頬にあるので、私はXbox Liveにラグスイッチによる損傷を制限するためのコントロールがすでにあることをお勧めします。私は私の内側のシュナイアーをチャネリングして、テクニカルコントロールが実装するのに問題があるかもしれないところで、反応的コントロールと社会的コントロールは完全に有効なオプションだと言います:

  • プレーヤーに「回避」のマークを付ける-再び彼らと対戦する可能性が低くなります
  • 「システムの改ざん」について苦情を申し立てる-アカウントが取り消される可能性がある

これは、私が定期的にプレイするゲーム「Call of Duty:World at War」の「mod」ハッカーに対する効果的な一連のコントロールであることが証明されています。私が目にする1つの問題は、ラグの切り替えを証明するのが難しいことです。誰かがnoclipで空中を飛んでいるのとは異なり、無邪気なプレーヤーが時々助けになるように見える遅延した接続を持つのは珍しいことではありません。

8
gowenfawr

任意の例を考えてみましょう:

サーバーは、プレーヤーの位置とこの更新が受信された時間を含む各プレーヤーのデータのスタックを保持します。サーバーは、クライアントでそのようにプログラムされているため、10 msごとに更新されることを期待しています。受信した各更新は、前の更新でチェックされます。

サーバーがプレイヤーのX座標とY座標を受け入れており、ゲームが更新ごとにXとYの1.0の変更のみを許可しているとします(それがプレイヤーの最大速度であるため)。現在の時刻が0.00で、現在のプレーヤーの位置が(1.0,1.0)の場合、現在の時刻0.01での最大更新位置は(2.0,2.0)になります。 +.1,0.1)のように、この位置の誤差を許容する必要がある場合があります。

ただし、UDPパケットはドロップされるため、サーバーは現在の更新を考慮して、プレーヤーの許容可能な制限を計算する必要があります。前の段落で更新が削除され、プレーヤーが時間= 0.02および位置(2.0,2.0)の新しい更新も送信した場合、これは正当な更新です。サーバーは、実際ではない更新をチェックしてフラグを立て、座標を変更する時間を達成できなかった場合、この例では、次の更新で(1000.0,1000.0)に移動します。

サーバーは10ミリ秒ごとに更新を予期しているため、受信しなかったドロップされたパケットに許容できる制限を設ける必要があります。制限は100ミリ秒であり、サーバーがその時間枠内に更新を受信しなかった場合、遅延が発生していると見なすことができます。このラグがなくなると、サーバーはプレイヤーに現在の場所を通知し、新しい更新の送信を開始できるようにします。

それは彼らの問題ではないので、このラグは他のプレイヤーに影響を与えるべきではありません。彼らが遅れているので、ゲームの他のプレーヤーが周りに「テレポート」するのを見るのは非常にイライラします。ラグが発生し、それが---(always私がビデオゲームで死ぬ理由で​​す。

1
ponsfonze

ラグスパイクまたは用語が何であれ検出された場合、サーバーは単にプレーヤーの弾丸をx秒間ミュートし始めます。それは敵プレイヤーのせいではなく、ネットワークの問題が原因で彼が負けている。

ラグスパイクが試合中に継続する場合は、ドロップされた弾丸の時間遅延を上げ続けます。プレイヤーのアカウントにこのものを記録します。これは、プレイヤーが近くにいるときに発生している距離や距離などの追加情報をログに記録し、必要に応じてプレイヤーを調査できるようにします。それが誰もいないオープンフィールドで起こっていない場合...なぜですか?戦闘時にはネットワークがより複雑になることを理解していますが、彼が撃つ前に常に.5秒である場合、彼が岩の後ろを走るのでラグスイッチが作動してから攻撃するので、このことはピンポイントに明白になります。

あなたが悪いネットワークを持っているなら、あなたは大丈夫のようになります、私は悪いネットワークを持っていますが、私はゲームが好きなので、私はいくつかの弾丸を失うかもしれないことに気づきます...それは受け入れられます。悪いネットワークを持っている人々は彼らが悪いネットワークを持っていることを知っています。スパイクによるキックは、サーバー接続へのクライアント接続全体で継続的なスパイクでない限り、解決策ではありません。

ラグハッカーに関しては、最終的に彼は公平にプレーしなければならないでしょう。弾丸の長い損失は、彼がハックを使用しないことを意味します。どちらかと言えば、それは逃げるためのツールに変わり、さらに彼がハッキングしていることを明らかにします。悪いネットワークプレーヤーは、弾丸が遅れて失われていることに気付かないでしょう。

そして最後に、クライアントはネットワーク接続が不良であるため、そのような不良ネットワークを持っていますか? 「ネットワークに混乱の兆候が見られます。回線の問題の可能性を調べるためにISPにサポートを依頼してください。これは礼儀の警告であり、不正行為の旗ではありませんが、サーバーとゲームプレイに影響を与えるため、私たちが提供しようとしている質の高いサービスを探している競争相手に公平であるように、同様の問題を抱えている他の人と並んでいる可能性があります。」

0
Mike Cackle