2016-02-26 35 views
-1

如何在 数据保护API范围中同时使用LocalMachine和CurrentUser?我想提高安全性。我可以同时使用LocalMachine和CurrentUser吗?

+0

如何同时使用“增强”安全性?根据您的用例选择一个,并相信它是安全的。 API非常简单的原因之一是使其易于使用并且很难搞砸。 –

回答

-1

你不行。他们有不同的目的。通过LocalMachine保护,所有机密都受到(最终)20字节LSA秘密DPAPI_SYSTEM的保护,这对于给定机器上的所有用户都是相同的。因此,任何一台机器都可以在登录时解密数据块。

使用CurrentUser时,只有当前用户(或者计算机所属的Windows域中的管理员)在登录时才能解密数据,因为秘密受其登录密码的哈希值保护。

因此,添加LocalMachine只会降低安全性,因为更多人(可能)有权访问它。目前系统中的加密设置(对程序员来说是隐藏的)完全不允许。

我可以同时使用这两种方法的唯一方法是使用DPAPI两次:使用LocalMachine保护秘密,保护某个Blob B,然后使用CurrentUser标志将新的Blob保护到新的最终blob。 (另一种顺序也是可能的。)但它没有增强:同一个用户仍然可以访问它,现在只需要两倍的时间。

相关问题