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

时间:2017-06-26 13:39:55

标签: nfc javacard mifare apdu 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?

2 个答案:

答案 0 :(得分:5)

不,那是不可能的。 MIFARE Ultralight,NTAG和其他NFC论坛类型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's remark):

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

答案 1 :(得分:2)

虽然NTAG 2xx不可行,但正如Michael Roland上面所解释的那样,人们可以编写一个applet acc。到T4T。不确定是否值得努力,因为NTAG 2xx以及DESFire或NTAG 413 DNA都可能更便宜。当然,作为技术挑战,它可能值得做。