それが唯一の既知のクライアントからのWebサービス呼び出しを強制することは可能ですか?
-
19-09-2019 - |
質問
シナリオます:
私は完全な制御を超える持って一般に公開Webサービス。 しかし、私は唯一のWebサービスへのアクセス権を持っているために、この特定のデスクトップアプリケーション(私の公開アプリケーションを)したいです。 私はデスクトップクライアントで秘密のパスワードを保存することができ、それはクラックするのは簡単だろう。
これを強制する任意の既知の実装はありますか? PKI、非対称的キー?
解決
、何か良いリバーは、それを解読することができますし、サーバーとの取引を「模倣します」。それは問題であなたの暗号がどのように安全な、アプリデータを暗号化/復号化するために必要なすべてのバイナリに含まれているdoens'tので、クラッカーはそれからそれを掘るする必要があります。
暗号化の目的は、それが「中の人」のハッカーから、転送されている間にデータを保護することですが、あなたは仲間の誰へのアクセス権を持っている場合、あなたは簡単にそれをクラックすることができます。
あなたのサーバーは、クライアント側から何が来るのか信用してはいけません。
[編集再開]
あなたは100%がサーバーになってクライアントを保証できないにもかかわらずがあるか、お使いのアプリケーションやthirdiesによって行われたいくつかの「エミュレータ」ではありません、あなたは彼らに物事を複雑にすることができます。時々、ゲーム抗詐欺での一般的な方法で、ランダムに、クライアントアプリケーションのようなトリック質問作る「からごMAIN.EXEのハッシュは、Bを相殺するオフセットいただきましたが?」または「パケットタイプパケットタイプ0x5fと0x07のスワップになりましたから」。偽物が検出されると、サーバは、「愚かなモード」に入るmalfunctional行動する、と彼らは彼らのプログラムが間違って何をしているかの確認はできませんので、数時間のために、このモードに自分のIP /アカウントをブラックリストます。
あなたは、誰かがエミュレータを構築して検出し、それらを最初からやり直す作る場合:パケットタイプテーブル、暗号化テーブルをまぜこぜ、いくつかのパケットフォーマットを変更して更新するようにクライアントを強制します。あなたはクラッカーはしばらくの間、あなたを悩ませて表示されません... LOL
他のヒント
WS-Securityのには、X509の暗号化のために提供しています。
その実装の一部は、特定のクライアントだけに生成した公開鍵を与える可能性を含みます。そうすれば、あなただけ選択したクライアントは、サービスに接続することができます。
最も簡単な方法は、クライアントとサーバ証明書を使用して、メッセージのセキュリティです。最良の方法は、サーバー・マシンとハードコードapp.configファイルでクライアント証明書の拇印にクライアント本命をインポートすることです。他の方法は、私が前に試していない本命の交渉です。
SSLを使用してあなたがサービスをホストするIISを使用している場合は、クライアント証明書の別のオプションです。
WCFセキュリティの上のMSDNのリンクます。