问题
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.
回答1:
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).
来源:https://stackoverflow.com/questions/27396659/why-doesnt-android-hce-support-mifare-classic-type