Programmēšana

Izpratne par Java karti 2.0

Šis raksts sākas ar viedkaršu pārskatu un īsu pārskatu par viedkartes standarta ISO 7816. Ņemot vērā viedkaršu iepriekšējo fonu Java izstrādātājs slejas, šī daļa sāksies ar atbildi uz jautājumu "Kas ir Java karte?" un Java Card sistēmas arhitektūras pārskats. Tālāk mēs pievērsīsimies daudzajiem jautājumiem, kas raksturīgi Java kartei, tostarp Java kartes dzīves ciklam; Java Card 2.0 valodas apakškopa un API bibliotēkas klases; un Java kartes drošība. Tad mēs apspriedīsim Java kartes izpildlaika vidi un parādīsim, kā darbojas Java karte. Mēs noslēgsim ar izgaismojošu piemēru: elektroniska seifa lietojumprogramma, kas paredzēta tikai Java kartei.

Turpmāk visas atsauces uz Java karti netieši atsaucas uz Java Card 2.0.

Kas ir viedkarte?

Viedkarte, kas identiska kredītkartes izmēram, glabā un apstrādā informāciju, izmantojot elektroniskās shēmas, kas iestrādātas silīcijā tās ķermeņa plastmasas pamatnē. Ir divu veidu viedkartes: viedā viedkarte satur mikroprocesoru un piedāvā lasīšanas, rakstīšanas un aprēķināšanas iespējas, piemēram, nelielu mikrodatoru. A atminas karte, no otras puses, nav mikroprocesora, un tas ir paredzēts tikai informācijas glabāšanai. Atmiņas kartē tiek izmantota drošības loģika, lai kontrolētu piekļuvi atmiņai.

Visās viedkartēs ir trīs veidu atmiņa: pastāvīga nemaināma atmiņa; pastāvīga mainīga atmiņa; un nepastāvīga mainīga atmiņa. ROM, EEPROM un RAM ir visplašāk izmantotā atmiņa trim attiecīgajiem veidiem pašreizējās viedkartēs. Noturīgo atmiņu sauc arī par nepastāvīgo atmiņu. Mēs izmantosim noteikumus neatlaidīgs un nepastāvīgs šajā rakstā.

ISO 7816 1. – 7. Daļa, ko definējusi Starptautiskā standartu organizācija, satur standartu kopumu, kas aptver dažādus viedkaršu aspektus. ISO 7816 sastāv no:

  • Fizikālās īpašības (1. daļa)

  • Kontaktu izmēri un atrašanās vieta (2. daļa)

  • Elektroniskie signāli un pārraides protokoli (3. daļa)

  • Starpnozaru komandas apmaiņai (4. daļa)

  • Lietojumprogrammu identifikatori (5. daļa)

  • Starpnozaru datu elementi (6. daļa)

  • Starpnozaru komandas SCQL (7. daļa)

Šī diagramma ilustrē viedkartes fiziskās īpašības, kas noteiktas ISO 7816 1. daļā.

Plašāku informāciju par ISO 7816 un viedkartēm skatiet sadaļā "Viedkartes: grunts."

Parasti viedkartē nav barošanas avota, displeja vai tastatūras. Tas mijiedarbojas ar ārpasauli, izmantojot sērijas sakaru saskarni, izmantojot astoņus kontaktpunktus. Kontaktu izmēri un atrašanās vieta ir ietverta ISO 7816 2. daļā. Šī diagramma parāda viedkartes kontaktus.

Viedkarte tiek ievietota karšu pieņemšanas ierīcē (CAD), kas var izveidot savienojumu ar citu datoru. Citi Kartes pieņemšanas ierīcei izmantotie termini ir terminālis, lasītājs, un IFD (saskarnes ierīce). Tie visi nodrošina vienādas pamatfunkcijas, proti, lai piegādātu karti un izveidotu datu pārraides savienojumu.

Kad divi datori sazinās savā starpā, viņi apmainās ar datu paketēm, kas izveidotas, ievērojot protokolu kopumu. Tāpat viedkartes runā ar ārpasauli, izmantojot savas datu paketes, ko sauc APDU (Lietojumprogrammas protokola datu vienības). APDU satur komandu vai atbildes ziņojumu. Karšu pasaulē tiek izmantots galvenā-verga modelis, kurā viedkarte vienmēr spēlē pasīvo lomu. Citiem vārdiem sakot, viedkarte vienmēr gaida komandu APDU no termināļa. Pēc tam tas veic APDU norādīto darbību un atbild terminālim ar atbildes APDU. Komandas APDU un atbildes APDU tiek apmainīti alternatīvi starp karti un termināli.

Šīs tabulas ilustrē attiecīgi komandu un atbildes APDU formātus. APDU struktūra ir aprakstīta ISO 7816 4. daļā.

Komanda APDU
Obligāta galveneNosacītais ķermenis
CLAINSP1P2LcDatu lauksLe

Galvenē tiek kodēta izvēlētā komanda. Tas sastāv no četriem laukiem: klase (CLA), instrukcija (INS) un 1. un 2. parametrs (P1 un P2). Katrā laukā ir 1 baits:

  • CLA: klases baits. Daudzās viedkartēs šo baitu izmanto, lai identificētu lietojumprogrammu.

  • INS: instrukcijas baits. Šis baits norāda instrukcijas kodu.

  • P1-P2: parametru baiti. Tie nodrošina APDU komandas turpmāku kvalifikāciju.

Lc apzīmē baitu skaitu komandas APDU datu laukā; Le apzīmē maksimālo gaidāmo baitu skaitu šādas atbildes APDU datu laukā.

Atbilde APDU
Nosacītais ķermenisObligāta piekabe
Datu lauksSW1SW2

Statusa baiti SW1 un SW2 apzīmē APDU apstrādes statusu kartē.

Kas ir Java karte?

Java karte ir viedkarte, kas spēj darbināt Java programmas. Java Card 2.0 specifikācija tika publicēta vietnē //www.javasoft.com/javacard. Tas satur detalizētu informāciju par Java kartes virtuālās mašīnas un lietojumprogrammu saskarnes (API) izveidošanu viedkartēs. Minimālā sistēmas prasība ir 16 kilobaiti tikai lasāmās atmiņas (ROM), 8 kilobaiti EEPROM un 256 baiti brīvpiekļuves atmiņas (RAM).

Java kartes sistēmas arhitektūra ir parādīta nākamajā attēlā.

Kā parādīts attēlā, Java Card VM ir veidots virs īpašas integrētās shēmas (IC) un vietējās operētājsistēmas ieviešanas. JVM slānis slēpj ražotāja patentēto tehnoloģiju ar kopēju valodas un sistēmas saskarni. Java kartes ietvars nosaka lietojumprogrammu saskarnes (API) klašu kopu, lai izstrādātu Java kartes lietojumprogrammas un nodrošinātu šo pakalpojumu sistēmas pakalpojumus. Konkrēta nozare vai uzņēmums var piegādāt papildu bibliotēkas, lai sniegtu pakalpojumu vai uzlabotu drošības un sistēmas modeli. Tiek izsauktas Java kartes lietojumprogrammas sīklietotnes. Vienā kartē var atrasties vairākas sīklietotnes. Katru sīklietotni unikāli identificē pēc tā ATBALSTS (lietojuma identifikators), kā noteikts ISO 7816 5. daļā.

Svarīgs punkts, kas jāpatur prātā, ir viedkartes nav: Tie nav personālie datori. Viņiem ir ierobežoti atmiņas resursi un skaitļošanas jauda. Lietotājiem nevajadzētu domāt par Java Card 2.0 kā vienkārši noņemtu JDK versiju.

Java kartes kalpošanas laiks

Java kartes kalpošanas laiks sākas, kad vietējās OS, Java Card VM, API klašu bibliotēkas un, iespējams, sīklietotnes tiek ierakstītas ROM. Šis pastāvīgo komponentu ierakstīšanas process mikroshēmas nemaināmajā atmiņā ienākošo komandu izpildei tiek izsaukts maskēšana.

Pirms Java kartes nonākšanas jūsu makā, tai jāveic inicializācija un personalizēšana. Inicializācija attiecas uz vispārīgu datu ielādi kartes nepastāvīgajā atmiņā. Šie dati ir identiski daudzās kartēs un nav raksturīgi konkrētai personai; piemērs var būt emitenta vai ražošanas nosaukums.

Nākamais solis, personalizēšana, ietver kartes piešķiršanu personai. Tas var notikt, fiziski personalizējot vai elektroniski personalizējot. Fiziskā personalizācija attiecas uz jūsu vārda un kartes numura iespiešanu vai lāzera iegravēšanu uz kartes plastmasas virsmas. Elektroniskā personalizācija attiecas uz personas datu ielādi kartes nemainīgajā atmiņā, piemēram, personīgo atslēgu, vārdu un piespraudes numuru.

Inicializācija un personalizācija atšķiras no piegādātāja un izsniedzēja. Abos gadījumos datu glabāšanai bieži izmanto EEPROM (nepastāvīgas atmiņas veids).

Šajā brīdī Java karte ir gatava lietošanai. Jūs varat saņemt Java karti no izdevēja vai nopirkt pie mazumtirgotāja. Mazumtirgotāja pārdotās kartes ir vispārējas nozīmes, un šajā gadījumā personalizēšana bieži tiek izlaista.

Tagad jūs varat ievietot Java karti lasītājā un nosūtīt APDU komandas sīklietotnēm, kas atrodas kartē, vai arī ielādēt kartē vairāk sīklietu vai datu.

Java karte paliek aktīva līdz tās derīguma termiņa beigām vai bloķēšanai neatjaunojamas kļūdas dēļ.

Java kartes virtuālās mašīnas kalpošanas laiks

Atšķirībā no Java virtuālās mašīnas (JVM) datorā vai darbstacijā, Java Card virtuālā mašīna darbojas uz visiem laikiem.

Lielākā daļa kartē saglabātās informācijas ir jāsaglabā pat tad, ja tiek atvienota strāva - tas ir, kad karte tiek noņemta no lasītāja. Java kartes virtuālā mašīna izveido objektus EEPROM, lai saglabātu pastāvīgo informāciju. Java kartes VM izpildes kalpošanas laiks ir kartes kalpošanas laiks. Ja barošana netiek nodrošināta, VM darbojas bezgalīgā pulksteņa ciklā.

Java kartes sīklietotņu un objektu kalpošanas laiks

Sīklietotnes darbība sākas, kad tā ir pareizi instalēta un reģistrēta sistēmas reģistrācijas tabulā, un beidzas, kad tā tiek noņemta no tabulas. Izņemtās sīklietotnes vietu var atkārtoti izmantot vai neizmantot, atkarībā no tā, vai kartē ir ieviesta atkritumu savākšana. Kartes sīklietotne atrodas neaktīvā stadijā, līdz termināls to skaidri izvēlas.

Objekti tiek izveidoti pastāvīgajā atmiņā (piemēram, EEPROM). Tos var pazaudēt vai savākt atkritumus, ja citi noturīgi priekšmeti uz tiem neattiecas. Tomēr rakstīt uz EEPROM ir tūkstoš reižu lēnāk nekā uz RAM.

Dažiem objektiem tiek piekļūts bieži, un to lauku saturam nav jābūt noturīgam. Java karte atbalsta īslaicīgs (pagaidu) objekti RAM. Kad objekts ir pasludināts par pārejošu, tā saturu nevar pārvietot atpakaļ uz pastāvīgo atmiņu.

Java Card 2.0 valodas apakškopa

Java Card programmas, protams, ir rakstītas Java valodā. Tie tiek apkopoti, izmantojot parastos Java kompilatorus. Ierobežoto atmiņas resursu un skaitļošanas jaudas dēļ Java kartē netiek atbalstīti visi Java valodas specifikācijā noteiktie valodas līdzekļi. Java karte neatbalsta:

  • Dinamiskā klases ielāde

  • Drošības menedžeris

  • Vītnes un sinhronizācija

  • Objekta klonēšana

  • Pabeigšana

  • Lieli primitīvi datu tipi (peldošie, divkāršie, garie un char)

Nav pārsteigums, ka atslēgvārdi, kas atbalsta šīs funkcijas, arī tiek izlaisti no valodas. VM ieviesēji var izlemt atbalstīt 32 bitu vesela skaitļa tipu vai vietējās metodes pēcizdošanas sīklietotnēm, ja viņi strādā ar modernāku viedkarti ar lielāku atmiņu. Pēc izdošanas sīklietotnes ir tās sīklietotnes, kuras tiek instalētas Java kartē pēc kartes izsniegšanas kartes turētājam.

Java Card 2.0 ietvars

Viedkartes ir bijušas tirgū 20 gadus, un lielākā daļa no tām parasti ir saderīgas ar ISO 7816 1. – 7. Daļu un / vai EMV. Mēs jau esam apskatījuši ISO 7816. Kas ir EMV? EMV standarts, ko nosaka Europay, MasterCard un Visa, ir balstīts uz ISO 7816 standartu sēriju ar papildu īpašumtiesībām, lai apmierinātu finanšu nozares īpašās vajadzības. Java karšu ietvars ir paredzēts, lai viegli atbalstītu viedkaršu sistēmas un lietojumprogrammas. Tas slēpj viedkaršu infrastruktūras detaļas un nodrošina Java Card lietojumprogrammu izstrādātājiem salīdzinoši vieglu un vienkāršu programmēšanas saskarni.

Java kartes ietvarā ir četras paketes:

Iepakojuma nosaukumsApraksts
javacard.frameworkŠī ir kartes galvenā pakete. Tas nosaka tādas klases kā un , kas ir Java Card programmu un , un , kas nodrošina izpildes laiku un sistēmas pakalpojumus Java Card programmām, piemēram, APDU apstrāde un objektu koplietošana
javacardx.framework Šī pakete nodrošina objektorientētu dizainu ar ISO 7816-4 saderīgai failu sistēmai. Tas atbalsta elementāros failus (EF), īpašos failus (DF) un uz failiem orientētos APDU, kā norādīts ISO7816
javacardx.crypto un javacardx.cryptoEnc Šīs divas paketes atbalsta viedkartēs nepieciešamo kriptogrāfisko funkcionalitāti

Atbilst Java nosaukšanas konvencijai Java Cardx paketes ir Java Card ietvara paplašinājumi. Nav nepieciešams, lai jūs tos atbalstītu kartē.

Java kartes drošība

Uz Java sīklietotnēm attiecas Java drošības ierobežojumi, tomēr Java Card sistēmu drošības modelis daudzos veidos atšķiras no standarta Java.

Java Card klase Security Manager netiek atbalstīta. Valodas drošības politikas īsteno virtuālā mašīna.

Java sīklietotnes rada objektus, kas uzglabā un manipulē ar datiem. Objekts pieder sīklietotnei, kas to izveido. Pat ja sīklietotnei var būt atsauce uz objektu, tā nevar atsaukties uz objekta metodēm, ja vien objekts nav tās īpašnieks vai objekts ir skaidri koplietots. Sīklietotne var koplietot jebkuru no saviem objektiem ar konkrētu sīklietotni vai ar visām sīklietotnēm.

Sīklietotne ir neatkarīga vienība Java kartē. Tās izvēli, izpildi un funkcionalitāti neietekmē citi sīklietotnes, kas dzīvo tajā pašā kartē.

Kā lietas darbojas kopā Java kartē

Java kartes iekšienē JCRE (Java Card Runtime Environment) attiecas uz virtuālo mašīnu Java Card un Java Card Framework klasēm. Katrs Java kartes sīklietotne ir saistīta ar unikālu AID, ko piešķir JCRE.

Pēc tam, kad sīklietotne ir pareizi ielādēta kartes pastāvīgajā atmiņā un ir saistīta ar Java Card Framework un citām kartē esošajām bibliotēkām, JCRE izsauc sīklietotnes instalēšanas metodi kā pēdējo sīklietotņu instalēšanas procesa soli. Publiska statiska metode, uzstādīt, ir jāīsteno sīklietotņu klasei, lai izveidotu sīklietotnes instanci un reģistrētu to JCRE. Tā kā atmiņa ir ierobežota, šajā brīdī ir laba programmēšanas prakse, lai izveidotu un inicializētu objektus, kas sīklietotnei būs nepieciešami tā darbības laikā.

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