2010-11-06 85 views
1

我在IPhone開發一個新手,iphone數據安全

我有一個包含大量的安全重要數據的應用程序,許多搜索後,我意識到,SQLite的是把我的數據的最佳方式(大量), ,但我發現一些人在談論打破密碼保護SQLite文件, 我應該使我自己的數據結構與自定義搜索...或者有一種方法來安全地使用SQLite。

thanx提前;

編輯:如果我的數據加密和解密在運行時我來鬆鬆:

  • 使用SQL
  • 性能
+1

SQLite只是設備上的一個文件。如果要加密數據,請在將其放入數據庫之前對其進行加密。 – Rudiger 2010-11-06 14:15:50

+0

對不起,我編輯帖子更清晰 – Badr 2010-11-06 14:46:00

回答

0

由於SQLite數據庫搜索只是一個文件在您的/ Documents文件夾中 - 您可以在啓動應用程序時對其進行解密,並在退出時對其進行重新加密。 iPhone中已經內置了公鑰和AES功能。

您可能想要使用用戶輸入的密碼。

一定要以原子/冪等的方式做到這一點,以便如果加密/解密/複製/移動/重命名過程中斷,您不會損壞文件!

0

你看過東京內閣嗎?有可能通過存儲二進制對象來實現某些功能。 (......只是一個想法)

+0

thnx爲你的答覆,但我需要在數據使用SQL搜索,檢查:http://stackoverflow.com/questions/1226539/tokyo-cabinet-vs-sqlite3 -on-iphone – Badr 2010-11-07 07:42:08

0

看看http://sqlcipher.net/它使用AES(透明地)在SQLite中存儲數據 - 它應該足夠強大,以滿足您的使用情況。

其餘取決於你的情況:

1)系統離線嗎? 您將無法執行安全的持久登錄 - 每次應用程序進入前臺以訪問數據時,用戶都必須登錄。 2)您的系統是否在線? 持久登錄可能是可能的,因爲當設備丟失時,可以爲用戶/設備停用服務器端認證組件。在用戶輸入密碼並使用此令牌解鎖​​數據庫(具體實現由您決定,我將使用顯式設備 - 服務器與公鑰/私鑰配對)後,只需提示服務器解鎖令牌即可...

需要牢記的一個特殊情況是密碼更改。可以使用數據重新導入新的加密數據庫來處理它。要點:

您需要要求用戶輸入舊密碼才能解鎖當前數據庫進行讀取,然後爲新密碼創建新密碼,然後將舊數據導入新數據庫。當過程完成時,只需刪除舊的數據庫...

希望可以幫助...