在较新版本的Android中(我猜从4.2开始),有一种叫做“硬件支持”和“仅限软件”的选项。正如谷歌所设想的那样:
Android现在还支持KeyChain凭据的硬件支持存储,通过使密钥不可提取而提供更多的安全性。也就是说,一旦密钥在硬件支持的密钥存储区(Secure Element,TPM或TrustZone)中,它们就可以用于加密操作,但私钥材料不能导出。即使是操作系统内核也无法访问这些关键材料。虽然并非所有Android驱动设备都支持硬件存储,但您可以在运行时检查硬件支持存储是否可用。
眼镜蛇是我的
我无法理解的是: GalaxyNexus和Nexus 7都有一个带有安全元素的NFC芯片,但是它的存储类型是“仅限于软件”。Nexus 4有一个NFC安全元素,并且是“硬件支持的”,而Nexus 7 (2013)和Nexus 5没有NFC安全元素,但仍然是“硬件支持的”。我可以在Settings-App中手动检查,但是有方法在我的应用程序中检查这个吗?
正如CommonsWare所提到的,我应该提供链接:安全元素与存储类型相关的第一个信息是这里:另一个有用的信息来源是内伦科夫的博客。
发布于 2013-11-27 09:43:45
你真的读过博客吗?:)目前“硬件支持”指的是所有发布的设备的TrustZone (TEE)-backed。出于政治原因,使用嵌入式安全元素是相当棘手的,而且目前的Android设备都没有TMP。这就留下了基于TrustZone的TEE实现。顺便说一句,Galaxy也有一个,但是在发布版本中驱动程序是禁用的。它从4.1开始就一直在那里。
要从应用程序中进行检查,请使用KeyChain.isBoundKeyAlgorithm(String algorithm)。
https://stackoverflow.com/questions/19841662
复制相似问题