android - 有没有办法仅在使用 Android API 级别 28 上的 KeyStore 的软件中存储加密密钥?
问题描述
我目前正在比较 Android 上不同的密钥存储解决方案的性能,因此希望仅在软件中强制生成和存储 RSA 密钥对。有没有办法在运行 Android API 级别 28 或更高版本的设备上使用 Android 密钥库?
我尝试使用其他提供商,例如 BC,但此 API 级别不再支持它们。由于硬件性能差异,无法使用旧设备。
我使用以下代码在 TEE 和 .setIsStrongBoxSet(true) 中生成密钥对以使用嵌入式安全元件:
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(
keyProperties, "AndroidKeyStore");
keyPairGenerator.initialize(
new KeyGenParameterSpec.Builder(
keyAlias,
keyUsage).setDigests(KeyProperties.DIGEST_SHA256,
KeyProperties.DIGEST_SHA512)
.setEncryptionPaddings(
KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1)
.setKeySize(2048)
.setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PKCS1)
.setIsStrongBoxBacked(false)
.build());
keyPairTeeRSA = keyPairGenerator.generateKeyPair();
解决方案
推荐阅读
- spring - 将请求方法与 Kotlin DSL 匹配以实现 Spring Security
- sql-server - SQL Server 如何决定使用哪个“where”语句?
- php - 为什么在访问 Heroku 上部署的 Slim 应用程序时出现 404 Not Found 错误?
- javascript - 我只想从 HTML/JS 页面打印特定的 div 内容和电子邮件结果?
- file - 使用 Julia 语言处理文件
- python - 有没有一种很好的方法来测试文件的部分写入失败?
- java - 有没有像 Iterator 这样的东西,但有像 Streams 这样的功能?
- azure - Azure Function 插槽已预热,但仍遇到冷启动
- javascript - 错误:轴 #0 的数据列不能是字符串类型
- json - 比较 Firebase 实时数据库规则的子值 (.val) 时,比较的范围有多大?