自 Kitkat 推出以来,Android 声称主机卡仿真不需要 Secure Element。如果不需要,那么任何人如何在 Android 中存储任何卡详细信息?
如果我们的 android 应用程序可以访问 Secure Element,那么 developer.android.com 还说要引用 OffHostApdu 服务 - 谁能解释一下
此外,安全元件数据的内存是否有任何限制?
1 回答
自 Kitkat 推出以来,Android 声称主机卡仿真不需要 Secure Element。如果不需要,那么任何人如何在 Android 中存储任何卡详细信息?
使用 Android Kitkat,您有两种可能的方式来进行卡片模拟:
基于主机的卡仿真。在此仿真中,您编写一个 Android 服务来模拟响应 ISO7816-4 APDU 命令的卡。该服务能够像任何其他 Android 服务或意图一样存储数据。
关闭主机卡仿真。这里卡仿真代码位于安全元件中。一般来说,这些卡模拟不能由用户实施,而是由您的电话制造商、电话提供商或银行实施。普通用户无法访问,因为在安全元件上安装小程序的密钥是保密的。安全元件无法访问主机来存储数据,但它可以使用安全元件本身提供的非易失性存储器。
每个卡仿真都必须使用 AID(应用程序标识符)进行注册。这些 AID 可以注册为基于主机的卡仿真或非主机卡仿真。
如果 NFC 阅读器开始与您的手机通话,它将发送一个 SELECT APPLICATION 命令,其中包含要与之通话的 AID。一旦 NFC 芯片收到这样的命令,它将检查其注册卡模拟的内部注册表,并将为安全元件注册的所有内容路由到安全元件。所有其他通信都路由到主机。主机将检查它自己的可用主机外卡仿真注册表,如果找到匹配的 AID,则启动/激活主机外卡仿真服务。
此外,安全元件数据的内存是否有任何限制?
是的,当然有限制。如果没有限制,我们可以忘记硬盘和昂贵的存储,购买一个安全元件并将世界上的所有数据存储在上面:-)
安全元件上的确切可用内存量取决于手机中内置的安全元件类型。不同的品牌和型号具有不同的内存大小。如果安全元件上预先安装了小程序,则内存也会受到限制。您通常不必担心这一点,因为无论如何您都不太可能获得在安全元件上安装小程序的密钥。
一般来说,从 64kb 到数 GB 的任何存储都是可能的。