Ohjelmointi

Älykortit: Alusta

Älykortit ovat saaneet viime aikoina paljon huutoa verkossa, viime huhtikuussa pidetyssä JavaOne-konferenssissa (neljä istuntoa käsittelivät tekniikkaa), suurissa verkon uutiskanavissa ja CNN: ssä. Tässä artikkelissa herätämme älykortin eloon todellisen älykortin esimerkillä. Tässä esitettyjen tekniikoiden avulla voit aloittaa älykortilla varustettujen Java-sovellusten rakentamisen.

Keskitymme kahteen tyyppiseen älykorttiin: muistikortit, jota voidaan pitää pieninä irrotettavina luku- / kirjoituslevyinä valinnaisella suojauksella; ja prosessorikortit, jota voidaan tarkastella pienikokoisina tietokoneina, joissa on tulo- ja lähtöportti. Tulevat artikkelit käsittelevät prosessorikortteja perusteellisemmin.

Artikkelin lihana kehitämme yksinkertaisen prototyypin tietojen lukemiseen ja kirjoittamiseen älykortille. Keskustelemme a lääkemääräyskortti, joka pitää luetteloa kaikista lääkemääräyksistäsi ja seuraa vakuutuksiasi, reseptisuunnitelmiasi ja muuta hyödyllistä tietoa. Myöhemmät artikkelit laajentavat reseptikortin ideaa.

Huomaat, että toistuva teema, joka käy läpi tämän sarjan älykortteja, on suojauskehyksen tarve, jotta estetään roistojen laajennusten, ActiveX-komponenttien jne. Pääsy henkilökohtaisiin ja / tai yritystietoihin. Tätä tarkoitusta varten tämän artikkelin sisältämä esittely tietojen lukemisesta ja kirjoittamisesta älykortille antaa sinulle pysyvän, turvallisen (ja kannettavan) tallennustilan.

Mikä on älykortti?

Voit ajatella älykorttia "luottokortiksi", jossa on "aivot", aivot ovat pieni upotettu tietokonepiiri. Tämä kortti-tietokone voidaan ohjelmoida suorittamaan tehtäviä ja tallentamaan tietoja, mutta huomaa, että aivot ovat vähän - mikä tarkoittaa, että älykortin virta on kaukana pöytätietokoneestasi.

Älykortteja käytetään tällä hetkellä puhelin-, kuljetus-, pankki- ja terveydenhoitotapahtumissa, ja pian - sinä kaltaisten kehittäjien ansiosta - alamme nähdä niitä käyttävän Internet-sovelluksissa. Älykortteja käytetään jo laajasti Japanissa ja Euroopassa, ja ne ovat saamassa suosiota Yhdysvalloissa. Itse asiassa tämän maan älykortti-alalla on tapahtunut viime aikoina kolme merkittävää tapahtumaa:

PC / SC

Microsoft ja useat muut yritykset esittivät PC / SC, älykorttisovellusliittymä kommunikointiin henkilökohtaisten tietokoneiden Win32-pohjaisten alustojen älykorttien kanssa. PC / SC ei tällä hetkellä tue muita kuin Win32-pohjaisia ​​järjestelmiä, eikä se välttämättä koskaan tue sitä. Keskustelemme tästä tarkemmin myöhemmin.

OpenCard Framework

OpenCard on avoin standardi, joka tarjoaa älykorttisovellusten yhteentoimivuuden kaikissa NC: ssä, myyntipisteissä, pöytätietokoneissa, kannettavissa tietokoneissa, yläosissa jne. OpenCard lupaa tarjota 100% puhtaita Java-älykorttisovelluksia. Älykorttisovellukset eivät usein ole puhtaita, koska ne kommunikoivat ulkoisen laitteen kanssa ja / tai käyttävät asiakkaan kirjastoja. (Sivuhuomautuksena voidaan todeta, että sataprosenttisesti puhtaat sovellukset voivat olla olemassa ilman OpenCardia, mutta ilman sitä kehittäjät käyttävät kotikasvatettuja rajapintoja älykortteihin.) OpenCard tarjoaa kehittäjille myös käyttöliittymän PC / SC: hen olemassa olevien laitteiden käyttöä varten Win32: ssä. levyt.

JavaCard

JavaCard esitteli Schlumberger, ja JavaSoft toimitti sen standardina äskettäin. Schlumbergerillä on markkinoiden ainoa Java-kortti, ja yhtiö on ensimmäinen JavaCard-lisenssinhaltija. Älykortti, jolla voidaan asettaa yleinen älykortistandardi, JavaCard koostuu vakioluokista ja sovellusliittymistä, jotka antavat Java-sovelmien toimia suoraan standardin mukaisella ISO 7816 -yhteensopivalla kortilla. JavaCard-kortit mahdollistavat erilaisten sovellusten turvallisen ja siruista riippumattoman suorituksen.

merkintä:

Vaikka tässä artikkelissa keskitytään älykortteihin, on tärkeää huomata, että et ole rajoittunut tällaisiin laitteisiin. Henkilökohtaisesti pidän parempana "Ibuttons" -laitetta, jonka tuottaa Dallas Semiconductor. Se on pieni ja kannettava kuin luottokortti, mutta niin kätevä. Miksi? Sinun ei tarvitse kaivaa lompakkoasi etsimään korttia; Painikkeet ovat siellä, sormellasi. Kyllä, se on rengas!

Sillä aikaa kontaktiton Älykortin versioita on olemassa (katso lisätietoja tästä alla), mielestäni Ibuttons, toiminnallinen-korutyyppinen laite voisi olla varsin kannattava. Katso lisätietoja painikkeista Resurssit-osiosta. Muuten, Java Commerce Team esitteli "JavaRingin" Java Internet Business Expossa (JIBE) New Yorkissa viime elokuussa. Voit lukea tästä artikkelista Onni aikakauslehti (katso jälleen Resurssit-osio).

Miksi käyttää älykorttia?

Mitkä ovat älykortin käytön edut? No, älykortti:

  • on luotettavampi kuin magneettinauhakortti
  • tällä hetkellä voi tallentaa sata kertaa enemmän tietoa kuin magneettinauhakortti
  • on vaikeampi peukaloida kuin mag raidat
  • voi olla kertakäyttöinen tai uudelleenkäytettävä
  • pystyy suorittamaan useita toimintoja useilla toimialoilla
  • on yhteensopiva kannettavien elektronisten laitteiden, kuten puhelimien, henkilökohtaisten digitaalisten avustajien (PDA) ja tietokoneiden, kanssa
  • kehittyy jatkuvasti (loppujen lopuksi se sisältää tietokonesirun)

Älykorttityypit

Kuten edellä mainittiin, tässä artikkelissa keskitytään kahteen tyyppiseen älykorttiin - muistiin ja prosessiin. Älykortteja on kaikkiaan viisi:

  1. muistikortit
  2. prosessorikortit
  3. elektroniset kukkarokortit
  4. turvakortit
  5. JavaCard

Älykortit ovat henkilökohtainen laitteisto, jonka on oltava yhteydessä jonkin muun laitteen kanssa päästäkseen näyttölaitteeseen tai verkkoon. Kortit voidaan kytkeä lukijaan, jota kutsutaan yleisesti nimellä

korttipääte

tai ne voivat toimia käyttämällä radiotaajuuksia.

Älykortit voivat olla yhteydessä lukijaan tai vastaanottimeen (katso lisätietoja näistä kahdesta termistä alla olevasta lukijoiden osiosta) yhdessä kahdesta muodosta:

Ota yhteyttä älykortteihin - Yhteys muodostetaan, kun lukija koskettaa pientä kultasirua kortin etuosassa.

Kontaktittomat älykortit - Ne voivat kommunikoida antennin kautta, jolloin korttia ei tarvitse asettaa tai poistaa käsin. Lähettömän kortin avulla sinun tarvitsee vain päästä lähelle vastaanottinta, ja kortti alkaa kommunikoida sen kanssa. Kontaktittomia kortteja voidaan käyttää sovelluksissa, joissa kortin asettaminen / poistaminen voi olla epäkäytännöllistä tai joissa nopeus on tärkeää.

Jotkut valmistajat valmistavat kortteja, jotka toimivat sekä kontakti- että kontaktittomissa tiloissa.

Luo kehitysympäristö älykorttisovellusten rakentamiseen

Älykorttisovellusten kehittämiseksi tarvitset muutamia asioita, nimittäin: älykortinlukija; ohjelmistot viestintään lukijan kanssa sekä jotkut ohjelmistot kommunikointiin lukijaan liitetyn kortin kanssa; ja tietysti älykortit ja älykorttilaitteet.

Älykortinlukija

Jos haluat kommunikoida älykortin kanssa tai kehittää sovelluksen, joka pystyy käyttämään älykorttia, sinulla on oltava lukija. Lukija tarjoaa sovelluksellesi polun lähettää ja vastaanottaa komentoja kortilta. Markkinoilla on monentyyppisiä lukijoita, joista yleisimpiä ovat sarja, PCCardja näppäimistö malleja. (Näppäimistömalleja tulee esiin täällä ja siellä; odottaa niiden olevan suoraan saatavana suurilta tietokoneiden valmistajilta kesäkuuhun 1998 mennessä.)

Tässä artikkelissa käytetään sarjalukijoita laitteiden tukemiseen. Sarjalukija muodostaa yhteyden tietokoneen sarjaporttiin. Huomaa, että toimitettu koodi tukee myös PCCard-lukijaa; useimmissa kannettavissa tietokoneissa on sisäänrakennettu PCCard-paikka.

Kukin valmistaja tarjoaa erilaisen protokollan lukijoille puhumiseen. Kun pystyt kommunikoimaan lukijan kanssa, älykortilla kommunikointiin on yksi protokolla: Viestintä älykortilla perustuu APDU-muotoon. (APDU-formaattia käsitellään jäljempänä.) Lisätietoja oman lukijan hankkimisesta on Resurssit-osan otsikossa "Gemplus-älykortinlukijat".

Ohjelmisto yhteydenpitoon lukijan kanssa

Tässä artikkelissa olevaan älykorttiesimerkkiin tarvitaan useita olio-luokkia. Nämä ovat:

  • ISO-komentoluokat kommunikointiin 7816-protokollan kanssa
  • Luokat yhteydenpitoon lukijan kanssa
  • Luokat tietojen muuntamiseksi valmistajakohtaiseen muotoon
  • Sovellus korttien testaamiseen ja käyttämiseen siihen tarkoitukseen, jota varten sovellus on suunniteltu

Älykortit ja älykorttilaitteet

Kuten artikkelin alussa todettiin, älykorttisovelluksen kehittämiseksi tarvitset älykortin laitteiston ja joitain älykortteja. Voit ostaa älykorttikehityssarjoja useilta yrityksiltä, ​​mukaan lukien Gemplus ja Schlumberger.

Niille teistä, joilla on jo lukijoita, sinun pitäisi pystyä käyttämään lukijaasi toimittamalla toteutus rajapintaluokasta, josta keskustelemme myöhemmin. Kuten edellä mainittiin, ennen kuin voimme kommunikoida kortin kanssa, meidän on kyettävä kommunikoimaan lukijan kanssa, ja aivan kuten kortteja on paljon, lukijoita on paljon.

Tärkeät älykorttistandardit

Tärkeä osa älykorttisovellusten kehittämispalapeliä ovat vakioprotokollat. Pohjimmiltaan sovellus kommunikoi lukijan kanssa, joka puolestaan ​​puhuu älykortille standardiprotokollaa - tapauksessamme Kansainvälisen standardointijärjestön (ISO) 7816 -protokollaa.

Kuten kaikilla uusilla tekniikoilla, älykorteilla on niin monia standardeja, että saatat olla masentunut ja hukkua. Seuraavien standardien perustuntemuksen saavuttaminen antaa sinulle mahdollisuuden kehittää sovelluksia luottavaisin mielin, ettet jätä huomiotta jotain älykorttien käytön perustavaa laatua. Joissakin järjestelmissä kuitenkin esiintyy erityisiä standardeja. Olen hajottanut koko standardin asia "horisontaaliseksi" ja "vertikaaliseksi" standardiksi: Vaakasuoria standardeja voidaan käyttää kaikissa sovelluksissa, kun taas vertikaaliset standardit ovat ominaisia ​​järjestelmälle.

Horisontaaliset standardit

  • ISO 7816 - kuvaa alimman tason käyttöliittymän älykortille. Tällä tasolla datatavut siirretään kortinlukijan ja kortin välillä.

  • PC / SC - standardi kommunikointiin älykorttien kanssa, jotka on kytketty Win3.1 / Win95 / NT-koneisiin.

  • OCF - kaikki Java-käyttöliittymä kommunikointiin älykorttien kanssa Java-ympäristöstä. (Pian OCF antaa kehittäjien kirjoittaa OCF: lle ja suorittaa käännöksen, joten sinun ei tarvitse kirjoittaa PC: lle / SC: lle.)

  • JavaCard - kuvaa JavaCard-korttia ja mitä se tukee.

Vertikaaliset standardit

  • Mondex - digitaalinen käteinen, joka käyttää vain älykortteja. Mondex-lähestymistapa ei salli käteisen olemassaoloa kortin ulkopuolella.

  • VisaCash - maksukortti, joka seuraa palvelimen kortteja.

  • Protoni - toinen sähköisen käteisen muoto.

  • MPCOS-EMV - yleiskortti, jonka avulla voit käyttää omaa valuuttasi tai rahakettasi.

Olen aina hämmästynyt siitä, että niin pieni muovipala saattaa vaatia niin paljon dokumentaation lukemista ja vaatia niin paljon tietoa kehittäjältä!

Koska älykorttien kanssa vaaditaan niin korkeatasoista asiantuntemusta, kehittäjillä on markkinoita toimittamaan Beans-yhteensopivia tuotteita, jotka toteuttavat vertikaalisen standardin käyttämällä horisontaalista standardia markkinoilla, joille haluat myydä. Tämä tarkoittaa, että voit kehittää pavut, jotka käyttävät erilaisia ​​horisontaalisten standardien yhdistelmiä, kuten OpenCard, tietyn sovelluksen toteuttamiseksi käyttämällä jotain muuta alan standardia kaupankäyntiin tai mitä tahansa muuta sovellusta.

Kommunikoi Java-sovelman tai -sovelluksen älykorttien kanssa

Tiedät mitä tarvitset yhdistääksesi kaikki laitteistot. Nyt meidän on ymmärrettävä, miten käytetään joitain sovellusliittymiä, joiden avulla voimme lähettää komentoja sovelluksesta lukijaan. (Lukija puolestaan ​​kommunikoi kortin kanssa ja toimii siten välittäjänä ennen tietojen lähettämistä kortille.) Älykortinlukija heiluttaa kultaisia ​​yhteyspisteitä ja siirtää tiedot. Kortti tekee jotain tietojen kanssa ja palauttaa ne lukijalle, joka palauttaa sitten tiedot sovellukseen. Joten missä kaikki nämä tavut ovat, kun ne siirtyvät sovelluksestasi kortille?

Kuten edellä mainittiin, sovellus kommunikoi lukijan kanssa, joka puolestaan ​​puhuu älykortille käyttäen yllä mainittuja standardeja. Pohjimmiltaan älykorttiteknologian kehittyessä ISO ehdotti älykorttistandardia. Vakiomääritetyt mekaaniset ja sähköiset ominaisuudet sekä yhteyskäytäntö kortin kanssa. Asiaankuuluvien ISO-asiakirjojen osoittimet on lueteltu Resurssit-osiossa. Valitettavasti ISO-ryhmä ei pystynyt tarjoamaan standardia yhteydenpitoon lukijan kanssa. Joten, jotta voit lähettää komennon kortille, sinun on ensin löydettävä komento, jota kortti tukee, kääri tämä komento ISO-komentopakettiin ja kääri sitten tämä uusi komento kyseisen lukijan kääreeseen. Tässä annettu esimerkkisovellus suorittaa kaiken tämän kerrostamisen puolestasi.

Sovellusprotokollan tietoyksiköt (APDU)

Älykortin vaihdon perusyksikkö on APDU-paketti. Sovelluskerrokselta lähetettyä komentoviestiä ja kortin palauttamaa vastesanomaa sovelluskerrokselle kutsutaan APDU: ksi (Application Protocol Data Units). Yhteys kortin ja lukijan kanssa tapahtuu APDU: iden kanssa. APDU: ta voidaan pitää datapakettina, joka sisältää täydellisen käskyn tai täydellisen vastauksen kortilta. Tämän toiminnon tarjoamiseksi APDU-yksiköillä on hyvin määritelty rakenne, joka on määritelty useissa ISO-asiakirjoissa, jotka kuuluvat 7816-spesifikaatioihin.

APDU: t koostuvat seuraavista kentistä:

Komento APDU-muoto

CLAINSP1P2LcTiedotLe

Vasteen APDU-muoto

TiedotSW1SW2

Seuraavassa on joitain APDU: iden kuljettamiseen tarkoitettuja luokkia ja luokkien toimintoja: