问题标签 [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 投票
1 回答
1737 浏览

c# - ProtectData 类使用哪种加密算法?

我知道ProtectedData类最终会调用 Windows 的数据保护 API (DPAPI)。DPAPI 函数的文档提供了诸如密钥存储位置、谁可以解密数据等详细信息。但是,我无法找到任何有关实际底层加密算法的文档。(我需要知道即将进行的审计的安全文档保护方法的详细信息)。这只是使用AES或类似的东西吗?这有多安全?

0 投票
1 回答
785 浏览

encryption - 存储使用带有 PersistKeysToFileSystem 的数据保护 API 加密的敏感数据

伙计们,我需要将一些字符串数据从 MVC Core 2.0 应用程序加密到 SQL 数据库中。我正在考虑将数据保护 API 与 PersistKeysToFileSystem 一起使用,以便我可以将数据恢复到另一台服务器并使用相同的密钥文件解密数据。Net core 中 DPAPI 的性能给我留下了深刻的印象,我不想为任何自定义加密解决方案而选择,因为它太冒险了。我会将批量上传的数据存储到 SQL 中。加密前的字符串为 200 个字符或更少。

我相信 DPAPI 被认为更适合加密小块数据,例如密码,而不是 sql 批量操作。人们是否认为使用 DPAPI 将数据加密到数据库中是一个很好的用例?

0 投票
1 回答
267 浏览

windows - CryptProtectData 函数的 CRYPTPROTECT 标志

进入 DPAPI 内部功能问题...

我(可能)处于登录前的上下文中,这意味着没有用户已经登录。

由于CryptProtectData 函数使用当前用户凭据,它将如何发挥作用?

我很想知道这是否有任何问题,或者在这种情况下它是否根本无法使用。

而且......无论答案是什么,有谁知道(/如何找出)用于标志 LOCAL_MACHINE 的“密钥”。什么样的凭证/标识符用于对机器进行特定的加密?

答案/建议/重定向/建议将不胜感激

0 投票
1 回答
263 浏览

.net - 为什么 SecureString 和 ProtectedMemory 被放置在不同的程序集和命名空间中?

在概念层面上,SecureString 看起来像是 ProtectedMemory 的一种特殊化。

诚然,它的主要功能是缩短 RAM、交换和故障转储中(不可变)字符串的生命周期。但是,它也使用 DPAPI 来保护除入口和出口点之外的数据。DPAPI 使用密码学来完成它的工作。那么为什么将 SecureString 放在 System.Security 而不是 System.Security.Cryptography 中呢?

在我看来,如果在实现中没有使用密码学,那么 SecureString 将只提供比预先存在的 StringBuilder 更小​​的便利优势。

SecureString 和 ProtectedMemory 类名称中的“Secure”与“Protected”之间也存在对比,我也不确定这可能是如何激发的。

0 投票
1 回答
425 浏览

windows-services - 作为本地系统运行的 Windows 服务应该将私钥存储在文件系统中的什么位置?

我需要生成并存储一个敏感文件(假设它不是传统的 PKCS 格式)私钥,并使其可供正在运行的服务访问。

通常,当作为服务帐户(AD 用户)运行时,我会将文件存储在用户的配置文件下,然后让标准 Windows 安全性处理这个问题。

在 CryptoAPI 之外,我应该将这个私钥存储在文件系统的什么位置?

0 投票
0 回答
56 浏览

windows - 在 Windows 中设置特定于进程的权限

我正在使用DPAPI加密用户的一些机密数据。此加密数据存储在文件中并放置在%LOCALAPPDATA%文件夹中。

我如何防止其他进程访问该文件,因为在用户会话中运行的任何其他进程都可以解密它。Windows 是否有一些规定可以满足我的要求,或者这是不应该为保护数据而采取的途径?

0 投票
1 回答
333 浏览

c# - DPAPI 会自动做动态加盐吗?

我正在研究使用 Windows 的数据保护 API (DPAPI) 来加密一些数据。我的一个要求是在加密值时使用动态盐。

我通过测试注意到,如果我多次加密同一个字符串,我会得到不同的结果。这是使用相同的字符串、空熵值和相同的范围。

这让我觉得好像已经涉及到一种动态盐。我没有看到任何说明这一点的文件。

这是我调用的方法https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.protecteddata.protect?view=netframework-4.7.2

DPAPI 是否已经处理动态加盐?如果不是,是什么导致加密值每次都发生变化?

0 投票
1 回答
649 浏览

windows - DPAPI 主密钥迁移到新计算机


首先,如果这个问题应该进入另一个 stackexchange 站点,请告诉我。
我有一台我用了很多年的电脑,所以它在我的谷歌浏览器文件夹中有很多存储的密码、cookie 等。我最近买了一台新电脑,想保留以前的所有东西,特别是我的 cookie、扩展程序等。
起初,我只是将 %APPDATA%\local\google 文件夹从旧电脑复制到新电脑。当我启动 Chrome 时,我可以看到我的历史记录、扩展程序等,但是当我访问 facebook、gmail 等常用网站时,它要求我登录。
然后我去阅读有关 Chrome 如何使用 DPAPI 加密该数据的信息,因此我更改了新计算机中的密码和用户名以匹配旧计算机,然后再次复制该文件夹,但仍然没有。
因此,我阅读了更多内容,发现 DPAPI 使用主密钥文件,因此我继续将 %APPDATA%\roaming\microsoft 文件夹(应该包含该文件)复制到我的新 PC。所以现在我有相同的密码、用户名和主密钥文件,但我仍然无法让它工作。它要求我每次登录而不是使用 cookie/保存的密码。
有谁知道我在访问网站时还缺少什么让 Chrome 能够解密这些东西?
同样,如果有其他网站更适合这个,请告诉我。谢谢你。

0 投票
1 回答
116 浏览

operating-system - 操作系统如何存储加密数据的密钥

我想知道操作系统如何存储用于加密网站密码等内容的密钥。在网上搜索后,我只找到了两个答案,但它们只是指服务提供商应该如何存储密码(他们应该存储哈希和盐),或者应用程序应该如何存储它们(他们应该使用提供加密的系统 API)。

但我想知道的是系统本身是如何保护加密密钥的。我知道有些设备有特殊的硬件来存储一些重要的密钥(比如 Apple 芯片中的 Secure Enclave)。但我想知道如何在普通计算机中完成。

我的意思是他们可能将它存储在磁盘上的某个地方,但是他们如何安全地做到这一点,所以你不能只是读取它?

0 投票
1 回答
945 浏览

java - 如何使用 Windows DPAPI 使用系统上下文而不是用户上下文加密 Java 中的字符串?

我正在尝试加密要在我的程序的多个实例中存储的密码,但它需要能够被机器上的所有用户解密。我已经四处寻找选项,并向我推荐了javaDPAPI。但是,这似乎只是根据当前用户上下文进行加密。

根据微软的文档,似乎有一种方法可以做到这一点,但我不确定如何做到这一点,而且我对 java 不是很熟悉,从来没有做过这样的事情。