5

我需要在 Android 9 中支持安全元素和 StrongBox 的 Android 手机列表。我在哪里或如何找到它?

我用三星 Galaxy S9 和 AVD Google Pixle XL API 28 尝试了下面的代码

KeyPairGenerator kpg = null;
kpg = KeyPairGenerator.getInstance(
KeyProperties.KEY_ALGORITHM_RSA, "AndroidKeyStore");
kpg.initialize(new KeyGenParameterSpec.Builder("keystore1", KeyProperties.PURPOSE_SIGN)
                    .setCertificateSerialNumber(BigInteger.valueOf(1L))
                    .setCertificateSubject(new X500Principal("CN=MyCompany"))
                    .setIsStrongBoxBacked(true) /* Enable StrongBox */
                    .setInvalidatedByBiometricEnrollment(true)
                    .build());
            KeyPair kp = kpg.generateKeyPair();
            KeyFactory factory = KeyFactory.getInstance(KeyProperties.KEY_ALGORITHM_EC, "AndroidKeyStore");
KeyInfo keyInfo = factory.getKeySpec(kp.getPrivate(), KeyInfo.class);
keyInfo.isInsideSecureHardware();

它抛出以下异常:

android.security.keystore.StrongBoxUnavailableException:无法生成密钥对

4

2 回答 2

7

目前很少有设备支持 StrongBox,不幸的是,您可以在网上找到的信息充其量是稀缺的。

虽然你是对的,根据运行 Android 9.0 的 Android 设备应该支持 Strongbox,Strongbox 是一个单独的硬件组件,我认为只有启动 Android 9.0 的设备才有机会拥有硬件。

GrapheneOS/AttestationSamples存储库,它收集有关多个设备的安全信息。

看一看,只有 Google 的 Pixel 3 设备支持保险箱。您可以在文件夹中看到 Strongbox 证明证书。

于 2019-07-10T08:50:31.370 回答
3

有一个名为 Android Device Security Database 的研究项目试图解决 Android 安全属性信息不易获得的问题。他们在实验室中测试手机并将收集到的属性保存在他们的数据库中。您可以使用以下链接过滤 Strongbox 支持:

https://www.android-device-security.org/client/datatable?sba=true

于 2021-01-18T09:14:30.830 回答