问题标签 [dpapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
56198 浏览

security - 如何从 Windows Vault 凭据管理器存储和检索凭据?

我想在 Windows PC 上安全地存储明文密码。我目前正在使用 DPAPICryptProtectData对其进行加密,然后将加密的 blob 存储在用户本地 AppData 中的文件中。

在 Windows 7 中,有 Windows Vault,这是一个凭据管理器(控制面板\用户帐户和家庭安全\凭据管理器),用于存储各种登录类型的登录数据,包括“通用凭据”。从表面上看,这看起来像是程序存储凭据的正确位置。但是,我找不到任何 API。我在 MSDN 中阅读了Authentication function reference,但坦率地说,我迷路了。

是否有用于 Windows Vault 的 API 来存储和检索程序中的凭据,如果有,我在哪里可以找到文档?

0 投票
1 回答
1281 浏览

excel - 我可以在 VBA 中使用 DPAPI(或类似的东西)吗?

我关于 VBA 的初学者系列问题中的另一个。

我正在用 VBA 编写 Excel 插件,插件使用本地配置文件。
该文件需要包含远程服务的密码。
显然,将此密码存储为明文并不理想。但我正在寻找一种可以编码/解码文本的算法,因此它至少看起来不像配置文件中的纯文本。

我遇到了对 Windows DPAPI的引用,但我不确定这是否是 Excel VBA 的合适解决方案。我也不确定如何在 VBA 中使用这个 API,因为我只找到了在 .NET 中使用它的参考资料。此项目无法使用 Visual Studio。

所以两部分的问题是这样的:
1)如果可以在 VBA 中使用 DPAPI,我可以举个例子来说明它的用法吗?
2) 如果在 VBA 中无法使用 DPAPI,您对如何以某种可逆的编码方式存储文本有什么建议吗?

如果重要,该解决方案必须在 Excel 2003 及更高版本中运行。

再一次感谢你。

0 投票
1 回答
288 浏览

windows-phone-7 - 这种保护安全吗?(在 dll 中保存凭据)DPAPI 和 C#

我正在开发一个管理基本数据的应用程序(在 Windows Phone 7 中):客户数据(或联系人)和订单

我想保护访问数据库的凭据。我想做以下事情:

xxx.dll

我已将凭据放入 dll(已混淆)

zzz.dll

在其他 DLL(也被混淆)中,我这样做:

当您安装应用程序时:我读取了 xxx.dll 中的凭据并将它们存储在加密文件中(使用 DPAPI)

在这个 DLL (zzz.dll) 中,我有一个返回解密凭据的函数(使用 DPAPI)。该函数在应用程序中调用

0 投票
1 回答
629 浏览

asp.net - DPAPI 使用谁的密码进行加密?

我正在使用 DPAPI 来加密我的 asp.net 配置文件。从我对 DPAPI 的简要阅读中,我知道它使用 Windows 密码作为密钥来进行加密。问题,谁的Windows密码?

如果我有一个 asp.net Web 应用程序,并且我在 application_start 事件中挂钩了配置文件加密,它会使用我的应用程序池身份(网络服务)密码吗?

如果我有一个桌面控制台应用程序,并且我有一个 Windows 调度程序来定期运行这个应用程序,DPAPI 将使用谁的密码来加密/解密配置文件?

0 投票
1 回答
1615 浏览

c# - 如何允许导入/导出 DPAPI 安全凭证

我正在编写一个 winforms 应用程序,它将用户名和密码本地存储在配置文件中,这样使用该应用程序的人就不必在每次登录到我的应用程序支持的各种服务时重新输入他们的凭据。密码能够被解密是绝对必要的,所以我选择使用 ProtectedData 以及 Protect 和 Unprotect 方法来安全地存储密码。这使得保护他们的数据的责任很容易转嫁给 Windows 和最终用户,而不用担心密钥之类的问题。

现在我想为用户提供在安装之间移动设置的能力。一个很好的例子是,如果他们希望保留许多不同帐户设置的备份,或者他们想移动到另一台计算机。

我已经解决了它是这样的:

  1. 用户点击“导出账户”按钮
  2. 应用程序使用 Unprotect 解密存储的设置
  3. 应用程序将设置写入明文“备份”,然后将其导入新帐户并重新加密。

在第 3 步之前,所有这些听起来都很棒。第 3 步让我很困扰,因为它将密码以明文形式放置。在这种情况下是否有导入/导出凭据的最佳实践,或者被认为“可以”让用户有责任保护导出的文件?对我来说,假设用户正确保护了他们的 Windows 帐户,这似乎是可以假设的。我已经提出了不允许他们导入/导出设置文件的想法,但这似乎是一个很大的不便。同样,我也可以构建一个极其罕见的极端情况,即某人拥有如此多的存储帐户,以至于手动重新输入只需不到十年的时间。

如果有做这件事的经验的人愿意为此提供最佳实践/建议,我将不胜感激。对于必须处理存储凭据的所有复杂性,我还是很陌生。

0 投票
1 回答
538 浏览

windows - Windows 凭据漫游 - 如何将受密码保护的密钥发送到 AD 服务器?

我试图弄清楚如何实现 Windows 凭据漫游。我发现它会漫游受密码严格保护的证书(CryptProtectData() 的可选熵)。

除非 Windows 在导入证书时在某处保留密码副本,否则我看不到如何做到这一点。将 %APPDATA%/Crypto/RSA{UserSID} 中的文件复制到另一台机器将不起作用,因为密钥是使用用户 DPAPI 主密钥和可选密码加密的。

除了使用 ProcMon 之外,我不知道还有什么可以尝试或查看以解决这个问题。任何有助于解决这个问题的指针将不胜感激!

0 投票
3 回答
1692 浏览

security - 为什么要使用 RSA 进行 DPAPI 网络场加密?

我们将使用 DPAPI 加密 ASP.NET Web 配置文件中的连接字符串。但我对为我们的网络集群(农场)使用 RSA 或 DPAPI 感到困惑。下面的 MSDN 链接清楚地表明,如果我们想在网络场上部署 ASP.NET 应用程序,我们需要使用 RSA 提供程序。

http://msdn.microsoft.com/en-us/library/ms998280.aspx

http://msdn.microsoft.com/en-us/library/ms998283.aspx

但我不明白在我的网络场中的所有机器上使用 DPAPI 可能会出现什么问题。我基本上可以在所有服务器上执行相同的操作,并在每台机器上创建一个新的“加密连接字符串”。为什么这行不通?

0 投票
2 回答
1280 浏览

c# - 尝试使用 DPAPI 保护数据时被拒绝访问

我正在 Windows 8 上开发 ac# .net 3.5 应用程序。

我需要使用 DPAPI 加密数据。它在我的所有机器上都可以正常工作,除了一台机器出现以下异常:System.Security.Cryptography.CryptographicException 消息:访问被拒绝。

当我将 DataProtectionScope.CurrentUser 更改为 DataProtectionScope.LocalMachine 时,它​​可以正常工作。

似乎有人拒绝了当前用户执行 DAPI 加密的访问权限

我能做些什么来解决这个问题?

失败的应用程序是在当前登录用户下运行的控制台应用程序。

当使用提升的权限运行应用程序时,它仍然失败并拒绝访问。

我尝试重置登录密码,它解决了这个问题。

怎么会发生这样的事情?

0 投票
2 回答
1806 浏览

.net - DPAPI 和 ProtectedData.Protect() 如何处理 .net 4 中的磁盘映像/克隆?

我正在测试将 .net v4 的 System.Security.Cryptography.ProtectedData() 和 UnprotectData() 方法与 DataProtectionScope.LocalMachine 范围一起使用以确保文件只能在单台机器上加密/解密的想法。这是我在做什么的一般想法......

我已经完成了大量测试,以确保在执行此操作时获得预期的行为,并且它似乎可以完美地工作,因为同一台机器上的任何用户都可以使用上面列出的方法调用加密/解密文件。

我的问题是,如果有人制作包含使用此机制加密的文件的系统的磁盘映像或克隆(使用 Acronis、Ghost 等),然后将该映像恢复到另一台机器,会发生什么?(一个例子是 IT 部门预加载了一个系统,然后该系统成为一组具有相同硬件配置的机器的基本映像)。在不同硬件上恢复的操作系统是否能够解密在“原始”系统上加密的文件?我希望由于不同的硬件,解密会失败,但如果所有必要的加密信息都存在于注册表或文件系统中,它可能会起作用。

显然,我可以自己测试这个,但我现在真的没有资源这样做,并且一直在无休止地搜索,看看是否有其他人可能已经知道答案。非常感谢任何建议!

0 投票
2 回答
6221 浏览

c# - 有关数据保护 API (DPAPI) 的信息

我目前正在编写 ac# mvc Web 应用程序,其中从用户那里获取密码并存储在数据库 - sql server 中。我需要一种散列密码的方法。

建议使用数据保护 API (DPAPI)。我不熟悉它,从互联网上的研究来看,关于它的信息很少。

任何人都可以指出方向以获取更多信息吗?或者给我一个关于如何设置和使用它等的概述。