繁体   English   中英

Windows 7等同于OS X系统钥匙串

[英]Windows 7 equivalent of the OS X System Keychain

我想在Windows上安全地存储一个共享密钥,但是使该密钥可由运行在可能不同用户帐户下的应用程序访问。 在OSX上,解决方案是使用适当的ACL将密钥放入系统密钥链中,以将对密钥的访问限制为仅需要使用密钥的各种应用程序。

在Windows上,安全存储( CryptProtectData()CryptUnprotectData() )允许我存储为特定用户加密的机密,但似乎不允许将对密钥的访问限制为特定进程。 此外,无法使用CryptProttectData保护数据以供不同用户访问。

看来,我唯一的选择是Windows服务,该服务(1)使用CryptProtectData()安全地存储密钥数据,并且(2)通过WCF端点公开密钥数据,以处理我的服务中的身份验证/授权。 这看起来很沉重(并且容易出错)。 这是我唯一的选择吗?

更好的选择是将其存储在文件中(可能以加密形式)并在文件上设置ACL。 问题是您无法基于每个应用程序(仅基于每个user_account)控制访问。 因此,如果您需要细粒度的控制,则需要实现一个Web服务,或者创建一个具有访问控制的虚拟文件系统,并通过该虚拟文件系统公开密钥(这也需要一个控制应用程序,就像该服务一样) )。

好吧...您可以配置CryptProtectData()进行加密,以便在加密时通过指定CRYPTPROTECT_LOCAL_MACHINE标志可以使不同的用户解密/访问数据; 这将允许同一计算机上的任何用户帐户使用CryptUnprotectData()解密数据。

对于特定应用程序与特定用户,Windows内没有直接的方法来执行此操作。 Windows的安全性模型基于使用用户帐户来控制对资源的访问,因此您完全不用管它了。

我不知道您拥有什么用例,但是您可以考虑使用一个通用用户帐户(使用运行方式功能)运行需要访问此数据的应用程序,然后将访问受保护的数据限制为该用户帐户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM