SVEUČILIŠTE U ZAGREBU
Andro Galinović
FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA 0036381850
Zavod za elektroniku, mikroelektroniku, računalne i inteligentne sustave Zagreb, rujan 2004.


SEMINARSKI RAD



Turistička pametna kartica

Mentor: Prof. dr. sc. Leo Budin



Sadržaj

1. Uvod

2. Pametne kartice

2.1 Što su pametne kartice?

2.2. Kako izgledaju pametne kartice?

2.2.1 Kontaktne pametne kartice

2.2.2. Bezkontaktne pametne kartice

2.3. Sigurnosni aspekti pametnih kartica

2.3.1. Sklopovski sigurnosni aspekti pametnih kartica

2.3.2. Programski sigurnosni aspekti pametnih kartica

3. Java pametne kartice

3.1. Java Card platforma

3.1.1 Java Card stogovni stroj

3.1.2 Java Card izvršna okolina

3.1.3 Java Card API

3.1.3.1. Paket : java.rmi

3.1.3.2. Paket : javacard.framework

3.1.3.3. Paket : javacard.framework.service

3.1.3.4. Paket : javacard.security

3.1.3.5. Paket : javacardx.crypo

4. Primjena turističke pametne kartice

5. Implementacija turističke pametne kartice

5.1. Terminal turističke pametne kartice

5.1.1 Java kriptografska proširenja

5.1.2 Pružatelji Java kriptografskih proširenja

5.2. Applet turističke pametne kartice - kartična aplikacija

5.2.1. Sučelje : Sucelje

5.2.2. Razred : AppletTPK

5.2.3. Razred : Implementacija

5.2.4. Razred : MojSecurityService

6. Zaključak

7. Literatura

Dodatak - Korištenje turističke pametne kartice

1. Prevođenje

1.1. Prevođenje appleta turističke pametne kartice

1.2. Prevođenje terminala turističke pametne kartice

2. Pokretanje

2.1. Pokretanje appleta turističke pametne kartice

2.2. Pokretanje terminala turističke pametne kartice

Kazalo pojmova i korištenih kratica

Upute za instalaciju i korištenje programa


1. Uvod

Turistička pametna kartica (dalje u tekstu TPK) je mikroprocesorska Java pametna kartica (engl. Java Smart Card) koja je zamišljena kao zamjena za ulaznice, karte, hotelske ključeve i sve druge stvari koje inače opterećuju turiste kada dođu na odmor. TPK omogućuje jednostavnu uptrebu i vrhunsku sigurnost. Princip upotrebe je jednostavan: kada turist dođe u hotel, na recepciji mu se uruči TPK u kojoj se nalazi program (Java Card Applet, dalje u tekstu applet) za identifikaciju na razini hotela i elektronički ključ za sobu. Pored već navedenih appleta, može se uprogramirati i čitav niz drugih appleta, kao na primjer ulaznice za tenis, stolni tenis, mini golf, bazen, tobogan, ski lift, muzeje, rezervacije karata za kino i kazalište te mnogi drugi. Sve transakcije se odvijaju prema strogo određenim pravilima uz upotrebu suvremenih kriptografskih algoritama kako bi se osigurala što veća razina sigurnosti.
U uvom seminarskom radu implementirana je TPK koja se sastoji od terminala koji se izvodi na računalu i Java Card appleta koji se izvodi na samoj pametnoj kartici. Implementirane funkcije pametne kartice su: provjera statusa ulaznica/karata, unos novih ulaznica/karata i poništavanje ulaznica/karata. Postoje ulaznice za bazen, tenis, mini golf, ski lift, tobogan i karte za muzej, kazalište i kino. Karte za kazalište i kino predstavljaju rezervacije koje su određene datumom, satom, minutom, šifrom kazališta/kina i rezerviranim sjedalima. Sve ostale ulaznice i karte se pamte kao broj kupljenih ulaznica/karata koje se mogu bilo kada iskoristiti.
Površno se opisuje sama pametna kartica, ali opširno i detaljno sama implementacija TPK i alati potrebni za njenu implementaciju.


2. Pametne kartice

2.1 Što su pametne kartice?

Pametne kartice su plastične kartice koje imaju ugrađeni silikonski čip. Prve pametne kartice su se pojavile 1984. u Francuskoj, deset godina nakon što je ideja patentirana. Slika 2.1. prikazuje osnovnu podjelu kartica.


Slika 2.1. Osnovna podijela kartica s tipičnim predstavnicima


Od njihova početka, pametne kartice se koriste u mnoge svrhe kao što su: telefonske čip kartice, GSM SIM kartice, kartice za skladištenje podataka itd... Pametne kartice dijelimo na memorijske i mikroprocesorske.
Memorijske kartice susrećemo svakodnevno u obliku telefonskih čip kartica, GSM SIM kartica u današnjim mobilnim telefonima ili kartica u raznim MP3 player-ima i digitanim fotoaparatima.
Pametne kartice s mikroprocersorom su danas vrlo rijetke i skupe, ali i najmoćnije te će biti predmet daljnjeg razmatranja.
Pametne kartice su malo računalo bez ulazno izlaznih naprava. Imaju mikroprocesor, ponekad kriptografski koprocesor, trajnu memoriju (ROM - engl. Read Only Memory), izbrisljivu memoriju (EEPROM - engl. Electronically Erasable Programmable ROM) koja preuzima funkciju tvrdog diska, radnu memoriju (RAM - engl. Random Access Memory) i standarnizirano sučelje za komunikaciju s vanjskim svijetom. Mikroprocesorske pametne kartice se danas najviše koriste u bankarstvu, npr. American Blue kartica (slika 2.4.).


2.2. Kako izgledaju pametne kartice?

Pametne kartice najčešće dolaze u tri fomata : ID-0 (85.6mm x 54mm x 0.76mm), ID-00 (66mm x 33mm x 0.76mm ) i ID-000 (25mm x 15 mm x 0.76mm). ID-0 (slika 2.5.) je format kreditnih kartica a ID-000 je format GSM SIM kartica. Format ID-0 je najčešći te ga, osim kod kreditnih kartica (slika 2.4.), susrećemo kod osobnih iskaznica (slika 2.6.).

2.2.1 Kontaktne pametne kartice

Kontaktne pametne kartice komuniciraju s okolinom putem fizičkog komunikacijskog sučelja koje čini 8-pinski metalni kontakt prema ISO 7816-2 standardu (slika 2.2.).


Slika 2.2. Metalni kontakt pametnih kartica

Kontakti i raspored su prikazani na slici 2.3.




Slika 2.3. Raspored 8-pinskog kontakta pametnih kartica

Kontakti su sljedeći



Kontaktne pametne kartice:




Slika 2.4.
American Express “Blue Card”
Slika 2.5.
Prazna pametna kartica
Slika 2.6.
Osobna iskazinica iz Hong-Konga


Pristup kontaktnim pametnim karticama se ostvaruje uređajem za prihvat kartica (engl. card acceptance device – CAD). Primjer jednog takvog uređaja je čitač pametnih kartica (slika 2.7.).



Slika 2.7. Čitač pametnih kartica


2.2.2. Bezkontaktne pametne kartice

Bezkontaktne pametne kartice nemaju kontakt već imaju skrivenu antenu pomoću koje komuniciraju s okolinom (slika 2.8.). Napajanje je ostvareno pomoću baterije ugrađene u karticu ili se elektromagnetskom indukcijom u anteni inducira sav potreban napon za njezin rad. Podaci se do CAD uređaja prenose elektromagnetskim valovima.
Bezkontaktne pametne kartice su osjetljivije na torzije i savijanja od kontaktnih. Također postoji potencijalna opasnost da se bez znanja vlasnika presretnu podaci ili izvedu neke kartične transakcije.



Slika 2.8. Troslojna građa bezkontaktne pametne kartice

2.3. Sigurnosni aspekti pametnih kartica

2.3.1. Sklopovski sigurnosni aspekti pametnih kartica

Sklopovi pametnih kartica nikad se ne proizvode od standardnih ćelija i često posjeduju lažne strukture čija je jedina svrha zbunjivanje potencijalnog napadača. Sabirnice unutar pametne kartice koje povezuju procesor, ROM, EEPROM i RAM su interne sabirnice, što znači da nikad ne izlaze iz čipa. Time je onemogućeno direktno priključivanje na linije sabirnice. Kako bi se spriječilo bezkontaktno prisluškivanje ili interakcija s podacima na sabirnici, promet preko sabirnica često se kriptira.
Kako je sadržaj ROM-a čitljiv bit po bit uz pomoć optičkog mikroskopa, u pametnim karticama se koristi specijalni ionski usađen ROM čiji se sadržaj ne može pročitati niti uz pomoć ultraljubičaste svjetlosti.
Informacije sakupljene analizom električnog potencijala aktivnog čipa moguće
je iskoristiti u svrhu izvođenja zaključaka o trenutnom sadržaju RAM-a. Smještanjem vodljivih metalnih slojeva iznad memorijskih ćelija postiže se da, ukoliko se ti slojevi uklone (npr. kemijskim urezivanjem), čip postaje neupotrebljiv. Osim toga prati se njihov električni otpor tako da čip automatski prestaje s radom ako dođe do oštećenja zaštitnog sloja. Ispod zaštitnih slojeva nalaze se i fototranzistori koji dodatno detektiraju njihovo uklanjanje.
Postoji mogućnost čitanja RAM ćelija bez napajanja, ali to zahtjeva prethodno hlađenje ćelija na temperaturu ispod –60°C što uzrokuje da sadržaj RAM ćelija ostaje trajan. Stoga se tajni ključevi ne bi smjeli nepotrebno držati u RAM-u. Nakon njihovog pohranjivanja u RAM-u treba slijediti brisanje ili prepisivanje memorije novim vrijednostima.
U pametnim karticama slijed memorijskih lokacija RAM-a nikada nije linearan kao u ostalim računalnim sustavima. Fizički bliske memorijske ćelije predstavljaju logički neslijedne lokacije. Zbog toga nije dovoljno znati sam sadržaj ćelija već je potrebno znanje i o načinu adresiranja. Način adresiranja može biti unaprijed određen i strogo tajan ili pak programski riješen i dinamičan.
Pametne kartice nadziru naponsku razinu kako bi onemogućili DFA (engl. Differential Fault Analysis) napade, frekvenciju radnog takta koja je dovedena izvana kako bi se onemogućilo drastično usporavanje rada kartice čime pračenje internih promijena postaje jednostavnije. Kako bi se onemogućili DPA napadi (engl. Differential Power Analysis) pametne kartice potrošnju elektirične energije reguliraju i održavaju stalnom.


2.3.2. Programski sigurnosni aspekti pametnih kartica

S programske strane, pametne kartice također se odlikuju zavidnom razinom sigurnosti. Kao što je opisano u prošlom odlomku, vrlo je teško iz pametne kartice “izvući” korisne informacije, što odmah upućuje na mogućnost prisluškivanja informacija koje kartica prima ili odašilje. Dok su gore navedene sklopovske zaštite implementirane u tvornici i ne mogu se isključiti, programska zaštita najviše ovisi o programeru koji implementira kartične aplikacije. Kao što je već navedeno, mikroprocesorske pametne kartice dijelimo na one s kripto koprocesorom i one bez kripto koprocesora. Kripto koprocesor je sklopovska podrška kriptiranju. Neke pametne kartice podržavaju samo simetrične kripto-algoritme (najčešće DES), bolje kartice podržavaju još i asimetrične (najčešće RSA), a najbolje još i funkcije za izračunavanje sažetka (engl. Digest ili engl. Hash). Ovisno o vrsti kartice postoji standarnizirano programsko sučelje koje omogućuje iskorištavanje implementiranih kripto algoritama. Pametne kartice koje nemaju kripto koprocesor zahtjevaju od programera, koji želi stvoriti sigurni komunikacijski kanal, samostalno programsko implementiranje potrebnih algoritama ili nabavu nekih drugih implementacija. Radi velike ograničenosti memorijskog prostora na pametnim karticama (tipično 32 KiB ROM-a, 16 KiB EEPROM-a i 1 KiB RAM-a), često se ne implementiraju svi potrebni algoritmi čime čitava “besprijekorna” sigurnost pametnih kartica pada u vodu. Zbog toga se, za bilo kakvu ozbiljniju primjenu, pametne kartice bez kripto koprocesora ne upotrebljavaju.

3. Java pametne kartice

Rastom tržišta pametnih kartica postalo je potrebno “brzo” i “jednostavno” razvijati kartične aplikacije koje bi trebale biti u “duhu” pametnih kartica – sigurne. Jedna tehnologija se nametala kao vrlo pogodna, Java! Java programi se prevode iz izvornog kôda u sklopovski neovisan međukôd, Java Byte kôd. Java Byte kôd se izvodi u virtualnom stogovnom stroju (engl. Java Virtual Machine - JVM). Ideja je bila odrediti podskup Java jezika koji bi se mogao izvršavati na samoj pametnoj kartici. Taj podskup je definiran Java Card platformom.


3.1. Java Card platforma

Java Card platforma sastoji se od tri dijela:

  1. Java Card Virtual Machine (JCVM) - definira podskup programskog jezika Jave i definiciju stogovnog stroja,

  2. Java Card Runtime Enviroment (JCRE) - opisuje Java Card izvršnu okolinu, upravljanje memorijom, appletom i druge izvršne osobine,

  3. Java Card Application Programming Interface (API) - opisuje jezgru i Java pakete i klase potrebne za programiranje kartičnih aplikacija.

Slika 3.1. prikazuje osnovnu hijerarhiju Java Card platforme.


Slika 3.1. Osnovna struktura Java Card platforme



3.1.1 Java Card stogovni stroj

Java Card stogovni stroj podijeljen je na dva dijela:

JCVM definira podskup Java programskog jezika po broju i složenosti paketa i po broju podržanih primitivnih tipova (engl. value type) podataka. Nepodržane osobine Jave su:



3.1.2 Java Card izvršna okolina

Jedno od najznačajnijih obilježja Java Card izvršne okoline je da omogućuje neovisnost kartične aplikacije od operacijskog sustava pametne kartice. Sve što je bitno programeru kartične aplikacije je da postoji JCRE koji sadrži JCVM koji će izvoditi njegov applet i preko kojega se uz pomoć dobro definiranog programskog sučelja (API) pristupa sredstvima pametne kartice.



3.1.3 Java Card API

Java Card programsko sučelje definira standarnizirano sučelje za programiranje appleta. Sučelje se sastoji od osnovnih (engl. Core) i dodatnih (engl. Extension)API paketa (engl. Packages). Java Card API inačica 2.2.1 definira pakete navedene u tablici 3.1. i tablici 3.2.

Osnovni paketi

Ime paketa

Opis paketa

java.io

Podskup java.io paketa iz standardnog Java programskog jezika.

java.lang

Pruža razrede koji su osnovni za dizajn Java Card podskupa Java programskog jezika.

java.rmi

java.rmi paket definira Remote sučelje koje identificira sučelja čije se metode mogu pozvati sa CAD baziranih klijentskih aplikacija.

javacard.framework

Pruža osnovni skup razreda i sučelja potrebnih za izgradnju, komunikaciju i rad s Java Card appletima.

javacard.framework.service

Pruža osnovni skup razreda i sučelja servisa koji omogućuju Java Card appletima da budu napravljeni kao skup usluga.

javacard.security

Pruža razrede i sučelja koja sadrže javno dostupnu funkcionalnost potrebnu za implementaciju osnovnog skupa sigurnosnih i kriptografskih alata za Java Card platformu.

Tablica 3.1. Osnovni paketi


Standardna proširenja

Ime paketa

Opis paketa

javacardx.crypto

Dodatni paket koji sadži funkcionalnost (koja može biti podložna pravilima izvoza) potrebnu za implementaciju osnovnog skupa sigurnosnih i kriptografskih alata za Java Card platformu.

Tablica 3.2. Standardna proširenja

3.1.3.1. Paket : java.rmi

java.rmi paket definira Remote sučelje koje identificira sučelja čije se metode mogu pozvati sa CAD baziranih klijentskih aplikacija. Ono je osnova za izgradnju sučelja Sucelje (vidi 5.2.1). Također definira iznimku RemoteException koja može biti postavljena da ukazuje na iznimku nastalu prilikom izvođenja udaljene metode (engl. remote method).


Sučelja

Ime sučelja

Opis sučelja

Remote

Sučelje Remote služi za identifikaciju sučelja čije metode se mogu pozvati sa CAD baziranih klijentskih aplikacija.

Tablica 3.3. Sučelja java.rmi paketa



Iznimke

Ime iznimke

Opis iznimke

RemoteException

JCRE baca svoj primjerak RemoteException iznimke da indicira nastalu iznimku, vezanu uz samu komunikaciju, za vrijeme izvođenja udaljene metode.

Tablica 3.4. Iznimke java.rmi paketa



3.1.3.2. Paket : javacard.framework

Pruža osnovni skup razreda i sučelja potrebnih za izgradnju, komunikaciju i rad s Java Card appletima. Ovaj skup razreda i sučelja pruža minimalnu potrebnu funkcionalnost potrebnu Java Card okruženju. Dodatna funkcionalnost je moguća dodavanjem dodatnog skupa razreda i sučelja.

Najvažniji razredi, sučelja i iznimke ovog paketa prikazani su u tablicama 3.5., 3.6., 3.7.

Najvažnija sučelja

Ime sučelja

Opis sučelja

ISO7816

Sadrži bitne konstante za rad s ulaznim i izlaznim podacima.

MultiSelectable

Sadrži metode koje podržavaju napredne tehnike programiranja s logičkim kanalima.

Shareable

Sadrži mehanizam koji omogućuje objektima, koji implementiraju ovo sučelje, da budu dijeljeni preko applet vatrozida ( eng. applet firewall).

Tablica 3.5. Najvažnija sučelja javacard.framework paketa

Najvažniji razredi

Ime razreda

Opis razreda

AID

Uključuje identifikator aplikacije (eng. Application Identifier - AID) povezanog s appletom. AID je definiran u ISO 7816-5 kao niz veličine od 5 do 16 okteta. JCRE stvara primjerak AID razreda, kako bi identificirao i upravljao svim appletima na kartici. Appleti nemaju potrebu stvaranja primjerka ovog razreda, ali mogu zatražiti i koristiti JCRE-ov primjerak ovog razreda kako bi identificirali sebe ili bilo koji drugi primjerak appleta. JCRE-ovi primjerci AID-a su stalni ulazni objekti JCRE-a (engl. permanent Java Card runtime environment Entry Point Objects) i može im se pristupiti iz bilo kojeg appleta. Kako su ti objekti stalni, reference na ove objekte moguće je spremiti i bilo kada kasnije koristiti. Primjerak appleta može dobiti referencu na JCRE-ov primjerak njegovog AID-a pomoću javacard.framework.JCSystem.getAID() metode, a AID drugog appleta pomoću javacard.framework.JCSystem.lookupAID() metode.

APDU

Pruža metode za kontrolu kartičnog ulaza i izlaza. Ovaj razred sadrži mnoge često korištene metode u MojSecurityService razredu (vidi 5.2.4). Detaljan opis dan je u tablici 3.8.

Applet

Osnovni razred za sve Java Card appleta (vidi 5.2.2)

JCSystem

Pruža metode za kontrolu funkcija sustava kao što su upravitelj transakcijama (engl. transaction management), privremeni objekti (engl. transient objects), mehanizam brisanja objekata (engl. object deletion mechanism), upravitelj sredstvima (engl. resource management) i među-appletno dijeljenje objekata.

Util

Pruža metode za rad s poljima.

Tablica 3.6. Najvažniji razredi javacard.framework paketa

Najvažnije iznimke

Ime iznimke

Opis iznimke

CardException, CardRuntimeException

Pružaju funkcionalnost sličnu onoj koju pružaju ekvivalentne iznimke u java.lang paketu u standardnom Java programskom jeziku, ali specijalizirane su za rad u kartičnom okruženju.

Tablica 3.7. Najvažnije iznimke javacard.framework paketa

Češće korištene metode

Povratna vrijednost

Ime i opis metode

byte[]

getBuffer()
D
ohvaća JCRE-ov APDU međuspremnik.

short

receiveBytes(short bOff)
Dohvaća što je moguće više okteta, a da ne nastane preljev ADPU međuspremnika, na odmak
bOff.

void

sendBytes(short bOff, short len)
Šalje još
len okteta iz APDU međuspremnika sa odmaka bOff.

void

sendBytesLong(byte[] outData, short bOff, short len)
Šalje još
len okteta iz niza okteta outData počevši od lokacije bOff.

short

setIncomingAndReceive()
Ovo je osnovna metoda za primanje. Pozivanjem ove metode ukazuje se da APDU ima dolaznih podataka. Dohvaća što je moguće više okteta, a da ne nastane preljev ADPU međuspremnika, nakon zaglavlja. Dohvaća sve dolazne oktete ako stanu.

short

setOutgoing()
Ova metoda se koristi da se smjer toka podataka prebaci prema van i dobije očekivana duljina APDU odovora određena Le poljem u zaglavlju APDU naredbe.

void

setOutgoingAndSend(short bOff, short len)
Ova metoda je kombinacija nekoliko drugih, tj. ona poziva setOutgoing(), setOutgoingLengt(len) i sendBytes(bOff, len).

void

setOutgoingLength(short len)
Postavlja stvarnu veličinu APDU odgovora.

Tablica 3.8. Češće korištene metode javacard.framework.APDU razreda

3.1.3.3. Paket : javacard.framework.service

Paket pruža osnovni skup razreda i sučelja servisa koji omogućuju Java Card appletima da budu napravljeni kao skup servisa. Paket sadrži agregatorski razred (engl. aggregator class) zvan Dispatcher koji sadrži metode za dodavanje servisa u svoj registar servisa, odašiljanje APDU naredbi registriranim servisima i metode za uklanjanje servisa iz registra.
Paket sadrži i sučelje Service koje definira metode za odradu APDU naredbi i omogućuje odašiljatelju da bude svjestan više mogućih servisa. Podsučelja omogućuju implementaciju servisa s dodatnom funkcionalnošću, kao što su:

Razred BasicService pruža osnovne funkcionalnosti servisa kao i inicijalnu implementaciju metoda definiranih u Service sučelju.

Razredi CardRemoteObject i RMIService omogućuju klijentskom programu da poziva i izvršava metode na kartici. Ove klase sadrže minimalnu potrebnu funkcionalnost da implementiraju RMI (engl. Remote Method Invocation) za Java Card platformu.

3.1.3.4. Paket : javacard.security

Pruža razrede i sučelja koja sadrže javno dostupnu funkcionalnost potrebnu za implementaciju osnovnog skupa sigurnosnih i kriptografskih alata za Java Card platformu. Razredi u paketu javacard.security pružaju definiciju algoritama koji vrše sigurnosne i kriptografske funkcije kao što su:

3.1.3.5. Paket : javacardx.crypo

Dodatni paket koji sadrži funkcionalnost, koja može biti podložna pravilima izvoza, potrebnu za implementaciju osnovnog skupa sigurnosnih i kriptografskih alata za Java Card platformu. Razredi koji sadrže sigurnosnu i kriptografsku funkcionalnost, a nisu podložni pravilima izvoza nalaze se u paketu javacard.security. Paket javacardx.crypto sadrži razred Cipher i sučelje KeyEncryption. Razred Cipher pruža metode za kriptiranje i dekriptiranje poruka.

Sučelja

Ime sučelja

Opis sučelja

KeyEncryption

Sučelje KeyEncryption definira metode koje se koriste pri rukovanju kriptiranim ključevima.

Tablica 3.9. Sučelja javacardx.crypto paketa

Razredi

Ime razreda

Opis razreda

Cipher

Razred Cipher je osnovi apstraktni razred za sve kriptografske algoritme. Njega implementira pružatelj Java kriptografskih proširenja.

Tablica 3.10. Razredi javacardx.crypto paketa

4. Primjena turističke pametne kartice



TPK je zamišljena kao zamjena za ulaznice i karte. TPK ne traži od krajnjeg korisnika nikakvo informatičko znanje, a od pružatelja turističkih usluga samo elementarno znanje rada s računalom u grafičkom korisničkom sučelju. Uz pomoć TPK turist ima na jednom mjestu sve što mu je potrebno za njegov turistički doživljaj. Uz pomoć džepnog čitača pametnih kartica turist može u svakom trenutku saznati koje sve karte/ulaznice ima na raspolaganju. Ukoliko pružatelj ne može/ne želi svojim gostima davati džepne čitače uvjek postoji mogućnost postavljanja nekoliko računalnih terminala, npr. u predvorje hotela, preko kojih će gosti moći doći to traženih informacija.




5. Implementacija turističke pametne kartice



Implementacija TPK se sastoji od Java aplikacije koja se izvršava unutar JVM-a na računalu koju nazivamo “Terminal turističke pametne kartice” (dalje u tekstu T-TPK) i Java Card appleta koji se izvodi na JCVM-u koje nazivamo “Applet turističke pametne kartice” (dalje u tekstu A-TPK).


5.1. Terminal turističke pametne kartice

Terminal TPK je GUI aplikacija pisana u programskom jeziku Java što je čini vrlo prenosivom. T-TPK će raditi na svakom operacijskom sustavu koji ima instaliran JVM koji podržava Java kriptografska proširenja (engl. JavaTM Cryptography Extension - JCE) i ima registrirane “The Legion Of The Bouncy Castle” (http://www.bouncycastle.org) kripto pakete koji implementiraju JCE.

5.1.1 Java kriptografska proširenja

JCE je podložan izvoznim pravilima SAD-a (Sjedinjene Američke Države). U Javi 1.4 postoji “jaka” ali ograničena kriptografska podrška koja, za razliku od prošlih verzija Jave, ima dinamičku politiku. Dinamička politika znači da više nema nekoliko izdanja Jave ovisno o mjestu prebivališta već jedna jedinstvena, koja ovisno o “java.policy” datoteci, pruža više ili manje kriptografskih algoritama. Kako bi se mogli koristiti svi kriptografski algoritmi koji su navedeni u Java specifikaciji ( vidi [2] ), potrebno je s http://java.sun.com/products/jce/index-14.html skinuti “policy” datoteke s neograničenom jačinom (engl. unlimited strength). Prema Java specifikaciji postoji samo niz apstraktnih razreda (engl. abstract class) i sučelja (engl. interface) koji omogućuju rad s kriptografskim algoritmima, ali ne i samu implementaciju. Implementacija kriptografskih algoritama prepuštena je drugim tzv. “pružateljima Java kriptografskih proširenja” (engl. JavaTM Cryptography Extension Provider – JCE Provider). Termin “JCE Provider” koristi se i kao ime niza paketa koji implementiraju JCE.


5.1.2 Pružatelji Java kriptografskih proširenja

Postoje mnogi pružatelji JCE-a. Između ostalog i sama tvrtka Sun. Sun s Javom daje svoj JCE Provider – SunJCE. SunJCE je besplatan i dolazi inicijalno s Javom 2 SDK inačica 1.4, ali podržava relativno malo kripto algoritama. Zato se u T-TPK koristi jedan drugi besplatan JCE Provider - “The Legion Of The Bouncy Castle” koji pruža sve potrebno za implementaciju sigurne komunikacije.



5.2. Applet turističke pametne kartice - kartična aplikacija

A-TPK je Java Card applet koji se instalira u EEPROM pametne kartice gdje ostaje dok ga se eksplicitno ne izbriše. Svaki applet ima svoj vlastiti AID (engl. Application IDentifier) prema kojem ga razlikujemo od ostali instaliranih appleta.

AID A-TPK je : 0xa0 0x00 0x00 0x00 0x62 0x03 0x01 0x0c 0x08 0x01. Applet omogućuje tri osnovne operacije :

          1. provjera statusa željenih ulaznica ili karata,

          2. unos novi ulaznica/karata,

          3. poništavanje prethodno unesenih ulaznica/karata.

TPK je poslužiteljsko-klijentski orijentiran sustav. Terminal TPK preuzima ulogu poslužitelja, tj. počinje i završava sve transakcije. Applet preuzima ulogu klijenta koji pozorno sluša i izvršava zahtjeve terminala. Komunikacija između terminala i appleta odvija se preko APDU (engl. Application Protocol Data Unit) paketa prema ISO/IEC 7816-4 standardu. Sama implementacija Appleta TPK je smještena u paket TuristickaPametnaKartica. Paket TuristickaPametnaKartica sastoji se od sljedećih komponenata:



Paket TuristickaPametnaKartica

Sučelja

Ime sučelja

Opis sučelja

Sucelje

Zajedničko sučelje za terminal i applet koje definira niz konstanti i tri osnovne metode za rad s appletom.

Tablica 5.1. Sučelja paketa TuristickaPametnaKartica

Razredi

Ime razreda

Opis razreda

AppletTPK

Osnovni razred u kojem se stvara primjerak sigurnosnog servisa za pristup appletu, primjerak same implementacije funkcionalnosti appleta TPK, primjerak razreda za udaljeni pristup kartičnim metodama (RMI) te registrira i instalira sam applet.

Implementacija

Implementacija udaljenih metoda TPK.

MojSecurityService

Servis koji pruža provjeru konzistentonsti, tajnost, neporecivost i integritet podataka.

Tablica 5.2. Razredi paketa TuristickaPametnaKartica



5.2.1. Sučelje : Sucelje

Sučelje Sucelje je osnovo sučelje (engl. interface) koje se koristi u terminalu i appletu. Ono definira osnovni skup konstanti koje su potrebne za normalan rad TPK i međusobno razumijevanja terminala i aplikacije. Sucelje proširuje java.rmi.Remote sučelje, a implementira ga razred Implementacija. Definira metode opisane u tablici 5.3.


Metode definirane u sučelju Sucelje

Prototip metode

Opis metode

public byte[] provjeriStatus(byte CLA)
throws
javacard.framework.ISOException, java.rmi.RemoteException, javacard.framework.UserException
Univerzalna metoda za provjeru statusa ulaznica/karata
public void ponisti(byte[]niz, byte CLA)
throws
javacard.framework.ISOException, java.rmi.RemoteException, javacard.framework.UserException
Univerzalna metoda za poništavanje ulaznica/karata
public void unesi(byte[]niz, byte CLA)
throws
javacard.framework.ISOException, java.rmi.RemoteException, javacard.framework.UserException
Univerzalna metoda za unos novih ulaznica/karata

Tablica 5.3. Metode definirane u sučelju Sucelje



5.2.2. Razred : AppletTPK

Razred AppletTPK je osnovni applet razred u kojem se stvara primjerak (engl. instance) sigurnosnog servisa za pristup appletu, primjerak same implementacije funkcionalnosti appleta TPK, primjerak razreda za udaljeni pristup kartičnim metodama (RMI) te registrira i instalira sam applet. AppletTPK je središnji objekt kartične aplikacije. U samom razredu nije definiran AID, već je definiran u posebnoj datoteci namjenjenoj converter programu koji prevodi Java class datoteke u export datoteku (*.exp), CAP (engl. Converted APplet) datoteku (*.cap) i Java Card Assembly datoteku (*.jca). CAP datoteka je u JAR formatu i sadrži pokretljivu binarnu reprezentaciju Java class datoteka Java paketa. CAP datoteka također sadrži proglasnu (engl. manifest) datoteku koja pruža ljudski čitljivu informaciju o sadržaju paketa. Sadržaj Java Card Assembly datoteka je namjenjen kao pomoć programerima pri boljem razumijevanju Java Card strojnog jezika i kao vodič pri razumijevanju ispisa converter programa. Hijerarhija nasljeđivanja kojom je nastao razred AppletTPK je prikazana slikom 5.1.


java.lang.Object
|
+--javacard.framework.Applet
|
+--TuristickaPametnaKartica.AppletTPK

Slika 5.1. Hijerarhija nasljeđivanja


Razred AppletTPK nasljeđuje (engl. inherit) razred javacard.framework.Applet. Ovaj razred je apstraktan razred kojeg definira Java Card applet (engl. Java Card technology-based applet). Svaki applet koji se namjerava staviti, instalirati i pokrenuti na Java Card kompatibilnojpametnoj kartici (engl. Java Card technology-compliant smart card ) mora proširiti razred Applet. Razred Applet definira jednu metodu (public abstract void process(APDUapdu)) i implementira sedam od kojih je jedna statička. Metode su objašnjene u tablici 5.4.

Metode razreda Applet

Povratna vrijednost

Ime i opis metode

void

Deselect()
Poziva ju JCRE da obavjesti trenutno odabrani (engl. select) applet o njegovom otpuštanju (engl. deselect) na ovom logičkom kanalu i da niti jedan applet iz istog paketa nije aktivan ni na jednom drugom logičkom kanalu.

Shareable

getShareableInterfaceObject(AID clientAID, byte parameter)
Poziva ju JCRE da dobije djeljivo sučelje (engl. shareable interface) objekta od poslužitelja na zahtjev klijenta .

static void

install(byte[] bArray, short bOffset, byte bLength)
Statička metoda koju poziva JCRE kako bi prvo stvorio primjerak Applet podrazreda.

abstract void

process(APDU apdu)
Metoda koja se mora naknadno implementirati i koju zove JCRE kako bi obradila dolaznu APDU naredbu.

protected void

register();

register(byte[] bArray, short bOffset, byte bLength)
Ovu metodu koristi applet kako bi registrirao svoj primjerak (this) s JCRE-om i dodjelio ime Java Card platforme kao svoj primjerak AID okteta.

boolean

select()
Poziva je JCRE da obavjesti applet da je bila odabrana za izvođenje u vrijeme kad niti jedan applet iz istog paketa nije bio aktivan ni na jednom drugom logičkom kanalu.

protected boolean

selectingApplet()
Ovu metodu koristi metoda process() kako bi razlikovala SELECT APDU naredbu koja ju je odabrala od svih drugih istih naredbi koje bi se mogle odnositi na datoteku ili interno stanje applet odabiranja.

Tablica 5.4. Metode razreda Applet


U razredu AppletTPK postoji konstruktor :


Konstruktor

AppletTPK()
Konstruktor AppletTPK-a koji stvara primjerak razreda TuristickaPametnaKartica.MojSecurityService, koji se brine za sigurnost i dosljednost podataka, primjerak same implementacije TPK, primjerak RMI servisa za pristup novo stvorenom objektu implementacije TPK, te se specificira primjerak sigurnosnog servisa koji se koristi za predprocesiranje, procesiranje i postprocesiranje, dok se RMI servis koristi samo za procesiranje i to tek nakon sigurnosnog servisa.


Definirane su sljedeće metode:


Metode AppletTPK razredu.

Prototip metode

Opis metode

public static void install(byte[] bArray, short bOffset, byte bLength)
Metoda koju zove JCRE pri instalaciji appleta na karticu. Ona jednostavno stavara novi primjerak AppletTPK-a.
public void process(javacard.framework.APDU apdu)
throws
javacard.framework.ISOException
Metoda koju zove JCRE da procesira dolazeću APDU naredbu. On jednostavno prepušta procesiranje primjerku javacard.framework.service.Dispatcher razreda.

Tablica 5.5. Metode AppletTPK razreda



5.2.3. Razred : Implementacija

Razred Implementacija je kao što mu ime govori implementacija svih funkcija koje TPK pruža. Funkcije su: provjera statusa ulaznica/karata, unos novih ulaznica/karata i poništavanje ulaznica/karata. Metode koje implementiraju ove funkcije prvo provjere da li je korisnik autoriziran za traženu funkciju, ako ne, izazovu sljedeću iznimku: javacard.framework.UserException s navedenim razlogom: ZAHTJEV_ODBIJEN. Provjera da li je korisnik autoriziran za određenu funkciju se vrši na temelju primljenog PIN-a. TPK razlikuje dva PIN-a, korisnički PIN i PIN izdavača kartice. Korisnički PIN omogućuje pregledavanje sadržaja TPK, dok PIN izdavača omogućuje pregledavanje, unos i brisanje podataka. U slučaju da je digitalni potpis poslanih kriptiranih podataka ili zaštitna suma neispravna, izaziva se ista iznimka, ali se kao razlog navodi KORUPTIRANI_PODACI.

ZAHTJEV_ODBIJEN i KORUPTIRANI_PODACI su konstante definirane u sučelju TuristickaPametnaKartica.Sucelje.



5.2.4. Razred : MojSecurityService

Razred MojSecurityService nasljeđuje razred javacard.framework.service.BasicService te implementira (engl. implements) sučelje javacard.framework.service.SecurityService. Ovaj razred predstavlja servis koji pruža provjeru dosljednost, tajnost, neporecivost i integritet podataka.

Dosljednost podataka je postignuta s jednostavnom 16-bitnom zaštitnom sumom podataka ( engl. checksum ). Zaštitna suma je običan 16-bitni cijeli broj prikazan u dvojnom komplementu (dalje u tekstu 2'k) (engl. short) koji se računa prilikom svakog slanja i primanja APDU paketa. Prilikom slanja zaštitna suma se računa i dodaje na podatkovni blok okteta. Veličina podatkovnog bloka određena LC oktetom unutar APDU zaglavlja poveća se za dva (broj predstavlja broj okteta koji određuju podatkovni blok). Prilikom primanja APDU paketa ponovno se računa zaštitna suma, ali ovaj put od samo LC-2 okteta, jer su zadnja dva primljena zaštitna suma. Nakon što se izračuna, uspoređuje se s primljenim. Ukoliko se ne poklapaju znači da je došlo do pogreške u prijenosu. Zaštitna suma se računa prema vrlo jednostavnom algoritmu:



checksum = 0;

for (short i = 0; i < (short) (LC-2); ++i) {

checksum += podaci[i] & 0x00FF;

}

Bitovni “i” ('&' - Booleov operator disjunkcije nad svim bitovima pojedinačno) nije nužno potreban, ali sprečava sljedeće :

kako je '&' definiran samo nad tipom integer (u Java Card Platformi nad short) svi operandi ove binarne računske operacije se pretvaraju u 16-bitne 2'k brojeve, predznačno proširujući prema potrebi. To može inače pozitivne brojeve u 2'k pretvoriti u negativne. Ovo ponašanje nije presudno za običnu sumu podataka, ali znatno utječe na sve usporedbe 8-bitnih i 16-bitnih 2'k brojeva. Ovo ponašanje Jave se ne može lako izbijeći jer Java nema ugrađene brojeve bez predznaka (engl. unsigned) brojeve.

Tajnost u TPK je postignuta kriptiranjem asimetričnim blok orijentiranim kriptografskim algoritmom RSA. U TPK se koristi kriptiranje s RSA kripto algoritmom u kojem se koriste 512-bitni ključevi i PKCS#1 (v1.5) shema nadopune (engl. padding). Razlog za odabir 512-bitnih ključeva je vrlo jednostavan. Jedini je podržan sa strane Java Card simulatora/emulatora. Javni i privatni RSA ključevi terminala su unaprijed generirani i konstantni. Javni RSA ključ terminala je ugrađen (engl. hard coded) u applet. RSA ključevi appleta se generiraju prilikom stavaranje primjerka samog appleta, tj. prilikom instalacije appleta na pametnu karticu. Prilikom uspostave veze terminala s karticom, terminal daje zahtjev kartici da pošalje svoj javni ključ. Nakon prenošenja ključa upostavlja se sigurni komunikacijski kanal koje se koristi do kraja sjednice (engl. session).

Neporecivost i integritet podataka se postiže digitalni potpisom (engl. digital signature – kriptirani kriptografski sažetak originalne poruke s privatnim ključem pošiljatelja). Kao algoritam za izračunavanje kriptografskog sažetka koristi se SHA-1 (engl. Secure Hash Algorithm) sa sažetkom duljine 20 okteta (160-bita) - opet jedini podržan sa strane Java Card simulatora/emulatora. Digitalni potpis se izračunava prilikom svakog slanja i primanja APDU naredbe, slično kao i zaštitna suma. Ukoliko sažetak dobiven dekriptiranjem digitalnog potpisa ne odgovara izračunatom iz dekriptiranih primljenih podataka, terminalu se vraća poruka o izazvanoj iznimci javacard.framework.UserException s navedenim razlogom : KORUPTIRANI_PODACI.


Hijerarhija nasljeđivanja kojom je nastao razred MojSecurityService je prikazana slikom 5.2.



java.lang.Object
|
+--javacard.framework.service.BasicService
|
+--TuristickaPametnaKartica.MojSecurityService

Slika 5.2. Hijerarhija nasljeđivanja

MojSecurityService implementira sučelja javacard.framework.service.SecurityService,javacard.framework.service.Service.

U razredu MojSecurityService definiran je sljedeći konstruktor:


Detalji o konstruktoru

Prototip konstruktora

Opis konstruktora

public MojSecurityService()
Konstruktor koji stvara korisnički PIN i PIN izdavača kartice i postavlja sve potrebne početne vrijednosti, slaže asimetrične ključeve i stvara objekt za digitalni potpis

Tablica 5.6 Konstruktor MojSecurityService razreda

Razred sadrži sljedeće metode:


Detalji o metodama

processDataIn


public boolean processDataIn(javacard.framework.APDU apdu)
Metoda koja predprocesira ulazne podatke APDU naredbe ako APDU naredba nije namjenjena odabiranju appleta. U slučaju da je predprocesiranje potrebno poziva metodu predprocesiraj i proslijedi ono što ona vrati.
Specificirano sa:
processDataIn u sučelju javacard.framework.service.Service
Prekriva:
processDataIn u razredu javacard.framework.service.BasicService
Vraća:
true ako više nema podataka za predprocesiranje, false ako predprocesiranja nije ni bilo ili ako nije gotovo.

preprocesirajAPDU


public boolean preprocesirajAPDU(javacard.framework.APDU apdu)
Metoda koja provjerava i miče zaštitnu sumu, dekriptira primljene podatke, šalje zahtjev za digitalnim potpisom, provjerava digitalni potpis te prosljeđuje dekriptiranu poruku na daljnje procesiranje.


provjeriMakniChecksum


public boolean provjeriMakniChecksum(javacard.framework.APDU apdu)
Metoda koja provjerava i miče zaštitnu sumu APDU naredbe.
Vraća:
true ako je zaštitna suma jednaka izračunatoj na temelju APDU naredbe.

processCommand


public boolean processCommand(javacard.framework.APDU apdu)
Metoda koja procesira APDU naredbe. Metoda obavlja dvije funkcije: 1) na zahtjev šalje javni ključ appleta terminalu 2) na zahtjev terminala uspoređuje primljeni PIN. Ostale APDU pakete ne dira i prepušta RMI servisu.
Specificirano sa:
processCommand u sučelju javacard.framework.service.Service
Prekriva:
processCommand u razredu javacard.framework.service.BasicService

processDataOut


public boolean processDataOut(javacard.framework.APDU apdu)
Metoda koja naknadno obrađuje izlazne podatke. Metoda koja računa i nadovezuje izračunatu zaštitnu sumu, kriptira te na zahtjev šalje digitalni potpis.

Specificirano sa:
processDataOut u sučelju javacard.framework.service.Service
Prekriva:
processDataOut u razredu javacard.framework.service.BasicService


isZahtjevZaKljucem


public boolean isZahtjevZaKljucem(javacard.framework.APDU apdu)
Metoda koja provjerava da li je stigao zahtjev za razmjenu ključeva.

isAutentificirano


public boolean isAutentificirano(javacard.framework.APDU apdu)
Metoda koja provjerava da li je stigao zahtjev za provjeru PIN-a.

isCommandSecure


public boolean isCommandSecure(byte svojstva)
throws javacard.framework.service.ServiceException
Metoda koja provjerava da li postoji sigurni kanal između kartice i terminala te da li su primljeni podaci konzistentni.
Specificirano sa:
isCommandSecure u sučelju javacard.framework.service.SecurityService
Vraća:
true ako su trazena svojstva točna,
javacard.framework.service.ServiceException

isChannelSecure


public boolean isChannelSecure(bytesvojstva)
Metoda koja provjerava da li postoji sigurni kanala izmedu kartice i terminala sa svim svojstvima za izlaznu sjednicu.
Specificirano sa:
isChannelSecure u sučelju javacard.framework.service.SecurityService


isAuthenticated


public boolean isAuthenticated(short razina)
throws javacard.framework.service.ServiceException
Metoda koja provjerava da li je specificirani način autentificiran.
Specificirano sa:
isAuthenticated u sučelju javacard.framework.service.SecurityService
Vraća:
true ako pruženi PIN autorizira radnju određenu razinom.



6. Zaključak

Ovaj seminarski rad pokazuje kako je Java Card platforma vrlo jaka i pogodna za implementaciju raznih i sigurnih kartičnih aplikacija. Nažalost, punu jačinu Java Card platforme nije bilo moguće iskusiti jer Java pametna kartica nije bila dostupna, već samo emulator. Emulator čini dobro okruženje za testiranje novih aplikacija unatoč činjenici da su njegove kriptografske mogućnosti vrlo ograničene. RSA ključevi u ovom radu su veličine 512 bita što je ispod svake preporuke (tipična preporuka 2048 ili 4096). Kriptografski SHA-1 sažetak je veličine 20 okteta (160 bita) također ispod svake preporuke (tipična preporuka je 256 bita). Koliko god je razina sigurnosti ispod svih preporuka, za TPK ključevi i sažetak su dovoljno veliki. Ključevi i sažetak bi se mogli jednostavno povećati ukoliko se za to pokaže potreba.
Pri razvijanju kartičnih aplikacija najteži dio implementacije je svakako implementacija sigurnosnih servisa jer oni rade s karticom na razini ADPU naredbi (ekvivalent mrežnom, trećem, OSI RM sloju). Osim niže razine problemi nastaju u sinkronizaciji rada kriptografskih algoritama na terminalu i kartici. Potrebno je uskladiti načine kriptiranja kao i nadopune poruka prilikom kriptiranja. Nakon uspješne implementacije sigurnosnih servisa stvar postaje vrlo lagana - koristi se RMI. RMI omogućuje programeru da piše program skoro kao da ga piše za osobno računalo: metoda koja poziva drugu metodu. Ovo je Java-in ekvivalent RPC-a (engl. Remote Procedure Call) koji počiva na petom, sjedničkom, OSI RM sloju. Jedino ograničenje u odnosu na pravu Java aplikaciju je činjenica da Java Card platforma definira podskup Jave i time nešto otežava korištenje te smanjuje mogućnost razmjene podataka između metoda. Kako raste tržište pametnih kartica tako će rasti i mogućnosti čipova koji se ugrađuju u pametne kartice te je za očekivati da će u bliskoj budućnosti pametne kartice biti moćne kao današnja ručna računala (PDA - engl. Personal Digital Assistant).



7. Literatura

  1. “Development Kit User's Guide for the Binary Release with Cryptography Extensions”, Java CardTM Platform, Version 2.2.1, October, 2003, http://java.sun.com/products/javacard/dev_kit.html

  2. “Specification of Java Card v2.2.1 API”, Java Card 2.2.1 Development Kit

  3. “Application Programming Notes”, Java CardTM Platform, Version 2.2.1, October, 2003, Java Card 2.2.1 Development Kit

  4. “ISO/IEC 7816 Part 4: Interindustry command for interchange”, http://www.ttfn.net/techno/smartcards/iso7816_4.html

  5. “JavaTM 2 Platform, Standard Edition, v 1.4.2 API Specification”, “Java 2 Platform, Standard Edition, v 1.4.2 Software Development Kit (SDK)”, http://java.sun.com/j2se/1.4.2/download.html

  6. “ JavaTM Cryptography Extension Reference Guide for the JavaTM 2 SDK, Standard Edition, v 1.4”, “Java 2 Platform, Standard Edition, v 1.4.2 SDK

  7. Renato Barta, “Java Card Tehnologija”, seminarski rad http://sigurnost.zemris.fer.hr/pk/2002_barta/javacard.htm

  8. Renato Barta “Sigurnosni mehanizmi pametne kartice”, seminarski rad http://sigurnost.zemris.fer.hr/pk/2002_barta/mehanizmi.htm

  9. Nakić-Alfirević, T. , “Digitalni Fort Konx za vaš novac”, VIDI, kolovoz-rujan 2004; Vol. str.74-75



Dodatak - Korištenje turističke pametne kartice

1. Prevođenje

1.1. Prevođenje appleta turističke pametne kartice

Prevođenje A-TPK sastoji se od niza jednostavnih koraka:

        1. prevođenje izvornog kôda, *.java datoteke, u Java Byte kôd, *.class datoteke pomoću Java prevoditelja (javac),

        2. pretvaranje Java class datoteka u export datoteku (*.exp), CAP (engl. Converted APplet) datoteku (*.cap) i Java Card Assembly datoteku (*.jca) pomoću converter programa,

        3. generiranje script (*.scr) datoteke za apdutool program na temelju (*.cap) datoteke pomoću scriptgen programa,

        4. stvaranje krnje (engl. stub) class datoteke razreda Implementacijaza potrebe RMI-a pomoću Java stub generatora (rmic),

        5. stvaranje EEPROM slike (engl. image) za pametnu karticu pomoću apdutool i cref (engl. Java Card Reference Implementation Simulator) programa.

Da bi prvi korak bio uspješan Java prevoditelj mora moći pristupiti dvjema JAR datotekama iz Java Card Development Kit-a api.jar i javacardframework.jar.

Java prevoditelj i Java stub generator dolaze s Java SDK-om, a converter, apdutool, scriptgen i cref dolaze s Java Card Development Kit-om.


1.2. Prevođenje terminala turističke pametne kartice

Prevođenje T-TPK ne razlikuje se od prevođenja ostalih Java aplikacija. Da bi prevođenje bilo uspješno Java prevoditelj treba moći pristupiti sljedećim JAR datotekama :

2. Pokretanje

2.1. Pokretanje appleta turističke pametne kartice

A-TPK se može pokrenuti na fizičkoj Java pametnoj kartici ili u simulatoru Java pametne kartice (cref). Za pokretanje u simulatoru potrebna je EEPROM slika i cref program. Može se pokrenuti na sljedećom naredbom :

cref -i “ime.EEPROM.slike”


2.2. Pokretanje terminala turističke pametne kartice

Za pokretanje T-TPK potreban je JVM (dolazi s Jave RE i Java SDK). Pokretanje se izvršava pomoću java programa naredbom

java “Terminal”

Da bi JVM mogao bez greške izvršavati T-TPK mora moći pristupiti sljedećim JAR datotekama: base-core.jar, base-opt.jar, jcrmiclientframework.jar, javacardframework.jar, apduio.jar, generiranim krnjim class datetekama te naravno class datotekama T-TPK-a i uobičajenim Java JAR datotekama. Ovo se postiže postavljanjem ispravnog CLASSPATH-a koji pokazuje putanju do svih navedenih JAR datoteka ili eksplicitnim naveđenjem CLASSPATH-a pri pozivanju java programa (java -classpath ..... “Terminal”).


Kazalo pojmova i korištenih kratica

    1. 2'k : broj prikazan u dvojnom komplementu

    2. A-TPK : Applet Turističke Pametne Kartice

    3. AES : Advanced Encription Standard, tj. Rijndael – simetrični blok kripto-algoritam

    4. AID : Application IDentifier

    5. API : Application Programming Interface

    6. APDU : Application Protocol Data Unit

    7. bit : Binary Digit

    8. CAD : Card Acceptance Device

    9. CAP : Converted APplet

    10. CEI : Commission Electrotechnique Internationale

    11. DES : Data Encription Standardsimetrični blok kripto-algoritam

    12. DES3 : Triple DES

    13. DFA : Differential Fault Analysis

    14. DPA : Differential Power Analysis

    15. DSA : Digital Signature Algorithm

    16. EC : Elliptic Curve

    17. ECDSA : EC - DSA

    18. EEPROM : Electronically Erasable Programmable ROM

    19. GSM : Global System for Mobile Communications

    20. GUI : Graphical User Interface

    21. IEC : International Electrotechnical Commission

    22. ISO : International Standardization Organization

    23. JAR : Java ARchive

    24. Java Byte kôd : sklopovski neovisan međukôd specifičan za Javu

    25. Java RE : Java Runtime Environment

    26. Java SDK : Software Development Kit

    27. JCAPI : Java Card API

    28. JCE : JavaTM Cryptography Extension

    29. JCRE : Java Card Runtime Environment

    30. JCVM : Java Card Virtual Machine

    31. JVM : Java Virtual Machine

    32. KiB : Kibi Byte, 1024 okteta, prema CEI/IEC 60027-2 ,siječanj 1999.

    33. MAC : Message Authentication Code

    34. MD5 : Message Digest 5

    35. MP3 : MPEG 1 sloj 3

    36. MPEG : Moving Picture Experts Group

    37. oktet : byte (8 bita)

    38. OCF : Open Card Framework

    39. OSI RM : Open System Interconnection (Basic) Reference Model

    40. PDA : Personal Digital Assistant

    41. PIN : Personal Identification Number

    42. RACE : Research and Development in Advanced Communications Technologies in Europe

    43. RAM : Random Access Memory

    44. RIPEMD : RACE Integrity Primitives Evaluation Message Digest

    45. RMI : Remote Method Invocation

    46. ROM : Read Only Memory

    47. RPC : Remote Procedure Call

    48. RSA : Rivest, Shamir, Adleman – asimetrični blok kripto algoritam

    49. SAD : Sjedinjene Američke Države

    50. SIM : Subscriber Identity Module

    51. SHA-1 : Secure Hash Algorithm – funkcija za izračunavanje kriptografskog sažetka

    52. SunJCE : Sun's Java Cryptography Extension

    53. T–TPK : Terminal Turističke Pametne Kartice

    54. TPK : Turistička Pametna Kartica