M4M - Mifare DESFire EV1:需要将哪个 Mifare AID 添加到 NFC 路由 table 以 off-host 路由到 UICC 上的 Mifare DESFire 虚拟卡?

M4M - Mifare DESFire EV1: Which Mifare AID needs to be added to NFC routing table for off-host routing to a Mifare DESFire virtual card on UICC?

在几个 Android 设备上,Mifare DESFire 通信被路由到 HCE 而不是 off-host (UICC)。

从与 off-host 安全元素的基于 OMAPI 的通信中,我已经学会了如何将 AID 添加到 Android off-host 路由 table,这样我就可以 select 他们在 UICC 上。 (感谢@MichaelRoland)

我目前的问题:我的 UICC 上确实有一个虚拟的 Mifare DESfire 卡。现在有些设备不会将我的本地封装 Mifare 命令路由到 UICC,而且我仍然没有开关来更改默认路由。所以我想在我的 off-host 路由 table 中有另一个条目,但我不知道要使用哪个 AID。

我们的 MIFARE DESFire 测试应用程序有一个 PICC 应用程序 AID F01010。这是用于在 CLT 界面上 select 应用程序的 AID,但是不能输入到 Android off-host 路由 table。此外,我们还有两个与 MIFARE DESFire 应用程序相关的附加 AID。这是虚拟卡管理员 AID (A0000003964D344D1400000000000000) 和服务管理员 AID (A0000003964D344D2400000000000000)。

但是我必须将哪个 AID 插入路由 table?

你必须遵循 ISO7816-5 link,如果你想以广泛的方式部署你的应用程序,以避免使用相同 AID 的应用程序之间发生冲突。第二种方法是使用始终以 0x0F 开头的专有非注册 AID。

示例:0x0F、0x11、0x22、0x33、0x44

Android(可能还有 NFC 控制器本身)目前仅支持基于 ISO/IEC 7816-4 AIDs/DF 名称的路由配置。您不能为本机 DESFire AID(即那些 3 字节 AID)或所有本机包装通信添加路由。

你能做什么:

  • 在应用程序创建期间为您的 DESFire 应用程序分配一个 ISO/IEC 716-4 DF 名称。这个 DF 名称是一个 AID,可以在 Android 脱离主机路由配置中指定。但是,您需要使用 DESFire ISO 命令集(并专门向 select 您的 DESFire 应用程序发出 SELECT FILE(按 DF 名称)命令)来触发基于 AID 的路由。

  • DESFire EV1 本身具有 AID/DF 名称 D2 76 00 00 85 01 00。如果您的 reader selects 此 AID(使用 SELECT FILE(按 DF 名称)命令),DESFire 卡将切换到 ISO 框架(允许 ISO 命令和包装的本机命令)并且select 它的主文件。您可以使用 Android 注册此 AID,以将所有 DESFire 通信路由到 UICC。但是,每个 reader 都需要通过发送 SELECT FILE 命令来启动 DESFire 通信。