2012-01-20 20 views
1

共有秘密キーをWindowsに安全に保存したいが、このキーに潜在的に異なるユーザーアカウントで実行されているアプリケーションからアクセスできるようにする。 OSXでは、適切なACLを使用してキーをシステムキーチェーンに配置して、キーへのアクセスをキーの使用を必要とするさまざまなアプリケーションだけに制限します。Windows 7相当のOS Xシステムキーチェーン

セキュリティ保護されたストレージ(CryptProtectData()CryptUnprotectData())を使用すると、特定のユーザー用に暗号化された秘密を保存できますが、特定のプロセスのキーへのアクセスを制限することはできません。さらに、CryptProttectDataを使用して、異なるユーザーによるアクセスのためにデータを保護する方法はありません。

私の唯一の選択肢は、(1)鍵データを安全にCryptProtectData()で保存し、(2)WCFエンドポイント経由で鍵データを公開し、私のサービスで認証/承認を処理するWindowsサービスです。これは非常に重い(エラーが発生しやすくなります)。これは私の唯一の選択肢ですか?

答えて

2

まあ... CryptProtectData()を暗号化するように設定すると、暗号化を行うときにCRYPTPROTECT_LOCAL_MACHINEフラグを指定することで、さまざまなユーザーがデータを暗号化/アクセスできるようにすることができます。これにより、同じコンピュータ上のすべてのユーザーアカウントがCryptUnprotectData()を使用してデータを復号化できます。

特定のアプリケーションと特定のユーザーとでは、これを行うためのWindowsでは簡単な方法はありません。 Windowsのセキュリティモデルは、ユーザーアカウントを使用してリソースへのアクセスを制御することに基づいているため、これで本当に残っています。

あなたはどのような用途に使用しているのかわかりませんが、このデータにアクセスする必要のあるアプリケーションを1つの共通のユーザーアカウント(run-as機能を使用)で実行し、 1つのユーザーアカウント。

2

ファイルに暗号化された形式で格納し、ファイルにACLを設定することをお勧めします。問題は、アプリケーションごとにアクセスを制御できないことです(user-account単位でのみ)。細粒度の制御が必要な場合は、Webサービスを実装するか、またはアクセス制御機能を持つ仮想ファイルシステムを作成し、その仮想ファイルシステムを介してキーを公開する必要があります(これには、 )。

関連する問題