2014-02-12 38 views
4

在桌面Java中,存在一個sun.security.mscapi.SunMSCAPI密碼提示器,我們可以使用它與KeyStore一起訪問Windows系統證書存儲。Android上是否有任何系統證書存儲?

我知道Android上有類似的商店,但我找不到管理這些商店(列表,添加,刪除證書)的方法。

我發現的是:

1)用鑰匙圈,但這需要通過活動的用戶額外交互; 2)在桌面上使用KeyStore並直接加載存儲文件,但這些文件的路徑在所有設備上都不是固定的。

是我還沒有意識到的其他方法嗎?

回答

3

KeyChain是一個比較新的補充。它的唯一可用API 14(冰淇淋三明治)和更高。 Nicolay Elenkov在Using the ICS KeyChain API上有一篇很好的博客文章。

KeyStore是一個更新的增加。它僅適用於API 18(Jelly Bean MR2)及更高版本。 Nicolay Elenkov在Credential storage enhancements in Android 4.3有另一個好博客條目。

您可能也有興趣從Android開發人員的博客Unifying Key Store Access in ICS。它告訴我們KeyStore自API 4(甜甜圈)以來一直存在,但只有系統可以使用它,並且它僅用於VPN機密(稍後添加了Wifi)。

直到最近,用戶證書存儲都是有點破的。要從商店中刪除證書,您必須刪除整個商店(即使您要保留的證書和私鑰)。見User key/cert management in ICS

系統的證書存儲過去被存儲在ROM中。這在Diginotar failure之後發生了變化,因爲Android不得不構建新的映像來刪除受損的Diginotar根。鑑於如此多的運營商不支持他們的設備,實際上有數百萬(也許是數十億)有缺陷的設備仍在那裏。

如果您想要吸引最多的Android設備選擇,那麼您可能需要使用自己的商店。也許Java密鑰庫或SQLciper將是一個不錯的選擇。只要確保數據庫使用用戶輸入的密鑰(如祕密)加密即可。將用戶的祕密與存儲在沙箱或KeyStore中的文件系統上的隨機值結合起來,以獲得最大效果。

如果你不接受用戶的輸入,那麼你點擊「無人值守密鑰存儲」的問題。這是沒有解決方案的問題。例如參見Peter Guttman的Engineering Security

相關問題