我使用KeyStore(Android 9)生成AES密钥,并使用isInsideSecureHardware()方法检查密钥是否isInsideSecureHardware。返回值为False。代码示例可以在这里和这里找到。
public boolean isInsideSecureHardware ()
如果密钥驻留在安全硬件内部(例如,可信执行环境(TEE)或安全元件(SE)),则返回true。此类密钥的密钥材料仅在安全硬件内以明文形式提供,并且不会在其外部公开。
因此,我想进一步确认我的手机设备(华为P20)是否支持TEE。
问题:
如果手机支持TEE,则由KeyStore生成的密钥将自动存储到TEE中吗?我需要在Java中进行任何手动配置吗?我听说只要使用KeyStore.getInstance(),KeyGenerator.getInstance(算法,KeyStore名称),密钥就会自动存储在TEE中。但我不确定这是真的还是假的?
如果Q1的答案是“需要手动配置”,那么它就成为了isInsideSecureHardware()返回False的原因,对吗?如果Q1的答案是“自动”,则忽略Q2。
有没有直接在Java中检查手机是否支持TEE的方法?