Pametne kartice: Primer

Pametne kartice u posljednje vrijeme bruje na webu, na konferenciji JavaOne u travnju prošle godine (četiri sesije bavile su se tehnologijom), na velikim mrežnim vijestima i na CNN-u. U ovom ćemo članku oživjeti pametnu karticu stvarnim primjerom pametne kartice. Ovdje predstavljene tehnike omogućit će vam početak izrade Java aplikacija s omogućenom pametnom karticom.

Usredotočit ćemo se na dvije vrste pametnih kartica: memorijske pametne kartice , koje se mogu gledati kao maleni prijenosni diskovi za čitanje / pisanje s opcijskom sigurnošću; i procesorske kartice , koje se mogu promatrati kao minijaturna računala s ulaznim i izlaznim priključkom. Budući će članci detaljnije obrađivati ​​procesorske kartice.

Kao osnovni članak, razvit ćemo jednostavan prototip za čitanje i upisivanje podataka na pametnu karticu. Razgovarat ćemo o kartici na recept , koja sadrži popis svih vaših recepata i prati vaše osiguranje, planove recepata i ostale korisne informacije. Kasniji će se članci proširiti na ideju o receptnoj kartici.

Primijetit ćete da je ponavljajuća tema koja se kroz ovu seriju prikazuje na pametnim karticama potreba za sigurnosnim okvirom kako bi se spriječilo da nevaljali dodaci, ActiveX komponente itd. Dođu do vaših osobnih i / ili korporativnih info-dobrota. U tu svrhu, demonstracija čitanja i pisanja podataka na pametnoj kartici koja se nalazi u ovom članku pružit će vam trajnu, sigurnu (i prenosivu) pohranu.

Što je pametna kartica?

Pametnu karticu možete smatrati "kreditnom karticom" na kojoj je "mozak", a mozak je mali ugrađeni računalni čip. Ovo računalo s karticom može se programirati za izvršavanje zadataka i pohranu podataka, ali imajte na umu da je mozga malo - što znači da snaga pametne kartice daleko nedostaje vašem stolnom računalu.

Pametne se kartice trenutno koriste u telefonskim, transportnim, bankarskim i zdravstvenim transakcijama, a uskoro ćemo ih, zahvaljujući programerima poput vas, početi vidjeti u internetskim aplikacijama. Pametne se kartice već uveliko koriste u Japanu i Europi, a popularnost dobivaju u SAD-u. U stvari, nedavno su se dogodila tri značajna događaja u industriji pametnih kartica u ovoj zemlji:

PC / SC

Microsoft i nekoliko drugih tvrtki predstavili su PC / SC , sučelje aplikacije za pametne kartice za komunikaciju s pametnim karticama s platformi za osobna računala zasnovane na Win32. PC / SC trenutno ne podržava sustave koji se ne temelje na Win32 i možda to nikada neće učiniti. O tome ćemo detaljnije razgovarati kasnije.

OpenCard Framework

OpenCard je otvoreni standard koji omogućuje međusobnu sposobnost rada pametnih kartica na NC-ima, POS-ima, stolnim računalima, prijenosnim računalima, postavljenim vrhovima itd. OpenCard obećava pružanje 100% čistih Java aplikacija za pametne kartice. Aplikacije pametnih kartica često nisu čiste jer komuniciraju s vanjskim uređajem i / ili koriste knjižnice na klijentu. (Kao popratnu napomenu, 100% čiste aplikacije mogle bi postojati bez OpenCard-a, ali bez nje programeri bi koristili domaća sučelja za pametne kartice.) OpenCard također nudi programerima sučelje za PC / SC za upotrebu postojećih uređaja na Win32 platforme.

JavaCard

JavaCard je predstavio Schlumberger, a nedavno ga je kao standard predstavio JavaSoft. Schlumberger trenutno ima jedinu Java karticu na tržištu, a tvrtka je prvi korisnik JavaCard licence. Pametna kartica s potencijalom da postavi cjelokupni standard pametne kartice, JavaCard se sastoji od standardnih klasa i API-ja koji Java apletima omogućuju da rade izravno na standardnoj kartici usklađenoj s ISO 7816. JavaCards omogućuju sigurno i neovisno izvršavanje različitih aplikacija.

Bilješka:

Iako se ovaj članak usredotočuje na pametne kartice, važno je napomenuti da niste ograničeni na ove vrste uređaja. Osobno više volim uređaj "Ibuttons" koji proizvodi Dallas Semiconductor. Mali je i prenosiv poput kreditne kartice, ali toliko je praktičniji. Zašto? Ne morate kopati novčanik u potrazi za karticom; Ibuttons je tu, na vašem prstu. Da, to je prsten!

Iako postoje beskontaktne verzije pametne kartice (pogledajte dolje za više informacija o tome), mislim da bi Ibuttons, funkcionalno-nakitni tip uređaja mogli biti vrlo profitabilni. Za više informacija o gumbima pogledajte odjeljak Resursi. Inače, Java Commerce Team demonstrirao je "JavaRing" na Java Internet Business Expo (JIBE) u New Yorku prošlog kolovoza. O tome možete pročitati u članku u časopisu Fortune (ponovno pogledajte odjeljak Resursi).

Zašto koristiti pametnu karticu?

Koje su prednosti korištenja pametne kartice? Pa, pametna kartica:

  • je pouzdaniji od kartice s magnetnom trakom
  • trenutno može pohraniti sto puta više podataka od kartice s magnetnom trakom
  • teže je petljati od mag pruga
  • može biti jednokratna ili višekratna
  • mogu obavljati više funkcija u širokom spektru industrija
  • kompatibilan je s prijenosnim elektroničkim uređajima kao što su telefoni, osobni digitalni pomoćnici (PDA) i računala
  • neprestano se razvija (uostalom, uključuje računalni čip)

Vrste pametnih kartica

Kao što je gore spomenuto, ovaj će se članak usredotočiti na dvije vrste pametnih kartica - memoriju i proces. Sveukupno postoji pet vrsta pametnih kartica:

  1. memorijske kartice
  2. procesorske kartice
  3. elektroničke kartice s torbicom
  4. sigurnosne kartice
  5. JavaCard

Pametne kartice osobni su hardverski komad koji mora komunicirati s nekim drugim uređajem da bi dobio pristup uređaju za prikaz ili mreži. Kartice se mogu priključiti u čitač, koji se obično naziva a

kartica terminal

ili mogu raditi pomoću RF radio frekvencija.

Pametne kartice mogu komunicirati s čitačem ili prijamnikom (pogledajte odjeljak o čitačima u nastavku za više informacija o ova dva pojma) u jednom od dva oblika:

Kontaktirajte pametne kartice - veza se uspostavlja kada čitač kontaktira mali zlatni čip na prednjoj strani kartice.

Beskontaktne pametne kartice - mogu komunicirati putem antene, uklanjajući potrebu za ručnim umetanjem i uklanjanjem kartice. S beskontaktnom karticom sve što morate učiniti je približiti se prijemniku i kartica će započeti komunikaciju s njom. Beskontaktne kartice mogu se koristiti u aplikacijama u kojima umetanje / uklanjanje kartice može biti nepraktično ili u kojima je brzina važna.

Neki proizvođači proizvode kartice koje funkcioniraju i u kontaktnom i u beskontaktnom načinu rada.

Stvorite razvojno okruženje za izgradnju aplikacija za pametne kartice

Da biste razvili aplikacije za pametne kartice, trebate nekoliko stvari, i to: čitač pametnih kartica; softver za komunikaciju s čitačem, kao i neki softver za komunikaciju s karticom koja je priključena na čitač; i, naravno, pametne kartice i hardver pametnih kartica.

Čitač pametnih kartica

Da biste komunicirali s pametnom karticom ili razvili aplikaciju koja podržava pametne kartice, morate imati čitač . Čitač pruža put za vašu aplikaciju za slanje i primanje naredbi s kartice. Na tržištu postoji mnogo vrsta čitača, a najzastupljeniji su serijski , PCCard i tipkovnica . (Modeli tipkovnica pojavljuju se tu i tamo; očekujte da će ih biti izravno dostupni velikim proizvođačima računala do lipnja 1998.)

Ovaj članak koristi serijske čitače za podršku uređajima. Serijski čitač spaja se na serijski priključak računala. Imajte na umu da navedeni kod također podržava čitač PCCard; većina prijenosnih računala dolazi s ugrađenim PCCard utorima.

Svaki proizvođač pruža drugačiji protokol za obraćanje čitatelju. Nakon što komunicirate s čitačem, postoji jedan protokol za komunikaciju s pametnom karticom: Komunikacija s pametnom karticom temelji se na APDU formatu. (APDU format je razmotren u nastavku.) Za informacije o kupnji vlastitog čitača, pogledajte naslov "Čitači pametnih kartica Gemplus" u odjeljku Resursi.

Softver za komunikaciju s čitačem

Za primjer pametne kartice uključen u ovaj članak potreban je niz objektno orijentiranih klasa. Ovi su:

  • ISO naredbene klase za komunikaciju s protokolom 7816
  • Predavanja za komunikaciju s čitateljem
  • Klase za pretvaranje podataka u format specifičan za proizvođača
  • Aplikacija za testiranje i korištenje kartica u svrhu za koju je aplikacija dizajnirana

Pametne kartice i hardver pametnih kartica

Kao što je napomenuto na početku članka, da biste ovdje razvili aplikaciju pametnih kartica, potreban vam je hardver pametne kartice i neke pametne kartice. Komplete za razvoj pametnih kartica možete kupiti od brojnih tvrtki, uključujući Gemplus i Schlumberger.

Za one koji već imate čitače, trebali biste biti u mogućnosti koristiti svoj čitač isporukom implementacije klase sučelja o kojoj ćemo kasnije razgovarati. Kao što je gore spomenuto, prije nego što možemo komunicirati s karticom, moramo biti u mogućnosti komunicirati s čitačem, a kao što postoji mnogo različitih kartica, postoji i mnogo različitih čitača.

Važni standardi pametnih kartica

Važni dijelovi zagonetke za razvoj pametnih kartica su standardni protokoli. U osnovi, aplikacija komunicira s čitačem, koji zauzvrat razgovara sa pametnom karticom pomoću standardnog protokola - u našem slučaju, protokola International Standards Organization (ISO) 7816.

Kao i kod svake nove tehnologije, postoji toliko mnogo standarda za pametne kartice da ćete se možda obeshrabriti i svladati. Postizanje osnovnog razumijevanja sljedećih standarda omogućit će vam da razvijate aplikacije sa sigurnošću da ne zanemarujete nešto osnovno u korištenju pametnih kartica. Međutim, za neke sustave u obzir dolaze posebni standardi. Cijelu stvar sa standardima podijelio sam na "vodoravne" i "okomite" standarde: horizontalne standarde mogu koristiti sve aplikacije, dok su vertikalni standardi specifični za sustav.

Horizontalni standardi

  • ISO 7816 - opisuje sučelje najniže razine pametne kartice. Na toj se razini bajtovi podataka prenose između čitača i kartice.

  • PC / SC - standard za komunikaciju sa pametnim karticama povezanim s Win3.1 / Win95 / NT strojevima.

  • OCF - potpuno Java sučelje za komunikaciju s pametnim karticama iz Java okruženja. (Uskoro će OCF omogućiti programerima da pišu na OCF i izvrše prijevod, tako da neće biti potrebe za pisanjem na PC / SC.)

  • JavaCard - opisuje JavaCard i što ona podržava.

Okomiti standardi

  • Mondex - digitalni novac koji koristi samo pametne kartice. Mondexov pristup ne dopušta gotovinu da postoji izvan kartice.

  • VisaCash - debitna kartica koja prati kartice na poslužitelju.

  • Proton - još jedan oblik e-gotovine.

  • MPCOS-EMV - kartica opće namjene koja vam omogućuje primjenu vlastite vrste valute ili tokena.

Uvijek me zapanji da bi tako mali komad plastike mogao zahtijevati toliko čitanja dokumentacije i zahtijevati toliko znanja od strane programera!

Budući da je za pametne kartice neophodna tako visoka razina stručnosti, programeri nude tržište za proizvode koji podržavaju grah koji implementiraju vertikalni standard koristeći horizontalni standard za tržište kojem želite prodati. To znači da biste mogli razviti grah koji koristi razne kombinacije horizontalnih standarda, poput OpenCard-a, za implementaciju određene aplikacije koristeći neki drugi industrijski standard za trgovinu ili bilo koju drugu aplikaciju.

Komunicirajte pametnim karticama iz Java apleta ili aplikacije

Znate što vam je potrebno za povezivanje cijelog hardvera. Sada moramo razumjeti kako koristiti neke API-je koji će nam omogućiti slanje naredbi iz aplikacije čitaču. (Čitač zauzvrat komunicira s karticom, djelujući na taj način posrednik prije slanja podataka na karticu.) Čitač pametnih kartica migolji zlatnim kontaktnim točkama i prenosi podatke. Kartica će učiniti nešto s podacima i vratiti ih čitaču, koji će potom podatke vratiti u aplikaciju. Pa gdje su svi ti bajtovi dok se premještaju iz vaše aplikacije na karticu?

Kao što je gore spomenuto, aplikacija komunicira s čitačem, koji zauzvrat razgovara sa pametnom karticom koristeći prethodno razmotrene standarde. U osnovi, kako se razvijala tehnologija pametnih kartica, ISO je predložio standard pametne kartice. Standardom su definirane mehaničke i električne karakteristike, kao i protokol za komunikaciju s karticom. Pokazatelji na relevantne ISO dokumente navedeni su u odjeljku Resursi. Nažalost, ISO grupa nije mogla pružiti standard za komunikaciju s čitačem. Dakle, da biste poslali naredbu na karticu, prvo morate pronaći naredbu koju kartica podržava, zamotati ovu naredbu u paket ISO naredbi, a zatim ovu novu naredbu zamotati u omot potreban za dotični čitač. Primjer ovdje dane aplikacije izvodi sve ove slojeve za vas.

Jedinice podataka aplikacijskog protokola (APDU)

Osnovna jedinica razmjene s pametnom karticom je APDU paket. Poruka naredbe poslana iz aplikacijskog sloja i poruka odgovora koju je kartica vratila u aplikacijski sloj nazivaju se jedinicama podataka aplikacijskog protokola (APDU). Komunikacija s karticom i čitačem vrši se pomoću APDU-ova. APDU se može smatrati podatkovnim paketom koji sadrži potpunu uputu ili cjelovit odgovor s kartice. Da bi pružili ovu funkcionalnost, APDU-ovi imaju dobro definiranu strukturu koja je definirana u velikom broju ISO dokumenata koji pripadaju obitelji specifikacija 7816.

APDU se sastoje od sljedećih polja:

Naredba APDU Format

CLA INS P1 P2 Lc Podaci Le

Format APDU odgovora

Podaci SW1 SW2

Slijede neke od klasa predviđenih za transport APDU-ova i funkcije klasa: