8

ユーザーごとの Win32 暗号化キー コンテナーを (.NetRSACryptoServiceProviderクラス経由で) 使用して、パスワード マネージャーに保存されているパスワードを復号化するために使用される秘密キーを保存しています。

その秘密鍵はどの程度安全に保管されますか? 明らかに、同じユーザー アカウントから実行されているすべてのプログラムがアクセスできます。しかし、鍵は実際にユーザーのパスワードに基づいて暗号化されているのでしょうか?

ユーザーがログオンした場合にのみ、秘密鍵にアクセスできると想定できますか? または、サービス (ま​​たは別のアカウント) が引き続きキーを抽出できますか? ユーザーのパスワードを知らないコンピュータ管理者はパスワードを抽出できますか? 管理者アカウントを使用してユーザーのパスワードをリセットすることにより、キーを抽出できますか? コンピュータが盗まれ、攻撃者がハードディスクにアクセスできた場合 (ただし、ユーザーのパスワードがわからない場合)、秘密鍵を抽出できますか? ユーザーがセッションをロックした場合、攻撃者は管理者アカウント/カーネル ドライバーを使用してメモリからキーを抽出できますか?

PS「マスターキー」パターンについては知っていますが、私の場合は受け入れられないため、パスワードをできるだけ安全な方法で保存する必要があります。

4

1 に答える 1

2

ユーザーの秘密鍵は、そのユーザーがログオンしたときにのみアクセスできるようにする必要があり、ユーザーのパスワードをリセットしてからリセットしたパスワードを使用してログインするだけではアクセスできません (実際、ユーザーのパスワードをリセットする前に、ユーザーが失われるという警告があります)。暗号化されたデータへのアクセスなど) http://support.microsoft.com/kb/290260を参照してください。

ただし、ユーザーがログインすると、十分な権限 (通常は管理者/システム アカウントにのみ付与される) を持つ同じマシン上の他のユーザーのプロセスが、格納されたキーにアクセスする可能性があります。たとえば、ユーザー プロセスにコードを挿入することによって、 I'm the context of the user が実行されるため、ユーザーがキーを使用して実行できることはすべて実行できます (キーの復号化、署名、またはエクスポートなどに使用します)。

強力な秘密キー保護を有効にすると、キーを使用するたびにユーザーがキーのパスワードを入力する必要があるため、これらの問題の一部が軽減される場合があります。それでも、悪意のあるコードがキーのパスワードを傍受する可能性は依然としてあります。

于 2013-01-08T19:07:35.240 に答える