我正在考虑在我正在处理的应用程序中存储一些敏感数据。我一直在查看 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/