有没有办法在Windows中安全地保存敏感数据,例如AES加密密钥?我想将数据仅用于我的程序。我知道DPAPI(CryptProtectData / CryptUnprotectData)可以保护我的数据免受来自其他用户进程的访问,但是一旦它被同一个用户运行,它就不会受到保护。
我希望有一些API可以自动使用调用过程映像文件的信息(例如图像文件的散列)来保护/取消保护数据,但我无法找到MSDN中的此类API。
答案 0 :(得分:3)
不,没有。数据属于用户,而非程序。
操作系统根据用户的请求限制特定程序的权限(程序只能使用用户的总能力的一部分),这对于操作系统有一定的意义,但它会破坏安全性一个程序,比运行它的用户拥有更多的权限。
通常,对于用户执行用户帐户不允许的操作,具有更高权限的某些服务需要根据用户的请求执行操作。例如,您可以使用此方法代表用户程序使用解密密钥,并且仅为该用户每天解密有限数量的数据。但是,只有当用户使用您祝福的程序时,才能向用户发放密钥 - 即使在服务/请求模型中,用户也可以使用他们选择的任何程序来发出请求。 / p>
服务本身无法隐藏来自足够特权的用户(计算机所有者)的数据。如果您需要,则需要将服务和机密数据保存在您控制的服务器上。