如何在 Windows 的应用程序基础上安全地存储客户端机密?

信息安全 视窗 oauth 贮存
2021-09-10 05:06:07

我想以一种只能从一个应用程序访问它们的方式存储有价值的客户端数据(例如密码、OAuth 令牌)(在应用程序基础上分离)。该机制必须对用户透明 - 额外的密码保护会很烦人。

有没有办法在 Windows 中实现这一点?

(在 Android 情况下,可以通过为每个应用程序分配唯一的用户 ID 并利用标准 *nix 机制来实现这种分离。)

我知道存在隔离存储(http://msdn.microsoft.com/en-us/library/3ak841sy.aspx),但文档明确指出不建议存储有价值的数据:

在以下情况下,您不应使用隔离存储:

  • 存储高价值机密,例如未加密的密钥或密码,因为隔离存储不受高度可信代码、非托管代码或计算机受信任用户的保护。
1个回答

在将数据存储到独立存储之前,您应该使用DPAPI对数据进行加密。虽然 DPAPI 主要针对每个用户而不是每个应用程序的安全性,但它确实为您的场景提供了一些规定:

使用登录密码的一个小缺点是,在同一用户下运行的所有应用程序都可以访问他们知道的任何受保护数据。当然,由于应用程序必须存储自己的受保护数据,因此其他应用程序访问数据可能有些困难,但肯定不是不可能的。为了解决这个问题,DPAPI 允许应用程序在保护数据时使用额外的机密。然后需要这个额外的秘密来解除对数据的保护。