2013-03-25 89 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,因爲您已經建議自己了。

相關問題