我http://developer.android.com/training/articles/keystore.html 阅读Android文档,但我错过了一些细节...Android Keystore系统如何安全?
如果应用程序生成密钥使用AndroidKeyStore(对称或不对称)。
我们可以从该密钥库中提取密钥吗?
另一个应用程序(AppB)可以访问AppA生成的密钥吗?
在这种情况下我们可能会失去钥匙?设备工厂复位?
谢谢。
我http://developer.android.com/training/articles/keystore.html 阅读Android文档,但我错过了一些细节...Android Keystore系统如何安全?
如果应用程序生成密钥使用AndroidKeyStore(对称或不对称)。
我们可以从该密钥库中提取密钥吗?
另一个应用程序(AppB)可以访问AppA生成的密钥吗?
在这种情况下我们可能会失去钥匙?设备工厂复位?
谢谢。
您可以使用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)你应该保持你的密钥仓库安全,并且在任何情况下都不要共享它2)密钥仓库中的密钥需要一个密码,尽管我猜想任何事情都是可能的,所以看点1 3)不确定我理解这个问题,但通常我会说不,至少不是私钥(用于签署应用程序)4)这一个我不确定我会得到,只要你有密钥库,你可以使用它创建一个签名的应用程序,但再次。它不应该存储在设备或类似的 – cYrixmorten
感谢您的答案,但我没有谈论我们用来签署应用程序的密钥库。我向该问题添加了Android文档。 –
好吧然后我误解了:-) nvm – cYrixmorten