Android Keystore系统保护关键材料免受未经授权的使用。首先,Android通过防止从应用程序和整个Android设备中提取关键材料来减少对Android设备之外的关键材料的未经授权使用。其次,Android KeyStore通过让应用程序指定其密钥的授权使用,然后在应用程序进程之外强制执行这些限制,从而减少了安卓设备上未经授权的关键材料的使用。
我不能完全理解它。
防止应用过程中关键材料的提取
发布于 2017-06-10 10:05:18
什么意思?设备中的任何应用程序都不能从存储中提取密钥?
在你所链接的文件中,“防止提取”的意思是“防止对手提取关键材料”。这并不意味着您自己的应用程序不能使用密钥库中的密钥来加密/解密数据。这意味着您将永远无法从Android KeyStore中获取类似密钥文件的内容,将其复制到其他地方,并重用它。
此外,假设您需要在应用程序上的客户端和服务器之间发送加密消息。您天真地生成一个密钥,并将文件(“关键材料”)存储在应用程序的内部存储空间中。对手获得对该设备的根访问权限。他们现在可以访问您的密钥文件并使用您的密钥。即使您使用密码作为密钥,如果您的应用程序进程被破坏,那是因为对手可以访问密钥材料(即密钥文件)仍然存在危险。
文档中提到的优点与这些错误正好相反。Android Keystore密码转换发生在应用程序进程之外(作为系统进程),并且可能绑定到安全硬件。没有关键材料(关键文件等)公开给对手以某种方式重用(例如解密消息或签名电子邮件)。
注意,如果希望将密钥用于多个应用程序,则可能需要KeyChain API而不是密钥存储库。
发布于 2022-02-11 11:26:56
我还要指出,如果从privateKey.getEncoded()检索privateKey,那么AndroidKeyStore方法将返回null。
因此,考虑到下面的代码:
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
KeyStore.Entry keyStoreEntry = keyStore.getEntry(alias, null);
PrivateKey privateKey = ((KeyStore.PrivateKeyEntry)
keyStoreEntry).getPrivateKey();
byte[] privateKeyData = privateKey.getEncoded();privateKeyData将是null。这就是它的意思
Android Keystore系统保护关键材料不被未经授权使用
https://stackoverflow.com/questions/44255922
复制相似问题