Programovanie

Čipové karty: základný náter

Čipové karty v poslednej dobe zaznamenávajú veľký rozruch na webe, na konferencii JavaOne minulý rok v apríli (štyri sa zaoberali touto technológiou), na veľkých sieťových spravodajských staniciach a na CNN. V tomto článku uvedieme inteligentnú kartu do života pomocou príkladu skutočnej inteligentnej karty. Tu uvedené techniky vám umožnia začať budovať Java aplikácie, ktoré majú povolenú čipovú kartu.

Zameriame sa na dva typy čipových kariet: pamäťové čipové karty, ktoré je možné považovať za nepatrné vymeniteľné disky na čítanie a zápis s voliteľným zabezpečením; a procesorové karty, ktoré je možné považovať za miniatúrne počítače so vstupným a výstupným portom. Budúce články sa budú podrobnejšie zaoberať procesorovými kartami.

Ako podstata článku vyvinieme jednoduchý prototyp čítania a zápisu údajov na inteligentnú kartu. Budeme diskutovať o preukaz na lekársky predpis, ktorá vedie zoznam všetkých vašich receptov a sleduje vaše poistenie, plány receptov a ďalšie užitočné informácie. Ďalšie články sa budú zaoberať myšlienkou lekárskeho predpisu.

Všimnete si, že opakujúcou sa témou, ktorá sa v tejto sérii vyskytuje na čipových kartách, je potreba bezpečnostného rámca, ktorý zabráni podvodným doplnkom, komponentom ActiveX atď. V získavaní vašich osobných alebo firemných informačných dobrôt. Na tento účel vám ukážka toho, ako čítať a zapisovať údaje na čipovú kartu obsiahnutá v tomto článku, poskytne trvalé, bezpečné (a prenosné) úložisko.

Čo je to čipová karta?

Inteligentnú kartu si môžete predstaviť ako „kreditnú kartu“, na ktorej je „mozog“, pričom mozog je malý vložený počítačový čip. Tento počítač s kartou možno naprogramovať na vykonávanie úloh a ukladanie informácií, ale uvedomte si, že mozog je málo - čo znamená, že výkon čipovej karty výrazne zaostáva za vašim stolným počítačom.

Čipové karty sa v súčasnosti používajú v telefónnych, dopravných, bankových a zdravotníckych transakciách a čoskoro - vďaka vývojárom ako ste vy - ich čoskoro začneme používať v internetových aplikáciách. Čipové karty sa už veľmi často používajú v Japonsku a Európe a získavajú na popularite v USA. V súčasnosti sa v priemysle čipových kariet v tejto krajine nedávno vyskytli tri významné udalosti:

PC / SC

Microsoft a niekoľko ďalších spoločností predstavených PC / SC, aplikačné rozhranie inteligentných kariet na komunikáciu s inteligentnými kartami z platforiem osobných počítačov založených na platforme Win32. PC / SC momentálne nepodporuje systémy iné ako Win32 a nemusí to tak nikdy byť. O tom sa budeme podrobnejšie rozprávať neskôr.

OpenCard Framework

OpenCard je otvorený štandard, ktorý poskytuje interoperabilitu aplikácií inteligentných kariet medzi NC, POS, stolnými počítačmi, notebookmi, set topmi atď. OpenCard sľubuje, že bude poskytovať 100% čisté aplikácie inteligentných kariet Java. Aplikácie inteligentných kariet často nie sú čisté, pretože komunikujú s externým zariadením alebo používajú knižnice na klientovi. (Ako vedľajšia poznámka, 100% čisté aplikácie by mohli existovať aj bez OpenCard, ale bez nej by vývojári používali domáce rozhrania na čipové karty.) OpenCard tiež poskytuje vývojárom rozhranie pre PC / SC pre použitie existujúcich zariadení na Win32 platfroms.

JavaCard

JavaCard bol predstavený spoločnosťou Schlumberger a nedávno bol štandardne predložený spoločnosťou JavaSoft. Schlumberger má v súčasnosti jedinú kartu Java na trhu a spoločnosť je prvým držiteľom licencie JavaCard. Čipová karta, ktorá má potenciál stanoviť celkový štandard inteligentných kariet, obsahuje JavaCard zo štandardných tried a rozhraní API, ktoré umožňujú spúšťanie appletov Java priamo na štandardnej karte vyhovujúcej ISO 7816. Karty JavaCards umožňujú bezpečné a na čipoch nezávislé vykonávanie rôznych aplikácií.

Poznámka:

Aj keď sa tento článok zameriava na čipové karty, je dôležité si uvedomiť, že sa neobmedzujete iba na tieto druhy zariadení. Osobne uprednostňujem zariadenie „Ibuttons“, ktoré vyrába Dallas Semiconductor. Je malý a prenosný ako kreditná karta, ale o toľko šikovnejší. Prečo? Pri hľadaní karty nemusíte vykopávať svoju peňaženku; Tlačidlá Ibuttons sú tam priamo na vašom prste. Áno, je to prsteň!

Zatiaľ čo bezkontaktne verzie čipovej karty skutočne existujú (ďalšie informácie nájdete nižšie), myslím si, že zariadenie typu Ibuttons s funkčnými šperkami by mohlo byť celkom ziskové. Ďalšie informácie o tlačidlách Ibuttons nájdete v časti Zdroje. Mimochodom, tím Java Commerce predviedol minulý rok v auguste na Java Internet Business Expo (JIBE) v New Yorku „JavaRing“. O tom sa dočítate v článku v Šťastie časopis (opäť pozri sekciu Zdroje).

Prečo používať čipovú kartu?

Aké sú výhody použitia čipovej karty? Čipová karta:

  • je spoľahlivejšia ako karta s magnetickým prúžkom
  • v súčasnosti dokáže uložiť stokrát viac informácií ako karta s magnetickým prúžkom
  • je ťažšie manipulovať ako mag pruhy
  • môžu byť jednorazové alebo opakovane použiteľné
  • môže vykonávať rôzne funkcie v širokej škále priemyselných odvetví
  • je kompatibilný s prenosnými elektronickými zariadeniami, ako sú telefóny, osobné digitálne asistenti (PDA) a počítače
  • sa neustále vyvíja (koniec koncov, obsahuje počítačový čip)

Typy čipových kariet

Ako už bolo spomenuté vyššie, tento článok sa zameria na dva typy čipových kariet - pamäť a proces. Existuje päť druhov inteligentných kariet:

  1. pamäťové karty
  2. procesorové karty
  3. elektronické peňaženky
  4. bezpečnostné karty
  5. JavaCard

Čipové karty sú osobný hardvér, ktorý musí komunikovať s iným zariadením, aby získal prístup k zobrazovaciemu zariadeniu alebo k sieti. Karty je možné zapojiť do čítačky, ktorá sa bežne označuje ako a

terminál karty

, alebo môžu pracovať pomocou rádiových frekvencií RF.

Čipové karty môžu komunikovať s čítačkou alebo prijímačom (ďalšie informácie o týchto dvoch pojmoch nájdete v časti venovanej čítačkám nižšie) v jednej z dvoch foriem:

Kontaktujte čipové karty - Pripojenie sa uskutoční, keď sa čítačka dotkne malého zlatého čipu na prednej strane karty.

Bezkontaktné čipové karty - Môžu komunikovať prostredníctvom antény, čo eliminuje potrebu vkladania a vyberania karty ručne. Vďaka bezkontaktnej karte sa stačí priblížiť k prijímaču a karta s ním začne komunikovať. Bezkontaktné karty sa dajú použiť v aplikáciách, v ktorých môže byť vkladanie a vyberanie kariet nepraktické alebo v ktorých je dôležitá rýchlosť.

Niektorí výrobcovia vyrábajú karty, ktoré fungujú v kontaktnom aj bezkontaktnom režime.

Vytvorte vývojové prostredie pre vývoj aplikácií pre smart karty

Na vývoj aplikácií pre smart karty potrebujete niekoľko vecí, konkrétne: čítačku čipových kariet; softvér na komunikáciu s čítačkou, ako aj softvér na komunikáciu s kartou, ktorá je pripojená k čítačke; a samozrejme inteligentné karty a hardvér inteligentných kariet.

Čítačka čipových kariet

Ak chcete komunikovať s čipovou kartou alebo vyvíjať aplikáciu, ktorá je kompatibilná s čipovými kartami, musíte mať čitateľ. Čítačka poskytuje aplikácii možnosť odosielať a prijímať príkazy z karty. Na trhu existuje veľa typov čítačiek, z ktorých najbežnejšia je čítačka sériový, PCCarda klávesnica modely. (Modely klávesníc sa objavia tu a tam; očakávajte, že budú priamo dostupné od veľkých výrobcov počítačov do júna 1998.)

Tento článok používa na podporu zariadení sériové čítačky. Sériová čítačka sa pripája k sériovému portu počítača. Uvedený kód podporuje aj čítačku PCCard; väčšina notebookov je vybavená vstavanými slotmi na karty PCCard.

Každý výrobca poskytuje iný protokol na komunikáciu s čítačkou. Keď už viete komunikovať s čítačkou, existuje jeden protokol pre komunikáciu s čipovou kartou: Komunikácia s čipovou kartou je založená na formáte APDU. (Formát APDU je uvedený nižšie.) Informácie o kúpe vlastnej čítačky nájdete v časti „Čítačky čipových kariet Gemplus“ v časti Zdroje.

Softvér na komunikáciu s čítačkou

Pre príklad čipovej karty zahrnutej v tomto článku je potrebných niekoľko objektovo orientovaných tried. Sú to:

  • Triedy príkazov ISO pre komunikáciu s protokolom 7816
  • Triedy pre komunikáciu s čítačkou
  • Triedy na prevod údajov do formátu špecifického pre výrobcu
  • Aplikácia na testovanie a používanie kariet na účel, na ktorý bola navrhnutá

Čipové karty a hardvér čipových kariet

Ako bolo uvedené na začiatku článku, na vývoj aplikácie pre smart karty tu potrebujete hardvér pre smart karty a niekoľko inteligentných kariet. Vývojové kity pre inteligentné karty si môžete kúpiť od mnohých spoločností, vrátane Gemplus a Schlumberger.

Pre tých z vás, ktorí už majú čítačky, by ste mali byť schopní používať vašu čítačku dodaním implementácie triedy rozhrania, o ktorej si ešte povieme. Ako už bolo spomenuté vyššie, predtým, ako začneme komunikovať s kartou, musíme byť schopní komunikovať s čítačkou. Rovnako ako existuje veľa rôznych kariet, existuje aj veľa rôznych čítačiek.

Dôležité štandardy čipových kariet

Dôležitou súčasťou skladačky vývoja aplikácií pre smart karty sú štandardné protokoly. Aplikácia v zásade komunikuje s čítačkou, ktorá zase komunikuje s čipovou kartou pomocou štandardného protokolu - v našom prípade protokolu International Standards Organization (ISO) 7816.

Rovnako ako v prípade každej novej technológie, aj v prípade čipových kariet existuje toľko štandardov, ktoré by vás mohli odradiť a zavaliť. Dosiahnutie základného porozumenia nasledujúcich štandardov vám umožní vyvíjať aplikácie s istotou, že pri používaní čipových kariet neignorujete niečo základné. Pre niektoré systémy však prichádzajú do úvahy špeciálne štandardy. Celú normu som rozdelil na „horizontálne“ a „vertikálne“ normy: Horizontálne štandardy môžu používať všetky aplikácie, zatiaľ čo vertikálne štandardy sú špecifické pre systém.

Horizontálne normy

  • ISO 7816 - popisuje rozhranie najnižšej úrovne s čipovou kartou. Na tejto úrovni sa prenášajú dátové bajty medzi čítačkou kariet a kartou.

  • PC / SC - štandard pre komunikáciu s čipovými kartami pripojenými k počítačom Win3.1 / Win95 / NT.

  • OCF - all-Java rozhranie pre komunikáciu s čipovými kartami z prostredia Java. (Čoskoro OCF umožní vývojárom zapisovať do OCF a vykonať preklad, takže nebude potrebné písať do PC / SC.)

  • JavaCard - popisuje kartu JavaCard a jej podporu.

Vertikálne štandardy

  • Mondex digitálna hotovosť, ktorá používa iba čipové karty. Prístup Mondex neumožňuje existenciu hotovosti mimo karty.

  • VisaCash - debetná karta, ktorá sleduje karty na serveri.

  • Protón - iná forma elektronických peňazí.

  • MPCOS-EMV - karta na všeobecné účely, ktorá vám umožní implementovať váš vlastný typ meny alebo tokenu.

Vždy sa čudujem, že taký malý kúsok plastu môže vyžadovať toľko čítania dokumentácie a vyžadovať toľko vedomostí zo strany vývojára!

Pretože s čipovými kartami je nevyhnutná taká vysoká úroveň odbornosti, existuje vývojový trh pre vývojárov, ktorí dodávajú výrobky kompatibilné s fazuľami, ktoré implementujú vertikálny štandard pomocou horizontálneho štandardu pre trh, na ktorý chcete predať. To znamená, že by ste mohli vyvinúť fazuľa, ktorá používa rôzne kombinácie horizontálnych štandardov, napríklad OpenCard, na implementáciu konkrétnej aplikácie pomocou iného priemyselného štandardu pre obchod alebo akejkoľvek inej aplikácie.

Komunikujte pomocou čipových kariet z appletu alebo aplikácie Java

Viete, čo potrebujete na pripojenie všetkého hardvéru. Teraz musíme pochopiť, ako používať niektoré API, ktoré nám umožnia posielať príkazy z aplikácie do čítačky. (Čítačka zasa komunikuje s kartou, čím pred odoslaním údajov na kartu funguje ako sprostredkovateľ.) Čítačka čipových kariet krúti zlatými kontaktnými bodmi a prenáša údaje. Karta niečo urobí s údajmi a vráti ich čítačke, ktorá ich potom vráti späť do aplikácie. Kde sú teda všetky tieto bajty pri prechode z vašej aplikácie na kartu?

Ako už bolo spomenuté vyššie, aplikácia komunikuje s čítačkou, ktorá následne komunikuje s čipovou kartou pomocou štandardov diskutovaných vyššie. Ako sa vyvíjala technológia inteligentných kariet, ISO navrhla štandard pre inteligentné karty. Norma definuje mechanické a elektrické vlastnosti, ako aj protokol pre komunikáciu s kartou. Ukazovatele na príslušné dokumenty ISO sú uvedené v časti Zdroje. Bohužiaľ skupina ISO nedokázala poskytnúť štandard pre komunikáciu s čítačkou. Aby ste teda mohli odoslať príkaz na kartu, musíte najskôr nájsť príkaz, ktorý karta podporuje, zabaliť tento príkaz do balíka príkazov ISO a potom zabaliť tento nový príkaz do obalu požadovaného pre príslušnú čítačku. Tu uvedená príkladná aplikácia vykoná všetko toto vrstvenie za vás.

Dátové jednotky aplikačného protokolu (APDU)

Základnou jednotkou výmeny s čipovou kartou je paket APDU. Príkazová správa odoslaná z aplikačnej vrstvy a správa s odpoveďou vrátená kartou do aplikačnej vrstvy sa nazývajú APDU (Application Protocol Data Units). Komunikácia s kartou a čítačkou sa uskutočňuje pomocou APDU. APDU možno považovať za dátový paket, ktorý obsahuje úplnú inštrukciu alebo úplnú odpoveď z karty. Na zabezpečenie tejto funkcie majú APDU presne definovanú štruktúru, ktorá je definovaná v mnohých dokumentoch ISO patriacich do rodiny špecifikácií 7816.

APDU pozostávajú z nasledujúcich polí:

Príkazový formát APDU

CLAINSP1P2LcÚdajeLe

Formát odpovede APDU

ÚdajeSW1SW2

Nasleduje niekoľko tried poskytovaných na prenos APDU a funkcií tried:

$config[zx-auto] not found$config[zx-overlay] not found