我正在使用具有以下标志的隔离存储:
IsolatedStorageScope.User |IsolatedStorageScope.Domain | IsolatedStorageScope.Assembly
这将提供多少安全性?是否有任何漏洞或陷阱?
注意:我不仅仅依赖隔离存储。我的应用程序加密数据,但没有记录密码。当然,它很容易受到从 RAM 中读取解密数据的密钥记录器和程序的攻击,但我认为无法防范这些。
我正在使用具有以下标志的隔离存储:
IsolatedStorageScope.User |IsolatedStorageScope.Domain | IsolatedStorageScope.Assembly
这将提供多少安全性?是否有任何漏洞或陷阱?
注意:我不仅仅依赖隔离存储。我的应用程序加密数据,但没有记录密码。当然,它很容易受到从 RAM 中读取解密数据的密钥记录器和程序的攻击,但我认为无法防范这些。
如果您担心在 RAM 中存储数据,您应该查看 .net SecureString 类:http: //msdn.microsoft.com/en-us/library/system.security.securestring.aspx
以下是有关隔离存储的一些重要信息:http: //msdn.microsoft.com/en-us/library/3ak841sy.aspx
尽管隔离存储非常适合前面描述的场景,但在某些情况下您不应该使用隔离存储:
- 不要使用隔离存储来存储高价值机密,例如未加密的密钥或密码,因为隔离存储不受高度可信代码、非托管代码或计算机受信任用户的保护。
在不了解您的应用程序的更多信息的情况下,您可能希望通过ProtectedMemory 类查看使用 DPAPI 。
这样,您要么根据当前用户保护数据,要么根据当前机器保护数据。显然,如果您可以将其限制为当前用户,则数据将更加安全。
因此,隔离存储提供了一个安全的地方来存储数据(您不必担心会覆盖其他应用程序数据,但它并不安全)。ProtectedData 将确保数据在其存储位置是安全的。
希望有帮助。
罗斯
当然,它很容易受到从 RAM 中读取解密数据的密钥记录器和程序的攻击,但我认为无法防范这些。
除非您要保护的内容非常有价值,否则我会说您忽略这些内容可能是正确的。从 RAM 中读取解密数据并非易事,如果它专门针对您的应用程序的 RAM,则可能暗示有针对性的攻击。
隔离存储似乎是 Windows 之上的 .net 抽象,而不是 Windows API 本身的扩展。这篇 MSDN 文章揭示了这些位置本质上只是通常的应用程序数据路径。本文总结了用户、域和程序集标志的影响。
我本身不是 .net 开发人员,所以我决定测试所发生情况的最佳方法是使用codeproject中的演示,查看目录并使用procmon观看。
那么,首先,有什么样的安全属性C:\Users\username\AppData\Local\IsolatedStorage呢?

总而言之,它似乎没有任何超出普通用户可能期望使用的特定访问权限。

确实,正如你在上面看到的,我可以跳华尔兹了。最后,试试 procmon:

您可能需要放大那个,但作为解释,这只是一组标准的 Windows API 调用和对文件的一些锁定访问。因为它可能很有趣,所以我正在寻找的是一个SetNamedSecurityInfo()显示为IRP_MJ_SET_SECURITY.
简而言之,我认为IsolatedStorage 作为.net 抽象是独立的,但.net 目前运行在Win32 之上,我无法想到它提供任何防御。因此,它与将文件写入“我的文档”或您从 Win32 应用程序的角度选择的任何其他应用程序设置位置一样安全。这正是罗斯所说的 - 对非托管代码没有防御。我只是喜欢图片。