我可以同时使用LocalMachine和CurrentUser吗?

时间:2016-02-26 02:56:12

标签: c# encryption dpapi

如何在同一时间同时使用LocalMachine和CurrentUser Data Protection API范围?我想加强安全性。

1 个答案:

答案 0 :(得分:-1)

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

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

因此,添加LocalMachine只会降低安全性,因为更多人(可能)可以访问它。系统中加密的当前设置(对程序员隐藏)根本不允许这样做。

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