3

現在、WebアプリにデータをアップロードするネイティブWindowsアプリ(MFC)を作成中です。Windowsアプリでは、ユーザーがログインできるようになり、その後、定期的にWebアプリにデータがアップロードされます。アップロードは、単純なHTTPPOSTを介してWebアプリに実行されます。私が懸念しているのは、アップロードが実際にアプリからのものであり、curlなどからのものではないことをどのように確認できるかということです。ここでは、ある種の公開鍵/秘密鍵の暗号化を検討していると思います。しかし、どういうわけか、winアプリの実行可能ファイルに公開鍵を埋め込んでそれで済ますことができるかどうかはわかりません。それとも、その公開鍵をアプリの外部で抽出して使用するのは簡単すぎるでしょうか?

とにかく、私たちは両方の側(クライアントとサーバー)を構築しているので、ほとんど何でもオプションですが、HTTP(S)を介して機能する必要があります。ただし、win(クライアント)アプリの実行環境は管理していません。また、システムをゲーム化することで何かを得るために立っているのは、自分のシステムでアプリを実行しているユーザーだけです。

4

4 に答える 4

9

最終的に、所有していないマシンで実行されている場合、この方法でアプリケーションのIDを証明することはできません。キーを埋め込んだり、ハッシュやチェックサムで遊んだりすることもできますが、結局のところ、他の誰かのマシンで実行されているコードに依存するものはすべて偽造される可能性があります。キーを抽出したり、コードをリバースエンジニアリングしたりできます。これは、隠すことによるすべてのセキュリティです。

検証とデータのクリーンアップに時間を費やしてください。本当に何かを保護したい場合は、クライアント証明書を使用してエンドユーザーを保護してください。それ以外のものは、時間の無駄であり、誤った安心感です。

于 2009-12-26T21:51:48.720 に答える
2

あなたができる最善のことは、クライアント証明書で HTTPS を使用することです。おそらくWinHTTPのインターフェースを使用します。

しかし、どうにかして勝利アプリの実行可能ファイルに公開鍵を埋め込んで完了できるかどうかはわかりません。

クライアントがサーバーに対して自分自身を識別している場合は、秘密鍵が埋め込まれている必要があります。

それとも、アプリの外で抽出して使用するのは簡単すぎるでしょうか?

クライアント アプリの実行環境を制御しないと、その環境を制御している攻撃者によって、アプリで実行できることはすべて分析、自動化、および再現される可能性があります。

必要に応じて、通信手順の周りに難読化レイヤーを配置できますが、問題を解決することはできません。マルチプレイヤー ゲームは何年もの間、不正行為と戦うためにこれを試みてきましたが、最終的には、決して勝つことのできない難読化の軍拡競争に過ぎません。ブリザードはあなたよりもはるかに多くのリソースを持っており、それを管理することもできません.

于 2009-12-26T21:58:49.877 に答える
2

アプリが配布されると、バイナリを制御できなくなります。すべての署名および暗号化ロジックが実行可能ファイルにある場合は、それを抽出できます。賢いコーダーは、十分な動機があれば、コードを理解し、相互運用可能なシステムを構築します。それがDRMが機能しない理由です。

たとえば、キーを PC の MAC アドレスに関連付ける複雑なシステムは、確実に失敗します。

特定の実行可能ファイルやシステムを信頼するのではなく、ユーザーを信頼してください。パスフレーズで保護された秘密鍵ファイルをそれぞれに委ね、その鍵によってサービスのコンテンツの送信者がどのように識別されるかを説明します。

于 2009-12-26T23:05:03.133 に答える
0

クライアントを制御しているので、アプリケーションにキーを埋め込んで、ユーザーがアプリケーションイメージへの読み取りアクセス権を持たないようにすることもできます。ロジックを2つの層に分離する必要があります。ユーザーが実行し、もう一方はHTTP(S)を介してサービスに接続します。これは、ユーザーが実行しているアプリケーションへの読み取りアクセス権を常に持っているためです。

私が正しく理解していれば、ユーザーがログオンした後にデータが自動的に送信されます。これは、サービス部分のみが必要なようです。

于 2009-12-26T21:47:24.293 に答える