2013-03-25 83 views
6

如何安全的本地数据Windows 8的应用程序 - 本地存储安全

ApplicationData.Current.LocalSettings 

存储在Windows 8商店应用程序中使用?

application data storage文章说没有关于安全性,也没有this one

这个数据可以从应用程序外部操纵吗?

我看着数据

的位置是C:\用户[名] \ AppData \本地\封装[package_namespace] \ LocalState)

,但没有找到它。它完全保存在哪里?

我试图评估这种存储机制的安全性,以决定是否可以在那里存储安全关键信息。

回答

4

经过一番详细的调查,我发现:

http://lunarfrog.com/blog/2012/09/13/inspect-app-settings/

的数据被存储在

C:\用户[名] \ AppData \本地\封装[package_namespace] \ LocalState \ Settings \ settings.dat

这是一个Windows NT注册表文件(REGF),它可以与注册表编辑器一起打开并且也可以被操纵。

含义,本地存储是不安全的。

如果没有其他方式,encrypting the data和混淆密钥是一种可能性。

+0

从什么和你想保护谁的数据?读?修改?由用户?通过机器上的其他应用程序? – 2013-03-25 15:24:31

+0

除了在某台机器上读取和写入应用程序之外的所有内容。 – dschenk 2013-03-25 15:49:36

+1

对于这个星座来说,“安全”是一个非常微妙的术语。即使您加密数据,您也需要将密钥存储在应用程序中。所以如果真的有人真的想读它,他们会提取密钥并自己解码数据。这就是为什么软件DRM很容易被黑客攻击的原因:如果有人可以阅读它,那么其他人也可以阅读它。 – 2013-03-25 16:16:38

2

此应用程序数据存储文章没有提到安全问题,也没有提到这一点。 这个数据可以从应用程序的外部操纵吗?

该存储类似于iOS's Core Data。除非存储受保护(低于应用程序级别),否则它基本上不受信任的输入。即使存储受到加密保护,其可能未经过验证,因此可能会被篡改。

如果没有其他方式加密数据和模糊密钥是一种可能性。

在Windows平台上,保护敏感数据的标准方法是使用Data Protection API(DPAPI)。使用DPAPI和用户提供的秘密(API中的附加熵)以获得最佳保护。您可以将DPAPI的数据与用户的配置文件,注册表或文件系统中存储在一起。参见例如,Windows Data Protection,How to: Use Data ProtectionData protection API (Windows Store apps)。迈克尔·霍华德和戴维·勒布朗对Writing Secure Code, Second Edition这个话题有很好的处理。参见第9章,保护秘密数据,从第299页开始。

如果您想要数据库类似加密,请参阅SQLCipher。它使用认证加密,因此它提供了机密性和完整性。 Windows 8支持本地库,包括其手机(例如,请参阅Native code on Windows Phone 8)。

3

如果是要存储的用户凭据,请参阅PasswordVault类。否则,请使用DPAPI,因为您已经建议自己了。

相关问题