问题标签 [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.
c# - 尝试在 C# 中对 KeyContainer 设置权限无效
我正在使用以下代码尝试以编程方式允许 NetworkService 帐户访问密钥:
此代码运行没有错误,但对密钥容器的权限没有影响。
但是,使用命令行工具 aspnet_regiis 来做同样的事情,效果很好:
我正在以完全管理员权限运行 - 如果我不以这些权限运行,则会引发异常。我也以最初创建密钥的用户身份运行。
密钥容器始终具有以下访问规则:
使用 aspnet_regiis,SID,S-1-5-20 被添加到这个列表中。我不能从代码中影响它。
我尝试从 sid 以字符串格式创建安全标识符,以及使用 SetAccessRule 而不是 AddAccessRule。
任何想法如何从代码中实际影响此 ACL 列表?
.net - 在开发期间保护连接字符串
我们需要在开发过程中保护连接字符串。在服务器上,我们使用工作正常的 DPAPI。DPAPI 在开发期间不是一个选项,因为连接字符串需要在许多机器上解密。
一些用于 dev 的用户名/密码相当敏感,我们不希望它们四处飘荡。所有开发人员都能够解密它们很好,只是想确保如果其他人掌握了开发配置文件,该人无法解密连接字符串。由于外部限制,不能使用所有服务帐户而不是敏感的用户名/密码。
我的第一个倾向是使用 RSA 提供程序在开发机器上加密和安装证书。
所以我的问题是;
1)你如何处理这个问题?
2)如果您采用 RSA 方法,是否有比这更多的最新文档
谢谢
iphone - IOS 中的钥匙串可以与 Windows 中的 DPAPI 相比吗?
在 iOS 上,我正在寻找与 Windows 上可用的 encrypt/decrpyt DPAPI 函数等效的 API(未设置 CRYPTPROTECT_LOCAL_MACHINE 标志)。
目标是在本地保存一些应用程序数据,并使其访问仅限于应用程序本身。
我已经阅读了有关钥匙串功能的信息,但似乎字典具有用户级访问权限(在智能手机登录期间解锁)。我希望该应用程序是唯一可以访问该信息的人,例如,通常拥有自己的钥匙串。
对此有何建议?
windows - 我的 Windows 域管理员可以解密我的 DPAPI 加密文件吗?
我想像这样使用 DPAPI 加密密码
并且想知道域管理员是否可以解密生成的 blob,如 Using Passwords Effectively所述:
但是,在域环境中,域管理员可以安全地更改您的密码,并且您仍然可以访问您的加密文件。
似乎域管理员必须首先解密数据(或者更确切地说,加密的主密钥),以便能够使用不同的密码重新加密它。
asp.net - 使用 DPAPI 保护加密密钥
我正在编写一个 asp.net 应用程序,它加密敏感数据,这些数据由在同一域中不同用户帐户上运行的另一个 asp.net 应用程序解密。
我读过很多文章说使用 DPAPI 将密钥管理传递给操作系统级别。
在这种情况下如何使用 DPAPI?我不想将加密密钥存储在文件或数据库中。
c# - c#中的数据加密和密钥管理
走哪条路,有什么利弊,哪个更安全。。
1)生成AES密钥,用它加密数据,然后用RSA加密AES密钥,将加密的数据和加密的AES密钥保存到文件中,并将RSA密钥对保存到KeyContainer中。
2)或使用 DPAPI ProtectedData 类加密数据并将其保存到文件中,然后将我使用的熵存储ProtectedData.Protect()
到某个地方..(也许也可以使用 RSA 对其进行加密,将 RSA 密钥对存储到 KeyContainer 并将加密的熵存储到包含数据的文件?)
编辑:仅供参考:我们需要保护我们的应用程序文件系统使用。因此,应用程序存储到文件系统的任何文件都希望被加密。该文件最有可能被同一应用程序或同一应用程序堆栈的另一个组件使用。
security - Microsoft Access 2010 和 ODBC 连接字符串安全性
我正在使用带有未绑定表单的 Microsoft Access 2010。不允许链接表,否则连接字符串存储在表定义中。因此,我们将使用没有名称的查询定义来访问 SQL SERVER。这是微软推荐的。我们需要从某个地方获取连接字符串。所以建议从带有混淆名称的方法中返回它。建议不要在应用程序源中以纯文本形式嵌入连接字符串。所以我们使用加密。
这样做的一个好方法是要求应用程序管理员在第一次运行应用程序时定义连接字符串,并根据这篇 msdn 文章
...通过 DPAPI 使用运行应用程序的帐户的用户特定密钥对其值进行加密,并将加密的值保存在 Windows 注册表中。
accde 从登录的 Windows 用户帐户启动,之后应用程序管理员可以按照上述建议登录并设置与数据库的连接。
我现在似乎拥有的最薄弱的环节是 Windows 用户帐户。如果他们知道安全方案的实现,似乎任何登录到该帐户的人都可以解密连接字符串。这意味着系统仍然不够安全。
我可以创建一个新的 windows 用户,但这意味着该用户的密码必须保持安全,这意味着我们回到了第 1 步,保护用于访问某些机密信息的密码。
一定有更简单的方法,有什么想法吗?
c# - 如何保护熵?
DPAPI非常适合保护敏感信息!不幸的是,DPAPI“可选熵”基本上是另一条必须保护的敏感信息。讽刺。
我可以使用哪些可能的(偷偷摸摸的)“熵”来源很难猜到?或者,我怎样才能保护熵?也许是隐写术?
仅供参考:我并不完全依赖熵本身。我将遇到其他障碍和加密层。我只想设置另一个障碍。
额外的仅供参考:这只是一个个人项目,我出于偏执和好奇而保护它。
.net - ProtectedData.Unprotect 方法解密失败
我们有一个构建过程,需要解密密码,然后使用该密码连接到数据库。我们正在使用数据保护 API (DPAPI) 使用 PowerShell 在构建服务器上的机器范围内加密密码(我使用自己的域帐户登录):
解密也在 PowerShell 脚本中完成,该脚本由 CruiseControl.NET 执行,以我们的构建用户身份运行:
但是,对 的调用Unprotect
失败并显示以下消息:“密钥在指定状态下无效。”。 根据文档,使用模拟可能会发生此错误,并且模拟代码应加载用户的配置文件。
出于安全目的,构建用户被拒绝通过终端服务登录权限。为了测试这个问题,我以自己的身份登录到构建服务器,然后使用 runas 作为构建用户打开 PowerShell 提示符:
然后我运行 PowerShell 脚本来取消保护/解密密码,并得到相同的错误。
我使用Process Monitor来监视任何失败或访问被拒绝事件,但没有任何事件。
当我使用自己的域帐户登录时,我能够解密密码。
这是怎么回事?我的构建用户的配置文件没有被加载吗?是否有一些我不知道的安全设置可以启用它?为什么我不能解密密码?
c# - 使用 DPAPI 对数据进行签名和验证
我目前正在尝试了解如何最好地在 .NET 4.0 C# 环境中实现签名/验证。
我的要求是能够在我的系统中作为一个“用户”对数据进行签名,稍后该数据需要由消费者验证。
为了做到这一点,我正在尝试使用证书,但是这是我开始挣扎的地方。我感到困惑的一个方面是,有人建议我可以使用 DPAPI 进行证书管理,但是从阅读 DPAPI 文档来看,它似乎只为本地主机/用户提供了一种保护/取消保护任意数据的方法。尽管此数据可能恰好是私钥,但它并没有专门处理证书。
第一个问题是,DPAPI 是否以任何方式链接到本地证书存储或其他证书管理解决方案?
希望代码不必查找证书,而只需将数据传递给有用的 API,在该 API 中对其进行签名(在数据源上)或验证(在消费者上)。
任何意见表示赞赏。