2

私のモバイル アプリは、サード パーティの API を使用して一部のリソースにアクセスします。公開鍵と秘密鍵があります。リクエストごとに、秘密鍵を使用して特定のデータでハッシュ計算を行い、結果をサーバーに送信します。サーバーは、リクエストが有効であることを確認するために、私の秘密鍵で結果を検証します。秘密鍵はネットワーク経由で送信されません。

ただし、秘密鍵はクライアントに保存する必要があります。リバースエンジニアリングで他の人が見つけるのは難しいことではないと思います。秘密鍵を使用するより安全な方法はありますか?

鍵が盗まれた場合、秘密鍵を変更できます。ただし、元のアプリは使用できなくなります。この問題を解決するためのより良い方法はありますか?

(この問題の一部を解決できる独自のプロキシサーバーをセットアップしました。より良い方法はありますか?)

4

2 に答える 2

5

サードパーティのAPIアクセスをあなたが制御するRESTサービスにオフロードすることをお勧めします。その時点から、提供されたプライベートAPIアクセスキーは、所有しているマシンに安全にロックダウンされ、侵害される可能性は低くなります。

次に、モバイルアプリを更新して、明確に定義されたポートとアドレスでサーバーに接続し(オプションで、トラフィックを処理する何らかの検証を実行します)、必要に応じてそのリクエストを転送します。これにより、エンドユーザーに公開するサードパーティAPIの特定の部分を非常に細かく制御することもできます。

悪意のあるクライアントがサービスをいじくり回すことによって多くの問題を引き起こす可能性があるため、サードパーティのAPIアクセスに使用される秘密鍵を配布することはおそらく非常に悪い考えです(そしておそらくあなたの利用規約に反します)。

于 2013-03-07T01:51:05.403 に答える
1

私はこのことにあまり詳しくありませんが、秘密鍵を使用する代わりに、公開鍵を使用してクライアント側でコンテンツをエンコードするべきではありませんか?

これが、公開鍵と秘密鍵の組み合わせを持つポイントです。公開鍵は、何かをエンコードするために誰でも自由に使用できますが、一度エンコードすると、秘密鍵を使用してのみメッセージをデコードできます。これは、十分に保護されたサーバーに安全に保管されます。

于 2013-03-07T03:35:21.140 に答える