c# - Windows 加密容器有多安全?

标签 c# windows security rsa

我正在使用每个用户的 Win32 加密 key 容器(通过 .Net RSACryptoServiceProvider 类)来存储用于解密密码管理器中存储的密码的私钥。

存储私钥的安全性如何?显然,从同一用户帐户运行的任何程序都可以访问它。但是 key 实际上是根据用户密码加密的吗?

我是否可以假设用户登录后可以访问私钥?或者服务(或另一个帐户)仍然可以提取 key 吗?不知道用户密码的计算机管理员可以提取它吗?是否可以通过使用管理帐户重置用户密码来提取 key ?如果计算机被盗,攻击者可以访问硬盘(但不知道用户密码),他能否提取私钥?如果用户锁定了 session ,攻击者是否可以使用管理帐户/内核驱动程序从内存中提取 key ?

附言我知道“主 key ”模式,但在我的情况下这是 Not Acceptable ,因此我需要尽可能以最安全的方式存储密码。

最佳答案

用户的私钥只能在该用户登录后才能访问,不能仅通过重置用户密码然后使用重置密码登录来访问(事实上,在重置用户密码之前,有警告说用户将无法访问加密数据等)参见:http://support.microsoft.com/kb/290260

但是,一旦用户登录,同一台机器上具有足够权限(通常只授予管理/系统帐户)的其他用户进程就有可能访问存储的 key ,例如通过将代码注入(inject)将运行的用户进程,我是用户的上下文,因此能够执行用户可以使用 key 执行的任何操作(使用它来解密、签名或导出 key 等)。

启用强大的私钥保护可以通过要求用户在使用 key 时输入密码来缓解其中的一些问题。即使这样,恶意代码仍有可能拦截 key 的密码。

关于c# - Windows 加密容器有多安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14220264/

相关文章:

windows - 按文件名前缀的顺序批量读取目录中的文件?

javascript - 这有多安全?

security - 在 SQL 2008 Server 中创建自定义 SQL Server 角色

security - 离开时如何强制锁定工作站?这很重要吗?

c# - 如何取消 Hook C# 中的事件处理程序

c# - WinForm 底部边距属性不执行任何操作

c# - 从 Azure Function 读取设置

c# - 在 Roslyn CP2 中包含 System.Linq 时出现 CompilationErrorException

c++ - c++中访问和修改线程数据问题

php - 如何检查 PHP 是否支持 multi_curl?