Hi Michael, Im quite new to NFC, but I'm just wondering if emulation could possibly be done by bypassing the SE altogether and instead say simulating a peer to peer mode in order to create a tunnel through which an app could perform secure operations etc?
regards, Harry On Monday, April 4, 2011 9:37:52 PM UTC+9:30, Michael Roland wrote: > > Hallo JMC, > > I think there is a big misunderstanding out there of what card emulation > is (and what it is not!). > > First of all, NFC has three different communication modes: > * Reader/writer mode, > * Peer-to-peer mode, and > * Card-emulation mode > > *Reader/writer mode* is used to access NFC tag (i.e. tags that comply to > the tag formats specified by the NFC Forum and contain NDEF data). > Moreover, this modes provides compatibility to existing RFID (13.56MHz, > inductive, proximity coupling) card infrastructures (i.e. you can > interact with contactless smart (and memory) cards, like MIFARE, > ePassports, ...) > The Nexus S supports reader/writer mode for 3 (4) contactless standards: > - ISO/IEC 14443 Type A (e.g. MIFARE) and Type B > - JIS X 6319-4 (that's FeliCa) > - ISO/IEC 15693 (that's vicinity coupling cards, which is not NFC > but uses a similar communication technique also in 13.56 MHz) > > *Peer-to-peer mode* is used for direct communication between two NFC > devices (e.g. two mobile phones, but an NFC device can be pretty much > anything). This mode lifts the restrictions imposed by an "active reader > -- passive card" system. Thus, in a classic RFID/smart card system there > is a reader device that starts and controls the communication with one > or multiple cards, and cards that process commands received by reader. > Whereas, in a peer-to-peer system any device can start (and control) the > communication with any other device. > Peer-to-peer mode is used to exchange any data between NFC devices. This > data can be as simple as NDEF messages, but it's even possible to tunnel > other network protocols like IP over a peer-to-peer link. > The Nexus S supports the peer-to-peer protocol (NFC-DEP, ISO/IEC 18092) > with LLCP (NFC Logical Link Control Protocol) on top. With the current > API level only a simple exchange of NDEF messages (with Android's > proprietary protocol on top of LLCP) is possible. > > *Card-emulation mode* is used to emulate a contactless smart card with > an NFC device. This mode provides compatibility to existing RFID > (13.56MHz, inductive, proximity coupling) reader infrastructures. An NFC > device in card-emulation mode acts the same as any "real" contactless > smart card. > With card emulation it is important to notice the difference between a > _contactless smart card_ and an _NFC tag_: > > - An NFC tag is a contactless transponder that has a certain memory > layout and contains standardized data elements (NDEF messages). > Four such layouts are defined by the NFC Forum (tag types 1 to 4). > Tag type 1 is based on Innovision's Jewel tags, tag type 2 is > based on NXP's MIFARE Ultralight. So I would not consider these > two "smart" cards (they are more like simple memory cards). Tag > type 3 is based on FeliCa and tag type 4 is based on the ISO/IEC > 7816-4 smart card standard. Therefore, the latter certainly are > smart cards. Yet, in this case an NFC tag is a smart card with a > specific file layout (i.e. a card that contains the "NDEF > application"). > Besides the standardized NFC tag formats, vendors like NXP have > created guidelines for using their contactless card technologies > (e.g. MIFARE Classic) as NFC tags. > An NFC tag is only data storage and doesn't have (may have but > not use) special security features like data encryption, ... > > - A smart card can be much more than an NFC tag. A smart card can > contain, for instance, a credit/debit card application, a > ticketing application for public transport ... > These applications have even existed before NFC. They DO NOT use > the NDEF format to exchange data. Instead they use their own > protocols (e.g. EMV for payment cards). Often they use special > security features of smart cards (high security execution > environment, highly secure data storage, cryptographic > processing power ...) > > So the card-emulation mode allows the emulation of a contactless msart > card (and not an NFC tag, although the smart card could *possibly* be > used as NFC tag). As applications like credit cards typically have high > security requirements, card emulation is not handled by the NFC device > itself (i.e. the application processor of an NFC-enabled mobile phone). > Instead, the NFC device has a dedicated hardware component (the > so-called Secure Element) that handles all the card emulation. (*) > > (*) This is not entirely true, as some NFC controllers (like the > PN544) would theoretically allow the emulation of ISO/IEC > 14443-4 contactelss smart cards from the application processor. > Yet, I don't know of any NFC phone that makes this functionality > available to the user and I rather doubt that this will become > available on the Nexus S. > > The Secure Element (SE) is typically a smart card itself. But instead of > a normal contact/contactless smart card interface it has a connection to > the NFC controller, which connects it to the NFC antenna. > > The Nexus S has an integrated SE (a SmartMX combined into the same > package as the PN544 NFC controller). This SmartMX emulates a ISO/IEC > 14443 (Type A) smart card and a MIFARE Classic card. > In addition to this integrated SE it is possible to use a special UICC > (also known as SIM card) that supports the Single Wire Protocol (which > is an interface designed for the communiction between the NFC controller > and a UICC) as the SE. > > So the Nexus S will definitly support the emulation of contactless smart > cards (with a bit of tweaking the Android sourcesthis is already > possible to some extent). Yet, the SE is a protected environmentwhere > you can't simply install your application. Instead, you have to ask the > owner for permission to install your application. The "owner is not the > user who bought the device but instead the device's vendor. So, for the > internal SE of the Nexus S it is Samsung/Google(?) who decide who gets > access to the SE. For the UICC it is your telco who decides this. > > As a consequence an "NDEF application" will most likely not make it into > the SE. So you won't be able to use your phone as *NFC tag*. But there > is not much use for this anyways as a device that understands NDEF would > most likely be an NFC device that also supports peer-to-peer mode. > > To summarize this, card emulation will certainly become available for > the applications you mentioned. But it will not be used to transport > *NDEF data* between devices. > > br, > Michael > > On 02.04.2011 22:45 JMC114 wrote: > > Hey Michael, > > > > Why - may I ask - do you think this possibility will not be made > > available to android phones? It seems to me it's a rather important > > part of NFC. The part where it makes phones compatible to existing > > infrastructures based on RFID (without changing those > > infrastructures), namely those in public transport, building access, > > charge points for electric driving, etc. > > > > I - for one - believe the general public's adoption of NFC technology > > strongly depends on this. > > > > Thoughts? > > > > Gr, > > JMC > > > > On Mar 23, 11:03 am, Michael Roland <mi.rol...@gmail.com> wrote: > >> Hallo, > >> > >> the current SDK does not allow you to use card emulation. > >> > >> Anyways, with card *emulation* you will not be able to simulate an > >> *NFC tag* (i.e. a tag where you store simple NDEF messages). Card > >> emulation mode allows to emulate a contactless smartcard (typically > >> used for applications with high security requirements, like credit > >> cards). While such a card (emulated or real) can be used to carry NDEF > >> messages, I really doubt that this possibility will be made available > >> for the Android phones. > >> > >> br, > >> Michael > >> > >> On Mar 23, 5:14 am, Zhihong GUO <gzhh...@gmail.com> wrote: > >> > >> > >> > >> > >> > >> > >> > >>> Hi all, > >> > >>> about NFC in Gingerbread, is it possible to simulate a tag by the SDK? > I > >>> have found the support for tag read/write and P2P push message, but > haven't > >>> found any support on card simulate. > >> > >>> thanks > >> > >>> James > > > > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en