0

私が直面している問題は興味深いもので、セキュリティに関する知識は豊富ですが、理解は不十分です。つまり、私は理論を理解していますが、この特定の点に関してはほとんど実用化されていません。パスワードを保存し、ソルトを使用して送信し、ハッシュを検証しました。ここでの私のニーズは似ていますが、具体的です。

他の外部アプリケーションが ContentProvider URI を介して「フック」できるアプリケーションが 1 つあります。外部アプリケーションは誰でも開発できるため、私はそれらを制御できません。ただし、サブスクライバーへのアクセスを制限したいと考えています。これを容易にするために、各「サブスクライブ」アプリケーションには、そのパッケージ名に登録されたキーがあります。ContentProvider は、このキーが有効であることを確認する必要があります。

私の問題はこれです: URI を介して渡されるため、転送中にキーを簡単に傍受することができます。さらに、サブスクライバーは、安全なサーバーに接続せずに独自のキーを保存できる方法を必要としています。もちろん、キーをリテラルとしてアプリ内に保存することはできません。これにより脆弱性が生じやすくなります。これらの他のアプリケーションのセキュリティを「信頼」する必要なく、できるだけ多くのソリューションを提供しようとしています。

では、データベースと外部アプリケーションの両方にキーを保存し、特に検証されたクエリのためにキーを送信できるようにするにはどうすればよいでしょうか? これを行う方法を理解する上での問題は、永続ストレージの側面と、それがモデルに与える影響だと思います。つまり、パスワード モデルでは、パスワードは入力され、通常は保存されません。

ファジカルロジック

4

1 に答える 1

1

暗号化されたチャレンジ/レスポンスでキーを処理します。

クライアントは、アプリケーションごとに事前に決定された公開鍵で暗号化されたチャレンジ値を要求します。クライアントが、クライアント固有のサーバーの公開鍵を使用して暗号化された正しい値をサーバーに返す場合、ハンドシェイクは成功です。

アプリケーションごとの秘密鍵/公開鍵と、チャレンジ値の GUID のようなものを使用すると、複製するのが非常に困難になります。

また、アプリケーション開発者を最初に登録するときを除いて、キーの所有者が変わることはありません。

于 2011-10-20T20:21:13.027 に答える