2011-04-29 80 views
0

我們正在編寫一個iPhone iOS4應用程序,其中包含一個加密的SQLite數據庫,並且需要讀取一個密鑰。數據庫包含提供給開發人員的數據,它不包含任何用戶數據。iPhone和處理安全密鑰傳送

我們遇到的問題是如何協商傳送密鑰和/或在設備到達時是否保留密鑰。這可以在沒有來自用戶的任何交互的情況下完成。

有沒有一種方法可以在運行時安全地放入鑰匙並從鑰匙串中請求鑰匙,以便例如,如果應用程序在監獄設備上結束,鑰匙不能由邪惡的人員提取?

我懷疑這一切都可以安全地完成,但我不是這裏的專家。例如,在源代碼中的某些位置,我們需要從鑰匙串請求密鑰。

感謝您提前對您的想法。

+0

所有的注單都在具有根目錄操作系統的設備上關閉,因爲具有硬件訪問權限的確定攻擊者可能會在應用程序從鑰匙串中讀取數據或解密任何數據庫之後立即轉儲所有內存。 – hotpaw2 2011-04-29 01:30:51

回答

0

當你說'鑰匙'時,你是指字符串格式的鑰匙嗎?如果是這樣,那麼是放入鑰匙鏈。 SHFFKeychainUtils提供了一個簡單的界面來將字符串值存儲到iOS鑰匙串中。

執行此操作的最佳方法是在應用程序啓動時向用戶請求密鑰,然後使用該NSString加密數據庫(或將其存儲到鑰匙串中以便無憂啓動)。