改ざんされていないデータを Flash アプリからサーバーに渡しますか?

StackOverflow https://stackoverflow.com/questions/46415

  •  09-06-2019
  •  | 
  •  

質問

Flash を実行しているクライアントとサーバーの間でデータを安全に受け渡す方法を探しています。問題のデータは Flash アプリによって生成されます。この場合、それはゲーム終了後のスコアです。サーバー上のデータが改ざんされていないことを確認したいと考えています。これを実現するための良い方法は何ですか?

簡単な方法の 1 つは、データに対してハッシュなどの操作を実行し、そのハッシュをデータとともにサーバーに返すことです。ただし、これはクライアントのソース コードにアクセスできる誰かによって簡単に破られます。

編集:ハッキングできないものは何もないことはわかっていますが、できるだけ難しくしたいと考えています。公開キーを使用してデータを暗号化し、必要に応じてゲーム ログを使用してサニティ チェックや再計算を行う @jcnnghm のソリューションが最良の選択肢だと思います。SSL 暗号化を使用すると、実際にサーバーに送信される内容を解読することがより困難になるため、SSL 暗号化も推奨されます。

役に立ちましたか?

解決

バイナリに保存されている公開キーを使用してデータを暗号化します。これにより、攻撃の侵入障壁が高くなります。それに加えて、データがサーバーに到着したときにその健全性をチェックします。これは、プレー時間単位ごとに現実的に獲得できる最大ポイント数を計算したり、スコアが正しいことを確認するためにゲーム ログをサーバーに送信したりするのと同じくらい簡単です。

何をしても完全にハッキングを防ぐことはできませんが、これにより、最も決意のある人以外は阻止されます。

アップデート: @マーク:Flash は SSL をネイティブでサポートします。

他のヒント

信頼できないプラットフォーム上で実行されるコードは、その整合性を維持できるでしょうか?いいえ、何十年にもわたって壊れたコピー防止スキームを考えると、これは不可能であると私は推測しています。逆に、信頼できるサンドボックスで悪意のあるコードを実行することは可能ですが、問題に対してできる最善のことは、人々が不正行為をするのを不便にすることです。

AS3Crypto パッケージを次の URL で確認してください。 http://code.google.com/p/as3crypto/. 。私は試していませんが、このパッケージは TLS 1.0 プロトコルを (部分的に) サポートすると主張しています。

TLS は、Flash アプリケーションとサーバーの間に安全なトンネルを提供します。http://en.wikipedia.org/wiki/Secure_Sockets_Layer

@jcnnghm通常、大規模な計算時間のために、バルクデータ暗号化に公開キー暗号化(RSA、DSA)を使用したくありません。公開キー暗号化は、セキュリティ プロトコルのハンドシェイクおよびキー合意フェーズで使用する必要がありますが、バルク データの暗号化は AES や TDES などの対称暗号によって処理する必要があります。TLS および SSL プロトコルはこのように機能します。

人々が実行可能ファイルにアクセスできる限り (ロックされたキオスクでゲームを実行したい場合を除き、常にそうなります) これを行う完全に安全な方法はありません。

音楽業界と映画業界は DRM に数千万ドルを費やしましたが、家庭の愛好家によって数日から数週間で解読されてしまいました。彼らが守れないなら 彼らの もの...

ハッカーの証拠となるものは何もないという回答については同意します。一度読み取ることができれば、操作/コピーして逆コンパイルできるからです。

私が計画しているもう 1 つのアプローチは、一意のキーを生成することです。プレーヤー セッション (ソルト値として何らかの時刻/日付を含む)。

その後、アプリケーション全体を通じて、おそらく定期的にステータス スコアを送信/送信し、新しい有効なキーを取得します。この同期が失敗した場合は、セッション全体が中断されます。

これのマイナス面は、同時プレイヤーが多すぎるとサーバーの応答速度が低下し、その結果「偽のタイムアウト」が発生し、ゲームサーバーが DoS 攻撃に対して無防備なままになる可能性があります。

ただし、ユーザーがセッションを持っている間に「セッションキー」を更新する場合は、追加のセッション管理が少し必要になりますが、チーターの作業がもう少し難しくなる場合は、必ず試してみます:o)

一方で、ハッカーの証拠となるものは何もないので、どんなに賢い解決策を考えたとしても、それを 100% 信頼してはいけません。

最後の注意点は、アプリケーションをモジュール/レベルなどに分割することです。そのため、コードを開始するだけでコードのすべての部分にアクセスできるわけではありません。

現在の私の計画は、大規模なマルチレベルの世界を構築し、クライアント/プレーヤーはプレーヤーが存在する部分に添付されたファイルのみを取得することです。

これがあなたの考えに少しでも役立つことを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top