2017-03-03 46 views
1

在我的android應用程序中,我需要安全地存儲RSA,ECDH,AES和其他密鑰。它們將通過使用用戶輸入的密碼進行加密/解密。我的選擇是:android密鑰庫,充氣城堡UBER密鑰庫,加密並存儲在共享首選項中。 Android密鑰存儲不是一個選項,因爲它不使用自定義密碼加密密鑰。 UBER似乎是一個很好的解決方案,但是我在那裏存儲我的密鑰時遇到了一些問題,所以我想僅僅用AES GCM對它們進行加密並放入共享偏好,這樣會不太安全?或者甚至可能更安全,因爲AES GCM比充氣城堡使用的Twofish更好?是否將密鑰存儲在Bouncy Castle密鑰庫中比將密鑰存儲在共享首選項中更加安全?

+0

您能解釋一下「Android密鑰存儲(...)不使用_custom_密碼加密密鑰」是什麼意思?我剛剛偶然發現[this](https://stackoverflow.com/questions/43891059/storing-keystore-password-for-certificate-pinning-in-android),那裏有建議可以存儲由密碼保護的密鑰,但我不知道我們是否在這裏的同一頁 – Antek

回答

0

在GCM模式下使用AES-256進行加密,然後存儲在共享首選項中應該沒問題。 AES-256是NSA Suite B規範的一部分,與對稱加密相比,AES-256的性能大致相當。 (https://en.wikipedia.org/wiki/NSA_Suite_B_Cryptography)該鏈接指出NSA期望很快發佈一個新的套件建議來解決加密上的量子攻擊這一事實 - 但在接近(3-5年)的期限內,這種攻擊幾乎不可行。