Iva*_*kov 8 c# windows security rsa
我使用每用户Win32加密密钥容器(通过.Net RSACryptoServiceProvider类)来存储用于在密码管理器中解密存储密码的私钥.
这个私钥存储的安全性如何?显然,从同一个用户帐户运行的任何程序都可以访问它.但是密钥是否实际上是根据用户的密码加密的?
我可以假设只有用户登录后才能访问私钥吗?或者服务(或其他帐户)是否仍然可以提取密钥?计算机管理员可以不知道用户的密码提取它吗?可以通过使用管理帐户重置用户密码来提取密钥吗?如果计算机被盗并且攻击者可以访问硬盘(但不知道用户的密码),他可以提取私钥吗?如果用户已锁定会话,攻击者是否可以使用管理帐户/内核驱动程序从内存中提取密钥?
PS我知道'主密钥'模式,但在我的情况下这是不可接受的,所以我需要以最安全的方式存储密码.
用户的私钥只能在用户登录后才能访问,并且不能简单地通过重置用户密码然后使用重置密码登录来访问(事实上,在重置用户密码之前,会出现警告,表明用户将丢失访问加密数据等)请参阅:http ://support.microsoft.com/kb/290260
然而,一旦用户登录,同一台计算机上的其他用户进程就有可能具有足够的权限(通常仅授予管理/系统帐户)来访问存储的密钥,例如,通过将代码注入到用户进程中,将运行我是用户的上下文,因此能够执行用户可以使用密钥执行的任何操作(使用它来解密、签名或导出密钥等)。
启用强大的私钥保护可以通过要求用户在使用密钥时输入密钥密码来缓解其中一些问题。即使这样,恶意代码仍然有可能拦截密钥的密码。