相当于Windows7的OSX系统钥匙链
我希望在Windows上安全地存储共享密钥,但使在可能不同的用户帐户下运行的应用程序可以访问此密钥。在OSX上,解决方案是将密钥放入具有适当ACL的系统密钥链中,以将对密钥的访问限制为只允许需要使用密钥的各种应用程序 在Windows上,安全存储CryptProtectData和CryptUnprotectData允许我存储为特定用户加密的机密,但似乎不允许将对密钥的访问限制到特定进程。此外,无法使用CryptProtectData保护不同用户访问的数据相当于Windows7的OSX系统钥匙链,windows,wcf,security,Windows,Wcf,Security,我希望在Windows上安全地存储共享密钥,但使在可能不同的用户帐户下运行的应用程序可以访问此密钥。在OSX上,解决方案是将密钥放入具有适当ACL的系统密钥链中,以将对密钥的访问限制为只允许需要使用密钥的各种应用程序 在Windows上,安全存储CryptProtectData和CryptUnprotectData允许我存储为特定用户加密的机密,但似乎不允许将对密钥的访问限制到特定进程。此外,无法使用CryptProtectData保护不同用户访问的数据 似乎我唯一的选择是Windows服务,1
似乎我唯一的选择是Windows服务,1使用CryptProtectData安全地存储密钥数据,2通过WCF端点公开密钥数据,在我的服务中处理身份验证/授权。这似乎相当沉重,而且容易出错。这是我唯一的选择吗?更好的选择是将其以加密形式存储在文件中,并在文件上设置ACL。问题是,您无法仅基于每个用户的帐户控制每个应用程序的访问。因此,如果您需要细粒度控制,那么您需要实现一个web服务,或者创建一个具有访问控制的虚拟文件系统,并通过该虚拟文件系统公开密钥。这也需要一个控制应用程序,非常类似于服务 更好的选择是将其以加密形式存储在文件中,并在文件上设置ACL。问题是,您无法仅基于每个用户的帐户控制每个应用程序的访问。因此,如果您需要细粒度控制,那么您需要实现一个web服务,或者创建一个具有访问控制的虚拟文件系统,并通过该虚拟文件系统公开密钥。这也需要一个控制应用程序,非常类似于服务 嗯……您可以将CryptProtectData配置为加密,以便在加密时指定CRYPTPROTECT_LOCAL_MACHINE标志,不同的用户可以解密/访问数据;这将允许同一台计算机上的任何用户帐户使用CryptUnprotectData对数据进行解密 对于特定的应用程序和特定的用户,在Windows中没有一种简单的方法可以做到这一点。Windows的安全模型是基于使用用户帐户来控制对资源的访问,所以你真的只剩下这个了
我不知道你使用的是什么,但是你可以考虑在一个公共用户帐户下运行需要访问该数据的应用程序,使用Run-As能力,然后限制对受保护数据的访问到一个用户帐户。p> 嗯……您可以将CryptProtectData配置为加密,以便在加密时指定CRYPTPROTECT_LOCAL_MACHINE标志,不同的用户可以解密/访问数据;这将允许同一台计算机上的任何用户帐户使用CryptUnprotectData对数据进行解密
对于特定的应用程序和特定的用户,在Windows中没有一种简单的方法可以做到这一点。Windows的安全模型是基于使用用户帐户来控制对资源的访问,所以你真的只剩下这个了我不知道你使用的是什么,但是你可以考虑在一个公共用户帐户下运行需要访问该数据的应用程序,使用Run-As能力,然后限制对受保护数据的访问到一个用户帐户。p>