0

有没有办法在 Windows 中安全地保存敏感数据,例如 AES 加密密钥?我想让数据只对我的程序可用。我知道 DPAPI (CryptProtectData / CryptUnprotectData) 可以保护我的数据免受其他用户进程的访问,但是一旦由同一用户运行,它就不能防止不需要的程序。

我希望有一些 API 可以自动使用调用进程图像文件的信息(例如图像文件的哈希)来保护/取消保护数据,但我在 MSDN 中找不到这样的 API。

4

1 回答 1

3

不,没有。数据属于用户,而不是程序。

操作系统根据用户的请求限制特定程序的权限是有一定意义的(程序只能使用用户全部能力的一个子集),但是如果程序拥有更多的权限会破坏安全性运行它的用户。

一般情况下,用户若要进行用户帐号不允许的操作,则需要一些具有更大权限的服务根据用户的请求来执行该操作。例如,您可以使用这种方法来代表用户的程序使用解密密钥,并且每天仅为该用户解密有限数量的数据。但是,只有当用户使用您所祝福的程序时,您才能将密钥发布给用户——即使在服务/请求模型中,用户也可以使用他们选择的任何程序来发出请求。

并且服务本身无法隐藏足够特权用户(计算机所有者)的数据。如果您需要,则需要将服务和机密数据保存在您控制的服务器上。

于 2015-05-22T22:27:03.020 回答