[elektro] NFC

r3flow zoltan.nagy at vivor.hu
Mon Dec 21 10:11:42 CET 2015



On 2015.12.17. 21:41, Fekete Róbert wrote:
> egyébként mire lehet használni itthon az nfc-t?


Egyrészt használhatod sima Mifare Classic NFC tagekkel (ami lehet 
öntapadós, vagy műanyag, vagy akármilyen), akármire. Tele van az 
appstore NFC tag appokkal, amik arra jók, hogy különféle eseményeket 
köthetsz egyes NFC tagekhez. Például ha van olyan szokásod, hogy amikor 
hazaérsz mindig ugyanoda teszed le a mobilod, akkor ragassz oda egy NFC 
taget, az appot meg állítsd be úgy, hogy amikor ez a tag megjelenik, 
akkor állítsa át a telefont ne zavarjanak módba vagy hívás csak fehér 
listáról fogadjon, stb. Ugyanez ha beülsz autóba. Manapság terjed az 
NFC-n keresztüli egyérintéses WiFi beállítás átküldése, vagy ugyanígy 
Bluetooth párosítás NFC-n keresztül beavatkozás nélkül (újabb autókban 
is vannak már ilyenek, a kihangosító is párosodik NFC-n keresztül 
érintéssel). Adatcserére is jó két NFC telefon között BT helyett. 
http://nfc-forum.org/nfc-product-showcase/

Az NFC-ről azt kell tudni, hogy az csak olyan mint az RS232 vagy az USB. 
Maga az NFC csak arról szól, hogy tetszőleges biteket visz át A-ból B-be 
(ISO/IEC 18000-3), rövid távolságban vezeték nélkül egy aktív 
(initiator) és egy passzív (target) fél között. Maga az NFC csak ennyi. 
Az, hogy az átvitt bitek milyen alkalmazást takarnak az már mind csak 
hab a tortán de ezen a téren ugyanúgy nincsen semmilyen megkötés, 
ahogyan RS232-nél sem köt meg senki semmiben téged, hogy mit küldesz át 
rajta. Ennek fényében ahhoz, hogy a két oldal értse egymást, ezen az 
alkalmazás szinten is meg kell érteniük egymást. Az NFC fölé számos 
ilyen szabvány született pont úgy, ahogyan az USB fölé is, de ez nem 
jelenti azt, hogy ne alkothatnál magadnak +1 sajátot.

Az NFC alkalmazásokban piacvezető az NXP 
(https://en.wikipedia.org/wiki/MIFARE) főleg a Mifare családjával, az 
NXP weboldalán ezekről teljes dokumentáció tölthető le. pl. veszel 
kínából egy teszőleges fizikai kivitelű (öntapadós, kulcstartós, stb.) 
1K-s Mifare Classic taget, az NXP weboldaláról letöltöd hozzá a doksit 
és játszol vele. 
http://www.nxp.com/documents/application_note/AN1304.pdf  Ez a 
legfadaposabb, legegyszerűbb tag, egyben a legrégebbi is, ezért a 
legelterjedtebb. Emiatt már nem biztonságos, ajtózárat nem érdemes erre 
a típusra építeni, ahhoz inkább valami újabbat kell választani, pl. 
DESFire újabb típusai.

Az NFC-n keresztüli fizetést tehát nem maga az NFC tudja, hanem a fölé 
épített alkalmazás. Ami egyedi. A bankkártyák alkalmazás szintű 
kommunikációjához külön szabványcsalád tartozik, amit a MasterCard, 
Visa, egyes Bankok, stb. fejlesztettek ki közösen. A neve EMV részletek 
itt https://www.emvco.com/about_emv.aspx Eléggé komplex, de egyes cégek 
árulnak C/C++/Java és mindenféle már nyelven megírt EMV könyvtárakat, 
akár ARM7/Cortex-M mikrokontrollerig futtathatóan. A kommunikációnak 
része egy PKI authentikáció, tehát rendes nyílt kulcsú titkosítást 
használ a protokoll.

Ugyanez az EMV használatos a bankkártyák chipes interfészén és vezeték 
nélküli átvitel esetén is. A bankkártya alapja ugyanúgy ISO/IEC 14443A 
ezért lehetséges sima tageket kezelő applikációval alapadatokat 
kiolvasni a bankkártyáról. Amiben eltérés van, azok az APDU parancsok, 
amelyeket az ISO7816 szabványcsalád definiál (ez több szabvány, nem csak 
egy, azaz ISO7816-1, ISO7816-2, ISO7816-3, ISO7816-4, 
http://www.cardwerk.com/smartcards/smartcard_standard_ISO7816-4.aspx). 
Maga az EMV protokoll szerinti tranzakció APDU parancsokon keresztül 
valósul meg. A DESFire kártyák extra funkciói is APDU parancsokkal 
érhetőek el.

Az NFC-n keresztüli tranzakciókat az EMV a "conactless" címszó alatt 
tárgyalja. A MasterCard contactless megoldásának a neve PayPass, a Visa 
contactless megoldásának a neve PayWave, mindkettő NFC-re és EMV-re 
épül. Magyarországon 99%-ban a MC PayPass az elterjedt, a világ más 
részein a Visa PayWave. Simán létezhet lehet olyan terminál ami csak az 
egyiket tudja elfogadni.

Mobiltelefonnal fizetni NFC-n, azaz a Mobiltelefon és az EMV. Az EMV 
szabvány előír egy "Secure Element" nevű dolgot amire sok szigorú 
előírás vonatkozik, ez kell ahhoz, hogy valamilyen eszközből EMV 
certifikált terminál lehessen (azaz kezelhessen bankkártyát, chipen vagy 
NFC-n (contactless) keresztül). Ezt eddig csak úgy tudták megoldani, 
hogy egy speciális SIM kártyára kellett cserélni a SIM-et, ami 
tartalmazta az NFC interfészt és az SE-t. Ilyen SIM kártyával működött 
eddig pl. a Mastercard Mobiltárca nevű alkalmazás, ilyen SIM kártyával 
nem túl régi (>= Android 4.2) okostelefonnal lehet NFC-n keresztül 
érintéssel fizetni, függetlenül attól, hogy maga a telefon tartalmaz-e 
NFC-t. https://www.otpbank.hu/mobiltarca/

Az Android 4.4-ben azonban már megjelent beépített funkcióként egy 
HCE-nek (Host Card Emulation) nevezett megoldás, de ez még nagyon új 
témakör. Ezzel kikerülhető lesz az SE helyi használata, erre a HCE 
API-ra épülő Android alkalmazások lesznek majd képesek NFC-n keresztüli 
fizetést lebonyolítani. Jelenleg még nem elterjedt a HCE és még nincs 
túl sok ilyen app. Befogadó oldalról meg eleve nem tudok, csak annyit, 
hogy a MasterCard már készül egy ilyen HCE-re épülő appal.

https://www.linkedin.com/pulse/tokenes%C3%ADt%C3%A9s-mit-jelent-az-emv-nfc-hce-mst-andrea-egertz

http://www.sequent.com/secure-elements-vs-cloud-based-hce-secure-nfc-mobile-payments/

http://www.chyp.com/wp-content/uploads/2015/01/HCE-and-SIM-Secure-Element.pdf

És akkor végül a "másolás" témaköre. Simán lemásolni a bankkártyát tehát 
nem lehet a kérdés/válasz+PKI miatt, de van más mód. Kell hozzá 2db 
okostelefon közöttük WiFi kapcsolattal, egyik ott áll a POS terminálnál 
a másik meg a 4/6 villamoson. A villamoson keresni kell valakit aki 
farzsebben hordja az NFC kártyát, közelíteni a telefont, egyúttal a 
plázában a POS-hoz a másikat, a két telefon WiFi-n keresztül proxy-t 
játszik a POS és a kártya között NFC-n, és kész a vásárlás. :) 
https://www.defcon.org/images/defcon-20/dc-20-presentations/Lee/DEFCON-20-Lee-NFC-Hacking.pdf

Ez ellen lehet védekezni mert a 14443A úgy van összerakva, hogy az NFC 
nem működik, ha az initiator terében egynél több tartget van. Maga a 
protokoll ilyen. Tehát 2db NFC kártyát kell együtt tárolni zsebben, 
pénztárcában. Nem kell 2db bankkártya, az egyik lehet bármilyen 14443A 
tag, akármilyen Mifare Classic az aliexpresseről.

Üdv,
Z.



More information about the Elektro mailing list