P2Pネットワークの隠れ位置?


13

私は安全なゲームのためにP2Pアーキテクチャに取り組んでおり、問題を5つのサブ問題に分けました。

  • 送信されたゲーム状態の違法な変更
  • 不正行為者を正確にドロップする
  • ゲームの状態に同意する
  • 「先読み」チートの回避
  • 相手から機密情報を隠す

最初の4つはほとんどすべて解決しましたが、最後の1つが問題を抱えています。

詳細に入る前に、「チートプルーフ」p2pネットワークの作成リストに見落としているものがあるかどうかを尋ねたいだけです。私はエイムボットの使用などのチートには興味がありません。p2pネットワークを集中サーバーと同じくらい安全にすることにだけ興味があります。

そのため、これまでの機密情報の非表示の努力では、対戦相手の位置が常に知られるべきではないゲームのプレイヤーの位置に焦点を当ててきました。問題は、対戦相手の位置を知らずに自分の位置を対戦相手に送信するかどうかを決定する方法になります。

相手があなたのポジションを比較するために複数の間違ったポジションを送信するなどの方法を除外しました。なぜなら、相手はそのようなシステムを簡単に乱用できるからです。

私は、相手から「視野」を受け取り、それによって自分の位置を送信するかどうかを決定できる方法に焦点を合わせてきました。ただし、これは、League of Legendsなどのゲームでは、対戦相手の視野も非常に機密情報であるという問題です。特異行列を使用して視野を変換することでこれを解決しようとしましたが、つまり、視野の変換バージョンから元のバージョンに戻すことはできませんが、それは線形変換であるため、位置が内部にあるかどうかを把握することができます視野かどうか。

ただし、これは完全には機能せず、変換後に正確な視覚フィールドを復元することはできませんが、視覚フィールドの「勾配」に関する情報(視野は複数の線で構成され、各線の勾配を決定できます)元の視野を比較的安価に再構築するために使用できます。

本質的に、私が必要とするのは、位置が「見える」かどうかを判断できる関数であり、この関数/視野の再構築は、視野の再構築が完了するともはや関連しないように計算的に要求する必要がありますアクションのゲーム。そのような方法を偶然知っている超賢い人はいますか?

編集 人々は「ビジョンフィールド」全体について混乱しているので、ここでより詳細な説明を行うことを目指します。ビジョンフィールドは一連の線のグループで構成されます。位置が線のどちら側にあるかを確認するだけで、位置がこれらのグループのいずれか内にあるかどうかを簡単に確認できます。それはそのグループ内にあり、したがって視野内にあります。

ただし、送信される情報はこの行ではなく、行と変換(2 x 2の特異な行列)の変換であり、受け取った変換を使用して最初に変換することにより、行のどちら側にあるかを確認できます。その値を変換された線と比較します。ここで重要なのは、変換が特異であるということです。つまり、元の行に戻る逆行列を見つけることは不可能です。しかし、線の原点を正確に特定するまで、変換された線のどちらの側に多くの点があるかをチェックするだけで、線の再構築を行う線の勾配を決定することができます線の勾配。

私が探しているのは、ポイントがエリア内にあるかどうかを判断するための方法です。エリアからメソッドを再構築することは不可能であるか(いつでもブルートフォースをかけることができるため、存在するのではないか)、または計算量が非常に多くなります。


1
私はこの正確な問題に集中して約11年を費やしました。リストした最初の4つのことは些細なことですが、あなたが尋ねたものはSEの答えには合いません。最終的にはホワイトペーパーを公開します。
MickLH

これは、他の問題に対するあなたのアプローチに非常に依存すると思うだろう
フェニックス

@MickLHこの問題を解決する最良の方法は何ですか?:)そして、変換された視覚/相互作用フィールドの使用についてどう思いますか?これはあなたが調べたものですか?
エロン

私は、変換されたフィールドを調査し、それがまったく安全でないことを示しました。どちらのプレイヤーも、どちらかが必要な情報をすべて取得し、その時点で他のプレイヤーの位置を学習し、他のプレイヤーに通知せずにプロトコルを終了できます。
MickLH

「最良の」方法については...私は上記で真剣でしたが、最も単純な方法でさえ、説明するためにホワイトペーパー全体を本当に必要とする複雑なトピックです。
MickLH

回答:


1

視野に不可逆的なアルゴリズムがあったとしても、近くにあるポイントがその場所と敵の視野が交差するかどうかを計算することで、人々はまだ利益を得ることができると思います。悪い場合(マップフィールドに十分な視野を持つ)、敵の正確なポイントを排除するプロセスで計算できます。

代わりに、接続しているすべてのピアがマップのどの部分にいるかをアナウンスして、お互いを見ることができるかどうかを判断する必要があると思います。3番目の次元が重要な場合は、まずマップを2x2または2x2x2に分割します。次に、全員が1,0 1,1 0,1または0,0にいるかどうかを互いに伝えます。同じ象限にいない場合、次のチェックまで会話は終了します。これにより、正確な位置が保護されます。それらが同じ象限に存在する場合、このスペースを4つの新しい象限に分割し、お互いに見えるほど近いと判断するまで続行します。

もちろん、象限の境界には問題がありますが、隣接する象限への追加クエリによって解決できるはずです。


-1

これを決定的な答えとして受け取らないでください。トピックは本当に広範です(誰かがあなたの質問の事実を報告しても驚かないでしょう)。

一部のプレーヤーをサーバーとして使用することで解決できますが、 そのサーバーを実際にプレイしているプレーヤーのゲームに参加できません

ゲームの要求が厳しくない場合は、同じプレイヤーマシンから複数のサーバーを実行することもできます(もちろん、NATの問題によりすべてのプレイヤーがサーバーとして実行できるわけではないため、IPv6のおかげです!!)。

ここでの主な問題は、ランダムなプレーヤーがサーバーとして使用されるため、「妥協した」プレーヤーになる可能性がわずかにあるか、「妥協した」プレーヤーにシミュレーションを渡し、機密情報が渡される可能性があることです(実際、その時点でサーバーは任意のデータを送信し、とにかく勝利を強制することができました)。

中央サーバーを使用して認証とログインを確認すると、ゲームをより適切に整理し、プレーヤーを簡単に禁止できます(ただし、純粋なP2Pネットワークではなくなります)。

また、世界をスライスに分割して可視スライスのハッシュを計算することもできますが、これは簡単にtrickされる可能性があり、最も一般的な可視スライスはハッシュのテーブルを非常に迅速に構築できます。

私にとって、あなたの質問は暗号化機能を検索しようとするようなものです。テストは迅速である必要がありますが、ブルートフォースは遅いはずです。

私の頭に浮かぶ最も簡単なことは(私の仕事にも関係しています)、いくつかのクイックビジョン認識アルゴリズム(拡張現実のような)を使用することです。

あなたがあなたの場所の簡単な「スナップショット」を作成することができれば(スライスに似ています)、目に見えるものの周りに置かれたときにのみ認識できます。特に、マップ内に迅速な認識パターンを生成できるタイミング要素がある場合。

ただし、そのようなアルゴリズムがモバイルでもかなり高速になっても、ファーストパーソンシューティングゲームとしては十分に高速になるとは思いません。

また、それらを速すぎると、偽陽性になってしまいます!とにかくプレイヤーは、ビジュアルの1つが機能検出アルゴリズムに一致するように、「共通のビジュアル」を試すゲームを作成できます。

あなたの問題に対する唯一の可能な解決策がクアンタムコンピューティングで可能になることは驚くことではなく、数年以内に誰かがP2Pネットワークの本質的な限界を証明する論文を発表します。


そうだね 4GBのデータがあっても、簡単に不正行為を行うのに十分なハッシュを保存できます。暗号化されたデータの変換に関する数値フィールドについて読んだ(実際の値を開示せずに値を暗号化された値に加算して増加させるなど)そのフィールド^^
GameDeveloper

「ビジョンフィールド」についてもっと明確にすべきだったかもしれません。それはたくさんの線で構成されているので、この線のどちら側がポイントであるかを計算できます。 「ビジョンフィールド」。変換は各線を点に変換し、その線の片側にあったすべての点がこの点の片側に変換されるため、線の元の側を計算できます。元の行。
エロン

「そして、プレイヤーがサーバーとして使用されている場合、実際にそのサーバーをプレイしているプレイヤーのゲームに参加することはできません。
ホバモック

-3

「相手から機密情報を隠す」と言うとき、パケットスニファを持つ人々がトラフィックを聞いてゲームに関する情報を取得するのを避けたいということですか?

もしそうなら、これに対する簡単な答えがあります。ほとんどのAAAゲーム(および確かにコンソールゲーム)は暗号化を使用します。実際、非常に一般的であるため、ゲームで使用されるネットワークミドルウェアの多くには、既にパケット暗号化が組み込まれています。

通常、次のように機能します。別のマシンへの接続を開くと、ソケットがアクティブになる前に、キー交換が行われます。XBoxでは、以前はDiffie-Hellman鍵交換であったことを知っています。彼らが今でもそれを使用しているかどうかはわかりません。その後、キーを取得すると、送信されるすべてのデータはキーを使用して暗号化され、受信時には暗号化されません。誰かがあなたのパケットを読むためにスニファーを使用する場合、それらはちらつきのように見え、キーを持っていないのでそれらを解読することはまずないでしょう。(高度なハッカーは、実行中のゲームのプロセスメモリにアクセスすることでそれらを取得できる可能性がありますが、それはまれであり、ありそうもないことです。)

暗号化ルールの唯一の例外はVoiceChatデータです。米国の法律では、CIAが必要に応じて聞くことができるように、ボイスチャットをクリアな状態で送信する必要があります。通常、コンソールは暗号化されないように音声データにタグを付ける方法を提供します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.