2012-05-17 20 views
3

我正在使用核心數據來存儲一些敏感信息。到目前爲止,我已將硬件文件加密應用於持久存儲協調器使用的SQLite文件。我通過設置其文件屬性(NSFileProtectionKey到NSFileProtectionComplete)來完成此操作。當存儲在「外部存儲」中時,核心數據BLOB數據是否被加密?

我存儲一些圖像數據作爲二進制數據的核心數據庫,我已經勾掉「允許外部存儲」和「外部錄音文件存儲」,以防止我的SQLite數據存儲的腹脹和提高性能。

我假設由Core Data自動存儲在SQLite數據庫之外的數據文件不會被加密,我需要自己加密這些文件。有誰知道這是否正確?

感謝

+1

儘管沒有直接關係,你應該知道sqlite會爲未加密的事務創建臨時文件,因此如果在執行數據庫讀/寫操作時應用程序崩潰,數據將可用。 –

+0

@HampusNilsson - 嗯......我沒有考慮過的東西。一些思考的食物。謝謝。 – luckman777

回答

0

luckman777,

每個版本的iOS預裝的硬件會加密,當用戶使用屏幕鎖定的每個文件。關於你關於外部核心數據存儲的問題,你爲什麼不看看這些文件?將數據從手機移動到開發系統非常簡單。然後嘗試打開其中一個外部文件。我期望它被加密。 (如果不是,那是在覈心數據的加密策略相當大,明顯的洞。我懷疑它的存在。)

安德魯

+0

adonoho - 感謝您的反饋。我很確定,雖然硬件加密不是自動的所有文件。這就是爲什麼諸如永久存儲協調器之類的文件要求您將其屬性設置爲NSFileProtectioNone值(默認值)之外的其他屬性。你能告訴我如何查看dev設備上的文件,如果他們在庫文件夾中?如果我使用模擬器,我可以在我的Mac上看到這些文件沒有問題。非常感謝。 – luckman777

+0

luckman777,您的Xcode Organizer允許您下載應用程序的所有沙箱。安德魯 – adonoho

0

隱藏,但沒有加密! 它當前(iOS 11.2)保存數據的文件夾在文檔/ .SingleViewCoreData_SUPPORT/_EXTERNAL_DATA
在那裏,您可以看到所有文件,但沒有它們的擴展名在令牌名稱中。但是,這些數據都沒有改變。您只需添加文件擴展名或使用正確的應用程序即可查看任何文件。

是的,設備數據在屏幕鎖定時被加密,但連接到Xcode時,您可以非常輕鬆地下載容器並訪問所有數據。如果您的應用持有敏感數據,則「設備已加密」將無法保持。 只有SingleViewCoreData.sqlite文件似乎被加密。