Programování

Čipové karty: Základní nátěr

Chytré karty začaly v poslední době hodně bzučet na webu, na konferenci JavaOne loni v dubnu (čtyři se zabývaly touto technologií), na velkých síťových zpravodajských stanicích a na CNN. V tomto článku uvedeme čipovou kartu do života pomocí příkladu čipové karty v reálném světě. Zde prezentované techniky vám umožní začít vytvářet aplikace Java, které mají povolenou čipovou kartu.

Zaměříme se na dva typy čipových karet: paměťové čipové karty, které lze zobrazit jako nepatrné vyměnitelné disky pro čtení / zápis s volitelným zabezpečením; a procesorové karty, které lze zobrazit jako miniaturní počítače se vstupním a výstupním portem. Budoucí články se budou podrobněji věnovat procesorovým kartám.

Jako základní článek článku vyvineme jednoduchý prototyp pro čtení a zápis dat na čipovou kartu. Budeme diskutovat o karta na předpis léků, která vede seznam všech vašich receptů a sleduje vaše pojištění, plány receptů a další užitečné informace. Pozdější články rozšíří myšlenku předpisové karty.

Všimnete si, že opakující se téma, které běží na této kartě na čipových kartách, je potřeba bezpečnostního rámce, který zabrání podvodným modulům plug-in, komponentám ActiveX atd. V získávání vašich osobních a / nebo firemních informačních dobrot. Za tímto účelem vám ukázka toho, jak číst a zapisovat data na čipovou kartu zahrnutou v tomto článku, poskytne trvalé, bezpečné (a přenosné) úložiště.

Co je to čipová karta?

Inteligentní kartu si můžete představit jako „kreditní kartu“ s „mozkem“, přičemž mozek je malý vložený počítačový čip. Tento počítač s kartou lze naprogramovat tak, aby plnil úkoly a ukládal informace, ale uvědomte si, že mozek je málo - což znamená, že výkon čipové karty výrazně zaostává za stolním počítačem.

Chytré karty se aktuálně používají v telefonních, dopravních, bankovních a zdravotnických transakcích a brzy - díky vývojářům, jako jste vy - začneme je vidět používat v internetových aplikacích. Čipové karty se již hojně používají v Japonsku a Evropě a získávají na popularitě v USA. V současné době se v odvětví inteligentních karet v této zemi vyskytly tři významné události:

PC / SC

Microsoft a několik dalších společností představeno PC / SC, aplikační rozhraní čipové karty pro komunikaci s čipovými kartami z platforem založených na Win32 pro osobní počítače. PC / SC aktuálně nepodporuje systémy, které nejsou založeny na Win32, a nemusí to tak nikdy být. O tom se budeme podrobněji bavit později.

OpenCard Framework

OpenCard je otevřený standard, který poskytuje interoperabilitu aplikací čipových karet napříč NC, POS, desktopy, notebooky, set topy atd. OpenCard slibuje, že bude poskytovat 100% čisté aplikace Java smart card. Aplikace čipových karet často nejsou čisté, protože komunikují s externím zařízením a / nebo používají knihovny na straně klienta. (Jako vedlejší poznámku, 100% čisté aplikace by mohly existovat bez OpenCard, ale bez ní by vývojáři používali domácí rozhraní na čipové karty.) OpenCard také poskytuje vývojářům rozhraní pro PC / SC pro použití stávajících zařízení na Win32 platfroms.

JavaCard

JavaCard byl představen společností Schlumberger a nedávno předložen jako standard společností JavaSoft. Schlumberger má v současné době jedinou kartu Java na trhu a společnost je prvním držitelem licence JavaCard. Čipová karta s potenciálem stanovit celkový standard čipových karet, JavaCard se skládá ze standardních tříd a API, které umožňují spouštění appletů Java přímo na standardní kartě kompatibilní s normou ISO 7816. JavaCards umožňují bezpečné a na čipu nezávislé provádění různých aplikací.

Poznámka:

Ačkoli se tento článek zaměřuje na čipové karty, je důležité si uvědomit, že se neomezujete pouze na tyto druhy zařízení. Osobně dávám přednost zařízení „Ibuttons“, které vyrábí Dallas Semiconductor. Je malý a přenosný jako kreditní karta, ale mnohem šikovnější. Proč? Při hledání karty nemusíte vykopávat peněženku; Ibuttony jsou přímo na vašem prstu. Ano, je to prsten!

Zatímco bezkontaktní verze čipové karty existují (další informace viz níže), myslím, že zařízení typu Ibuttons, funkční šperky by mohlo být docela ziskové. Další informace o Ibuttonech najdete v části Zdroje. Mimochodem, tým Java Commerce předvedl „JavaRing“ na Java Internet Business Expo (JIBE) v New Yorku loni v srpnu. O tom si můžete přečíst v článku v Štěstí časopis (opět viz část Zdroje).

Proč používat čipovou kartu?

Jaké jsou výhody používání čipové karty? Čipová karta:

  • je spolehlivější než karta s magnetickým proužkem
  • v současné době může uložit stokrát více informací než karta s magnetickým proužkem
  • je obtížnější manipulovat než mag pruhy
  • mohou být jednorázové nebo opakovaně použitelné
  • může vykonávat více funkcí v široké škále průmyslových odvětví
  • je kompatibilní s přenosnými elektronickými zařízeními, jako jsou telefony, osobní digitální asistenti (PDA) a počítače
  • se neustále vyvíjí (koneckonců obsahuje počítačový čip)

Druhy čipových karet

Jak bylo uvedeno výše, tento článek se zaměří na dva typy čipových karet - paměť a proces. Celkově existuje pět typů čipových karet:

  1. paměťové karty
  2. procesorové karty
  3. elektronické peněženky
  4. bezpečnostní karty
  5. JavaCard

Čipové karty jsou osobní hardware, který musí komunikovat s nějakým jiným zařízením, aby získal přístup k zobrazovacímu zařízení nebo síti. Karty lze zapojit do čtečky, běžně označované jako a

terminál karty

, nebo mohou pracovat pomocí rádiových frekvencí RF.

Čipové karty mohou komunikovat se čtečkou nebo přijímačem (další informace o těchto dvou pojmech viz část o čtečkách níže) v jedné ze dvou forem:

Kontaktujte čipové karty - Připojení je provedeno, když čtečka kontaktuje malý zlatý čip na přední straně karty.

Bezkontaktní čipové karty - Mohou komunikovat pomocí antény, což eliminuje potřebu vkládat a vyjímat kartu ručně. U bezkontaktní karty se stačí přiblížit k přijímači a karta s ním začne komunikovat. Bezkontaktní karty lze použít v aplikacích, ve kterých může být vložení / vyjmutí karty nepraktické nebo kde je důležitá rychlost.

Někteří výrobci vyrábějí karty, které fungují v kontaktním i bezkontaktním režimu.

Vytvořte vývojové prostředí pro vytváření aplikací čipových karet

K vývoji aplikací pro čipové karty potřebujete několik věcí, jmenovitě: čtečku čipových karet; software pro komunikaci se čtečkou a také nějaký software pro komunikaci s kartou, která byla připojena ke čtečce; a samozřejmě čipové karty a hardware čipových karet.

Čtečka čipových karet

Chcete-li komunikovat s čipovou kartou nebo vyvíjet aplikaci, která je na čipové kartě schopná, musíte mít čtenář. Čtečka poskytuje vaší aplikaci cestu k odesílání a přijímání příkazů z karty. Na trhu existuje mnoho typů čteček, z nichž nejčastější je čtečka seriál, PCCard, a klávesnice modely. (Modely klávesnic se sem tam objeví; očekávejte, že budou přímo dostupné od velkých výrobců počítačů do června 1998.)

Tento článek používá k podpoře zařízení sériové čtečky. Sériová čtečka se připojuje k sériovému portu počítače. Uvedený kód podporuje také čtečku karet PCCard; většina notebooků je vybavena sloty pro karty PCCard.

Každý výrobce poskytuje jiný protokol pro komunikaci se čtečkou. Jakmile můžete komunikovat se čtečkou, existuje jeden protokol pro komunikaci s čipovou kartou: Komunikace s čipovou kartou je založena na formátu APDU. (Formát APDU je popsán níže.) Informace o zakoupení vlastní čtečky naleznete v části „Čtečky čipových karet Gemplus“ v části Zdroje.

Software pro komunikaci se čtečkou

Pro příklad čipové karty zahrnutý v tomto článku je potřeba řada objektově orientovaných tříd. Tyto jsou:

  • Třídy příkazů ISO pro komunikaci s protokolem 7816
  • Třídy pro komunikaci se čtenářem
  • Třídy pro převod dat do formátu specifického pro výrobce
  • Aplikace pro testování a používání karet za účelem, pro který byla aplikace navržena

Čipové karty a hardware čipových karet

Jak bylo uvedeno na začátku článku, k vývoji aplikace čipových karet zde potřebujete hardware čipových karet a některé čipové karty. Vývojové sady pro čipové karty si můžete zakoupit od řady společností, včetně Gemplus a Schlumberger.

Pro ty z vás, kteří již čtenáře mají, byste měli mít možnost používat svůj čtecí modul poskytnutím implementace třídy rozhraní, o které budeme diskutovat později. Jak již bylo zmíněno výše, než budeme moci s kartou komunikovat, musíme být schopni komunikovat se čtečkou a stejně jako existuje mnoho různých karet, existuje i mnoho různých čteček.

Důležité standardy čipových karet

Důležitým kouskem skládačky vývoje aplikací pro smart karty jsou standardní protokoly. Aplikace v zásadě komunikuje se čtečkou, která na druhou stranu komunikuje s čipovou kartou pomocí standardního protokolu - v našem případě protokolu International Standards Organization (ISO) 7816.

Stejně jako u jakékoli nové technologie existuje pro smart karty tolik standardů, které vás mohou odradit a přemoci. Dosažení základního porozumění následujícím standardům vám umožní vyvíjet aplikace s jistotou, že při používání čipových karet nebudete ignorovat něco zásadního. U některých systémů však do hry vstupují speciální standardy. Celé standardy jsem rozdělil na „horizontální“ a „vertikální“ standardy: Horizontální standardy mohou používat všechny aplikace, zatímco vertikální standardy jsou specifické pro systém.

Horizontální standardy

  • ISO 7816 - popisuje rozhraní nejnižší úrovně k čipové kartě. Na této úrovni se přenáší datové bajty mezi čtečkou karet a kartou.

  • PC / SC - standard pro komunikaci s čipovými kartami připojenými ke strojům Win3.1 / Win95 / NT.

  • OCF - rozhraní vše-Java pro komunikaci s čipovými kartami z prostředí Java. (Brzy OCF umožní vývojářům zapisovat do OCF a provádět překlad, takže nebude třeba psát do PC / SC.)

  • JavaCard - popisuje JavaCard a co podporuje.

Vertikální standardy

  • Mondex - digitální hotovost, která používá pouze čipové karty. Přístup Mondex neumožňuje existovat hotovost mimo kartu.

  • VisaCash - debetní karta, která sleduje karty na serveru.

  • Proton - další forma elektronických peněz.

  • MPCOS-EMV - karta pro všeobecné účely, která vám umožní implementovat vlastní typ měny nebo tokenu.

Vždy mě udivuje, že takový malý kousek plastu může vyžadovat tolik čtení dokumentace a vyžadovat tolik znalostí ze strany vývojáře!

Protože u čipových karet je tak vysoká úroveň odbornosti nezbytná, existuje vývojový trh pro vývojáře dodávající produkty s fazolemi, které implementují vertikální standard pomocí horizontálního standardu pro trh, na který chcete prodat. To znamená, že byste mohli vyvinout fazole, které používají různé kombinace horizontálních standardů, jako je OpenCard, k implementaci konkrétní aplikace pomocí nějakého jiného průmyslového standardu pro obchod nebo jakoukoli jinou aplikaci.

Komunikujte pomocí čipových karet z appletu nebo aplikace Java

Víte, co potřebujete k připojení veškerého hardwaru. Nyní musíme pochopit, jak používat některá rozhraní API, která nám umožní odesílat příkazy z aplikace do čtečky. (Čtečka zase komunikuje s kartou, čímž před odesláním dat na kartu funguje jako prostředník.) Čtečka čipových karet kroutí zlatými kontaktními body a přenáší data. Karta něco udělá s daty a vrátí je čtečce, která poté vrátí data do aplikace. Kde jsou tedy všechny tyto bajty při přechodu z vaší aplikace na kartu?

Jak již bylo zmíněno výše, aplikace komunikuje se čtečkou, která zase komunikuje s čipovou kartou pomocí standardů diskutovaných výše. Jak byla vyvinuta technologie čipových karet, ISO navrhlo standard inteligentních karet. Standardně definované mechanické a elektrické vlastnosti i protokol pro komunikaci s kartou. Ukazatele na příslušné dokumenty ISO jsou uvedeny v části Zdroje. Bohužel skupina ISO nebyla schopna poskytnout standard pro komunikaci se čtenářem. Chcete-li tedy odeslat příkaz na kartu, musíte nejprve najít příkaz, který karta podporuje, zabalit tento příkaz do balíčku příkazů ISO a poté zabalit tento nový příkaz do obálky požadované pro dotyčnou čtečku. Ukázková aplikace, která je zde uvedena, provede všechny tyto vrstvení za vás.

Datové jednotky aplikačního protokolu (APDU)

Základní směnnou jednotkou s čipovou kartou je paket APDU. Zpráva příkazu odeslaná z aplikační vrstvy a zpráva s odpovědí vrácená kartou do aplikační vrstvy se nazývají APDU (Application Protocol Data Units). Komunikace s kartou a čtečkou probíhá pomocí APDU. APDU lze považovat za datový paket, který obsahuje úplnou instrukci nebo úplnou odpověď z karty. K zajištění této funkce mají APDU dobře definovanou strukturu, která je definována v řadě dokumentů ISO patřících do rodiny specifikací 7816.

APDU se skládají z následujících polí:

Příkazový formát APDU

CLAINSP1P2LcDataLe

Formát odpovědi APDU

DataSW1SW2

Následuje seznam některých tříd poskytovaných pro transport APDU a funkcí tříd: