web-dev-qa-db-ja.com

HTTPS経由で認証してから平文にドロップした後のクライアント/サーバーの信頼?

免責事項

この質問がばかげているのは、安全な公開鍵の交換があなたがそれを学ぶ前に不可能に聞こえるためです。だから私は不可能かもしれないことについて尋ねています。

質問

信頼できる接続を維持しながら、プレーンテキストの安全な接続をドロップすることは可能ですか?つまり、サーバーは、プレーヤーのリクエストがまだプレーヤーであることを認識しており、プレーヤーはゲーム情報がプレーヤーであることを認識しています。

バックグラウンド

認証されたユーザー(ゲーム全体での永続的なユーザーアカウント)を持つ小さなJavaScriptマルチプレイヤーゲームをいくつか書いています。サーバーはコンピューティング側でリソースが限られているため、ゲームデータの暗号化されていない接続にドロップしたいと思います。非常に簡単なクライアントまたはサーバーのなりすまし攻撃(JavaScriptクライアント)に自分を開かずにそれが可能かどうか疑問に思っています。

主な懸念事項

ゲームでのユーザートレーディングは特にリスクが高いようですが、開発中です。特に将来の取引に関連するゲームを収益化する場合はなおさらです。正当であるが自己に損害を与える取引を送信したり、ゲーム情報を偽装したりして、誤った情報の詐欺を可能にするクライアントを偽るのに十分なインセンティブがあるかもしれません。

追加情報

(JavaScriptで記述されているように)私はすでにクライアントを信頼できませんので、ゲームの状態は常にサーバー側であり、クライアントは有効性が評価されたリクエストのみを送信できます。

一部の小さなゲームはすでに作成されており、認証は現在、httpsで実行され、ゲームサーバーから完全に分離されたサイトで処理されます。私はそうではありませんが、それらを一緒にする過程にいます。

楽しい分散ソリューション?

それを実装するためのリソース、時間、または前提条件の知識はありませんが、取引が一連のDAPPS(エーテルブロックチェーン上)を介して実行された場合、私の理解するすべての懸念は、費やすことを犠牲にして修正されますトランザクションのリアルマネー。

4
Sarzorus

信頼できる接続を維持しながら、プレーンテキストの安全な接続をドロップすることは可能ですか?.

番号。

サーバーはコンピューティング側でリソースが限られているため、ゲームデータの暗号化されていない接続にドロップしたいと思います。

プロファイリングと最適化を行う必要があるようですが、TLSがボトルネックにならないことはほぼ保証できます。

非常に簡単なクライアントまたはサーバーのなりすまし攻撃(JavaScriptクライアント)に自分を開かずにそれが可能かどうか疑問に思っています。

いいえ(技術的には可能かもしれませんが、それだけの価値はありません。とにかく間違ってしまう可能性は十分あります)。

(JavaScriptで記述されているように)私はすでにクライアントを信頼できませんので、ゲームの状態は常にサーバー側であり、クライアントは有効性が評価されたリクエストのみを送信できます。

クライアントを信頼することはできませんが、それがJavaScriptであるためではありません。リバースエンジニアリングをより困難にしようとしても、不可能にすることはできません。

それを実装するためのリソース、時間、または前提条件の知識はありませんが、取引が一連のDAPPS(エーテルブロックチェーン上)を介して実行された場合、私の理解するすべての懸念は、費やすことを犠牲にして修正されますトランザクションのリアルマネー。

ブロックチェーンにはいくつかの便利な特性がありますが、かなりの量の誇大宣伝もあります。ブロックチェーンはすべての問題を魔法のように解決するわけではありません。

5
AndrolGenhald

信頼できる接続を維持しながらプレーンテキストの安全な接続をドロップすることは可能ですか?

これは可能です。 TLS接続中にユーザーに暗号化キーを提供し、それを使用して(対称)暗号化および/または認証(MAC)を実行できます。ただし、これには独自の暗号を構築する必要があります。そして、暗号101で最初に学ぶことは、自分の暗号を決してロールしないことです。さらに、とにかくこの追加のレイヤーを追加する場合は、TLSを使用することもできます。これは、確率が低く、厳密な暗号を作成し、広く使用されている暗号ライブラリよりも高速であるためです。

実際、TLSが使用しているのと同じ手法を使用します。最初の公開/秘密鍵交換後、TLSプロトコルは対称暗号化用の鍵を生成して通信を高速化します。

ユーザーは常に自分のトラフィックを偽装できるため、TLSを使用しているかどうかに関係なく、すべてのユーザー入力を検証する必要があることに注意してください。他人の平文トラフィックを偽装するには、攻撃者は中間者攻撃を実行する必要があります。

2
Graa

信頼できる接続を維持しながら、プレーンテキストの安全な接続をドロップすることは可能ですか?.

いいえ、それは不可能です。平文では、それはサーバーがデータをあらゆる方向に変更することを防ぐ方法ではありません。

サーバーはコンピューティング側でリソースが限られているため、ゲームデータの暗号化されていない接続にドロップしたいと思います。

TLSはもはやリソースを大量に消費しません。それが本当に問題である場合は、TLS暗号化をCloudflareなどの別のサーバーまたはサービスにオフロードできます。ただし、どのVPSまたは仮想マシンでもTLSを簡単に処理できます。サーバーがTLSを処理できない場合は、ゲームロジックのごく一部でも確実に処理できません。

私はすでにクライアントを信頼することができないので(JavaScriptで記述されているため)

使用する言語、テクノロジー、フレームワークに関係なく、クライアントを信頼することはできません。クライアントが [〜#〜] asic [〜#〜] 内で実行されている場合でも、クライアントからのデータを信頼するべきではありません。

一連のDAPPSを介して取引が実行された場合

しないでください。 DAPPSは開発が難しく、維持が非常に難しく、問題を解決することはできません。プレーヤーのお金を失いたくない場合を除いて、この機能を開発するための経験と資格を持つ人にお金を払ってください。一人ですべてをやろうとしないでください。そうしないと、時間、お金、評判が失われます。誰かに代金を支払ってもらうか、実際のお金を使ってはいけません。

Ethereumネットワークは現在、1秒あたり50トランザクションさえ処理できないため、Dappはスケーラブルではありません。 dappをデプロイした後、コードを変更することを考えて特別に作成しない限り、バグを修正することは不可能です。プロキシ契約のようないくつかの手法がありますが、それらは複雑さとコスト(開発および処理コスト)を大幅に増加させます。また、dappは非常に特殊な種類のメカニズムであり、他のテクノロジーで問題を解決できない場合にのみ使用する必要があります。

1
ThoriumBR