Programiranje

Razumevanje Java Card 2.0

Ta članek se začne s pregledom pametnih kartic in kratkim pregledom standarda za pametne kartice ISO 7816. Glede na preteklost pametnih kartic Razvijalec Java stolpcev, se bo ta obrok začel z odgovorom na vprašanje: "Kaj je Java Card?" in pregled arhitekture sistema Java Card. Nato se bomo osredotočili na številna vprašanja, značilna za Java Card, vključno z življenjskim ciklom Java Card; podmnožica jezika Java Card 2.0 in razredi knjižnice API; in varnost Java kartice. Nato bomo razpravljali o okolju izvajanja Java Card in pokazali, kako Java Card deluje. Zaključili bomo s svetlečim primerom: aplikacija za elektronsko denarnico, napisana samo za Java Card.

Od tu naprej se vsa sklicevanja na Java Card implicitno nanašajo na Java Card 2.0.

Kaj je pametna kartica?

Pametna kartica, ki je enaka velikosti kreditne kartice, shranjuje in obdeluje informacije prek elektronskih vezij, vdelanih v silicij v plastični podlagi telesa. Obstajata dve osnovni vrsti pametnih kartic: An inteligentna pametna kartica vsebuje mikroprocesor in ponuja zmožnost branja, pisanja in računanja, kot majhen mikroračunalnik. A pomnilniške karticepo drugi strani pa nima mikroprocesorja in je namenjen le hrambi informacij. Pomnilniška kartica uporablja varnostno logiko za nadzor dostopa do pomnilnika.

Vse pametne kartice vsebujejo tri vrste pomnilnika: trajni nespremenljivi pomnilnik; trajni spremenljivi spomin; in nestalni pomnilniški pomnilnik. ROM, EEPROM in RAM so najpogosteje uporabljeni pomnilniki za tri ustrezne vrste na trenutnih pametnih karticah. Trajnemu spominu pravimo tudi nehlapni spomin. Izraze bomo uporabili vztrajno in nehlapljivo zamenljivo v tem članku.

ISO 7816 del 1-7, ki ga je opredelila Mednarodna organizacija za standarde, vsebuje sklop standardov, ki zajema različne vidike pametnih kartic. ISO 7816 je sestavljen iz:

  • Fizične značilnosti (1. del)

  • Mere in lokacija stikov (2. del)

  • Elektronski signali in prenosni protokoli (3. del)

  • Medindustrijski ukazi za izmenjavo (4. del)

  • Identifikatorji aplikacije (5. del)

  • Medpanožni elementi podatkov (6. del)

  • Medindustrijski ukazi za SCQL (7. del)

Naslednji diagram prikazuje fizične lastnosti pametne kartice, ki so opredeljene v 1. delu ISO 7816.

Če želite več informacij o ISO 7816 in pametnih karticah, glejte "Pametne kartice: osnovni primer."

Pametna kartica običajno ne vsebuje napajanja, zaslona ali tipkovnice. Z zunanjim svetom komunicira s pomočjo serijskega komunikacijskega vmesnika prek svojih osmih kontaktnih točk. Mere in lokacija stikov so zajeti v 2. delu standarda ISO 7816. Ta diagram prikazuje stike na pametni kartici.

Pametna kartica se vstavi v napravo za sprejem kartic (CAD), ki se lahko poveže z drugim računalnikom. Drugi izrazi, ki se uporabljajo za napravo za sprejem kartice, so terminala, bralec, in IFD (vmesniška naprava). Vsi zagotavljajo enake osnovne funkcije, in sicer napajanje kartice in vzpostavitev povezave za prenos podatkov.

Ko dva računalnika komunicirata med seboj, si izmenjata podatkovne pakete, ki so zgrajeni po nizu protokolov. Podobno pametne kartice govorijo z zunanjim svetom z lastnimi podatkovnimi paketi - imenovanimi APDU (Enote podatkov aplikacijskega protokola). APDU vsebuje ukaz ali odzivno sporočilo. V svetu kart se uporablja model master-slave, pri čemer ima pametna kartica vedno pasivno vlogo. Z drugimi besedami, pametna kartica vedno čaka na ukaz APDU iz terminala. Nato izvede dejanje, določeno v APDU, in odgovori terminalu z odzivnim APDU. Ukazni APDU in odzivni APDU se izmenjujejo med kartico in terminalom.

Naslednje tabele ponazarjajo formate APDU za ukaze in odzive. Struktura APDU je opisana v delu 4 ISO 7816.

Ukaz APDU
Obvezna glavaPogojno telo
CLAINSP1P2LcPodatkovno poljeLe

Glava kodira izbrani ukaz. Sestavljen je iz štirih polj: razreda (CLA), navodil (INS) in parametrov 1 in 2 (P1 in P2). Vsako polje vsebuje 1 bajt:

  • CLA: bajt razreda. V mnogih pametnih karticah se ta bajt uporablja za identifikacijo aplikacije.

  • INS: bajt z navodili. Ta bajt označuje kodo navodil.

  • P1-P2: bajti parametrov. Ti zagotavljajo nadaljnje kvalifikacije za ukaz APDU.

Lc označuje število bajtov v podatkovnem polju ukaza APDU; Le označuje največje število bajtov, pričakovano v podatkovnem polju naslednjega odziva APDU.

Odziv APDU
Pogojno teloObvezna prikolica
Podatkovno poljeSW1SW2

Bajta stanja SW1 in SW2 označujeta stanje obdelave ukaza APDU na kartici.

Kaj je Java Card?

Java Card je pametna kartica, ki lahko poganja programe Java. Specifikacija Java Card 2.0 je bila objavljena na //www.javasoft.com/javacard. Vsebuje podrobne informacije za izdelavo navideznega stroja Java Card in vmesnika za programiranje aplikacij (API) na pametnih karticah. Minimalna sistemska zahteva je 16 kilobajtov bralnega pomnilnika (ROM), 8 kilobajtov EEPROM-a in 256 bajtov pomnilnika z naključnim dostopom (RAM).

Sistemska arhitektura na kartici Java je prikazana na naslednji sliki.

Kot je prikazano na sliki, je Java Card VM zgrajen na vrhu posebnega integriranega vezja (IC) in izvorne implementacije operacijskega sistema. Plast JVM skriva lastno tehnologijo proizvajalca s skupnim jezikovnim in sistemskim vmesnikom. Okvir Java Card definira nabor razredov vmesnikov za programiranje aplikacij (API) za razvoj aplikacij Java Card in za zagotavljanje sistemskih storitev tem programom. Določena industrija ali podjetje lahko dobavi dodatne knjižnice za zagotavljanje storitve ali za izboljšanje varnostnega in sistemskega modela. Pokličejo se aplikacije Java Card apleti. Na eni kartici je lahko nameščenih več programčkov. Vsak programček je enolično označen s svojim POMOČ (identifikator aplikacije), kot je opredeljeno v delu 5 ISO 7816.

Pomembno je upoštevati, katere pametne kartice so niso: Niso osebni računalniki. Imajo omejene pomnilniške vire in računalniško moč. Uporabniki ne bi smeli Java Card 2.0 razumeti kot preprosto odstranjeno različico JDK.

Življenjska doba kartice Java

Življenjska doba kartice Java se začne, ko se izvorni OS, Java Card VM, knjižnice razredov API in po želji apleti zažgejo v ROM. Imenuje se ta postopek zapisovanja stalnih komponent v nespremenljivi pomnilnik čipa za izvajanje dohodnih ukazov maskiranje.

Preden pristane v vaši denarnici, mora Java Card opraviti inicializacijo in personalizacijo. Inicializacija se nanaša na nalaganje splošnih podatkov v trajni pomnilnik kartice. Ti podatki so enaki na velikem številu kart in niso značilni za posameznika; primer je lahko ime izdajatelja ali proizvajalca.

Naslednji korak, personalizacija, vključuje dodelitev kartice osebi. Lahko se zgodi s fizično personalizacijo ali z elektronsko personalizacijo. Fizična personalizacija se nanaša na vtiskovanje ali lasersko gravuro vašega imena in številke kartice na plastični površini kartice. Elektronska personalizacija se nanaša na nalaganje osebnih podatkov v trajni pomnilnik kartice, na primer osebni ključ, ime in številko kode.

Inicializacija in personalizacija se razlikujeta od prodajalca do prodajalca in izdajatelja do izdajatelja. V obeh se EEPROM (vrsta trajnega pomnilnika) pogosto uporablja za shranjevanje podatkov.

Na tej točki je Java Card pripravljen za uporabo. Kartico Java lahko dobite pri izdajatelju ali jo kupite pri prodajalcu. Karte, ki jih prodaja prodajalec, so splošne namene, v tem primeru je personalizacija pogosto izpuščena.

Zdaj lahko svojo kartico Java vstavite v čitalnik in pošljete ukaze APDU programčkom, ki se nahajajo na kartici, ali na kartico prenesete več programčkov ali podatkov.

Kartica Java ostane aktivna, dokler je zaradi nepopravljive napake ne poteče ali blokira.

Življenjska doba navideznega stroja Java Card

Za razliko od navideznega stroja Java (JVM) v osebnem računalniku ali na delovni postaji, navidezni stroj Java Card deluje večno.

Večino podatkov, shranjenih na kartici, je treba ohraniti tudi, ko je napajanje odvzeto - torej ko je kartica odstranjena iz čitalnika. Java Card VM v EEPROM-u ustvari predmete za shranjevanje trajnih informacij. Življenjska doba izvrševanja Java Card VM je življenjska doba kartice. Ko napajanje ni zagotovljeno, VM deluje v neskončnem ciklu ure.

Življenjska doba programčkov in predmetov Java Card

Življenje programčka se začne, ko je pravilno nameščen in registriran v sistemski registrski tabeli, in se konča, ko je odstranjen iz tabele. Prostor odstranjenega programčka se lahko ponovno uporabi ali ne, odvisno od tega, ali je na kartici izvedeno zbiranje smeti. Applet na kartici je v neaktivni fazi, dokler ga terminal izrecno ne izbere.

Predmeti se ustvarijo v trajnem pomnilniku (na primer EEPROM). Lahko se jih izgubi ali zbere smeti, če se drugi trajni predmeti nanje ne sklicujejo. Vendar je tisočkrat počasneje zapisovati v EEPROM kot v RAM.

Do nekaterih predmetov se pogosto dostopa, vsebina njihovih polj pa ni potrebna. Java Card podpira prehodno (začasni) predmeti v RAM-u. Ko je objekt razglašen za prehoden, njegove vsebine ni mogoče premakniti nazaj v trajni pomnilnik.

Podmnožica jezika Java Card 2.0

Programi Java Card so seveda napisani v Javi. Zbrani so z običajnimi prevajalniki Java. Zaradi omejenih pomnilniških virov in računalniške moči Java Card ne podpira vseh jezikovnih lastnosti, opredeljenih v specifikaciji Java Java. Java Card natančno ne podpira:

  • Dinamično nalaganje razreda

  • Upravitelj varnosti

  • Niti in sinhronizacija

  • Kloniranje predmetov

  • Dokončanje

  • Veliki primitivni tipi podatkov (float, double, long in char)

Ni presenetljivo, da so v jeziku izpuščene tudi ključne besede, ki podpirajo te funkcije. Izvajalci VM se lahko odločijo, da bodo podprli 32-bitne celoštevilske ali izvorne metode za programčke po izdaji, če delajo na naprednejši pametni kartici z več pomnilnika. Apploti po izdaji so tisti programčki, ki so nameščeni na kartici Java po izdaji kartice imetniku kartice.

Okvir Java Card 2.0

Pametne kartice so na trgu že 20 let in večina jih je na splošno združljiva z ISO 7816 deli 1-7 in / ali EMV. Smo že pogledali ISO 7816. Kaj je EMV? Standard EMV, ki so ga opredelili Europay, MasterCard in Visa, temelji na seriji standardov ISO 7816 z dodatnimi lastniškimi lastnostmi, ki ustrezajo posebnim potrebam finančne industrije. Okvir Java Card je zasnovan tako, da enostavno podpira sisteme in programe pametnih kartic. Skriva podrobnosti o infrastrukturi pametnih kartic in razvijalcem aplikacij Java Card ponuja razmeroma enostaven in preprost programski vmesnik.

Okvir Java Card vsebuje štiri pakete:

Ime paketaOpis
javacard.frameworkTo je osnovni paket na kartici. Določa razrede, kot so in , ki so temeljni gradniki programov Java Card in , in , ki zagotavljajo izvajalne in sistemske storitve za programe Java Card, kot sta obdelava APDU in skupna raba predmetov
javacardx.framework Ta paket ponuja objektno usmerjeno zasnovo za datotečni sistem, združljiv z ISO 7816-4. Podpira osnovne datoteke (EF), namenske datoteke (DF) in datoteke usmerjene APDU-je, kot je določeno v ISO7816
javacardx.crypto in javacardx.cryptoEnc Ta dva paketa podpirata kriptografske funkcije, ki jih zahtevajo pametne kartice

Skladno s konvencijo o poimenovanju Java, Java Cardx paketi so razširitve ogrodja Java Card. Ni potrebno, da jih podprete na kartici.

Varnost Java kartice

Za aplete Java veljajo varnostne omejitve Java, vendar se varnostni model sistemov Java Card v marsičem razlikuje od standardne Jave.

Razred Security Manager ni podprt na kartici Java. Politike jezikovne varnosti izvaja navidezni stroj.

Java apleti ustvarjajo predmete, ki shranjujejo in manipulirajo s podatki. Objekt je v lasti programčka, ki ga ustvari. Čeprav se lahko programček sklicuje na objekt, se ne more sklicevati na metode predmeta, razen če je lastnik predmeta ali če je predmet izrecno v skupni rabi. Applet lahko deli kateri koli svoj predmet z določenim programčkom ali z vsemi programčki.

Applet je neodvisen subjekt znotraj kartice Java. Na njegovo izbiro, izvedbo in funkcionalnost ne vplivajo drugi programčki, ki se nahajajo na isti kartici.

Kako stvari delujejo znotraj kartice Java

Znotraj Java kartice se JCRE (Java Card Runtime Environment) nanaša na navidezni stroj Java Card in razrede v okolju Java Card. Vsak programček na kartici Java je povezan z edinstveno AID, ki jo dodeli JCRE.

Ko je programček pravilno naložen v trajni pomnilnik kartice in povezan z Java Card Framework in drugimi knjižnicami na kartici, JCRE pokliče način namestitve programčka kot zadnji korak v namestitvenem programu. Javna statična metoda, namestite, mora razviti programček, da ustvari primerek programčka in ga registrira v JCRE. Ker je pomnilnik omejen, je v tem trenutku dobra programska praksa ustvarjati in inicializirati predmete, ki jih bo programček potreboval v svoji življenjski dobi.

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