JavaCard可以模拟MIFARE Ultralight或NTAG NFC标签吗?

jim*_*jim 3 apdu nfc javacard mifare contactless-smartcard

我想写一个响应NFC读卡器的Java Card小程序,好像它是一个普通的MIFARE Ultralight或NTAG NFC标签.

我知道MIFARE协议是专有的,可能会有点困难,但我必须能够实现NTAG协议的仿真.

如果我匹配NTAG规范并响应正确的APDU,那么我肯定可以模拟NTAG吗?

更新为原始问题

我想我错误地问了原来的问题.我不打算模仿每个sé的特定标签.我实际上要做的是使用Java Card驱动的卡,以便能够使用新的Core NFC API 向智能手机(如Android或Apple iPhone)提供动态信息.请注意,这个API据说支持1到5类型的标签.我希望能够编写一个可以在非接触式智能卡上运行的Java Card小程序,并允许(单工)与智能手机进行通信.

我想我的问题是:如何确定来自Core NFC API的APDU流量,以便我可以编写一个适当响应的applet?

Mic*_*and 5

不,那是不可能的.MIFARE Ultralight,NTAG和其他NFC Forum Type 2标签在ISO/IEC 14443-3A(也称为NFC-A)中定义的防冲突和成帧协议之上运行.

Java Card小程序(通常)使用APDU命令(ISO/IEC 7816-4中定义的协议层)进行通信.Java Card运行时环境仅将APDU命令传递给applet.非接触式智能卡在ISO-DEP半双工传输协议(ISO/IEC 14443-4中规定)之上交换这些APDU命令.该传输协议又位于ISO/IEC 14443-3(也称为NFC-A和NFC-B)中定义的成帧协议之一之上.

+-------------------------+  +-------------------------+
| MIFARE Ultralight/NTAG  |  | Contactless Java Card   |
+-------------------------+  +-------------------------+

                             +-------------------------+
                             | Commands: APDUs         |
                             | (ISO/IEC 7816-4)        |
+-------------------------+  +-------------------------+
| Commands: Proprietary   |  | ISO-DEP                 |
| or NFC Forum Type 2ary  |  | (ISO/IEC 14443-4)       |
+-------------------------+  +-------------------------+
| Framing: NFC-A          |  | Framing: NFC-A or NFC-B |
| (ISO/IEC 14443-3 A)     |  | (ISO/IEC 14443-3 A/B)   |
+-------------------------+  +-------------------------+
|           ...           |  |          ...            |
+-------------------------+  +-------------------------+

因此,虽然两种技术共享公共协议层,但Java Card小程序只能交换APDU命令,并且无法直接控制大部分较低协议层.

编辑(根据ErikM的评论):

虽然不可能在Java Card上模拟NFC论坛类型2标签(除非您的智能卡平台上有专用硬件支持---我不认为这当前存在.),您可以轻松模拟NFC论坛类型任何Java Card非接触式智能卡上的4个标签.因此,如果您的目标是模拟向智能手机提供NDEF消息的NFC标签,那么您可以采用这种方法.甚至有这样的applet的开源实现,例如