c# - ProtectedData 可以在多台计算机上工作吗?

标签 c# .net encryption

我正在考虑在我正在处理的应用程序中存储一些敏感数据。我一直在查看 Microsoft 提供的 ProtectedData 类,它看起来非常简单。但是,我有几个关于它如何工作的问题。

首先,我看到它使用“用户的登录凭据”来生成加密 key 。我在文档中看到只有当前用户才能解密数据。这不是问题,我只是想知道如果同一个用户在不同的机器上登录,他们是否能够解密数据?我计划通过 OneDrive 共享保存的信息,因此希望它可以在同一用户使用的任何设备上访问。

例如:

User A logs in on desktop computer, saves encrypted file abc.txt
User A then logs in on tablet, loads file abc.txt

平板电脑上的用户 A 是否可以访问 abc.txt

其次,用户更改密码后会发生什么?在我看来,加密 key 会有所不同,这不会导致使用先前加密 key 的数据解密不再可恢复吗?

例如:

User A logs in on desktop computer, saves encrypted file abc.txt
User A changes password
User A logs in on desktop computer, loads file abc.txt

用户 A 是否可以访问 abc.txt??

最佳答案

用户 A 可以在平板电脑上访问 abc.txt 吗?

“要使 DPAPI 在使用漫游配置文件时正常工作,域用户必须 只能登录到域中的一台计算机。如果用户想 登录到域中的另一台计算机,用户必须注销 在用户登录到第二台计算机之前第一台计算机。如果 用户同时登录多台电脑,很可能 DPAPI 将无法正确解密现有的加密数据。” - http://support.microsoft.com/kb/309408

用户 A 是否可以再访问 abc.txt? 在一台机器上,更改密码后,用户应该仍然能够访问以前加密的文件。我的理解是之前生成的 key 仍然存储在列表中以允许这样做。 (每次用户更改密码时都必须解密和重新加密所有以前存储的数据,这将是一项昂贵的操作,因此他们只保留旧 key 。)

但是,有一些管理工具可以让您以可能会破坏密码的方式更改密码。

我不知道在机器 A 上更改密码会对机器 B 产生什么影响。我假设漫游配置文件会正确处理这个问题,但这可能是一个无效的假设。

我不会在没有备份的情况下将关键数据存储在 DPAPI 中。当然,这会引入其他与安全相关的复杂性,具体取决于数据的敏感性。

关于c# - ProtectedData 可以在多台计算机上工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27789485/

相关文章:

带连接的 C# 字符串文字

c# - 使用反射实例化一个实现通用接口(interface)的类

.net - 在 Windsor 中注册通用装饰器

.net - 在 VSTO Excel 项目中创建弹出日历

java - 使用黑莓使用 AES/CBC/PKCS5Padding 解密数据

c# - 如何将类对象转换为列表?

c# - Visual Studio 2008 - 两个项目是否可以共享公共(public)类?

c# - 我如何知道 ComboBox 中的值何时为 "re-selected"?

node.js - Golang 从 NodeJS 解密 AES 256 CBC base64

php - 同一数据库上的加密 key ?