M ASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
}
w A| y < 5 4 23 1 0 / -. , )+ ( %&' $ # !"
Æ
NFC komunikace ve Windows Phone ˇ B AKALÁ RSKÁ PRÁCE
Adam Žvak
Brno, podzim 2015
Prohlášení Prohlašuji, že tato bakaláˇrská práce je mým puvodním ˚ autorským dílem, které jsem vypracoval samostatnˇe. Všechny zdroje, prameny a literaturu, které jsem pˇri vypracování používal nebo z nich cˇ erpal, v práci rˇ ádnˇe cituji s uvedením úplného odkazu na pˇríslušný zdroj.
Adam Žvak
ˇ Vedoucí práce: Ing. Mgr. et Mgr. Zdenˇek Ríha, Ph.D. i
Podˇekování Rád bych na tomto místˇe podˇekoval svému vedoucímu Ing. Mgr. et Mgr. ˇ Zdenˇekovi Ríhovi, Ph.D za cenné pˇripomínky pˇri psaní této práce, konzultantovi Mgr. Miroslavovi Sliackému za odbornou pomoc a zapujˇ ˚ cení cˇ ipových karet a mé pˇrítelkyni Evˇe Doleželové za zapujˇ ˚ cení mobilního telefonu bez kterého bych nemohl testovat vytvoˇrenou aplikaci.
ii
Klíˇcová slova Windows Phone 8.1, NFC, NDEF, ISO/IEC 14443, APDU, bezkontaktní cˇ ipová karta, mobilní telefon
iii
Shrnutí Cílem této práce bylo prozkoumat možnosti využití NFC v mobilním operaˇcním systému Windows Phone 8.1 a zjistit, zdali systém umožnuje ˇ komunikovat s bezkontaktními cˇ ipovými kartami standardu ISO/IEC 14443 pomocí APDU. V prvních cˇ tyˇrech kapitolách je struˇcný úvod do problematiky cˇ ipových karet, APDU a technologie NFC. Pátá kapitola rozebírá podporu NFC v operaˇcním systému Windows Phone 8.1. Získané poznatky demonstruji na mobilní aplikaci umožnující ˇ komunikovat s cˇ ipovými kartami. V závˇeru shrnuji, jak lze systém Windows Phone 8.1 využít pro práci s NFC.
iv
Obsah 1
2
3
4
5
6
ˇ Cipové karty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 Bezkontaktní cˇ ipové karty ISO/IEC 14443 . . . . . . . . . . . 1.1.1 Pˇrenosový protokol ISO/IEC 14443-4 . . . . . . . . . 1.1.2 Karty FeliCa . . . . . . . . . . . . . . . . . . . . . . . APDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 Command APDU . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Response APDU . . . . . . . . . . . . . . . . . . . . . . . . . . Near Field Communication . . . . . . . . . . . . . . . . . . . . . . 3.1 NFC standard . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Využití NFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 NFC Data Exchange Format . . . . . . . . . . . . . . . . . . . 3.3.1 Struktura NDEF zpráv . . . . . . . . . . . . . . . . . 3.3.2 Zasílání záznamu˚ neurˇcité velikosti . . . . . . . . . . NFC ve Windows Phone . . . . . . . . . . . . . . . . . . . . . . . . 4.1 NFC ve verzi 8.1 . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 API Windows.Networking.Proximity . . . . . . . . . . . . . 4.2.1 Zasílání zpráv prostˇrednictvím objektu typu ProximityDevice . . . . . . . . . . . . . . . . . . . . . . . . 4.2.2 Párování prostˇrednictvím tˇrídy PeerFinder . . . . . . 4.3 API SmartCards . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 Tˇrídy API SmartCards . . . . . . . . . . . . . . . . . . 4.3.2 APDU komunikace s bezkontaktní cˇ ipovou kartou . 4.3.3 Emulace karet . . . . . . . . . . . . . . . . . . . . . . Aplikace komunikující s cˇ ipovou kartou . . . . . . . . . . . . . . 5.1 Použití aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Funkce aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Provedení kryptografických algoritmu˚ na kartˇe . . . . . . . . 5.3.1 RSA digitální podpis na kartˇe . . . . . . . . . . . . . 5.3.2 3DES šifrování na kartˇe . . . . . . . . . . . . . . . . . 5.3.3 Struktura aplikace . . . . . . . . . . . . . . . . . . . . Závˇer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 4 4 4 5 5 6 7 7 8 9 9 11 12 13 13 14 16 17 17 18 19 23 23 24 24 24 26 26 28
v
Úvod Informaˇcní technologie se velmi rychle vyvíjejí. Poˇcítaˇce mají stále vyšší výkon, zmenšují se a snižují spotˇrebu elektrické energie. Díky tomuto pokroku mužeme ˚ výkonný poˇcítaˇc nalézt ve spoustˇe zaˇrízení, se kterými se dennˇe setkáváme. Od automobilu, ˚ pˇres kuchynské ˇ spotˇrebiˇce až po mobilní zaˇrízení jako jsou chytré hodinky nebo mobilní telefony. Mobilní telefony mohou být výkonnˇejší než stolní poˇcítaˇce pˇred nˇekolika lety. Mají pamˇet’ v rˇ ádu gigabytu˚ a nˇekolika jádrové procesory. Dokáže je pˇritom napájet pouze malý akumulátor a pohodlnˇe se vejdou do kapsy. Možnosti mobilních telefonu˚ mohou být navíc rozšíˇreny o další funkce jako jsou digitální fotoaparát, cˇ teˇcka otisku˚ prstu, ˚ nebo GPS1 . Díky tomuto pokroku mají dnes mobilní telefony širokou míru uplatnˇení a mohou zastoupit funkci mnoha zaˇrízení. Jednou z možných funkcí mobilních telefonu˚ je technologie Near Field Communication (NFC). Ta si klade za cíl nahradit ruzné ˚ identifikaˇcní a autentizaˇcní objekty, nebo cˇ ipové karty a integrovat je do mobilního zaˇrízení. Technologie NFC má však mnohem širší uplatnˇení než zastoupení tˇechto objektu. ˚ Umožnuje ˇ komunikovat pˇrenos dat, zápis a cˇ tení speciálních NFC štítku˚ nebo komunikaci s procesorovými cˇ ipovými kartami. Cílem této bakaláˇrské práce bylo prozkoumat možnosti práce s NFC v mobilním operaˇcním systému Windows Phone verze 8.1 a zjistit, jestli systém dokáže komunikovat s cˇ ipovými kartami pomocí APDU. Práce je rozdˇelena na šest kapitol. První kapitola struˇcnˇe popisuje co jsou to cˇ ipové karty, jak je rozdˇelujeme a jakým zpusobem ˚ s nimi mužeme ˚ komunikovat. V druhé kapitole jsem podrobnˇeji rozebral APDU pˇríkazy sloužící ke komunikaci s cˇ ipovými kartami. Tˇretí kapitolu vˇenuji technologii NFC. Jakým zpusobem ˚ ji lze využít, jaké jsou typy NFC zaˇrízení a módy komunikace. ˇ Ctvrtá kapitola popisuje podporu NFC v samotnému systému Windows Phone 8.1. Kapitola zaˇcíná struˇcným popisem podpory NFC v pˇredchozích verzích tohoto operaˇcního systému. Následuje souhrn možností práce s NFC ve verzi 8.1, které ve zbytku kapitoly rozebírám podrobnˇeji. Pátá kapitola se vˇenuje praktické cˇ ásti práce, ve které demonstruji zjištˇené informace. K demonstraci jsem vytvoˇril mobilní aplikaci schopnou APDU komunikace s bezkontaktními cˇ ipovými kartami. 1. Global Positioning System - systém pro urˇcení pˇresné pozice na mapˇe.
1
V poslední kapitole se pokusím shrnout nabyté poznatky a naznaˇcit, kam se bude vyvíjet podpora NFC v dalších verzích systému Windows Phone.
2
ˇ 1 Cipové karty ˇ Cipová karta je plastová karta s integrovaným obvodem, schopna zpracování dat [14, s.5]. Karta nemá vlastní napájení. K sériové komunikaci s kartou slouží terminál neboli cˇ teˇcka, která kartu také napájí. Rozmˇer karty urcˇ uje standard ISO/IEC 7816. Nejrozšíˇrenˇejší je typ ID-1 o rozmˇerech 85,725 mm × 53,975 mm, tedy velikost kreditní karty [1, s.15]. Z hlediska cˇ ipu dˇelíme karty na pamˇet’ové a procesorové. Pamˇet’ová karta obsahuje pamˇet’, ze které lze data bud’ jenom cˇ íst, nebo také zapisovat. Pomocí sériového rozhraní a jednoduché logiky uvniˇr karty pˇristupujeme pˇrímo k pamˇet’ovým bunkám. ˇ Pˇrístup muže ˚ být chránˇen heslem, míra zabezpeˇcení se liší dle jednotlivých druhu˚ pamˇet’ových karet. Obecnˇe lze však rˇ íct, že pamˇet’ové karty jsou ménˇe bezpeˇcné než karty procesorové. Procesorové karty mají kromˇe pamˇeti i vlastní mikroprocesor. Kartu rˇ ídí operaˇcní systém, který zajišt’uje pˇrístup do pamˇeti a dˇelí ji na nezávislé sekce pˇriˇrazené jednotlivým aplikacím. Díky tomu muže ˚ mít jedna karta více funkcí, pˇriˇcemž každou funkci reprezentuje jedna aplikace. Do pamˇeti procesorové karty nemuže ˚ terminál pˇristupovat pˇrímo. Pˇrístup do pamˇeti je vždy zajištˇen operaˇcním systémem. To zaruˇcuje vysokou míru bezpeˇcnosti dat [14, s.11]. Nejrozšíˇrenˇejšími cˇ ipovými kartami jsou SIM karty v mobilních telefonech nebo platební karty.
Obrázek 1.1: Blokové schéma procesorové cˇ ipové karty [40] Podle zpusobu ˚ komunikace dˇelíme karty na kontaktní a bezkontaktní. Kontaktní karty mají na povrchu plochu s osmi vyvedenými kontakty (používají se však jen cˇ tyˇri), pomocí kterých ji mužeme ˚ spojit s terminálem[14, s.10]. Bezkontaktní karty komunikují bezdrátovˇe na krátkou vzdálenost v rˇ ádech centimetru. ˚ Jsou napájeny indukcí v elektromagnetickém poli termi3
ˇ IPOVÉ KARTY 1. C nálu a pˇrenos probíhá pomocí rádiových vln. Jedna karta muže ˚ implementovat oba zpusoby ˚ komunikace (známe napˇríklad z bezkontaktních platebních karet). Kontaktní cˇ ipové karty jsou popsány ve specifikaci ISO/IEC 7816, bezkontaktní karty ve specifikaci ISO/IEC 14443. Všechny karty a terminály splnující ˇ tyto normy mají standardizovanou sady pˇríkazu˚ umožnující ˇ komunikaci terminálu s procesorovými kartami. Tyto pˇríkazy se nazývají Application Protocol Data Unit (APDU)[14, s.12].
1.1
Bezkontaktní cˇ ipové karty ISO/IEC 14443
ISO/IEC 14443 je mezinárodní norma, která popisuje bezkontaktní cˇ ipové karty komunikující na krátkou vzdálenost do 10 cm. Pˇrenos probíhá na frekvenci 13,56MHz. Karty nepotˇrebují vlastní napájení, proud se uvnitˇr karty indukuje pomocí cívky v elektromagnetickém poli terminálu. Tato norma je rozdˇelena na cˇ tyˇri cˇ ásti. První popisuje fyzické charakteristiky karty (napˇr. rozmˇery karty cˇ i sílu elektromagnetického pole). Druhá cˇ ást definuje frekvenci rádiových vln, rozhraní signálu, pˇrenosovou rychlost, detekci a opravu chyb. Inicializace komunikace a zamezení kolizí je popsáno v tˇretí cˇ ásti. Poslední cˇ ást ISO/IEC 14443-4 se zabývá pˇrenosovým ˇ protokolem. Cipové karty ISO/IEC 14443 se dˇelí na typy A a B, které se liší rozdílnou modulací a kódováním. Nˇekteré radiofrekvenˇcní identifikaˇcní (RFID) štítky jsou také založeny na této technologii[1, s.297]. 1.1.1 Pˇrenosový protokol ISO/IEC 14443-4 ISO/IEC 14443-4 popisuje poloduplexní, blokovˇe orientovaný pˇrenosový protokol, uzpusobený ˚ bezkontaktním systémum. ˚ Stejnˇe jako ve standardu ISO 7816-4[15] popisujícím kontaktní cˇ ipové karty, umožnuje ˇ protokol pˇrenášet APDU pˇríkazy pomocí kterých s kartou komunikujeme[1, s.329]. 1.1.2 Karty FeliCa FeliCa je systém bezkontaktních karet, vyvinutý spoleˇcností Sony. Systém je široce rozšíˇrený v Japonsku pro úˇcely elektronických vstupenek a platebních systému. ˚ Byl navrhnut jako typ C standardu ISO/IEC 14443, ale nakonec nebyl jako další typ do standardu pˇridán. Pracuje jako karty ISO/IEC 14443 na frekvenci 13,56 Mhz s pˇrenosovou rychlostí 212 kb/s a kódováním Manchester. Je kompatibilní s ISO/IEC 18092 popisující NFC[1, s.348].
4
2 APDU APDU je komunikaˇcní jednotka sloužící ke komunikaci s cˇ ipovou kartou. APDU je používána v kontaktních kartách ISO/IEC 7816 i bezkontaktních kartách ISO/IEC 14443. Komunikace pomocí APDU je poloduplexní a probíhá systémem dotaz - odpovˇed’. Do karty pošle nejprve terminál APDU pˇríkaz (Command APDU), karta terminálu vrátí odpovˇed’ APDU (Response APDU) [16].
2.1
Command APDU
Command APDU (C-APDU) je série bytu˚ a má pˇresnˇe danou strukturu povinnou 4 bytovou hlaviˇcku (CLA, INS, P1, P2) a volitelné tˇelo[3]. Hlaviˇcka CLA INS P1 1B 1B 1B
P2 1B
Tˇelo (volitelnˇe) Lc Data Le 1 nebo 3 B 0~255 B 1 nebo 3 B
Tabulka 2.1: Struktura C-APDU [3] CLA (Class) Znaˇcí tˇrídu aplikace na kartˇe. INS (Instruction) Urˇcuje aplikaci karty v tˇrídˇe CLA. P1, P2 (Parameter) Tˇemito byty mužeme ˚ pˇredat dodateˇcnou informaci zvolené instrukci. Význam se mˇení podle bytu CLA a INS. Lc (Length Command) Velikost pole Data (povinná, pokud není datová cˇ ást prázdná). Data Data, která chceme kartˇe pˇredat. Le (Length Expected) Oˇcekávaná velikost datové cˇ ásti Response APDU. Pokud je Le byte 0x00, terminál oˇcekává v odpovˇedi nejvyšší možnou délku datové cˇ ásti. Aˇckoliv mají pole Lc a Le obvykle velikost 1B, mohou být také pˇrevedeny na pole o velikosti 3B. V takovém pˇrípadˇe mohou poslední dva bajty reprezentovat až cˇ íslo 65536, pˇriˇcemž první byte je 0x00. Vzhledem k volitelnosti jednotlivých cˇ ástí tˇela C-APDU muže ˚ být jeho struktura následující: 5
2. APDU Povinná hlaviˇcka CLA INS P1 P2 CLA INS P1 P2 CLA INS P1 P2 CLA INS P1 P2
Volitelné tˇelo Le Lc Lc
Data Data
Le
Tabulka 2.2: Možný obsah C-APDU [3]
2.2
Response APDU
Na odeslaný C-APDU karta reaguje odesláním Response APDU (R-APDU). R-APDU se od C-APDU liší strukturou [3]. Data (volitelnˇe) 0~Le B
SW1 1B
SW2 1B
Tabulka 2.3: Struktura Response APDU[3] Data Data maximální velikosti Le, specifikované v C-APDU na který RAPDU reaguje. Datová cˇ ást muže ˚ být vynechána. SW1, SW2 (návratový kód) Stav karty po vykonání pˇríkazu. Urˇcují, jestli se pˇríkaz zpracoval korektnˇe, s varováním, nebo pˇri nˇem nastaly chyby. Existuje více než 50 ruzných ˚ kódu[39]. ˚ Kód 0x90 0x00 znaˇcí, že vykonaná operace na kartˇe probˇehla bez chyb.
6
3 Near Field Communication Near Field Communication (NFC) je soubor technologií vycházející z RFID (Radio Frequency IDentification)[17], umožnující ˇ bezdrátovou komunikaci dvou zaˇrízení. Tˇri klíˇcové vlastnosti NFC jsou velmi malá spotˇreba energie, komunikace na krátkou vzdálenost do 10 cm a kompatibilita s bezkontaktními cˇ ipovými kartami ISO/IEC 14443 a FeliCa.
3.1
NFC standard
V roce 2004 spoleˇcnosti Nokia, Philips a Sony založily neziskovou organizaci NFC fórum. Cílem bylo celosvˇetovˇe propagovat používání NFC. V souˇcasné dobˇe má NFC Fórum pˇres 180 cˇ lenu˚ [4]. Ve stejném roce NFC Fórum vytvoˇrilo specifikace cˇ ásteˇcnˇe vycházející ze standardu˚ ISO/IEC 14443 a FeliCa, které zahrnovaly architekturu NFC zaˇrízení a protokoly pro výmˇenu dat. Tyto specifikace byly pozdˇeji schváleny jako standardy ISO/IEC 18092 (NFCIP-1) a ISO/IEC 21481(NFCIP-2). O dva roky pozdˇeji byly publikovány specifikace zahrnující standardy pro datové formáty NDEF (NFC Data Exchange Format) a v roce 2007 publikovalo fórum specifikace cˇ tyˇrech druhu˚ NFC štítku˚ 1 . Všechny cˇ tyˇri vycházejí ze standardu ISO/IEC 14443 a FeliCa. Velké množství bezkontaktních karet do té doby používaných napˇríklad jako identifikaˇcní karty cˇ i MHD jízdenky jsou tedy s NFC kompatibilní a již instalované ISO/IEC 14443 terminály mohou komunikovat s NFC zaˇrízeními. Krátký popis každého ze cˇ tyˇr typu˚ štítku˚ [1, s.348]: Typy 1 a 2 Jsou založeny na standardu ISO/IEC 14443, typ A. Jsou velmi levné, mají však omezenou kapacitu do 1~2 kb a pˇrenosová rychlost je 106 kb/s. Typ 3 Vychází ze standardu FeliCa. Tagy mají 2kB pamˇeti a rychlost pˇrenosu je 212 kb/s. Typ 4 Je plnˇe kompatibilní s typy A i B standardu ISO/IEC 14443 a vychází z bezkontaktních cˇ ipových karet. Pamˇet’ karet je typicky 64KB a více a rychlost muže ˚ být ruzná ˚ od 106 kb/s do 424 kb/s. Tyto karty mají vlastní integrovaný mikroprocesor s pokroˇcilou bezpeˇcnostní logikou. To znamená také vyšší cenu oproti typum ˚ 1, 2 a 3. Používají se pˇredevším tam, kde jsou kladeny vysoké nároky na bezpeˇcnost, napˇríklad jako bezkontaktní platební karty. 1. Pasivní NFC zaˇrízení malých rozmˇeru. ˚ Typicky samolepka, klíˇcenka nebo karta.
7
3. N EAR F IELD C OMMUNICATION Rozlišujeme mezi dvˇema typy NFC zaˇrízení - aktivní a pasivní. Pasivní zarˇ ízení nemá vlastní napájení a uchovává informace, které mohou být cˇ teny aktivním zaˇrízením. Pˇríklad pasivního NFC zaˇrízení je NFC štítek (NFC tag). Aktivní zaˇrízení má vlastní napájení. Muže ˚ cˇ íst informace z pasivního zaˇrízení, zapisovat je do nˇej nebo muže ˚ pasivní zaˇrízení emulovat[18]. Pˇri komunikaci rozlišujeme mezi iniciátorem komunikace, který má roli master a cílem, který má roli slave. Po zapoˇcetí komunikace nemohou být role zmˇenˇeny. Na rozdíl od bezkontaktních karet ISO/IEC 14443, které mají role dané, je u NFC možná komunikace dvou aktivních zaˇrízení a obˇe mohou mít roli master i slave, nikoliv však najednou. Pˇri zahájení komunikace master zvolí inicializaˇcní rychlost, na které komunikace zaˇcne. Muže ˚ to být bud’ 106, 212, nebo 424 kb/s[1, s.349]. Aˇckoliv je rychlost 848kb/s podporována ve standardu ISO/IEC 14443, ve standardu NFCIP-1 tato rychlost popsána není. V závislosti na možnostech obou stran mohou být parametry komunikace v prubˇ ˚ ehu zmˇenˇeny.
3.2
Využití NFC
Využití NFC technologií mužeme ˚ rozdˇelit na tˇri kategorie korespondující se tˇremi módy, které NFC podporuje[1, s.350]. Prvním módem je cˇ tení/zápis. V tomto módu aktivní NFC zaˇrízení komunikuje s pasivním NFC štítkem, nebo jiným aktivním zaˇrízením emulujícím štítek. Zaˇrízení, které zaˇcalo komunikaci, má roli master a dokáže zapisovat data na štítek nebo je cˇ íst. Vzhledem k relativnˇe nízké pˇrenosové rychlosti a malé kapacitˇe štítku˚ se NFC hodí pˇredevším k výmˇenˇe malých objemu˚ dat, jako jsou URL, vizitky a krátké textové zprávy. Dalším módem komunikace je párování (peer to peer), který spojuje dvˇe aktivní NFC zaˇrízení. Mód párování se používá nejen k výmˇenˇe dat mezi jednotlivými stranami komunikace, ale také zaslání informací potˇrebných k navázání spojení dvou Bluetooth2 (BT), nebo WiFi zaˇrízení. Díky tomu lze párovat napˇríklad mobilní telefon s reproduktory, tiskárnou, nebo jiným telefonem pouhým pˇriložením k jejich NFC terminálu. Poslední je mód emulace karty, kdy se aktivní NFC zaˇrízení chová jako pasivní NFC štítek, nebo cˇ ipová karta. Emulace cˇ ipové karty muže ˚ probíhat dvˇema zpusoby. ˚ Prvním zpusobem ˚ je softwarová emulace, kdy cˇ ipovou kartu softwarovˇe simuluje procesor NFC zaˇrízení. Další možností je umístˇení samostatného zabezpeˇceného cˇ ipu do NFC zaˇrízení, podobného jako se 2. Standard pro bezdrátovou komunikaci dvou a více zaˇrízení na krátkou vzdálenost do 100 metru. ˚
8
3. N EAR F IELD C OMMUNICATION nachází v cˇ ipových kartách. NFC poté funguje pouze jako prostˇredník zajišt’ující komunikaci cˇ ipu se cˇ teˇckou. Každý pˇrístup má své výhody. Fyzický zabezpeˇcený cˇ ip je bezpeˇcnˇejší, zatímco hlavní výhodou softwarové emulace je právˇe fakt absence nutnosti speciálního cˇ ipu. Hlavní využití módu emulace najdeme v mobilních telefonech pˇri emulaci platebních karet, identifikaˇcních karet, MHD jízdenek apod.
3.3
NFC Data Exchange Format
NFC Data Exchange Format (NDEF)[19] je univerzální formát zapouzdˇrení zpráv specifikován NFC fórem, který slouží k výmˇenˇe dat pomocí NFC. NDEF definuje strukturu a pravidla pro konstrukci NDEF zpráv, ale také typy aplikaˇcních dat zapouzdˇrených v NDEF zprávách. Specifikace pˇredpokládá existenci spolehlivého transportního protokolu na nižších vrstvách. NDEF má jednoduchý formát, umožnující ˇ zapouzdˇrení libovolných dat, jakékoliv velikosti. Toho se využívá pˇri dynamickém generování obsahu vˇetší velikosti, kdy jsou data rozdˇelena do nˇekolika bloku. ˚ NDEF zpráva muže ˚ také sluˇcovat nˇekolik datových typu, ˚ které spolu logicky souvisí. 3.3.1 Struktura NDEF zpráv Zprávy NDEF se mohou skládat z jednoho, nebo více NDEF záznamu. ˚ První obsahuje pˇríznak MB (Message Begin) a poslední pˇríznak ME (Message End).
Obrázek 3.1: Struktura NDEF zprávy [41] Každý záznam nesoucí data aplikaˇcního protokolu je identifikován typem, délkou a volitelným identifikátorem. Záznam muže ˚ mít zkrácenou nebo klasickou strukturu. Kromˇe pˇríznaku˚ MB a ME jsou dále v záznamu pˇríznaky CH, SR, a IL. CH (Chunk Flag) se používá, pokud jsou data rozdˇelena do více zpráv. SR (Short Record) oznaˇcuje, jestli se jedná o klasický 9
3. N EAR F IELD C OMMUNICATION nebo zkrácený záznam a pˇríznak IL informuje o poli ID LENGTH. Duležitá ˚ je tˇríbitová hodnota TNF (Type Name Format) definující formát pole TYPE. Jeho hodnoty mohou být následující[27]: •
0x00 prázdný typ, je-li nastaven, pole TYPE LENGTH, ID LENGTH a PAYLOAD LENGTH jsou nulové. TYPE, ID a PAYLOAD jsou ze záznamu vynechány.
•
0x01 NFC Fórum Well-known typ.
•
0x02 Typy médií MIME definované v RFC 2046.
•
0x03 Absolutní URI definované v RFC 3986.
•
0x04 Externí typ NFC fóra.
•
0x05 Neznámý typ. Pokud je nastaven, TYPE LENGTH musí být nulový a pole TYPE je ze záznamu vynecháno.
•
0x06 Nezmˇenˇený typ urˇcený pouze prostˇedním záznamum ˚ rozdˇelené NDEF zprávy. Je-li nastaven, TYPE LENGTH musí být nulový a pole TYPE je ze záznamu vynecháno.
•
0x07 Rezervováno.
Pole TYPE LENGTH a TYPE urˇcují na základˇe pole TNF typ pˇrenášeného záznamu. Duležitým ˚ TNF je NFC Forum Well Known type, se kterým by si mˇelo umˇet poradit každé NFC zaˇrízení. Well-known type se dˇelí na cˇ tyˇri typy [27, s.14]: •
Jednoduchý textový záznam, který muže ˚ obsahovat libovolný textový rˇ etˇezec. Muže ˚ obsahovat také informace o použitém kódování a jazyku.
•
URI obsahující sít’ovou adresu. Od NFC zaˇrízení, které tento typ pˇrecˇ te se oˇcekává, že URI pˇredá aplikaci, která je jej schopna pˇreˇcíst, napˇríklad internetovému prohlí´zeˇci.
•
Smart poster obsahuje data, která mohou být pˇridána k plakátu pro poskytnutí více informací. Muže ˚ obsahovat URI, ale také další data jako pˇríkaz k odeslání SMS zprávy. NFC zaˇrízení, které tento typ pˇrecˇ te, by mˇelo v závislosti na obsahu otevˇrít internetový prohlížeˇc, SMS aplikaci, nebo emailového klienta.
•
Digitální podpis zaruˇcující duvˇ ˚ eryhodnost dat uložených na štítku. 10
3. N EAR F IELD C OMMUNICATION
Obrázek 3.2: Vlevo klasická a vpravo zkrácená struktura NDEF záznamu [41] Pole PAYLOAD, PAYLOAD LENGTH a PAYLOAD ID nesou samotná pˇrenášená data, jejich délku a volitelný identifikátor. 3.3.2 Zasílání záznamu˚ neurˇcité velikosti Zprávu mužeme ˚ zaˇcít vysílat už ve chvíli, kdy ještˇe neznáme její koneˇcnou velikost. Zpráva se rozdˇelí na kusy, tzv. Record Chunks (RC). Každý RC je poté odeslán v jednom NDEF záznamu. Každý záznam je z hlediska umístˇení v celkové zprávˇe bud’ poˇcáteˇcní, koncový, nebo stˇrední. Poˇcáteˇcní záznam má nastaven pˇríznak CF (Chunk Flag). Pole PAYLOAD TYPE reprezentuje typ užiteˇcných dat celé zprávy a PAYLOAD LENGTH reprezentuje délku PAYLOAD pole v aktuálním zasílaném záznamu. Stˇrední cˇ ásti mají také nastavený CF pˇríznak. TNF pole je nastaveno na 0x06 (nezmˇenˇeno). Ukonˇcující záznam má prázdný pˇríznak CF. Tak indikujeme poslední záznam stejného typu, jako byl typ poˇcáteˇcní. Data takto mužeme ˚ rozdˇelit pouze v rámci jedné NDEF zprávy[2].
11
4 NFC ve Windows Phone NFC aplikakce v mobilních telefonech mužeme ˚ rozdˇelit na dvˇe kategorie[28, s.287]. První kategorie využívá bezpeˇcnostního prvku (Secure Element) a aplikace v této kategorii pracují v režimu emulace karty. Druhým typem jsou aplikace pracující s daty, která nepovažujeme za citlivá. Tyto aplikace pracují v režimu cˇ tení/zápis nebo párování. Další možné rozdˇelení je na NFC funkce vestavˇené pˇrímo do systému a NFC funkce dostupné vývojáˇrum ˚ aplikací. Pro vývoj aplikací pro platformu WP 8 potˇreba vývojové prostˇredí Visual Studio a WP SDK1 (Software Development Kit). K funkcím operaˇcního systému programátoˇri pˇristupují pomocí API2 (Application Programming Interface). Windows Phone (WP) je operaˇcní systém pro mobilní telefony vyvíjený spoleˇcností Microsoft. Je na trhu od roku 2010, kdy vyšla verze 7. Následovaly aktualizace na verze 7.5 a 7.8 (7.X). Verze 7.X byly založeny na jádru Windows Embedded CE, které používal i jeho pˇredchudce ˚ Windows Mobile[22]. Žádná z verzí 7.X nepodporovala NFC[20, 21]. V roce 2012 spoleˇcnost Microsoft vydala systém WP 8, který obsahoval nové jádro Windows NT (New Technology). To znamená že používá stejný souborový systém (NTFS), stejný grafický engine (DirectX) a stejný systém pro práci s ovladaˇci jako poˇcítaˇcová verze Windows (v té dobˇe ve verzi 8). Aktualizace z WP 7.X na WP 8 nebyla z duvodu ˚ rozdílného jádra možná [23]. Spolu s jádrem Windows NT pˇrinesla verze 8 také základní podporu NFC. Systém WP 8 umožnoval ˇ NFC platby pomocí aplikace Penˇeženka [24]. Ke správné funkci však byla nutná speciální SIM karta s bezpeˇcnostním prvkem. Ten zastupoval cˇ ip platební karty. Další funkcí zabudovanou v systému bylo sdílení dat s jiným WP 8 telefonem. Vývojáˇri mˇeli ve WP 8 SDK pro práci s NFC k dispozici pouze API Windows.Networking.Proximity, které umožnovalo ˇ práci s NDEF zprávami a párování. Možnost práce s NDEF zprávami byla však znaˇcnˇe omezena. Nešlo napˇríklad zapisovat zprávy na nenaformátovaný NFC štítek, nebo nešlo NFC štítek uzamknout k zamezení další manipulace[9].
1. Balík nástroju˚ urˇcených pro vývoj aplikací pro platformu Windows Phone[26] 2. Soubor pˇríkazu, ˚ funkcí a protokolu, ˚ které mohou programátoˇri použít pˇri vývoji aplikací[25].
12
4. NFC VE W INDOWS P HONE
4.1
NFC ve verzi 8.1
V roce 2014 vydal Microsoft aktualizaci WP 8.1, která mimo jiné rozšíˇrila možnosti využití NFC. Prostˇrednictvím NFC v této verzi mužeme ˚ sdílet kontakty, odkazy a multimédia s jiným NFC zaˇrízením. Malé objemy dat (odkazy a kontakty) jsou pˇreneseny pˇrímo prostˇrednictvím NFC ve formˇe NDEF zprávy. Multimédia jsou vzhledem k velkému objemu dat pˇrenášena prostˇrednictvím BT a NFC zajistí pouze bezobslužné navázání BT spojení. Pro pˇrenos multimédií je tedy nutné, aby mˇely obˇe zaˇrízení zapnuto BT. Pomocí NFC mužeme ˚ telefon také párovat s jiným BT zaˇrízením podporujícím NFC, napˇríklad reproduktory. Podpora párování s WiFi Direct zaˇrízením není ve WP 8.1 možná, ale je v plánu pro Windows 10 Mobile 3 [5]. Emulaci karet Windows 8.1 podporuje prostˇrednictvím aplikace Penˇeženka, je však nutná SIM karta se zabezpeˇceným prvkem stejnˇe jako ve verzi 8. Možnost NFC plateb jde povolit, nebo zakázat v nastavení telefonu. Lze také nastavit, v jakých situacích jsou platby aktivní. Nˇekteré telefony podporují platby i vypnutým telefonem v pasivním NFC režimu. Jsou-li NFC platby aktivní, staˇcí telefon pˇriblížit k terminálu stejnˇe jako bezkontaktní platební kartu a platba se provede. Speciální aplikace není nutná, mužeme ˚ ale pomocí ní rozšíˇrit funkcionalitu napˇríklad o prohlížení historie plateb. Vývojáˇrum ˚ je ve verzi 8.1 k dispozici vylepšené API Proximity pro párování a výmˇenu NDEF zpráv a novˇe API SmartCards umožnující ˇ komunikaci s cˇ ipovými kartami pomocí APDU.
4.2
API Windows.Networking.Proximity
Možnosti tohoto API jsou omezené pouze na výmˇenu NDEF zpráv a párování. Novˇe toto API umí zápis zpráv i na nenaformátované NFC štítky4 , což ve verzi 8 nebylo možné[29]. Pokud se pokusíme na takovýto NFC štítek zprávu zapsat, API Proximity se pˇred zápisem automaticky postará o naformátování štítku a poté zprávu zapíše. Práce s API Proximity je jednoduchá. Nejprve získáme pˇrístup k NFC prostˇrednictvím instance tˇrídy ProximityDevice. Instanci získáme voláním statické metody ProximityDevice.GetDefault. Pokud žádné NFC zaˇrízení není k dispozici (to znamená, že telefon NFC nemá), vrací metoda hodnotu 3. Další aktualizace systému WP 8.1. 4. Nenaformátovaný NFC štítek je kompletnˇe prázdný a nemá vnitˇrní strukturu pro ukládání NDEF zpráv.
13
4. NFC VE W INDOWS P HONE null. S objektem typu ProximityDevice mužeme ˚ následnˇe odesílat a pˇrijímat NDEF zprávy a využívat událostí DeviceArrived a DeviceDeparted. DeviceArrived nastane, pokud do NFC pole telefonu pˇriblížíme jiné NFC zaˇrízení, DeviceDeparted, pokud zaˇrízení z pole odebereme[8]. 4.2.1 Zasílání zpráv prostˇrednictvím objektu typu ProximityDevice API Proximity umí nˇekolik typu˚ NDEF zpráv zpracovat automaticky a umožnuje ˇ také manipulovat pˇrímo s bytovou strukturou zpráv. K zasílání NDEF zpráv slouží metoda PublishBinaryMessage. Jako argumenty pˇredáváme typ zprávy, obsah zprávy a handler volaný po pˇrenesení zprávy. Návratová hodnota odeslané zprávy je její unikátní ID. Pokud vyšleme nˇekolik zpráv se stejným obsahem, bude mít každá z nich své unikátní ID. Zaˇrízení se pokouší zprávu vysílat dokud odstranˇen objekt ProximityDevice, nebo dokud není na tomto objektu zavolána metoda StopPublishingMessage s parametrem ID vysílané zprávy. Argument typ zprávy je textový rˇ etˇezec obsahující dvˇe cˇ ásti - protokol a podtyp. Protokol je na prvním místˇe, podtyp je od nˇej oddˇelen teˇckou. Jsou to rˇ etˇezce alfanumerických a jakýchkoliv validních URI znaku˚ 5 . Podtyp nesmí pˇrekroˇcit délku 25 znaku˚ a jsou rozlišována velká a malá písmena. Uvádím nˇekteré druhy podporovaných zpráv[8]: Windows Obecná NDEF zpráva obsahující binární data WindowsUri Zpráva obsahující rˇ etˇezec kódován UTF-16LE, pˇredstavující URI. WP zpracuje pˇríchozí zprávy tohoto typu vždy prostˇrednictvím implicitní aplikace pˇriˇrazené k danému URI protokolu. Tedy napˇríklad URI zaˇcínající http:// se otevˇre ve webovém prohlížeˇci. Namísto volání metody PublishBinaryMessage s typem WindowsUri se doporuˇcuje použít pˇrímo metodu PublishUriMessage. Je-li aktivní cˇ tení WindowsUri zpráv a pˇrijde podporovaná NDEF zpráva, obsahem pˇríchozí zprávy bude pouze samotné URI. WindowsMime* Zpráva je MIME typem specifikovaným v podtypu. Napˇríklad pokud ve zprávˇe posíláme jpeg obrázek, typ zprávy bude "WindowsMime.image/jpeg". Nepˇrijímá-li vysílanou zprávu zaˇrízení Windows, je automaticky naformátována jako NDEF:MIME záznam. Pˇríchozí zprávy formátované jako NDEF:MIME Windows pˇreˇcte a vrátí obsah urˇceného MIME typu jako obsah zprávy. V odchozích 5. Definováno v RFC 3986: -.~:/?#[]@!$&‘()*+,;=%
14
4. NFC VE W INDOWS P HONE zprávách musíme vždy specifikovat MIME typ. Pokud chceme pˇrijímat MIME zprávy a nespecifikujeme jejich typ, budou pˇrijímány všechny typy MIME zpráv. V takovém pˇrípadˇe bude prvních 256 bytu˚ zprávy rˇ etˇezec popisující typ zprávy. Windows:WriteTag Stejné jako protokol Windows. Oˇcekává se však, že obsah zprávy bude zapsán na NFC štítek. Není-li cílové zaˇrízení NFC štítek, zpráva se neodešle. WindowsUri:WriteTag Jako protokol WindowsUri. Oˇcekává se, že obsah zprávy bude zapsán na NFC štítek. Není-li cílové zaˇrízení NFC štítek, zpráva se neodešle. WindowsMime:WriteTag Jako protokol WindowsMime. Oˇcekává se, že obsah zprávy bude zapsán na NFC štítek. Není-li cílové zaˇrízení NFC štítek, zpráva se neodešle. LaunchApp:WriteTag Zapisuje do NFC štítku pˇríkaz ke spuštˇení aplikace. •
Zpráva musí být kódována jako UTF-16LE rˇ etˇezec, ve kterém jsou hodnoty oddˇeleny tabulátory nebo hodnotami null. Formát zprávy je následující: <argumenty spuštˇ ení>[tab]
[tab]...[tab]< platforma N>[tab]
Specifikována musí být alesponˇ jedna platforma s názvem aplikace. Ve Windows Phone aplikaci specifikujeme rˇ etˇezcem tvaru: <package family name>!
WriteableTag Tento protokol slouží pouze k pˇrijímání zpráv. Pokud je zapisovatelný NFC štítek pˇriblížen k zaˇrízení, obdržíme maximální možnou velikost, kterou lze na štítek zapsat. NDEF Obsah zprávy je NDEF záznam, jehož typ je specifikován uvnitˇr samotného NDEF záznamu. NDEF:MIME* NDEF Mime zpráva. Napˇr. "NDEF:MIME.image/jpeg". NDEF:WriteTag* Zpráva v NDEF formátu, která je urˇcena pro zápis na NFC štítek. NDEF:Unknown* Zpráva NDEF s neznámým typem. 15
4. NFC VE W INDOWS P HONE * Protkoly urˇcené pouze k pˇríjmání zpráv. Pro publikaci tˇechto zpráv je nutné použít typ NDEF. Algoritmus 4.1 Pˇríklad užití PublishBinaryMessage pro zápis URL na pasivní štítek [8] using Windows.Networking.Proximity; using Windows.Security.Cryptography; public void tryWriteURIToNFCTag() { var device = ProximityDevice.GetDefault(); if (device != null) { string uri = "http://fi.muni.cz/" var id = device.PublishBinaryMessage ("WindowsUri:WriteTag",CryptographicBuffer.ConvertStringToBinary (uri,BinaryStringEncoding.Utf16LE)); } }
Pˇríjem zpráv provádíme voláním SubscribeForMessage metody objektu typu ProximityDevice. Parametry jsou obdobné jako pˇri odesílání zpráv. Zrušení pˇríjmu zpráv se provádí pˇredáním id metodˇe StopSubscribingForMessage, nebo odstranˇením objektu ProximityDevice[8, 10]. 4.2.2 Párování prostˇrednictvím tˇrídy PeerFinder Pomocí tˇrídy PeerFinder z API Proximity lze bezobslužnˇe propojit dvˇe spuštˇené Windows (Phone) aplikace. Spojení je navázáno pˇriblížením NFC zaˇrízení, tzv. gestem dotyku, nebo prozkoumáním bezdrátových sítí v dosahu a je realizováno pomocí Bluetooth, nebo existující sít’ové infrastruktury. Samotné propojení zaˇrízení je realizováno objektem StreamSocket, ve kterém jsou duležité ˚ vlastnosti InputStream a OutputStream prostˇrednictvím kterých spolu aplikace mohou komunikovat[8]. Pˇri pokusu o spojení pomocí gesta dotyku je uživatel, který nemá spuštˇenou požadovanou aplikaci vyzván k jejímu spuštˇení. Pokud nemá aplikaci v zaˇrízení nainstalovanou, je mu nabídnuto stažení z Windows Store6 . Duležité ˚ metody tˇrídy PeerFinder jsou Start a Stop, pomocí kterých mu˚ žeme aplikaci zviditelnit, nebo skrýt pro ostatní zaˇrízení. Ostatní zaˇrízení v dosahu sít’ové infrastruktury je možné vyhledat pomocí metod FindAllPeersAsync. Je-li nˇejaké zaˇrízení nalezeno, mužeme ˚ se k nˇemu pˇripojit me6. Služba pro elektronickou distribucí aplikací pro platformu Windows Phone.
16
4. NFC VE W INDOWS P HONE todou ConnectAsync. V zaˇrízení, ke kterému se chce jiné zaˇrízení pˇripojit je vyvolána událost ConnectionRequested. Události TriggeredConnectionStateChanged nastane, pokud jsme zaˇrízení pˇriblížili do NFC pole jiného zaˇrízení.
4.3
API SmartCards
Toto API je ve WP pˇrítomno od verze 8.1 a obsahuje tˇrídy pro komunikaci s cˇ ipovými kartami prostˇrednictvím APDU pˇríkazu. ˚ Komunikovat lze s bezkontaktní kartou ISO/IEC 14443, nebo se SIM kartou s bezpeˇcnostním elementem. API také umožnuje ˇ vytváˇret platební aplikace nezávislé na aplikaci Penˇeženka. Pro použití API SmartCards je v telefonu vyžadován NFC cˇ ip podporující APDU. V dobˇe psaní této BP takový cˇ ip mají telefony Nokia (Microsoft) 830, 735 a 730. Všechny tˇri používají cˇ ip NXP PN547. Zaˇrízení s tímto cˇ ipem podporují NFC karty MIFARE Classic/Ultralight/DESfire. Omezenou podporu mají také karty ISO 15693 a FeliCa. Dá se oˇcekávat, že nové modely telefonu˚ budou mít také NFC cˇ ip podporující toto API[11, 12]. 4.3.1 Tˇrídy API SmartCards API nabízí nˇekolik tˇríd, pomocí kterých mužeme ˚ s kartami komunikovat. Uvádím nejduležitˇ ˚ ejší z nich[7]: SmartCardReader Pˇredstavuje informace o NFC cˇ teˇcce v telefonu. Muže ˚ pˇredstavovat jak terminál pro SIM kartu s bezpeˇcnostním elementem, tak NFC cˇ teˇcku. Události: CardAdded Nastane když se v NFC poli objeví karta. CardRemoved Nastane když je karta z NFC pole vyjmuta. Metody: FindAllCardsAsync Pomocí této metody je možno získat objekty pˇredstavující všechny karty pˇripojené ke cˇ teˇcce. GetDeviceSelector Vrací Advanced Query Syntax (AQS). AQS je rˇ etˇezec reprezentující všechny cˇ teˇcky nacházející se v zarˇ ízení. SmartCard Objekt tohoto typu reprezentuje samotnou cˇ ipovou kartu pˇripojenou k terminálu 17
4. NFC VE W INDOWS P HONE Metody: ConnectAsync Pomocí této metody se lze ke kartˇe pˇripojit a následnˇe s kartou pracovat. GetAnswerToResetAsync Vrací Answer To Reset7 (ATR). SmartCardConnection Objekt pˇredstavující spojení s cˇ ipovou kartou. Pomocí tohoto objektu mužeme ˚ do kartu posílat C-APDU. Metody TransmitAsync Odešle C-APDU do karty a vrátí R-APDU. 4.3.2 APDU komunikace s bezkontaktní cˇ ipovou kartou Použití API pro komunikaci s bezkontaktní kartou lze rozdˇelit na tˇri kroky [11]. Jako první je nutné pomocí metody SmartCardReader.FromIdAsync získat objekt typu SmartCardReader pˇredstavující NFC cˇ teˇcku. Argumentem je identifikátor NFC cˇ teˇcky, který lze získat pomocí metody DeviceInformation.FindAllAsync s argumentem AQS (tedy rˇ etˇezcem pˇredstavujícím všechny cˇ teˇcky zaˇrízení). Metoda vrátí kolekci objektu. ˚ V telefonu je ale typicky pouze jedna NFC cˇ teˇcka, takže vybereme první z nich a jeho vlastnost Id je požadovaný identifikátor cˇ teˇcky. Pokud je kolekce prázdná, v telefonu není podporovaná NFC cˇ teˇcka. Tˇrída DeviceInformation nepatˇrí do API SmartCards, ale do API Windows.Devices.Enumeration a reprezentuje obecné zaˇrízení telefonu. var dvcs = await DeviceInformation.FindAllAsync(SmartCardReader.GetDeviceSelector( SmartcardReaderKind.Nfc)); var nfcReader = await SmartCardReader.FromIdAsync(dvcs.First().Id) ;
Po získání objektu reprezentující cˇ teˇcku je možné reagovat na její události CardAdded a CardRemoved. Metody pˇriˇrazené události CardAdded se zaˇcnou vykonávat, pokud je ke cˇ teˇcce pˇriložena karta. Metody události CardRemoved jsou spuštˇeny pˇri odebrání karty. Po vyvolání události CardAdded se ke kartˇe lze pˇripojit a komunikovat s ní pomocí objektu CardConnection. 7. Série bytu˚ obsahující informace o charakteristikách cˇ ipové karty, jejím chování a stavu.
18
4. NFC VE W INDOWS P HONE nfcReader.CardAdded += NfcCardAdded; nfcReader.CardRemoved += NfcCardRemoved; public async void NfcCardAdded(SmartCardReader sender, CardAddedEventArgs args) { // Pripojeni ke karte a nasledne operace s kartou } public async void NfcCardRemoved(SmartCardReader sender, CardAddedEventArgs args) { // Operace po odpojeni karty }
Argument typu CardAddedEventArgs události CardAdded obsahuje objekt reprezentující kartu ve vlastnosti SmartCard. Pomocí jeho asynchronní metody ConnectAsync je možné se s kartou spojit a získat objekt CardConnection. Pomocí spojení je možné odesílat C-APDU metodou TransmitAsync. C-APDU je metodˇe pˇredán jako argument, vrácená hodnota je RAPDU. C-APDU i R-APDU reprezentují objekty typu IBuffer. public async void NfcCardAdded(SmartCardReader sender, CardAddedEventArgs args) { using (var nfcCon = await args.SmartCard.ConnectAsync()) { var rApduBuf = await nfcCon.TransmitAsync(cApduBuf); } }
API neprovádí žádnou kontrolu APDU. Muže ˚ se proto stát že odešleme C-APDU s nesprávnou strukturou. Pokud na takto špatnˇe strukturovaný dotaz karta odpoví, je vrácen R-APDU obvykle s byty SW1 a SW2 oznaˇcující chybu. Pokud na špatnˇe strukturovaný APDU nedokáže karta odpovˇedˇet je vyvolána výjimka. Toto se stane napˇríklad odesláním C-APDU o délce menší než 4 bajty. 4.3.3 Emulace karet V módu emulace karty NFC zajišt’uje pˇrenos dat mezi telefonem a cˇ teˇckou. Aby se telefon choval jako cˇ ipová karta, je nutné nahradit bezpeˇcnostní prvek simulované karty. Ten muže ˚ být ve formˇe cˇ ipu napevno pˇripájeného na desku telefonu, souˇcástí speciální zabezpeˇcené SIM karty, nebo muže ˚ být souˇcástí pamˇet’ové karty (tato možnost se však témˇerˇ nepoužívá). Terminál poté komunikuje pˇrímo s bezpeˇcnostním prvkem a NFC slouží pouze jako prostˇredník pˇrenášející data. Zabezpeˇcený cˇ ip na základní desce využívá napˇríklad spoleˇcnost Apple u svých telefonu˚ pro platební systém Apple Pay[31]. 19
4. NFC VE W INDOWS P HONE
Obrázek 4.1: Schéma emulace karty pomocí hardwarového bezpeˇcnostního prvku [42] Další možností je emulovat bezpeˇcnostní prvek softwarovˇe. Tento pˇrístup se nazývá Host-based Card Emulation (HCE). NFC rˇ adiˇc v tomto pˇrípadˇe komunikuje s procesorem telefonu, který se chová jako zabezpeˇcený cˇ ip. HCE využívá napˇríklad platforma Android u svého platebního systému Wallet[31].
Obrázek 4.2: Schéma emulace karty pomocí HCE [42] Windows 8.1 umožnuje ˇ softwarovou emulaci karet pouze pomocí zabezpeˇcené SIM karty. Oproti WP 8 je v oblasti emulace karet nˇekolik novinek [11]. První z nich je zrušení API Microsoft.Phone.SecureElement jehož funkce jsou nahrazeny v API SmartCards. Vývoj aplikací emulující karty se zjednodušil a nadále nejsou vyžadovány žádné speciální nástroje ani povolení ze strany Microsoftu. Nejsou potˇreba ani speciální ovladaˇce pro konkrétní zaˇrízení, aplikace by mˇela fungovat na všech zaˇrízeních s NFC a WP 8.1 bez rozdílu. 20
4. NFC VE W INDOWS P HONE Komunikace se zabezpeˇcenou SIM kartou je podobná jako v v pˇrípadˇe bezkontaktních cˇ ipových karet. Aplikaˇcní kód muže ˚ reagovat na pozadí na událost pˇriblížení telefonu terminálu bez toho, aby mˇel uživatel aplikaci spuštˇenou. S pˇridˇeleným oprávnˇením ze strany Microsoftu muže ˚ být aplikaˇcní kód spuštˇen i pˇri zamknuté obrazovce telefonu. Nemá-li toto oprávnˇení, uživatel je nejprve vyzván, aby zadal PIN. Uživatelé si sami v nastavení telefonu vyberou, kdy bude emulace karty aktivní. Na výbˇer jsou možnosti: vždy, pˇri zapnutém telefonu, pˇri zapnutém displeji, nebo pˇri odemˇceném telefonu. Emulaci karet pˇri vypnutém telefonu podporují pouze nˇekteré telefony (napˇríklad HTC 8X)[6]. Toto nastavení lze zjistit z kódu aplikace a pˇrípadnˇe uživatele pˇresmˇerovat do nastavení telefonu pˇrímo z aplikace[13]. Užití API SmartCards pro emulaci karet Aplikace muže ˚ s applety na zabezpeˇcené SIM kartˇe komunikovat pomocí APDU pˇríkazu. ˚ Postup je témˇerˇ stejný jako v pˇrípadˇe komunikace s bezkontaktními kartami. Objekty cˇ teˇcky SmartCardReader dostaneme stejným postupem, typ cˇ teˇcky je ale SmartCardReaderKind.Uicc. SIM kartu nemu˚ žeme z telefonu odbírat a pˇridávat za bˇehu, události CardAdded a CardRemoved proto nedávají smysl. Místo toho se k objektu SmartCard dostaneme zavoláním metody FindAllCardsAsync. Následnˇe s objektem pracujeme stejnˇe jako v pˇrípadˇe bezkontaktní cˇ ipové karty. var cards if (cards { // v SmartCard
= await reader.FindAllCardsAsync(); == null || cards.length == 0) telefonu neni pritomna UICC karta } uicc = cards.First();
Pokud aplikace emulující kartu není spuštˇena na popˇredí a uživatel telefon pˇriloží k terminálu, aplikace by se mˇela o této události dozvˇedˇet (napˇríklad kvuli ˚ zobrazení informace o platbˇe, nebo vyžádání PIN kódu). Tˇremi hlavními systémovými událostmi, ke kterým mužeme ˚ naši aplikaci pˇriˇradit jsou Transaction, FieldEntry a FieldExit. FieldEntry a FieldExit jsou události pˇriložení telefonu ke cˇ teˇcce a jeho odebrání. Transaction nastává, pokud je provedena transakce[13]. Pro zpracování tˇechto událostí je potˇreba vytvoˇrit tˇrídu implementující rozhraní IBackgroundTask. Tuto tˇrídu je nutné potom zaregistrovat ze spuštˇené aplikace za použití tˇrídy BackgroundTaskBuilder. Pokud dojde k vyvolání nˇekteré z událostí, mužeme ˚ spustit aplikaci. Aplikace, která na událost zareagovala na pozadí však muže ˚ spustit pouze sama sebe. Emulace karet pomocí zabezpeˇcené SIM karty není pˇríliš rozšíˇrená a ani 21
4. NFC VE W INDOWS P HONE s ní nelze pˇríliš poˇcítat v budoucnosti. Hlavním duvodem ˚ je nutnost speciální SIM karty, která vyžaduje spolupráci mobilních operátoru. ˚ Zmˇenit by to mohla podpora HCE ve Windows Mobile 10[5].
22
5 Aplikace komunikující s cˇ ipovou kartou V rámci praktické cˇ ásti bylo mým úkolem vytvoˇrit aplikaci schopnou komunikovat s NFC kartou pomocí APDU, která na kartˇe provede základní kryptografické operace. Aplikace, kterou jsem pro tuto demonstraci vytvorˇ il, je terminál pro APDU komunikaci s cˇ ipovou kartou. Aplikaci jsem umístil do Windows Phone Store pod názvem NFC APDU Tool a je dostupná na adrese: http://bit.ly/1O7Jft7.
Obrázek 5.1: Snímky obrazovky
5.1
Použití aplikace
Scénáˇr použití aplikace je následující: 1.
Uživatel zadá do vstupního textového pole jeden, nebo více C-APDU.
2.
Po pˇriložení karty se aktivuje tlaˇcítko odeslat pˇríkaz, uživatel pomocí tlaˇcítka odešle C-APDU do karty.
3.
Pˇred odesláním je zkontrolována struktura všech APDU pˇríkazu˚ a v pˇrípadˇe chyby je uživatel upozornˇen.
4.
První C-APDU je odeslán do karty a je zobrazen R-APDU. Pokud uživatel zadal více C-APDU, opakuje se tento bod, dokud se neprovedou všechny pˇríkazy. 23
ˇ 5. A PLIKACE KOMUNIKUJÍCÍ S CIPOVOU KARTOU
5.
Historie všech operací se postupnˇe zobrazuje na displeji.
Jednotlivé C-APDU byty se zapisují jako dvojice alfanumerických znaku. ˚ Každá dvojice znaku˚ reprezentuje jeden bajt C-APDU a jednotlivé bajty mohou být oddˇeleny mezerami. Jeden rˇ ádek reprezentuje jeden C-APDU. Pokud rˇ ádek zaˇcíná znakem #, je považován za poznámku a ignoruje se. Pokud uživatel zadal C-APDU s chybnou strukturou, nebo jej zapsal ve špatném formátu, je odkázán na rˇ ádek, ve kterém se chyba vyskytuje.
5.2
Funkce aplikace
Zobrazená historie pˇríkazu˚ barevnˇe rozlišuje význam jednotlivých bytu˚ APDU pˇríkazu˚ i odpovˇedí. V menu aplikace lze ovládat tˇri položky nastavení. První z nich je zobrazení informace o délce provádˇení pˇríkazu. ˚ Zobrazený cˇ asový údaj je interval mezi odesláním C-APDU a pˇríjmem R-APDU. Další je možností je zapnutí automatického odeslání C-APDU jakmile je karta pˇriložena. Poslední možností je automatické vyžádání dat dostupných na kartˇe. Pokud je RAPDU pˇríliš dlouhý a nevleze se do jedné odpovˇedi, byte SW1 je nastaven na hodnotu 61 a SW2 rˇ íká, kolik bajtu˚ zbývá pˇrijmout. Automatické vyžádání dat zašle C-APDU požadující zbylé byty z karty. Tento automaticky vytvoˇrený C-APDU je zobrazen v historii pˇríkazu˚ také. Aplikace si po vypnutí uchovává nastavení, vˇcetnˇe C-APDU pˇríkazu. ˚ Historie pˇríkazu˚ se po vypnutí aplikace maže. Muže ˚ se stát, že pˇri pˇrenosu nastane chyba, napˇríklad když v prubˇ ˚ ehu komunikace odstraníme kartu z NFC pole. Na chyby v komunikaci je uživatel upozornˇen.
5.3
Provedení kryptografických algoritmu˚ na kartˇe
Pro demonstraci funkˇcnosti jsem mˇel k dispozici tˇri cˇ ipové karty. První karta obsahovala aplikaci pro symetrické šifrování pomocí Trpiple DES (3DES) [32] algoritmu. Další dvˇe obsahovaly aplikaci pro vytvoˇrení RSA[33] digitálního podpisu. Testování bylo provedeno na mobilním telefonu Nokia 830. 5.3.1 RSA digitální podpis na kartˇe Obˇe cˇ ipové karty pro RSA podpis byly totožné vˇcetnˇe klíˇcu. ˚ Samotný podpis dat se provede odesláním tˇrí APDU. Prvním vybereme, jaký klíˇc a al24
ˇ 5. A PLIKACE KOMUNIKUJÍCÍ S CIPOVOU KARTOU
goritmus má karta použít. Druhý kartˇe pošle 32 bytu˚ reprezentující hash SHA256[34]. Jako poslední vyvolá samotný podpis dat na kartˇe a podepsaný hash je vrácen v R-APDU. Podepsaný hash obsahuje hlaviˇcku, tudíž se nevleze do jednoho R-APDU. Je tedy nutné vyžádat zbylé 3 bajty pomocí dalšího C-APDU. Pro testovací úˇcely jsem hash nahradil rˇ adou bytu˚ od 0x01 do 0x20. Vstupu aplikace: 1 2 3 4 5 6
#výbˇ er algoritmu a klíˇ ce 80522AA0 #odeslání dat 80580400200102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20 #podpis dat 805A000000
Výstupu aplikace: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
<<<<<<<< Card added <<<<<<<< >> 80 52 2A A0 << 90 00 ^^ 22 ms >> 80 58 04 00 20 01 02 03 04 0c 0d 0e 0f 10 11 12 13 14 15 1d 1e 1f 20 << 90 00 ^^ 484 ms >> 80 5A 00 00 00 << e0 01 00 20 85 7a 57 5a b6 13 e5 8b a7 55 66 4d 9c bf d1 fa e7 bc 8f 6c cc 81 fa f4 e2 25 58 d0 56 de 7e 2a fe a9 3c 97 64 05 ed 6d 5e ff 1d b9 c8 d1 e8 dc 2d 1e 0b 3d cd 93 56 ff c8 c4 0f c1 18 27 3e 11 ca 50 63 89 b4 61 3a d6 c7 24 e8 63 ba 11 ea 86 eb 26 49 5b e4 b9 03 87 3b f6 91 b3 31 42 f2 0e f5 2c d9 eb 5c 28 4a 35 e1 eb 3d 53 f0 97 43 92 29 91 5d c9 b3 20 40 88 80 3c 49 03 d5 00 ac ed 9d b1 93 80 7d 7d 36 45 5e 4d 8a 85 48 a3 9e ce 7d 64 0a 61 03 ^^ 458 ms >> 00 C0 00 00 03 << 9a 51 a7 90 00 ^^ 454 ms >>>>>>> Card removed >>>>>>>
05 06 07 08 09 0a 0b 16 17 18 19 1a 1b 1c
ed 2c a1 46 75 15 8c d2 9b 76 1f 29 e5 a0 da
0d 79 d6 2f da 19 df d3 a6 1b 54 07 dd 3e b7
69 ac 7f b0 32 2e 2c 67 af e5 d5 6e 8b 90 f7
40 00 80 41 af 0f 1d db 05 46 c8 fc 7a 48 d9
23 fa dd ef bc 7a 37 7b bc f9 4a 95 59 ca b3
44 57 c5 f5 8f e8 6a ad 94 d0 53 e7 a9 f3 44
1b 0c f9 7e ed ea b0 44 b4 90 96 50 8d d9 f9
Správnost elektronického podpisu jsem ovˇerˇ il pomocí veˇrejného klíˇce a online nástroje RSA Encryptor/Decryptor[35]. Zkoumal jsem také fyzické aspekty komunikace. Nejvyšší vzdálenost, kdy ještˇe telefon s kartami dokázal komunikovat byla pˇribližnˇe 2 až 3cm. Karty jsem musel umístit pˇresnˇe do místa, kde je v telefonu umístˇena NFC 25
ˇ 5. A PLIKACE KOMUNIKUJÍCÍ S CIPOVOU KARTOU
anténa, jinak nebyly zaznamenány. Dále jsem se zamˇerˇ il na rychlost odezvy karet. S kartami jsem provedl celkem 40 mˇerˇ ení, dvacet mˇerˇ ení s každou. Rychlosti obou karet byly podobné a tak jsem je vzájemnˇe neporovnával. Z namˇerˇ ených hodnot vyplývá, že nejrychlejší operací je výbˇer algoritmu. Samotná kryptografie na kartˇe je naopak nejpomalejší. Doba odezvy (ms)
Výbˇer algoritmu
Odeslání dat
Podpis dat
Pˇríjem zbylých 3B
Prumˇ ˚ erná
78
216
370
218
Medián
62
196
320
205
Nejnižší
23
24
283
43
Nejvyšší
242
428
674
396
Tabulka 5.1: Rychlost karty pˇri podpisu dat 5.3.2 3DES šifrování na kartˇe Karta pro 3DES šifrování, kterou jsem mˇel k dispozici, fungovala od pocˇ átku problematicky. Na zaˇcátku testování operaˇcní systém cˇ asto zobrazoval chybové hlášky týkající se komunikace s kartou. Postupnˇe karta pˇrestala fungovat úplnˇe. Z toho duvodu ˚ jsem neprovedl testy rychlosti a výpis komunikace mám pouze z debugování programu. Šifrování na kartˇe se provádí dvˇema C-APDU. Prvním vybereme aplikaci pro šifrování, druhým data na kartu pošleme. Karta data ihned vrátí v zašifrované podobˇe. Zde je výstup komunikace s kartou. K šifrování sloužila rˇ ada 32 bytu˚ od 0x01 do 0x20. 1 2 3 4 5 6 7 8
> 00 A4 04 0C 08 A0 00 00 00 28 FF E0 01 < 5A 08 A1 A2 A3 A4 A5 A6 A7 A8 90 00 > 80 88 00 00 20 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 < 0B CA 62 2E 84 50 AE 72 B3 48 6E C9 D9 D1 F7 56 AA C7 03 FA A8 8E AE 03 48 B2 CF AA 7A EA 8F B6 90 00
5.3.3 Struktura aplikace K vývoji aplikace jsem použil nástroje Microsoft Visual Studio 2015 a Microsoft Blend For Visual Studio 2015. Aplikace je napsaná v programovacím jazyce jazyce C# 6.0, grafické uživatelské prostˇredí (GUI) aplikace je definováno znaˇckovacím jazykem XAML 1 . Testování probíhalo na telefonech 1. XML znaˇckovací jazyk, který Microsoft používá u svých produktu˚ k definici GUI [36]
26
ˇ 5. A PLIKACE KOMUNIKUJÍCÍ S CIPOVOU KARTOU
Nokia 830 a Nokia 925 s operaˇcním systémem WP 8.1. GUI je definováno v souboru MainPage.xaml pomocí XAML znaˇcek. V souboru MainPage.xaml.cs je logika reagující na interakce uživatele. Du˚ ležitá je metoda SendCommandsFromInput, která kontroluje správnost CAPDU na vstupu a pˇríkazy pošle kartˇe. Logika pro komunikaci s kartou se nachází ve tˇrídˇe NfcViewModel. Metoda SendCommandApduAsync odesílá C-APDU do karty a vrací RAPDU. V této tˇrídˇe jsou dále vlastnosti navázané na grafické prvky aplikace využitím pˇrístupu data binding2 . Texty použité v GUI jsou uloženy v samostatném souboru Resources.resw, umístˇeném v adresáˇri Strings. Tˇrídy CommandApdu a ResponseApdu implementující rozhraní IApdu pˇredstavují APDU pˇríkazy s byty rozdˇelenými podle významu. Konstruktory tˇechto tˇríd vyžadují jako argument pole bytu˚ pˇredstavující APDU. Pˇri konstrukci objektu je APDU zkontrolován a v pˇrípadˇe chybné struktury je vyvolána výjimka ResponseApduFormatException, nebo CommandApduFormatException.
Obrázek 5.2: Struktura tˇríd programu
2. Zpusob ˚ svázání vlastnosti objektu s ovládacím prvkem GUI. Vlastnost obsahuje data, které GUI zobrazuje[38]
27
6 Závˇer Cílem mé práce bylo ovˇerˇ it možnosti využití NFC v mobilním operaˇcním systému Windows Phone 8.1 a zjistit, jestli je možné komunikovat s cˇ ipovými kartami pomocí APDU. V praktické cˇ ásti jsem mˇel vytvoˇrit mobilní aplikaci, pomocí které zjištˇené poznatky ovˇerˇ ím. Pˇri psaní práce jsem cˇ erpal pˇredevším z technický cˇ lánku˚ na webových stránkách a technické literatury. WP verze 8 podporoval NFC jen velice omezenˇe. Jeho funkcionalita byla v podstatˇe pouze o práci s NDEF formátem. Navíc neumˇel napˇríklad zapisovat NDEF zprávy na nenaformátovaný štítek. WP 8.1 nˇekterá omezení odstranuje ˇ a pˇridává navíc nové API pro práci s cˇ ipovými kartami. První novinkou je vylepšená podpora emulace karet. Ta už není vázána na vestavˇenou aplikaci Penˇeženka a proces vývoje aplikací pro emulaci se zjednodušil. Nevýhodou ale zustává ˚ nutnost pˇrítomnosti speciální SIM karty. To je hlavním duvodem ˚ toho, že se emulace karet na této platformˇe v praxi využívá jen velmi málo, hlavnˇe k mobilním platbám. Situaci by mohla zlepšit softwarová emulace karet HCE, kterou pˇrinese aktualizace na Windows 10 Mobile. Ve WP 8.1 lze pomocí NDEF zpráv zapisovat, nebo cˇ íst informace z NFC štítku. ˚ Pomocí NDEF zpráv lze také komunikovat s jiným aktivním zaˇrízením. U dat vˇetšího objemu, jako jsou multimédia, je NFC použito pouze pro bezobslužné spojení zaˇrízení pomocí BT, kterým jsou následnˇe data pˇrenesena. Podpora zasílání NDEF zpráv se oproti minulé verzi zlepšila. API Proximity nyní umožnuje ˇ uzamknout štítky a zapisovat NDEF zprávy i na nenaformátované štítky. Nejvˇetším pˇrínosem oproti minulé verzi v oblasti NFC vidím v podpoˇre komunikace s cˇ ipovými kartami pomocí APDU pˇríkazu. ˚ Telefon se muže ˚ chovat jako karetní terminál a komunikovat s jakoukoliv bezkontaktní cˇ ipovou kartou ISO/IEC 14443, se kterou je NFC ovladaˇc telefonu kompatibilní. Vývojáˇrum ˚ je k dispozici API SmartCard, které umožnuje ˇ jednoduché zasílání APDU pˇríkazu. ˚ Pomocí tohoto API se také provádí komunikace se zabezpeˇcenou SIM kartou v pˇrípadˇe módu emulace karty. Jediné omezení v použití tohoto API je potˇreba NFC ovladaˇce, který APDU podporuje. V dobˇe psaní této práce mají takový ovladaˇc telefony Nokia 830, 730 a 735. Použití API SmartCard jsem demonstroval v praktické cˇ ásti vytvoˇrením aplikace, pˇredstavující APDU terminál. Funkˇcnost aplikace jsem ovˇerˇ oval pomocí cˇ ipových karet provádˇející kryptografické operace šifrování a digitální podpis. Aˇckoliv jedna karta v prubˇ ˚ ehu testování pˇrestala fungovat, 28
ˇ 6. Z ÁV ER
funkˇcnost aplikace se podaˇrilo ovˇerˇ it. Pˇri testování jsem používal mobilní telefon Nokia 830. Systém WP 8.1 oproti pˇredchozí verzi zase o kousek vylepšil podporu NFC. Poslední vˇec, která tomuto systému muže ˚ chybˇet, je podpora softwarové emulace karet. Ta však pˇrijde s aktualizací na Windows 10 Mobile. Emulace karet by mohla pˇrispˇet k rozšíˇrení využití NFC na tomto systému. Odpadne totiž nejvˇetší pˇrekážka a tou je nutnost speciální SIM karty.
29
Pˇrílohy Souˇcástí práce je archív obsahující zkompilovanou mobilní aplikaci pro komunikaci s cˇ ipovými kartami vˇcetnˇe jejich zdrojových kódu. ˚
30
Literatura [1] RANKL, W. Smart card handbook. 4th ed. Hoboken, N.J.: Wiley, 2010, xliv, 1043 p. ISBN 978-0-470-74367-6. [2] NFC Data Exchange Format. 2001-. Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation [cit. 2015-0510]. Dostupné z: http://cs.wikipedia.org/wiki/NFC_Data_ Exchange_Format [3] An Introduction to Java Card Technology - Part 1. Oracle.com [online]. 2003 [cit. 2015-03-13]. Dostupné z: http://www.oracle.com/ technetwork/java/javacard/javacard1-139251.html [4] NFC Forum: Membership Overview. NFC Forum [online]. 2015 [cit. 2015-06-14]. Dostupné z: http://nfc-forum.org/about-us/ join-the-forum/membership-overview/ [5] Windows 10 for mobile gets HCE. 2015. NFC World [online]. [cit. 2015-05-10]. Dostupné z: http://www.nfcworld.com/2015/03/ 25/334722/windows-10-for-mobile-gets-hce/ [6] Telefony s Windows Phone 8.1 umí platit pˇres NFC. 2014. NearField.cz [online]. [cit. 2015-0510]. Dostupné z: http://nearfield.cz/clanky/ nfc-platby-a-windows-phone-ode-dneska-ano-141 [7] Windows.Devices.SmartCards namespace [online]. 2014. [cit. 201505-10]. Dostupné z: https://msdn.microsoft.com/en-us/ library/windows/apps/windows.devices.smartcards. aspx [8] Windows.Networking.Proximity namespace [online]. 2013. [cit. 201505-11]. Dostupné z: https://msdn.microsoft.com/en-us/ library/windows/apps/windows.networking.proximity. aspx [9] Proximity and tapping (XAML) [online]. 2013. [cit. 2015-05-11]. Dostupné z: https://msdn.microsoft.com/en-us/library/ windows/apps/xaml/hh465221.aspx [10] Using NFC (Near Field Communication). 2012. In: Using NFC (Near Field Communication) [online]. [cit. 2015-05-11]. Dostupné z: 31
ˇ 6. Z ÁV ER
https://software.intel.com/sites/default/files/d7/ 1d/using-nfc.pdf [11] Announcing what is next for Windows Phone NFC [online]. 2014 [cit. 2015-06-14]. Dostupné z: http: //nfc-forum.org/wp-content/uploads/2014/02/ Windows-Phone-NFC-Forum-Developer-Spotlight-2014. pdf [12] NFC Smart Card Reader PC/SC Library [online]. 2014 [cit. 2015-05-09]. Dostupné z: https://nfcsmartcardreader.codeplex.com/ [13] App development guide for UICC-based NFC card emulation: for Windows Phone 8.1. [online]. 2014 [cit. 2015-04-21]. Dostupné z: http://www.microsoft.com/en-us/download/details. aspx?id=43681 [14] Smart Card & Security Basics [online]. In: . [cit. 2016-01-02]. Dostupné z: http://www.smartcardbasics.com/pdf/7100030_ BKL_Smart-Card-Security-Basics.pdf [15] ISO 7816-4: Interindustry Commands for Interchange: 5. Basic Organizations. CardWerk: Smart Cards Solutions [online]. [cit. 201601-02]. Dostupné z: http://www.cardwerk.com/smartcards/ smartcard_standard_ISO7816-4_5_basic_organizations. aspx#chap5_3 [16] Smart card application protocol data unit. Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2015 [cit. 2016-01-02]. Dostupné z: https://en.wikipedia.org/wiki/ Smart_card_application_protocol_data_unit [17] What is RFID? Technolovelgy.com: Where science meet fiction [online]. [cit. 2016-01-03]. Dostupné z: http://www.technovelgy.com/ct/ technology-article.asp [18] How NFC Works. Nearfieldcommunication.org [online]. [cit. 2016-0103]. Dostupné z: http://www.nearfieldcommunication.org/ how-it-works.html [19] About the NDEF Format. Adafruit [online]. [cit. 201601-03]. Dostupné z: https://learn.adafruit.com/ adafruit-pn532-rfid-nfc/ndef 32
ˇ 6. Z ÁV ER
[20] No NFC in Windows Phone — yet. NFCWorld.com [online]. [cit. 2016-01-03]. Dostupné z: http://www.nfcworld.com/2011/12/ 12/311904/no-nfc-in-windows-phone-yet/ [21] Windows Phone version history. Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2015 [cit. 2016-01-03]. DostupnÃl’z:https://en.wikipedia.org/wiki/ Windows_Phone_version_history [22] Windows Phone 7 based on a hybrid Windows CE 6 / Compact 7 kernel. Engadget [online]. [cit. 2016-01-03]. Dostupné z: http://www.engadget.com/2010/05/04/ windows-phone-7-based-on-a-hybrid-windows-ce-6-compact-7-kerne/ [23] Microsoft’s Windows Phone 8 finally gets a ’real’ Windows core. ZDNet [online]. [cit. 2016-01-03]. Dostupné z: http://www.zdnet.com/article/ microsofts-windows-phone-8-finally-gets-a-real-windows-core/ [24] Windows Phone Wallet. WindowsPhone.com [online]. [cit. 201601-03]. Dostupné z: http://www.windowsphone.com/en-us/ how-to/wp8/apps/wallet [25] API. TechTerms.com [online]. [cit. 2016-01-03]. Dostupné z: http:// techterms.com/definition/api [26] SDK. TechTerms.com [online]. [cit. 2016-01-03]. Dostupné z: http:// techterms.com/definition/sdk [27] IGOE, Tom, Don COLEMAN a Brian JEPSON. Beginning NFC: near field communication with Arduino, Android, and Phonegap. First edition. Beijing: O’Reilly, 2014, viii, 233 pages. ISBN 14-493-7206-6. [28] COSKUN, Vedat, Kerem OK a Busra OZDENIZCI. Near field communication: from theory to practice. Hoboken, NJ: Wiley, 2012, xxviii, 361 s. ISBN 978-1-119-97109-2. [29] How can I NDEF format a tag. NFCInteractor.com [online]. [cit. 2016-01-03]. Dostupné z: http://www.nfcinteractor.com/ question/how-can-i-ndef-format-a-tag/ ˇ [30] Použití v CR a zahraniˇcí. Platimbezkontaktne.cz [online]. [cit. 2016-01-03]. Dostupné z: https://www.platimbezkontaktne. cz/requests/faq 33
ˇ 6. Z ÁV ER
[31] Apple Pay vs Google Wallet : The Secure Element. Ganeshji [online]. [cit. 2016-01-03]. Dostupné z: http://www.gmarwaha.com/blog/2014/10/02/ apple-pay-vs-google-wallet-the-secure-element/ [32] Triple DES. Technopedia [online]. [cit. 2016-01-04]. Dostupné z: https://www.techopedia.com/definition/4144/ triple-des [33] RSA algorithm (Rivest-Shamir-Adleman) definition. TechTarget.com [online]. [cit. 2016-01-04]. Dostupné z: http://searchsecurity. techtarget.com/definition/RSA [34] Secure Hashing Algorithm (SHA-1, SHA-256, SHA-384, SHA-512). Techabulary [online]. [cit. 2016-01-04]. Dostupné z: http://www. techabulary.com/s/sha/ [35] RSA Encryptor/Decryptor/Key Generator/Cracker. RSA Encryptor/Decryptor/Key Generator/Cracker [online]. [cit. 2016-01-04]. Dostupné z: http://nmichaels.org/rsa.py [36] What is XAML? Microsoft MSDN [online]. [cit. 2016-01-04]. Dostupné z: https://msdn.microsoft.com/cs-cz/library/ cc295302.aspx [37] Introduction to the C# Language and the .NET Framework. Microsoft MSDN [online]. [cit. 2016-01-04]. Dostupné z: https://msdn. microsoft.com/en-us/library/z1zx9t92.aspx [38] Data binding for Windows Phone 8. Microsoft MSDN [online]. [cit. 2016-01-04]. Dostupné z: https://msdn.microsoft.com/en-us/ library/windows/apps/cc278072(v=vs.105).aspx [39] Complete list of APDU responses. EFTLab.com.au [online]. [cit. 201601-04]. Dostupné z: https://www.eftlab.com.au/index.php/ site-map/knowledge-base/118-apdu-response-list ˇ [40] Cipová karta. Wikipedia [online]. [cit. 2016-01-05]. Dostupné z: https://cs.wikipedia.org/wiki/%C4%8Cipov%C3%A1_ karta [41] NFC Data Exchange Format (NDEF) [online]. [cit. 2016-01-05]. Dostupné z: http://ibadrinath.blogspot.cz/2012/07/ nfc-data-exchange-format-ndef.html 34
ˇ 6. Z ÁV ER
[42] Host-based Card Emulation [online]. [cit. 2016-01-05]. Dostupné z: http://developer.android.com/guide/topics/ connectivity/nfc/hce.html
35