ProtectedData 可以在多台计算机上工作吗?
Does ProtectedData work on multiple computers?
我正在考虑在我正在处理的应用程序中存储一些敏感数据。我一直在看微软提供的 ProtectedData
class ,看起来很简单。但是,我有几个关于它如何工作的问题。
首先,我看到它使用 "the user's login credentials" 生成加密密钥。我在文档中看到只有当前用户才能解密数据。这不是问题,我只是想知道如果同一个用户在不同的机器上登录,他们是否能够解密数据?我计划通过 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
吗?
其次,用户更改密码后会发生什么?在我看来,加密密钥会有所不同,这不会导致使用以前的加密密钥解密的数据不再可恢复吗?
例如:
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?
在一台机器上,更改密码后,用户应该仍然能够访问以前加密的文件。我的理解是之前生成的密钥仍然存储在列表中以允许这样做。 (每次用户更改密码时都必须解密和重新加密所有以前存储的数据,这将是一项昂贵的操作,因此他们只保留旧密钥。)
但是,有一些管理工具可以让您以可能会破坏密码的方式更改密码。
我不知道在机器 A 上更改密码会对机器 B 产生什么影响。我假设漫游配置文件会正确处理这个问题,但这可能是一个无效的假设。
我不会在没有备份的情况下将关键数据存储在 DPAPI 中。当然,这会引入其他与安全相关的复杂性,具体取决于数据的敏感性。
数据保护 API (DPAPI) 与 roaming profiles. So this would cover the fact that a user can decrypt the data over a network. Using an IsolationStorage 一起正常工作,用于存储跨多个应用程序且不依赖于任何特定应用程序的数据,例如用户名或许可信息。
创建隔离漫游商店的示例:
using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Domain | IsolatedStorageScope.Assembly, null, null))
{
isoStore.CreateDirectory("TopLevelDirectory");
isoStore.CreateFile("abc.txt");
}
获取独立漫游商店的示例:
IsolatedStorageFile isoFile =
IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
IsolatedStorageScope.Assembly |
IsolatedStorageScope.Roaming, null, null);
我正在考虑在我正在处理的应用程序中存储一些敏感数据。我一直在看微软提供的 ProtectedData
class ,看起来很简单。但是,我有几个关于它如何工作的问题。
首先,我看到它使用 "the user's login credentials" 生成加密密钥。我在文档中看到只有当前用户才能解密数据。这不是问题,我只是想知道如果同一个用户在不同的机器上登录,他们是否能够解密数据?我计划通过 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
吗?
其次,用户更改密码后会发生什么?在我看来,加密密钥会有所不同,这不会导致使用以前的加密密钥解密的数据不再可恢复吗?
例如:
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? 在一台机器上,更改密码后,用户应该仍然能够访问以前加密的文件。我的理解是之前生成的密钥仍然存储在列表中以允许这样做。 (每次用户更改密码时都必须解密和重新加密所有以前存储的数据,这将是一项昂贵的操作,因此他们只保留旧密钥。)
但是,有一些管理工具可以让您以可能会破坏密码的方式更改密码。
我不知道在机器 A 上更改密码会对机器 B 产生什么影响。我假设漫游配置文件会正确处理这个问题,但这可能是一个无效的假设。
我不会在没有备份的情况下将关键数据存储在 DPAPI 中。当然,这会引入其他与安全相关的复杂性,具体取决于数据的敏感性。
数据保护 API (DPAPI) 与 roaming profiles. So this would cover the fact that a user can decrypt the data over a network. Using an IsolationStorage 一起正常工作,用于存储跨多个应用程序且不依赖于任何特定应用程序的数据,例如用户名或许可信息。
创建隔离漫游商店的示例:
using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User | IsolatedStorageScope.Domain | IsolatedStorageScope.Assembly, null, null))
{
isoStore.CreateDirectory("TopLevelDirectory");
isoStore.CreateFile("abc.txt");
}
获取独立漫游商店的示例:
IsolatedStorageFile isoFile =
IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
IsolatedStorageScope.Assembly |
IsolatedStorageScope.Roaming, null, null);