关于安全性:Windows相当于OS X Keychain?

Windows equivalent of OS X Keychain?

在Windows中是否存在用于存储用户密码的OS X密钥链的等效项?我将使用它来保存我的(桌面)软件使用的Web服务的用户密码。

从这个相关问题的答案(保护桌面应用程序中的用户密码(Rev 2))和大量可用的第三方密码存储工具来看,我假设这样的事情不存在——我是一直在问每次访问Web服务时的密码,还是只是将其存储模糊?


"传统"的Windows等价物是受保护的存储子系统,由IE(IE7之前版本)、Outlook Express和其他一些程序使用。我相信它是用你的登录密码加密的,这可以防止一些离线攻击,但是一旦你登录了,任何想读取它的程序都可以读取。(例如,请参见Nirsoft的受保护存储Passview。)

Windows还提供可能有帮助的CryptoAPI和数据保护API。不过,我还是认为Windows不会做任何事情来阻止在同一帐户下运行的进程看到彼此的密码。

看起来,用户识别和认证的书籍机制提供了所有这些方面的更多细节。

Eclipse(通过它的安全存储特性)实现了类似的功能,如果您有兴趣了解其他软件是如何做到的。


Windows8有一个称为密码保险库的钥匙链的概念。Windows运行时应用程序(Modern/Metro)以及托管桌面应用程序可以利用它。根据文件:

Apps and services don't have access to credentials associated with other apps or services.

请参阅如何在msdn上存储用户凭据。

在Windows8之前,数据保护API(DPAPI)最接近于一个键链。可以使用此API加密任意数据,尽管存储加密数据由开发人员决定。数据最终是使用当前用户的密码加密的,但是用户或开发人员提供的"可选熵"可以包括在内,以进一步保护数据免受其他软件或用户的攻击。数据也可以在域中的不同计算机上解密。

DPAPI可以通过对crypt32.dll的cryptProtectData和cryptUnprotectData函数的本机调用或通过.NET框架的ProtectedData类访问,后者是前一个函数的有限功能包装器。

在Passcape的文章DPAPI Secrets中提供了比您了解DPAPI所需的更多信息。DPAPI中的安全分析和数据恢复。


实际上,通过查看msdn,他们建议使用的功能(而不是受保护的存储)是:

  • CryptProtectData
  • 江户十一〔一〕号

CryptProtectData的链接位于cryptProtectData功能。


现在是2018年,Windows 10有一个"凭证管理器",可以在"控制面板"中找到。