2013-01-08 9 views
8

私は、パスワードマネージャーに保存されたパスワードを解読するために使用される秘密鍵を格納するために、ユーザーごとのWin32暗号化キーコンテナ(.Net RSACryptoServiceProvider経由)を使用しています。Windowsの暗号化コンテナはどのくらい安全ですか?

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

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

P.S.私は「マスターキー」のパターンについて知っていますが、私の場合は受け入れられませんので、できる限り安全な方法でパスワードを保管する必要があります。

+0

パスワードを暗号化したいと思われるときに、どのように鍵を暗号化しているのか分かりにくいです。パスワードを解読する場所でRSA.ExportParameters(true)を呼び出すと、秘密鍵を保護するために物理的なセキュリティが必要になります。代わりにパスワードのハッシュを保存して比較することでログオンを実装するだけです。 –

答えて

2

ユーザーの秘密鍵は、そのユーザーがログオンした後にのみアクセスでき、ユーザーのパスワードをリセットしてからリセットすることでアクセスすることはできません(実際には、ユーザーパスワードをリセットする前に、 http://support.microsoft.com/kb/290260

ただし、一度ユーザーがログインすると、十分な特権を持つ同じマシン上で他のユーザーのプロセスが実行される可能性があります(通常、管理者/ユーザーには許可されます)システムアカウント)を使用して、格納されたキーにアクセスします。実行するユーザープロセスにコードを注入することによって、私はユーザーのコンテキストであり、ユーザーがキーを使って行うことができるすべてのことを行うことができます(キーの復号化、署名、またはエクスポートなど)。

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

関連する問題