Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why doesn't Android HCE support Mifare Classic type?

Mifare Classic is the most used cards and I can't understand why HCE (Host-based Card Emulation) only supports ISO 14443-4, but not Mifare Classic type.

Because NXP stops them from using their proprietary protocols and algorithms? Or because they didn’t implement Mifare Classic in Android OS level?

Any comments will be very appreciated.

like image 525
Yongkil Kwon Avatar asked Dec 10 '14 08:12

Yongkil Kwon


People also ask

Can I use my phone as mifare card?

‍Cloning Mifare NFC cards with a mobile phone:The easiest way to clone Mifare NFC Classic 1K Cards is by using an Android smartphone with NFC capabilities. That's right, your cellphone can be used to compromise the security of a company if they are using these types of cards (RFID security system).

How does HCE work in Android?

HCE is a technology built into the device operating system which allows a mobile device to emulate a payment (or other) card, enabling users to make cloud-based near field communication (NFC) mobile payments and other NFC 'transactions'.

Is Mifare Classic NFC?

In either case, NfcA will also be enumerated on the tag, because all MIFARE Classic tags are also NfcA . Note: Methods that perform I/O operations require the Manifest. permission. NFC permission.

Can NFC read mifare card?

NFC has been widely used on Android Pay, Apple Pay and Device Connection. With NFC on Android Phone, it's even easy to read datas in the mifare card, such as Metro Card, RFID Parking card and etc.


1 Answers

Short answer: Because Google decided to support only ISO/IEC 7816-4 over ISO-DEP (ISO/IEC 14443-4).

Speculations on why they decided that way:

  • First of all, ISO/IEC 7816-4 over ISO-DEP is the highes protocol layer that could be used to route communication to the application processor through NCI (NFC Controller Interface). Routing lower protocol layers is possible (read: "the NCI protocol supports this"), though there is no need for the NFC controller to even support routing of lower layer communication.

  • ISO/IEC 7816-4 over ISO-DEP permits routing on a per-application basis. I.e. the reader selects a specific application and only then, the NFC controller decides if the communication is passed to a secure element or to the application processor. The application processor can perform a similar routing mechanism to route communication to a specific app (that's what's done on Android now).

  • Using lower protocol layers (e.g. ISO/IEC 14443-3) there is no way of doing per-application routing. Instead all communication on that level would be routed to either a secure element or to the application processor. If routed to the application processor, then the operating system has no means to choose between multiple apps. Instead only one app could be registered for that type of communication. However, considering the multitude of app developers for a platform like Android, permitting only a single app would be rather inhibiting development.

  • MIFARE Classic is proprietary technology from NXP. I don't expect them to license a pure software implementation (on the application processor/Android system) of the MIFARE Classic protocol/tag platform.

  • MIFARE Classic uses non-standard framing for authentication commands, so it might be difficult to emulate over the NCI Frame RF interface (though I'm not sufficiently familiar with that protocol to confirm if there's an actual limitation that prevents MF Classic emulation).

like image 84
Michael Roland Avatar answered Sep 17 '22 12:09

Michael Roland