2016-03-03 85 views
13

http://developer.android.com/training/articles/keystore.html 閱讀Android文檔,但我錯過了一些細節...Android Keystore系統如何安全?

如果應用程序生成密鑰使用AndroidKeyStore(對稱或不對稱)。

我們可以從該密鑰庫中提取密鑰嗎?

另一個應用程序(AppB)可以訪問AppA生成的密鑰嗎?

在這種情況下我們可能會失去鑰匙?設備工廠復位?

謝謝。

+0

1)你應該保持你的密鑰倉庫安全,並且在任何情況下都不要共享它2)密鑰倉庫中的密鑰需要一個密碼,儘管我猜想任何事情都是可能的,所以看點1 3)不確定我理解這個問題,但通常我會說不,至少不是私鑰(用於簽署應用程序)4)這一個我不確定我會得到,只要你有密鑰庫,你可以使用它創建一個簽名的應用程序,但再次。它不應該存儲在設備或類似的 – cYrixmorten

+0

感謝您的答案,但我沒有談論我們用來簽署應用程序的密鑰庫。我向該問題添加了Android文檔。 –

+0

好吧然後我誤解了:-) nvm – cYrixmorten

回答

15

您可以使用Android KeyStore Provider或創建一個正常的KeyStore文件。

  • 密鑰庫(API 1):你必須創建一個密鑰存儲文件,你還必須管理祕密訪問它。這些祕密非常敏感,難以隱藏給攻擊者。我個人不推薦這種選擇。

  • Android KeyStore Provider(API 18):使用這個API,您將委派所有沉重的東西來訪問它的操作系統。你不需要使用任何密碼,因爲操作系統本身將存儲它,它來源於你的鎖屏密碼,密碼,模式和其他變量。如果設備包含嵌入式安全元素,並將存儲類型設置爲硬件支持的而不僅僅是軟件支持的,它將在那裏存儲祕密。這是使用安全硬件來存儲任何類型的祕密的最安全的方式。即使用戶已經植入了手機,這甚至可以保證機密的安全。

我們可以提取密鑰庫的鑰匙?

與他們兩個你的應用程序可以得到PrivateKey並使用它,如果這是你的意思。

另一個應用程序(AppB)可以訪問由AppA生成的密鑰嗎?

使用KeyStore提供程序,每個應用程序只能訪問其KeyStore實例或別名。使用普通的KeyStore,如果另一個應用程序可以訪問該文件,它可以嘗試對其進行攻擊。

在這種情況下我們可能會失去鑰匙?設備工廠復位?

刪除應用程序將清除應用程序的KeyStore提供程序實例。但是,由於Android中的a nasty bug(Android 5之前更常見),如果用戶將鎖定屏幕模式更改爲密碼或刪除該模式,則KeyStore將被刪除。當用戶從android設置執行「清除憑據」時也會發生同樣的情況。使用經典的KeyStore,您可以將其存儲在外部存儲器中,並在設備出廠重置後保存。但是,它的安全性還不如提供者。

我在某些方面可能是錯的,但這是我學到的東西,我只是分享了我的經驗。希望這對你有所幫助。

+1

謝謝,這對我真的很有幫助。 – Herman

+0

@Herman:您是否使用Android KeyStore提供程序來存儲您的密鑰? – j10