Programiranje

Pametne kartice: primer

Pametne kartice se zadnje čase precej oglašajo po spletu, na konferenci JavaOne aprila lani (štiri seje so se ukvarjale s tehnologijo), na velikih omrežnih novicah in na CNN. V tem članku bomo pametno kartico oživili z resničnim primerom pametne kartice. Tu predstavljene tehnike vam bodo omogočile, da začnete graditi programe Java, ki imajo omogočeno pametno kartico.

Osredotočili se bomo na dve vrsti pametnih kartic: pomnilniške pametne kartice, ki ga lahko vidimo kot majhne odstranljive bralne / pisalne diske z neobvezno zaščito; in procesorske kartice, ki jih lahko vidimo kot miniaturne računalnike z vhodnimi in izhodnimi vrati. Prihodnji članki bodo podrobneje zajemali procesorske kartice.

Kot bistvo članka bomo razvili preprost prototip za branje in zapisovanje podatkov na pametno kartico. Pogovorili se bomo o izkaznica za zdravila, ki hrani seznam vseh vaših receptov in spremlja vaše zavarovanje, načrte receptov in druge koristne informacije. Kasnejši članki bodo razširili idejo o receptni kartici.

Opazili boste, da je ponavljajoča se tema, ki se v tej seriji izvaja na pametnih karticah, potreba po varnostnem okviru, ki preprečuje, da bi neprimerni vtičniki, komponente ActiveX itd. Prišli do vaših osebnih in / ali poslovnih dobrot. V ta namen vam bo prikaz, kako berete in zapisujete podatke na pametno kartico v tem članku, zagotovil trajno, varno (in prenosno) shrambo.

Kaj je pametna kartica?

Pametno kartico lahko predstavljate kot "kreditno kartico" z "možgani", možgani pa so majhen vdelani računalniški čip. Ta računalnik s kartico je lahko programiran za izvajanje nalog in shranjevanje informacij, vendar upoštevajte, da so možgani malo - kar pomeni, da moč pametne kartice močno pade na namizni računalnik.

Pametne kartice se trenutno uporabljajo v telefonskih, transportnih, bančnih in zdravstvenih transakcijah, kmalu pa jih bomo - zahvaljujoč razvijalcem, kot ste vi - začeli uporabljati v internetnih aplikacijah. Pametne kartice se že pogosto uporabljajo na Japonskem in v Evropi in postajajo vse bolj priljubljene v ZDA. V tej državi so se v zadnjem času v industriji pametnih kart zgodili trije pomembni dogodki:

PC / SC

Predstavljen je bil Microsoft in več drugih podjetij PC / SC, vmesnik za uporabo pametnih kartic za komunikacijo s pametnimi karticami s platform za osebne računalnike, ki temeljijo na Win32. PC / SC trenutno ne podpira sistemov, ki ne temeljijo na Win32, in morda tega nikoli ne bo storil. O tem bomo podrobneje razpravljali kasneje.

OpenCard Framework

OpenCard je odprti standard, ki zagotavlja medsebojno delovanje aplikacij pametnih kartic v NC-jih, POS-jih, namiznih računalnikih, prenosnih računalnikih, nastavljenih vrhovih itd. OpenCard obljublja, da bo zagotovil 100% čiste aplikacije za pametne kartice Java. Aplikacije pametnih kartic pogosto niso čiste, ker komunicirajo z zunanjo napravo in / ali uporabljajo odjemalske knjižnice. (Kot stransko opombo bi lahko obstajali 100% čisti programi brez OpenCard, vendar bi brez nje razvijalci uporabljali domače vmesnike za pametne kartice.) OpenCard razvijalcem ponuja tudi vmesnik za PC / SC za uporabo obstoječih naprav na Win32 platfromov.

JavaCard

JavaCard je predstavil Schlumberger, nedavno pa jo je kot standard predložil JavaSoft. Schlumberger ima trenutno edino kartico Java na trgu, podjetje pa je prvi imetnik licence JavaCard. Pametna kartica, ki lahko nastavi splošni standard pametne kartice, je sestavljena iz standardnih razredov in API-jev, ki omogočajo, da se apleti Java izvajajo neposredno na standardni kartici, skladni z ISO 7816. JavaCards omogočajo varno in neodvisno izvajanje čipov različnih aplikacij.

Opomba:

Čeprav se ta članek osredotoča na pametne kartice, je pomembno omeniti, da niste omejeni na tovrstne naprave. Osebno imam raje napravo "Ibuttons", ki jo proizvaja Dallas Semiconductor. Je majhen in prenosljiv kot kreditna kartica, a toliko bolj priročen. Zakaj? V iskanju kartice vam ni treba izkopati denarnice; Ibuttons je tam, na tvojem prstu. Ja, prstan je!

Medtem brezkontaktno različice pametne kartice obstajajo (glejte spodaj za več informacij o tem), mislim, da bi bile tipke Ibuttons, funkcionalno-nakit tipa naprave lahko zelo donosne. Za več informacij o gumbih glejte razdelek Viri. Mimogrede, skupina Java Commerce je avgusta lani na sejmu Java Internet Business Expo (JIBE) v New Yorku predstavila "JavaRing". O tem si lahko preberete v članku v Sreča revijo (spet glej poglavje Viri).

Zakaj uporabljati pametno kartico?

Katere so prednosti uporabe pametne kartice? No, pametna kartica:

  • je zanesljivejša od kartice z magnetnim trakom
  • trenutno lahko shrani stokrat več informacij kot kartica z magnetnim trakom
  • je težje posegati v mag črte
  • lahko za enkratno uporabo ali za večkratno uporabo
  • lahko opravlja več funkcij v različnih panogah
  • je združljiv s prenosnimi elektronskimi napravami, kot so telefoni, osebni digitalni pomočniki (PDA) in osebni računalniki
  • se nenehno razvija (navsezadnje vključuje računalniški čip)

Vrste pametnih kartic

Kot smo že omenili, se bo ta članek osredotočil na dve vrsti pametnih kartic - pomnilniško in procesno. Obstaja pet vrst pametnih kartic:

  1. pomnilniške kartice
  2. procesorske kartice
  3. elektronske torbice
  4. varnostne kartice
  5. JavaCard

Pametne kartice so osebni del strojne opreme, ki mora komunicirati z drugo napravo, da dobi dostop do prikazne naprave ali omrežja. Kartice lahko priključite na čitalnik, ki ga običajno imenujemo a

kartico

ali pa lahko delujejo z RF radijskimi frekvencami.

Pametne kartice lahko komunicirajo z bralnikom ali sprejemnikom (glejte razdelek o bralnikih spodaj za več o teh dveh izrazih) v eni od dveh oblik:

Obrnite se na pametne kartice - Povezava je vzpostavljena, ko čitalnik vzpostavi stik z majhnim zlatim čipom na sprednji strani kartice.

Brezkontaktne pametne kartice - Ti lahko komunicirajo prek antene, tako da ni treba ročno vstavljati in odstranjevati kartice. Z brezstično kartico se morate le približati sprejemniku in kartica bo začela z njo komunicirati. Brezkontaktne kartice se lahko uporabljajo v aplikacijah, pri katerih je vstavljanje / odstranjevanje kartice nepraktično ali v katerih je pomembna hitrost.

Nekateri proizvajalci izdelujejo kartice, ki delujejo tako v kontaktnem kot v brezkontaktnem načinu.

Ustvarite razvojno okolje za izdelavo aplikacij za pametne kartice

Za razvoj aplikacij za pametne kartice potrebujete nekaj stvari, in sicer: bralnik pametnih kartic; programska oprema za komunikacijo s čitalnikom in neka programska oprema za komunikacijo s kartico, ki je bila priključena na čitalnik; in seveda pametne kartice in strojna oprema pametnih kartic.

Čitalnik pametnih kartic

Če želite komunicirati s pametno kartico ali razviti aplikacijo, ki podpira pametne kartice, morate imeti bralec. Čitalnik ponuja pot vaši aplikaciji za pošiljanje in prejemanje ukazov s kartice. Na trgu je veliko vrst bralcev, najbolj razširjen je serijski, PCCard, in tipkovnico modelov. (Tu in tam se pojavijo modeli tipkovnic; pričakujte, da bodo do junija 1998 neposredno na voljo pri velikih proizvajalcih osebnih računalnikov.)

Ta članek uporablja serijske bralnike za podporo napravam. Serijski čitalnik se poveže s serijskimi vrati računalnika. Upoštevajte, da navedena koda podpira tudi bralnik PCCard; večina prenosnikov ima vgrajene reže PCCard.

Vsak proizvajalec ponuja drugačen protokol za govor z bralcem. Ko lahko komunicirate s čitalnikom, obstaja en protokol za komunikacijo s pametno kartico: Komunikacija s pametno kartico temelji na formatu APDU. (Format APDU je obravnavan spodaj.) Za informacije o nakupu lastnega bralnika glejte naslov "Čitalniki pametnih kartic Gemplus" v razdelku Viri.

Programska oprema za komunikacijo z bralnikom

Za primer pametne kartice, vključen v ta članek, so potrebni številni objektno usmerjeni razredi. To so:

  • Ukazni razredi ISO za komunikacijo s protokolom 7816
  • Razredi za komunikacijo z bralcem
  • Razredi za pretvorbo podatkov v obliko, specifično za proizvajalca
  • Aplikacija za testiranje in uporabo kartic za namen, za katerega je bila aplikacija zasnovana

Pametne kartice in strojna oprema pametnih kartic

Kot je bilo omenjeno na začetku članka, za razvoj aplikacije pametne kartice potrebujete strojno opremo in nekaj pametnih kartic. Komplete za razvoj pametnih kartic lahko kupite pri številnih podjetjih, vključno z Gemplusom in Schlumbergerjem.

Tisti, ki že imate bralnike, bi morali biti sposobni uporabljati bralnik tako, da ponudite izvedbo razreda vmesnika, o katerem bomo razpravljali kasneje. Kot smo že omenili, moramo, preden lahko komuniciramo s kartico, komunicirati z bralnikom, in tako kot obstaja veliko različnih kart, obstaja tudi veliko različnih bralcev.

Pomembni standardi za pametne kartice

Pomemben del sestavljanke za razvoj pametnih kartic so standardni protokoli. V bistvu aplikacija komunicira z bralnikom, ta pa se s pametno kartico pogovarja s standardnim protokolom - v našem primeru s protokolom Mednarodne organizacije za standardizacijo (ISO) 7816.

Kot pri vsaki novi tehnologiji tudi za pametne kartice obstaja toliko standardov, da se lahko znajdete malodušni in preobremenjeni. Če boste osnovno razumeli naslednje standarde, boste lahko razvijali aplikacije z zaupanjem, da pri uporabi pametnih kartic ne boste prezrli nečesa osnovnega. Za nekatere sisteme pa veljajo posebni standardi. Celotno stvar s standardi sem razdelil na "vodoravne" in "vertikalne" standarde: vodoravne standarde lahko uporabljajo vse aplikacije, medtem ko so vertikalni standardi specifični za sistem.

Horizontalni standardi

  • ISO 7816 - opisuje vmesnik najnižje ravni pametne kartice. Na tej ravni se prenašajo bajti podatkov med bralnikom kartic in kartico.

  • PC / SC - standard za komunikacijo s pametnimi karticami, povezanimi s stroji Win3.1 / Win95 / NT.

  • OCF - vmesnik popolnoma Java za komunikacijo s pametnimi karticami iz okolja Java. (Kmalu bo OCF razvijalcem omogočil pisanje v OCF in izvedbo prevoda, zato vam ne bo treba pisati v PC / SC.)

  • JavaCard - opisuje JavaCard in kaj podpira.

Navpični standardi

  • Mondex - digitalna gotovina, ki uporablja samo pametne kartice. Pristop Mondex ne dovoljuje, da bi gotovina obstajala zunaj kartice.

  • VisaCash - debetna kartica, ki beleži kartice na strežniku.

  • Proton - druga oblika e-gotovine.

  • MPCOS-EMV - splošna kartica, ki vam omogoča uporabo lastne vrste valute ali žetona.

Vedno sem presenečen, da bi tako majhen kos plastike zahteval toliko branja dokumentacije in zahteval toliko znanja razvijalca!

Ker je pri pametnih karticah potrebna tako visoka stopnja strokovnega znanja, lahko razvijalci ponujajo izdelke, ki podpirajo Beans, ki izvajajo navpični standard in uporabljajo vodoravni standard za trg, ki mu želite prodati. To pomeni, da bi lahko razvili fižol, ki uporablja različne kombinacije horizontalnih standardov, kot je OpenCard, za izvajanje določene aplikacije z uporabo nekaterih drugih industrijskih standardov za trgovino ali katero koli drugo aplikacijo.

Komunicirajte s pametnimi karticami iz programčka ali aplikacije Java

Veste, kaj morate povezati vso strojno opremo. Zdaj moramo razumeti, kako uporabljati nekatere API-je, ki nam bodo omogočali pošiljanje ukazov iz aplikacije v bralnik. (Bralnik nato komunicira s kartico in s tem deluje kot posrednik, preden podatke pošlje na kartico.) Čitalnik pametnih kartic premeša zlate kontaktne točke in jih prenese. Kartica bo nekaj naredila s podatki in jih vrnila bralniku, ta pa podatke nato vrnil v aplikacijo. Kje so torej vsi ti bajti, ko se premikajo iz vaše aplikacije na kartico?

Kot smo že omenili, aplikacija komunicira z bralnikom, ta pa se s pametno kartico pogovarja z zgoraj opisanimi standardi. Ko se je tehnologija pametnih kartic razvijala, je ISO predlagal standard pametnih kartic. Standard določa mehanske in električne značilnosti ter protokol za komunikacijo s kartico. Kazalci na ustrezne dokumente ISO so navedeni v razdelku Viri. Na žalost skupina ISO ni mogla zagotoviti standarda za komunikacijo z bralcem. Torej, če želite na kartico poslati ukaz, morate najprej najti ukaz, ki ga kartica podpira, ta ukaz zaviti v paket ukazov ISO in nato nov ukaz zaviti v ovoj, potreben za zadevni bralnik. Primer, ki je naveden tukaj, izvaja vse te sloje namesto vas.

Enote podatkov aplikacijskega protokola (APDU)

Osnovna enota menjave s pametno kartico je paket APDU. Sporočilo ukaza, poslano iz aplikacijskega sloja, in odzivno sporočilo, ki ga je kartica vrnila v aplikacijski sloj, se imenujejo enote podatkovnih protokolov aplikacij (APDU). Komunikacija s kartico in čitalnikom se izvaja z APDU-ji. APDU lahko štejemo za podatkovni paket, ki vsebuje popolno navodilo ali popoln odgovor s kartice. Za zagotavljanje te funkcionalnosti imajo APDU natančno določeno strukturo, ki je opredeljena v številnih dokumentih ISO, ki spadajo v družino specifikacij 7816.

APDU sestavljajo naslednja polja:

Ukaz APDU Format

CLAINSP1P2LcPodatkiLe

Oblika APDU odziva

PodatkiSW1SW2

Sledi nekaj razredov, predvidenih za prevoz APDU-jev, in funkcij razredov:

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