2017-03-21 52 views
0

我幾乎沒有使用Android應用程序開發的經驗,在iOS上幾乎沒有。我正在編寫一個必須存儲某個「密鑰」的應用程序,我希望這個密鑰以安全的方式存儲。儘可能安全,合理的開發工作。密鑰必須被存儲:整個觀點是用戶不需要在線從服務器獲取它。在移動平臺上安全地存儲密鑰真的很難嗎?

我不確定哪個是兩個平臺的最佳解決方案。我已經讀了一些關於Android中的Keystore和iOS中的Keychain的內容,但我不太清楚它們的安全性。許多人說,他們中的任何一個都不是真正安全的,因爲攻擊者可以逆向設計應用程序,查找文件,訪問......但最終人們已經將密碼和密鑰存儲在個人電腦上幾十年,沒有任何方法是100%安全的,所以我無法理解,在移動應用方面它是否只是偏執狂(當然,比平常更偏執狂),或者移動平臺真的很不安全。

假設Keystore和Keychain能夠提供儘可能多的安全性,以保護密鑰免受不太高級(或昂貴的)攻擊,是否合理安全?

PS不要誤解我的意思,我非常重視安全性,我總是爲此而努力。但是看完一個應用程序將是「不安全」,「因爲手機可能被盜」提示我懷疑我們是否應該不惜一切:)

+0

要用的關鍵是什麼? – Michael

+0

另外,你的威脅載體是什麼?你想捍衛這個關鍵是誰? – CommonsWare

+0

鑰匙在哪裏產生?它是由應用程序生成還是隻有一個密鑰與應用程序一起分發? – Paulw11

回答

-2

首先,密鑰存儲編寫軟件用於簽名的應用程序發送之前例如,如果您將應用程序發送到paly/apple商店,使用keystore/keychain可以保護您的應用程序免受惡意軟件的攻擊,因爲某些人可以下載它,放入惡意軟件並將其重新發送到商店! 此外,如果您更新舊應用程序的版本,您的客戶端無法更新舊應用程序,他們將同時安裝2個版本,因爲您的應用程序未使用keyStore/Keychain鏈接,希望我明確。

你在看:是用加密信息的存儲,在這種情況下,我使用Realm因爲境界文件可以通過傳遞一個512位加密密鑰(64個字節)存儲在磁盤上加密。

+2

我認爲OP是指[此密鑰庫](https://developer.android.com/reference/java/security/KeyStore.html)(特別是'AndroidKeyStore')。 – Michael

+0

他說:**密鑰必須存儲:整點是用戶不需要在線從服務器獲取它**,所以我認爲他談論加密數據 – Euphor08

+1

那麼,就像我說的,我相信問題中的「密鑰庫」是指應用程序可以將密碼對象存儲在設備上的位置,而不是用於簽署APK的文件。 – Michael

相關問題