Programmēšana

Viedkartes: grunts

Viedkartes pēdējā laikā ir guvušas lielu atsaucību tīmeklī, pagājušā gada aprīļa JavaOne konferencē (četras sesijas bija saistītas ar tehnoloģiju), lielajās tīkla ziņu stacijās un CNN. Šajā rakstā mēs atdzīvināsim viedkarti, izmantojot reālās pasaules viedkartes piemēru. Šeit sniegtie paņēmieni ļaus sākt veidot Java lietojumprogrammas, kurās ir iespējota viedkarte.

Mēs pievērsīsimies divu veidu viedkartēm: atmiņas viedkartes, kurus var uzskatīt par nelieliem noņemamiem lasīšanas / rakstīšanas diskiem ar papildu drošību; un procesora kartes, kurus var apskatīt kā miniatūrus datorus ar ievades un izvades portu. Nākotnes raksti aptvers procesora kartes dziļāk.

Kā raksta gaļu mēs izstrādāsim vienkāršu prototipu datu lasīšanai un ierakstīšanai viedkartē. Mēs apspriedīsim a zāļu recepšu karte, kas glabā visu jūsu recepšu sarakstu un izseko jūsu apdrošināšanu, recepšu plānus un citu noderīgu informāciju. Vēlākos rakstos tiks paplašināta recepšu kartes ideja.

Jūs ievērosiet, ka atkārtota tēma, kas visā šajā sērijā darbojas viedkartēs, ir vajadzīga drošības sistēma, lai novērstu negodīgu spraudņu, ActiveX komponentu un tā tālāk nokļūšanu jūsu personīgajos un / vai korporatīvajos labumos. Šajā nolūkā, demonstrējot, kā lasīt un rakstīt datus viedkartē, kas iekļauta šajā rakstā, tiks nodrošināta pastāvīga, droša (un pārnēsājama) krātuve.

Kas ir viedkarte?

Jūs varat domāt par viedkarti kā par "kredītkarti", uz kuras ir "smadzenes", smadzenes ir maza iegulta datora mikroshēma. Šo karti-datoru var ieprogrammēt, lai veiktu uzdevumus un saglabātu informāciju, taču ņemiet vērā, ka smadzenes ir maz - tas nozīmē, ka viedkartes jauda ievērojami pārsniedz galddatoru.

Viedkartes pašlaik tiek izmantotas tālruņa, transporta, bankas un veselības aprūpes darījumos, un drīz - pateicoties tādiem izstrādātājiem kā jūs - mēs sāksim tās redzēt interneta lietojumprogrammās. Viedkartes jau tiek plaši izmantotas Japānā un Eiropā, un tās kļūst arvien populārākas ASV. Patiesībā šīs valsts viedkaršu nozarē nesen ir notikuši trīs nozīmīgi notikumi:

PC / SC

Iepazīstināja Microsoft un vairāki citi uzņēmumi PC / SC, viedkaršu lietojumprogrammu saskarne saziņai ar viedkartēm no Win32 bāzes platformām personālajiem datoriem. PC / SC pašlaik neatbalsta sistēmas, kas nav balstītas uz Win32, un, iespējams, nekad to nedarīs. Mēs to sīkāk apspriedīsim vēlāk.

OpenCard Framework

OpenCard ir atvērts standarts, kas nodrošina viedkaršu lietojumprogrammu savietojamību visā NC, POS, galddatoros, klēpjdatoros, komplektos un tā tālāk. OpenCard sola nodrošināt 100% tīras Java viedkaršu lietojumprogrammas. Viedkaršu lietojumprogrammas bieži vien nav tīras, jo tās sazinās ar ārēju ierīci un / vai izmanto klienta bibliotēkas. (Kā piezīmi, 100% tīras lietojumprogrammas varētu pastāvēt bez OpenCard, taču bez tā izstrādātāji viedkartēm izmantotu mājās audzētas saskarnes.) OpenCard arī nodrošina izstrādātājiem saskarni PC / SC, lai izmantotu esošās ierīces Win32. platfroms.

JavaCard

JavaCard ieviesa Schlumberger un nesen kā standartu iesniedza JavaSoft. Šlumbergeram šobrīd ir vienīgā Java karte tirgū, un uzņēmums ir pirmais JavaCard licenciāts. Viedkarte ar iespēju noteikt kopējo viedkartes standartu JavaCard sastāv no standarta klasēm un API, kas ļauj Java sīklietotnēm darboties tieši ar standarta ISO 7816 atbilstošu karti. JavaCards nodrošina drošu un no mikroshēmām neatkarīgu dažādu lietojumprogrammu izpildi.

Piezīme:

Lai gan šajā rakstā galvenā uzmanība tiek pievērsta viedkartēm, ir svarīgi atzīmēt, ka jūs neaprobežojaties tikai ar šāda veida ierīcēm. Personīgi es dodu priekšroku ierīcei "Ibuttons", ko ražo Dallas Semiconductor. Tā ir maza un pārnēsājama kā kredītkarte, taču tik ērta. Kāpēc? Kartes meklējumos nav jāizrok maku; Pogas atrodas turpat, uz pirksta. Jā, tas ir gredzens!

Kamēr bezkontakta viedkartes versijas pastāv (skatiet zemāk, lai iegūtu vairāk informācijas par to), es domāju, ka ierīces Ibuttons, funkcionāls-rotaslietas veids varētu būt diezgan izdevīgs. Plašāku informāciju par pogām skatiet sadaļā Resursi. Starp citu, Java Commerce Team pagājušā gada augustā Ņujorkā Java Internet Business Expo (JIBE) demonstrēja "JavaRing". Par to varat lasīt rakstā Laime žurnāls (atkal skatiet sadaļu Resursi).

Kāpēc izmantot viedkarti?

Kādas ir viedkartes izmantošanas priekšrocības? Nu, viedkarte:

  • ir uzticamāka nekā magnētiskās joslas karte
  • pašlaik var glabāt simtreiz vairāk informācijas nekā magnētiskās joslas karte
  • ir grūtāk iejaukties nekā mag svītras
  • var būt vienreiz lietojams vai atkārtoti lietojams
  • var veikt vairākas funkcijas visdažādākajās nozarēs
  • ir saderīgs ar pārnēsājamām elektroniskām ierīcēm, piemēram, tālruņiem, personālajiem digitālajiem palīgiem (PDA) un personālajiem datoriem
  • pastāvīgi attīstās (galu galā tajā ir iekļauta datora mikroshēma)

Viedkaršu veidi

Kā minēts iepriekš, šajā rakstā galvenā uzmanība tiks pievērsta divu veidu viedkartēm - atmiņai un procesam. Kopumā ir pieci viedkaršu veidi:

  1. atmiņas kartes
  2. procesora kartes
  3. elektroniskās naudas kartes
  4. drošības kartes
  5. JavaCard

Viedkartes ir personāla aparatūra, kurai jāsaskaras ar kādu citu ierīci, lai piekļūtu displeja ierīcei vai tīklam. Kartes var pieslēgt lasītājam, ko parasti dēvē par a

karšu termināls

vai arī tie var darboties, izmantojot RF radiofrekvenču.

Viedkartes var sazināties ar lasītāju vai uztvērēju (lai uzzinātu vairāk par šiem diviem noteikumiem, skatīt sadaļu par lasītājiem zemāk) vienā no divām formām:

Sazinieties ar viedkartēm - Savienojums tiek izveidots, kad lasītājs sazinās ar nelielu zelta mikroshēmu kartes priekšpusē.

Bezkontakta viedkartes - Viņi var sazināties, izmantojot antenu, novēršot nepieciešamību ievietot un izņemt karti ar roku. Izmantojot bezkontakta karti, viss, kas jums jādara, ir jāpieiet tuvu uztvērējam, un karte sāks ar to sazināties. Bezkontakta kartes var izmantot lietojumprogrammās, kurās kartes ievietošana / noņemšana var būt nepraktiska vai kurās ātrums ir svarīgs.

Daži ražotāji izgatavo kartes, kas darbojas gan bezkontakta, gan bezkontakta režīmos.

Izveidojiet attīstības vidi viedkaršu lietotņu izveidei

Lai izstrādātu viedkaršu lietojumprogrammas, jums ir nepieciešamas dažas lietas, proti: viedkaršu lasītājs; programmatūra saziņai ar lasītāju, kā arī programmatūra saziņai ar karti, kas ir pievienota lasītājam; un, protams, viedkartes un viedkaršu aparatūru.

Viedkaršu lasītājs

Lai sazinātos ar viedkarti vai izstrādātu lietojumprogrammu, kas spēj viedkarti, jums ir jābūt lasītājs. Lasītājs nodrošina ceļu jūsu lietojumprogrammai, lai nosūtītu un saņemtu komandas no kartes. Tirgū ir daudz veidu lasītāju, no kuriem visizplatītākais ir sērijveida, PCCard, un tastatūra modeļiem. (Klaviatūras modeļi parādās šeit un tur; sagaida, ka līdz 1998. gada jūnijam tie būs tieši pieejami lielajiem datoru ražotājiem.)

Šajā rakstā ierīču atbalstam tiek izmantoti sērijas lasītāji. Sērijas lasītājs izveido savienojumu ar datora seriālo portu. Ņemiet vērā, ka norādītais kods atbalsta arī PCCard lasītāju; lielākajai daļai klēpjdatoru ir iebūvēti PCCard sloti.

Katrs ražotājs nodrošina atšķirīgu protokolu, kā runāt ar lasītāju. Kad varat sazināties ar lasītāju, saziņai ar viedkarti ir viens protokols: saziņa ar viedkarti balstās uz APDU formātu. (APDU formāts ir apspriests turpmāk.) Informāciju par sava lasītāja iegādi skatiet sadaļā Resursi sadaļā "Gemplus viedkaršu lasītāji".

Programmatūra saziņai ar lasītāju

Šajā rakstā iekļautajam viedkartes piemēram ir nepieciešamas vairākas objektorientētas klases. Šie ir:

  • ISO komandu klases saziņai ar 7816 protokolu
  • Nodarbības saziņai ar lasītāju
  • Klases datu konvertēšanai ražotāja formātā
  • Lietojumprogramma karšu testēšanai un izmantošanai mērķim, kuram tā tika izstrādāta

Viedkartes un viedkaršu aparatūra

Kā atzīmēts raksta sākumā, lai šeit izstrādātu viedkaršu lietojumprogrammu, nepieciešama viedkaršu aparatūra un dažas viedkartes. Viedkaršu izstrādes komplektus varat iegādāties no vairākiem uzņēmumiem, tostarp Gemplus un Schlumberger.

Tiem no jums, kuriem jau ir lasītāji, jums vajadzētu būt iespējai izmantot savu lasītāju, piegādājot saskarnes klases ieviešanu, kuru mēs apspriedīsim vēlāk. Kā jau minēts iepriekš, pirms mēs varam sazināties ar karti, mums jāspēj sazināties ar lasītāju, un tāpat kā ir daudz dažādu karšu, ir arī daudz dažādu lasītāju.

Svarīgi viedkaršu standarti

Svarīgs viedkartes lietojumprogrammu izstrādes puzles gabals ir standarta protokoli. Būtībā lietojumprogramma sazinās ar lasītāju, kurš savukārt runā ar viedkarti, izmantojot standarta protokolu - mūsu gadījumā Starptautiskās standartu organizācijas (ISO) 7816 protokolu.

Tāpat kā jebkurai jaunai tehnoloģijai, viedkartēm ir tik daudz standartu, ka jūs, iespējams, atradīsit drosmi un satricinājumu. Panākot pamatzināšanu par šiem standartiem, jūs varēsit izstrādāt lietojumprogrammas ar pārliecību, ka jūs neignorējat kaut ko pamatīgu viedkaršu lietošanā. Tomēr dažām sistēmām tiek izmantoti īpaši standarti. Es visu standartu lietu esmu sadalījis "horizontālos" un "vertikālos" standartos: horizontālos standartus var izmantot visās lietojumprogrammās, savukārt vertikālie standarti ir raksturīgi sistēmai.

Horizontālie standarti

  • ISO 7816 - apraksta viedkartes zemākā līmeņa saskarni. Šajā līmenī datu baiti tiek pārsūtīti starp karšu lasītāju un karti.

  • PC / SC - standarts saziņai ar viedkartēm, kas savienotas ar Win3.1 / Win95 / NT mašīnām.

  • OCF - visas Java saskarne saziņai ar viedkartēm no Java vides. (Drīz OCF ļaus izstrādātājiem rakstīt OCF un veikt tulkojumu, tāpēc nebūs nepieciešams rakstīt uz PC / SC.)

  • JavaCard - apraksta JavaCard un to, ko tā atbalsta.

Vertikālie standarti

  • Mondex - digitālā nauda, ​​kurā tiek izmantotas tikai viedkartes. Mondex pieeja neļauj skaidrā naudā pastāvēt ārpus kartes.

  • VisaCash - debetkarte, kas seko līdzi servera kartēm.

  • Protons - cita veida e-nauda.

  • MPCOS-EMV - universāla karte, kas ļauj jums ieviest sava veida valūtu vai žetonu.

Es vienmēr esmu pārsteigts, ka tik mazam plastmasas gabalam varētu būt nepieciešams tik daudz dokumentācijas lasīšanas un no izstrādātāja prasīt tik daudz zināšanu!

Tā kā viedkartēm ir nepieciešama tik augsta līmeņa zināšanas, izstrādātājiem ir tirgus, kas piegādā Beans spējīgus produktus, kas ievieš vertikālo standartu, izmantojot horizontālo standartu tirgū, kuram vēlaties pārdot. Tas nozīmē, ka jūs varētu izstrādāt pupiņas, kas izmanto dažādas horizontālo standartu kombinācijas, piemēram, OpenCard, lai ieviestu konkrētu lietojumprogrammu, izmantojot kādu citu nozares standartu tirdzniecībai vai jebkuru citu lietojumprogrammu.

Sazinieties ar viedkartēm no Java sīklietotnes vai lietojumprogrammas

Jūs zināt, kas jums nepieciešams, lai savienotu visu aparatūru. Tagad mums ir jāsaprot, kā izmantot dažas API, kas ļaus mums nosūtīt komandas no lietojumprogrammas lasītājam. (Savukārt lasītājs sazinās ar karti, tādējādi darbojoties kā starpnieks pirms datu nosūtīšanas uz karti.) Viedkaršu lasītājs vicina zelta kontaktpunktus un pārsūta datus. Karte kaut ko darīs ar datiem un atgriezīs tos lasītājam, kurš pēc tam atgriezīs datus lietojumprogrammā. Tātad, kur ir visi šie baiti, kad tie pāriet no jūsu lietojumprogrammas uz karti?

Kā minēts iepriekš, lietojumprogramma sazinās ar lasītāju, kas savukārt runā ar viedkarti, izmantojot iepriekš apspriestos standartus. Būtībā, attīstoties viedkaršu tehnoloģijai, viedo karšu standartu ierosināja ISO. Standartā ir noteiktas mehāniskās un elektriskās īpašības, kā arī protokols saziņai ar karti. Norādes uz attiecīgajiem ISO dokumentiem ir uzskaitītas resursu sadaļā. Diemžēl ISO grupa nespēja nodrošināt saziņas standartu ar lasītāju. Tātad, lai nosūtītu komandu uz karti, vispirms jāatrod komanda, kuru karte atbalsta, iesaiņojiet šo komandu ISO komandu paketē un pēc tam iesaiņojiet šo jauno komandu aptinumā, kas nepieciešams attiecīgajam lasītājam. Šeit sniegtais lietojumprogrammas piemērs visu šo slāņošanu veic jums.

Lietojumprogrammu protokola datu vienības (APDU)

Apmaiņas vienība ar viedkarti ir APDU pakete. Komandas ziņojumu, kas nosūtīts no lietojumprogrammas slāņa, un atbildes ziņojumu, ko karte atdod lietojumprogrammas slānim, sauc par lietojumprogrammu protokola datu vienībām (APDU). Saziņa ar karti un lasītāju tiek veikta ar APDU. APDU var uzskatīt par datu paketi, kas satur pilnu instrukciju vai pilnīgu atbildi no kartes. Lai nodrošinātu šo funkcionalitāti, APDU ir precīzi definēta struktūra, kas definēta vairākos ISO dokumentos, kas pieder pie 7816 specifikāciju saimes.

APDU sastāv no šādiem laukiem:

Komandas APDU formāts

CLAINSP1P2LcDatiLe

Atbildes APDU formāts

DatiSW1SW2

Tālāk ir norādītas dažas klases, kas paredzētas APDU transportēšanai, un klases funkcijas:

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