我正在努力更好地了解Android手机上的安全元素如何在卡模拟模式下与阅读器进行交互。对以下问题的任何见解都是有用的。
理论上(基于硬件设计),在与读卡器通信时是否必须通过SE?如果我对发送私人数据不感兴趣,是否可以直接“收发”给读者?如果是的话,那将如何运作?
如果您确实需要通过SE,从概念上讲,它是如何工作的?例如,假设读者发送SELECT AID命令...推测,android主机查询SE以获取SELECT AID命令。如果主机想要响应SELECT AID命令(假设动态响应),主机是否通过SE发回响应?我已经阅读了很多关于查询SE以获取信息(例如ISO 7816-4),但还没有理解这一点。你如何向读者发送回复?
答案 0 :(得分:3)
这是针对当前的NFC芯片,下一代更灵活:
从NFC芯片的角度来看,该芯片有两个不同的主机,即Secure Element和Android主机。
NFC芯片还知道哪个主机已经打开NFC芯片上的哪种操作模式(例如,点对点,读卡器模式,卡仿真模式等)。
属于一种操作模式的请求和事件将仅发送到已打开操作模式的主机。
对于安全元素,最常见的“移动支付”配置是SE在NFC芯片中打开卡片仿真,并且Android主机打开读卡器模式和点对点。
如果NFC芯片检测到外部读卡器,则所有通信都将仅发送到SE。 Android主机不会看到SE和外部阅读器之间交换的任何数据。然而,Android主机可能会看到在天线上检测到外部RF场,因此android知道发生了什么事情。
SE上运行的软件通常由管理多个应用程序的小型操作系统组成,解析SELECT AID命令并将请求转发给与AID匹配的任何应用程序。
SE上运行的应用程序可能稍后决定将数据发送到Android主机。这些事件称为事务事件,是单向通信。 Android主机无法回复从SE发送的交易事件。
Android主机也无法通过NFC芯片向SE发送数据。如果它想直接与SE通信,例如要安装新的应用程序,它必须使用另一个物理连接,通常是sim卡引脚或micro-sd引脚。
完整起见:NFC芯片内置了嵌入式安全元件。这些没有任何物理连接,NFC芯片允许Android主机和SE主机之间的双向通信。
答案 1 :(得分:0)
理论上,与读者沟通时没有必要“通过SE”。如果NFC芯片具有生成卡的RF信号的能力(一些NFC芯片可以),则电话可以直接向读取器发送响应。当然,您需要一个API才能从您的应用程序访问此功能。 Android ICS没有这样的API(相比之下,BlackBerry OS确实有一个)。