貴重なクライアントデータ(パスワード、OAuthトークンなど)を1つのアプリケーションからのみアクセスできるように保存したい(アプリケーションベースでの分離)。メカニズムは透過的でなければならないユーザー-追加のパスワード保護は苛立たしくなります。
Windowsでそれを達成する方法はありますか?
(Androidの場合、このような分離は、各アプリケーションに一意のユーザーIDを割り当て、標準の* nixメカニズムを利用することで可能になります。)
分離ストレージ( http://msdn.Microsoft.com/en-us/library/3ak841sy.aspx )の存在を認識していますが、ドキュメントには、貴重なデータを保存することは推奨されていないことが明記されています:
次の状況では、分離ストレージを使用しないでください。
- 分離されたストレージは、信頼性の高いコード、管理されていないコード、またはコンピューターの信頼されたユーザーから保護されていないため、暗号化されていないキーやパスワードなどの価値の高いシークレットを保存します。
[〜#〜] dpapi [〜#〜] を使用して、データを分離ストレージに保存する前に暗号化する必要があります。 DPAPIは主にアプリごとではなくユーザーごとのセキュリティを対象としていますが、シナリオにはいくつかの規定があります。
ログオンパスワードを使用することの小さな欠点は、同じユーザーで実行されているすべてのアプリケーションが、知っている保護されたデータにアクセスできることです。もちろん、アプリケーションは独自の保護されたデータを格納する必要があるため、データへのアクセスを取得することは、他のアプリケーションにとって多少難しいかもしれませんが、不可能ではありません。これに対処するために、DPAPIでは、アプリケーションがデータを保護するときに追加のシークレットを使用できます。この追加のシークレットは、データの保護を解除するために必要です。