Razumijevanje Java kartice 2.0

Ovaj članak započinje pregledom pametnih kartica i kratkim pregledom ISO 7816, standarda pametnih kartica. S obzirom na pozadinu pametnih kartica u prethodnim stupcima Java Developer , ovaj će nastavak započeti odgovorom na pitanje "Što je Java kartica?" i pregled arhitekture sustava Java Card. Zatim ćemo se usredotočiti na mnoga pitanja specifična za Java karticu, uključujući životni ciklus Java kartice; podskup jezika Java Card 2.0 i klase API biblioteke; i sigurnost Java kartice. Zatim ćemo razgovarati o okruženju izvršavanja Java kartice i pokazati kako Java kartica radi. Završit ćemo sa svijetlim primjerom: aplikacija za elektronički novčanik napisana samo za Java karticu.

Odsad se sve reference na Java karticu implicitno odnose na Java karticu 2.0.

Što je pametna kartica?

Identična veličini kreditne kartice, pametna kartica pohranjuje i obrađuje informacije putem elektroničkih sklopova ugrađenih u silicij u plastičnu podlogu svog tijela. Dvije su osnovne vrste pametnih kartica: Inteligentna pametna kartica sadrži mikroprocesor i nudi mogućnost čitanja, pisanja i izračunavanja, poput malog mikroračunala. S druge strane, memorijska kartica nema mikroprocesor i namijenjena je samo pohrani podataka. Memorijska kartica koristi sigurnosnu logiku za kontrolu pristupa memoriji.

Sve pametne kartice sadrže tri vrste memorije: postojanu nepromjenjivu memoriju; postojano promjenjivo pamćenje; i nepostojano promjenjivo pamćenje. ROM, EEPROM i RAM najčešće su korištene memorije za tri odgovarajuće vrste na trenutnim pametnim karticama. Perzistentna memorija naziva se i nehlapljivom memorijom. U ovom ćemo članku naizmjenično koristiti izraze postojani i nepromjenjivi .

ISO 7816 dio 1-7, definiran od strane Međunarodne organizacije za standard, sadrži skup standarda koji pokriva različite aspekte pametnih kartica. ISO 7816 sastoji se od:

  • Fizičke karakteristike (1. dio)

  • Dimenzije i mjesto kontakata (2. dio)

  • Elektronički signali i protokoli za prijenos (3. dio)

  • Međuindustrijske naredbe za razmjenu (4. dio)

  • Identifikatori aplikacije (5. dio)

  • Međuindustrijski elementi podataka (6. dio)

  • Međuindustrijske naredbe za SCQL (7. dio)

Sljedeći dijagram ilustrira fizičke karakteristike pametne kartice koje su definirane u ISO 7816, dio 1.

Za više informacija o ISO 7816 i pametnim karticama pogledajte "Pametne kartice: temeljni premaz".

Pametna kartica obično ne sadrži napajanje, zaslon ili tipkovnicu. Komunicira s vanjskim svijetom pomoću serijskog komunikacijskog sučelja putem svojih osam kontaktnih točaka. Dimenzije i mjesto kontakata pokriveni su dijelom 2 ISO 7816. Ovaj dijagram prikazuje kontakte na pametnoj kartici.

Pametna kartica umetnuta je u uređaj za prihvaćanje kartica (CAD) koji se može povezati s drugim računalom. Ostali pojmovi koji se koriste za uređaj za prihvaćanje kartice su terminal , čitač i IFD (uređaj sučelja). Svi oni pružaju iste osnovne funkcije, naime napajanje kartice i uspostavljanje veze za prijenos podataka.

Kada dva računala međusobno komuniciraju, razmjenjuju podatkovne pakete koji se izrađuju prema skupu protokola. Slično tome, pametne kartice razgovaraju s vanjskim svijetom pomoću vlastitih podatkovnih paketa - nazvanih APDU (Application Protocol Data Units). APDU sadrži naredbu ili poruku odgovora. U svijetu karata koristi se model master-slave, pri čemu pametna kartica uvijek igra pasivnu ulogu. Drugim riječima, pametna kartica uvijek čeka naredbu APDU s terminala. Zatim izvršava radnju navedenu u APDU-u i na terminal odgovara odgovorom APDU. APDU-ovi za naredbe i APDU-i za razmjenu izmjenjuju se između kartice i terminala.

Sljedeće tablice ilustriraju formate APDU naredbi i odgovora. APDU struktura opisana je u ISO 7816, dio 4.

Zapovijedi APDU
Obavezno zaglavlje Uvjetno tijelo
CLA INS P1 P2 Lc Polje podataka Le

Zaglavlje kodira odabranu naredbu. Sastoji se od četiri polja: klase (CLA), uputa (INS) i parametara 1 i 2 (P1 i P2). Svako polje sadrži 1 bajt:

  • CLA: bajt klase. U mnogim pametnim karticama ovaj se bajt koristi za identificiranje aplikacije.

  • INS: Bajt upute. Ovaj bajt označava kôd upute.

  • P1-P2: bajtovi parametara. Oni pružaju daljnju kvalifikaciju naredbi APDU.

Lc označava broj bajtova u podatkovnom polju naredbe APDU; Le označava maksimalan broj bajtova koji se očekuje u polju podataka sljedećeg APDU odgovora.

Odgovor APDU
Uvjetno tijelo Obavezna prikolica
Polje podataka SW1 SW2

Statusni bajtovi SW1 i SW2 označavaju status obrade naredbe APDU na kartici.

Što je Java kartica?

Java kartica je pametna kartica koja može pokretati Java programe. Specifikacija Java Card 2.0 objavljena je na //www.javasoft.com/javacard. Sadrži detaljne informacije za izgradnju virtualnog stroja Java Card i sučelje za programiranje aplikacija (API) na pametnim karticama. Minimalni sistemski zahtjev je 16 kilobajta memorije samo za čitanje (ROM), 8 kilobajta EEPROM-a i 256 bajta memorije s slučajnim pristupom (RAM).

Arhitektura sustava na Java kartici prikazana je na sljedećoj slici.

Kao što je prikazano na slici, Java Card VM izgrađen je na vrhu specifičnog integriranog kruga (IC) i implementacije izvornog operativnog sustava. JVM sloj skriva proizvođačevu vlasničku tehnologiju s zajedničkim jezikom i sučeljem sustava. Okvir Java Card definira skup klasa sučelja aplikacijskog programiranja (API) za razvoj aplikacija Java Card i za pružanje sistemskih usluga tim aplikacijama. Određena industrija ili poduzeće može isporučiti dodatne knjižnice za pružanje usluge ili za pročišćavanje modela sigurnosti i sustava. Aplikacije Java kartice nazivaju se apleti . Na jednoj kartici može se nalaziti više apleta. Svaki je aplet identificiran jedinstveno svojim AID-om (identifikator aplikacije), kako je definirano u ISO 7816, dio 5.

Važno je imati na umu ono što pametne kartice nisu : one nisu osobno računalo. Imaju ograničene memorijske resurse i računarsku snagu. Korisnici ne bi trebali smatrati Java Card 2.0 jednostavnom, uklonjenom verzijom JDK.

Životni vijek Java kartice

Životni vijek Java kartice započinje kada se izvorni OS, Java Card VM, knjižnice API klasa i, po želji, apleti spale u ROM. Ovaj postupak upisivanja trajnih komponenata u nepromjenjivu memoriju čipa za izvršavanje dolaznih naredbi naziva se maskiranje .

Prije nego što stane u vaš novčanik, Java kartica mora proći kroz inicijalizaciju i personalizaciju. Inicijalizacija se odnosi na učitavanje općih podataka u trajnu memoriju kartice. Ti su podaci identični na velikom broju karata i nisu specifični za pojedinca; primjer može biti naziv izdavatelja ili proizvođača.

Sljedeći korak, personalizacija, uključuje dodjeljivanje kartice osobi. Može se dogoditi fizičkom personalizacijom ili elektroničkom personalizacijom. Fizička personalizacija odnosi se na utiskivanje ili lasersko graviranje vašeg imena i broja kartice na plastičnoj površini kartice. Elektronička personalizacija odnosi se na učitavanje osobnih podataka u trajnu memoriju kartice, na primjer, vaš osobni ključ, ime i broj pina.

Inicijalizacija i personalizacija razlikuju se od dobavljača do dobavljača i izdavatelja do izdavatelja. U obje se EEPROM (vrsta trajne memorije) često koristi za pohranu podataka.

U ovom je trenutku Java kartica spremna za upotrebu. Java karticu možete dobiti od izdavatelja ili kupiti od prodavača. Karte koje prodaje prodavatelj su opće namjene, a u tom slučaju personalizacija je često izostavljena.

Sada svoju Java karticu možete umetnuti u čitač i poslati APDU naredbe apletima koji se nalaze na kartici ili preuzeti više apleta ili podataka na karticu.

Java kartica ostaje aktivna dok ne istekne ili ne blokira zbog nepopravljive pogreške.

Životni vijek virtualnog stroja Java Card

Za razliku od Java virtualnog stroja (JVM) na računalu ili radnoj stanici, Java Card virtualni stroj radi zauvijek.

Većina podataka pohranjenih na kartici mora se sačuvati čak i kad se napajanje ukloni - odnosno kada se kartica izvadi iz čitača. Java Card VM stvara objekte u EEPROM-u za zadržavanje trajnih informacija. Životni vijek izvršavanja Java Card VM je vijek trajanja kartice. Kada napajanje nije osigurano, VM radi u beskonačnom ciklusu takta.

Životni vijek apleta i predmeta Java kartice

Životni vijek apleta započinje kada se pravilno instalira i registrira u tablici registra sustava, a završava kad se ukloni iz tablice. Prostor uklonjenog apleta može se, ali ne mora, ponovno upotrijebiti, ovisno o tome je li prikupljanje smeća implementirano na kartici. Aplet na kartici je u neaktivnoj fazi dok ga terminal izričito ne odabere.

Objekti se stvaraju u trajnoj memoriji (na primjer, EEPROM). Mogli bi se izgubiti ili sakupljati smeće ako ih drugi trajni predmeti ne upućuju. Međutim, tisuću puta je sporije pisati na EEPROM nego u RAM.

Nekim se objektima pristupa često, a sadržaj njihovih polja ne mora biti uporan. Java kartica podržava privremene (privremene) objekte u RAM-u. Jednom kada je objekt proglašen privremenim, njegov se sadržaj ne može vratiti natrag u trajnu memoriju.

Podskup jezika Java Card 2.0

Programi Java Card, naravno, napisani su na Javi. Kompajliraju se pomoću uobičajenih Java kompajlera. Zbog ograničenih memorijskih resursa i računarske snage, na Java kartici nisu podržane sve značajke jezika definirane u Specifikaciji jezika Java. Konkretno, Java kartica ne podržava:

  • Dinamičko učitavanje klase

  • Voditelj osiguranja

  • Niti i sinkronizacija

  • Kloniranje predmeta

  • Finalizacija

  • Veliki primitivni tipovi podataka (float, double, long i char)

Nije iznenađenje da su ključne riječi koje podržavaju te značajke također izostavljene iz jezika. Programeri VM-a mogu odlučiti podržati 32-bitni cijeli broj ili izvorne metode za aplete nakon izdavanja ako rade na naprednijoj pametnoj kartici s više memorije. Apleti nakon izdavanja su oni apleti koji se instaliraju na Java karticu nakon izdavanja kartice vlasniku kartice.

Okvir Java Card 2.0

Pametne kartice na tržištu su već 20 godina, a većina ih je uglavnom kompatibilna s ISO 7816 dijelovima 1-7 i / ili EMV. Već smo pogledali ISO 7816. Što je EMV? EMV standard, koji su definirali Europay, MasterCard i Visa, temelji se na seriji standarda ISO 7816 s dodatnim vlasničkim značajkama kako bi se udovoljilo specifičnim potrebama financijske industrije. Okvir Java Card osmišljen je tako da lako podržava sustave i programe pametnih kartica. Sakriva detalje infrastrukture pametnih kartica i pruža programerima aplikacija Java Card relativno lako i jednostavno programsko sučelje.

Okvir Java Card sadrži četiri paketa:

Naziv paketa Opis
javacard.okvir Ovo je osnovni paket na kartici. Definira klase kao što su i , koje su temeljni gradivni elementi za programe Java Card i , i koje pružaju runtime i sistemsku uslugu programima Java Card, poput APDU rukovanja i dijeljenja objekata
javacardx.okvir Ovaj paket nudi objektno orijentirani dizajn za datotečni sustav kompatibilan s ISO 7816-4. Podržava osnovne datoteke (EF), namjenske datoteke (DF) i APDU-ove usmjerene na datoteke kako je navedeno u ISO7816
javacardx.crypto i javacardx.cryptoEnc Ta dva paketa podržavaju kriptografsku funkcionalnost potrebnu za pametne kartice

U skladu s konvencijom imenovanja Java, Java Cardx paketi su proširenja okvira Java Card. Nije potrebno da ih podržavate na kartici.

Sigurnost Java kartice

Java apleti podliježu Java sigurnosnim ograničenjima, međutim, sigurnosni model sustava Java Card razlikuje se od standardne Java u mnogočemu.

Klasa Security Manager nije podržana na Java kartici. Politike jezične sigurnosti provodi virtualni stroj.

Java apleti stvaraju objekte koji pohranjuju podatke i njima upravljaju. Objekt je u vlasništvu apleta koji ga stvara. Iako aplet može imati referencu na objekt, ne može se pozivati ​​na metode objekta, osim ako je vlasnik objekta ili se objekt eksplicitno dijeli. Aplet može dijeliti bilo koji od svojih objekata s određenim apletom ili sa svim apletima.

Aplet je neovisna cjelina unutar Java kartice. Drugi programi koji se nalaze na istoj kartici ne utječu na njegov odabir, izvršenje i funkcionalnost.

Kako stvari funkcioniraju unutar Java kartice

Unutar Java kartice JCRE (Java Card Runtime Environment) odnosi se na virtualni stroj Java Card i klase u Java Card Framework-u. Svaki aplet unutar Java kartice povezan je s jedinstvenim AID-om koji je dodijelio JCRE.

Nakon što se aplet ispravno učita u trajnu memoriju kartice i poveže s Java Card Frameworkom i drugim knjižnicama na kartici, JCRE poziva metodu instaliranja apleta kao posljednji korak u procesu instalacije apleta. Javna statička metoda, installmora biti implementirana od strane klase apleta da bi stvorila instancu apleta i registrirala je u JCRE. Budući da je memorija ograničena, u ovom je trenutku dobra programska praksa stvarati i inicijalizirati objekte koji će aplet trebati tijekom svog života.