我想知道最新一代的Android设备是否以某种方式(除了通过NFC接口,这是SE的#1应用程序)提供应用程序访问其安全元素的方式,最好是通过实现密钥库使用他们的安全元件的服务?
我的用例是以难以复制到另一台设备或模拟的方式存储和使用加密密钥(例如,HMAC 密钥,设备独有)。如果没有一些硬件支持(我只将安全元素视为硬件基础),看起来我注定要失败。
我想知道最新一代的Android设备是否以某种方式(除了通过NFC接口,这是SE的#1应用程序)提供应用程序访问其安全元素的方式,最好是通过实现密钥库使用他们的安全元件的服务?
我的用例是以难以复制到另一台设备或模拟的方式存储和使用加密密钥(例如,HMAC 密钥,设备独有)。如果没有一些硬件支持(我只将安全元素视为硬件基础),看起来我注定要失败。
从Android 4.3 开始,钥匙串中的材料可以被标记为存储在“硬件支持的密钥库”中。这可以提供安全元素访问,但硬件支持也可以通过不离开主 CPU 的 TrustZone 来确保。无法查询支持密钥库的硬件类型(嵌入式 SE、可移动 SE、TZ 等)。API 函数名称isBoundKeyAlgorithm
可能是限定此属性的意图的更精确的方式。
即使 SE 存在,也不能保证应用程序可以使用 SE。从技术上讲,大多数 Android 手机长期以来都可以使用(可移动的)安全元素 SIM 卡,但这不适用于应用程序。带有 NFC 的手机有更好的机会。
在较旧的 Android 版本中,可以通过Seek for Android访问 SE(如果有),但这仅适用于少数开发设备,因此除非您可以强加特定的手机型号和自定义图像,否则它不是一个选项。