SVEUILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAUNARSTVA















DIPLOMSKI RAD br. 1451

PREZENTACIJSKI SUSTAV ZA PAMETNE
KARTICE

Tomislav Geceg














Zagreb, rujan 2004.





Zahvala





Mnogo ljudi je pisalo ovaj rad mojom rukom. Neiscrpnu podrsku i
podnosenje mogu zahvaliri seki, mami i rari. Menroru prof.dr.sc. Lei Budinu i
dr.sc. Marinu GoluLu hvala na srrpljenju i susrerljivosri. FoseLna zahvala rvrrki
Selmer d.o.o. i gospodinu Nenadu Novoselu na posudLi opreme porreLne za
izradu ovog rada.












U ZagreLu, 29. kolovoza 2004.


Sadržaj
1. UVOD .............................................................................................................................. 1
2. PAMETNA KARTICA...................................................................................................... 2
2.1. POVIJEST.................................................................................................................. 4
2.2. TEHNOLOGIJA ........................................................................................................... 7
2.3. OSNOVNA SVOJSTVA ................................................................................................. 8
2.4. STANJE PRIJE POJAVE PAMETNIH KARTICA ................................................................. 9
2.5. PRIMJENA PAMETNIH KARTICA.................................................................................. 10
3. OKRUŽENJE PAMETNE KARTICE............................................................................. 12
3.1. KARTINA APLIKACIJA I APLIKACIJA TERMINALA.......................................................... 13
3.2. KAKO RADI KOMUNIKACIJA KARTICA-ITA?.............................................................. 14
4. SIGURNOST PAMETNIH KARTICA............................................................................ 20
4.1. KOMUNIKACIJA........................................................................................................ 20
4.2. SKLOPOVLJE........................................................................................................... 22
4.3. OPERACIJSKI SUSTAV.............................................................................................. 23
4.4. PROGRAMSKA RJEŠENJA ......................................................................................... 24
4.4.1. Sigurnosne osobine Java Card tehnologije...................................................... 25
4.5. MOGUE OPASNOSTI I NAINI OTKLANJANJA ............................................................. 28
4.5.1. Napad na osobni identifikacijski broj (PIN) prekidom napajanja ...................... 28
4.5.2. Napad prekidom napajanja............................................................................... 30
4.5.3. Defragmentacija memorije................................................................................ 32
4.5.4. Greške u EEPROM-u ....................................................................................... 33
4.5.5. Vremenski napadi ............................................................................................. 34
4.5.6. Analiza diferencijalnih grešaka......................................................................... 36
4.5.7. Napad analizom potrošnje................................................................................ 37
4.5.8. Napad analizom razlika u potrošnji .................................................................. 38
4.6. KAKO RIJEŠITI PITANJE SIGURNOSTI PAMETNIH KARTICA? .......................................... 40
5. USPOREDBA RAZVOJNIH PLATFORMI.................................................................... 41
5.1. BASICCARD PAMETNE KARTICE................................................................................ 43
5.1.1. BasicCard tehnologija....................................................................................... 44
5.1.2. ZBasic programski jezik.................................................................................... 44
5.1.3. Arhitektura BasicCard pametne kartice............................................................ 45
5.2. JAVA PAMETNE KARTICE .......................................................................................... 49
5.2.1. Java Card tehnologija....................................................................................... 51
5.2.2. Java Card jezini podskup................................................................................ 52
5.2.3. Arhitektura Java Card pametne kartice............................................................ 53
6. PRIMJER RAZVOJA KARTINOG SUSTAVA........................................................... 58
6.1. APLIKACIJA TERMINALA HEALTHINSURANCEPROVIDER.............................................. 59
6.1.1. Postavke aplikacije HealthInsuranceProvider .................................................. 60
6.1.2. Uitavanje kartine aplikacije na karticu........................................................... 61
6.1.3. Inicijalizacija kartice.......................................................................................... 62
6.1.4. Upis korisnikih podataka na karticu................................................................ 63
6.2. APLIKACIJA TERMINALA HEALTHDOCTOR.................................................................. 64
6.2.1. itanje podataka korisnika s kartice................................................................. 65
6.2.2. Upis podataka na karticu i u bazu podataka .................................................... 66
6.2.3. Pretraživanje baze podataka korisnika............................................................. 67
6.3. KARTINA APLIKACIJA HEALTHCARD ........................................................................ 68
6.3.1. Razvojni put kartine aplikacije ........................................................................ 69
6.3.2. Dizajniranje kartine aplikacije ......................................................................... 71
6.3.3. Specifikacija funkcija kartine aplikacije........................................................... 71
6.3.4. Odreivanje naredbi kartine aplikacije............................................................ 72

6.3.5. Definiranje suelja ............................................................................................ 72
6.3.6. Svojstva korištene pametne kartice.................................................................. 73
7. ZAKLJUAK................................................................................................................. 74
8. LITERATURA................................................................................................................ 75
9. SAŽETAK...................................................................................................................... 77
10. ABSTRACT................................................................................................................... 78
PRILOG: KRATICE ............................................................................................................... 79


1
1. Uvod

Visoka tehnologija i sigurnost svojstva su današnjih pametnih kartica.
Cilj ovog rada je prouiti postojea programska rješenja obzirom na njihova
tehnološka, sigurnosna i razvojna svojstva. Posebna pažnja posveena je
sigurnosnim opasnostima i nainima otklanjanja. Kao primjer ostvaren je
prezentacijski sustav za identifikaciju korisnika zdravstvenog osiguranja.
Sustav se sastoji od kartine aplikacije (koju korisnik osiguranja upotrebljava
umjesto dosadašnje kartice s magnetskom trakom) i aplikacije terminala s
bazom podataka o korisnicima. Sustav je priložen na optikom mediju.

Razvoj sustava i saznanja koja omoguuju daljnje istraživanje opisana
su u poglavljima ovog rada:

- prvo poglavlje opisuje povijesni razvoj, svojstva i razvojni put
pametnih kartica

- drugo poglavlje bavi se standardima i komunikacijskim
protokolima važeima na podruju pametnih kartica

- tree poglavlje opisuje mogue opasnosti gubitka podataka i
naine njihova otklanjanja u razliitim razvojnim sustavima

- etvto poglavlje opisuje dvije razvojne platforme, Java Card
koja je vodea na tržištu pametnih kartica i novu BasicCard
koja jednostavnošu i nižom cijenom postaje vrlo
konkurentna

- u posljednjem poglavlju ukratko je opisan razvoj sustava
„HealthCard“ namijenjenog za upotrebu u zdrastvenom
osiguranju (uz manje prilagodbe, mogue su sline primjene i
u drugim djelatnostima)


2
2. Pametna kartica
Pametna kartica (eng. Smart Card) - što je to? Naziv govori malo o
mogunostima koje se danas mogu ostvariti pomou pametnih kartica.
Pretee današnjih kartica pojavile su se u Americi ranih pedesetih godina
prošlog stoljea i bile su simbol bogatstva, posjedovala ih je samo probrana
elita. Sadržavale su jednostavne podatke koje je bilo teško krivotvoriti.
Kartice s magnetskom trakom bile su prvo znaajnije poboljšanje (u tom
obliku se i danas veinom koriste). Pojavom elektronike i mikroelektronike
omoguena je izrada raunala na malom silicijskom ipu, površine nekoliko
kvadratnih milimetara, koji je mogue ugraditi na identifikacijsku karticu. Prva
takva ideja javila se 1968. u Njemakoj (Jurgen Dethloff, Helmut Grotrupp), a
zatim 1970. u Japanu (Kunitaka Arimura). Prvi patent registriran je u
Francuskoj 1974. (Roland Moreno), kada je ve bilo mogue nabaviti tražene
komponente po razumnoj cijeni. Komercijalno uvoenje pametnih kartica u
Francuskom PTT-u kao telefonskih kartica oznaava poetak njihove široke
upotrebe [1]. Danas se veinom koriste starije inaice koje zapravo nisu
pametne (telefonske kartice, SIM kartice, iksice itd.), jer nemaju
mikroprocesor. No zahvaljujui sve boljoj tehnologiji, mogunosti pametnih
kartica danas su vrlo velike, a u budunosti e sigurno biti još vee jer e se
primjena pametnih kartica proširiti na sva podruja ljudskog života. To su
zapravo mala raunala sa svim svojim potrebnim komponentama (sadrže
CPU, RAM, ROM i EEPROM) i sve više neovisna o terminalu (host).

Pojam „pametna kartica“ upotrebljava se za bilo kakvu karticu koja
može vezati informaciju uz neku praktinu primjenu. Kartice s magnetskom
trakom imaju traku s magnetskim materijalom na jednom dijelu svoje
površine, optike kartice su iste veliine, ali za upis/itanje informacija koriste
neku vrstu lasera. Optike i kartice s magnetskom trakom su memorijske
kartice – mogu pohraniti razliite podatke, ali ih ne mogu obraivati.
Mikroprocesorske kartice mogu pohraniti podatke, obraivati ih i izvoditi
zahtjevne operacije. Memorijski prostor takvih kartica je postojan, fiziki i
sklopovski zaštien, omoguuje jednostavnu izmjenu podataka.
Mikroprocesorske kartice se po nainu komunikacije s itaem dijele se na
kontaktne (komunikacija preko metalnih kontakata na površini kartice) i
beskontaktne (komunikacija radio valovima). Preciznije, pojam „pametne
kartice“ se odnosi na memorijske i mikroprocesorske kartice [13].


3
Posljednjih godina s programskim jezikom Java te Java Card
tehnologijom, razvijenom samo za razvoj aplikacija pametnih kartica,
otvorene su nove mogunosti programerima aplikacija pametnih kartica zbog
neovisnosti programskog koda o kartici i njenom sklopovlju. U vrijeme
memorijskih kartica, svaki proizvoa imao je posebni razvojni tim jer se
programiranje kartica razliitih proizvoaa razlikovalo i nije bilo
standardizirano. Pojavom novih standarda (ISO 7816-3, ISO 7816-4, i sl.)
programiranje pametnih kartica postalo je pristupanije, brže i jednostavnije.
Osim Java Card razvojne platforme, na tržištu se javljaju i druge poput
BasicCard (za koju je pisan programski dio ovog rada).
86mm
5
4
m
m

Slika 2.1 Pametna kartica
Izmeu ostalih imbenika koji su doprinjeli bržem razvoju i usvajanju
pametnih kartica, veliku težinu ima sigurnost. Podaci se kriptiraju poznatim
algoritmima (56 bitni DES, 512-1024 bitni RSA, 167 bitni ECC, IDEA, SHA,
itd.). Podaci su na kartici puno sigurniji nego u doba memorijskih kartica, kao
i komunikacijski kanal za razmjenu podataka izmeu raunala i itaa, te
izmeu raunala i baze podataka (može biti kriptiran ili zaštien raznim
tipovima stroge meusobne autentifikacije). U zadnje vrijeme se proizvode
pametne kartice koje na sebi sadrže ugraene kriptografske procesore
odvojene od glavnog procesora radi što boljih performansi (sklopovsko
kriptiranje je uglavnom brže od izvršavanja programskog algoritma). Slika 2.1
prikazuje vanjski izgled moderne pametne kartice.

I dok s jedne strane tehnologija napreduje munjevitom brzinom,
pametne kartice se sve više koriste u svim granama ljudske djelatnosti.
esto se javljaju problemi kad treba iz hrpe kartica izvaditi baš onu koju treba
za traženog davatelja usluge. Javljaju se prve višeuslužne pametne kartice
koje imaju više primjena (npr. bankovna i telefonska kartica). Razvoj
standarda i specifikacija olakšati e njihovu primjenu. Važno je naglasiti da je
rije „ita“ ostala ustaljenom u tehnologiji pametnih kartica još iz vremena
memorijskih kartica kad su itai imali samo funkciju itanja podataka, a
programiranje memorijske kartice se obavljalo preko posebnih izlaznih
jedinica. U vrijeme pametnih kartica, pod tim istim pojmom podrazumijeva se
i „pisa“ jer se preko njega upisuju i mijenjaju podaci na pametnoj kartici.

4
2.1. Povijest
Iako su pametne kartice vrhunac tehnologije, od njihove pojave prošlo
je ve 30-ak godina. Od 1970. godine do danas vidljiv je stalan napredak u
sklopovskim (mikroprocesorskim) mogunostima i rastu broja razliitih
podruja njihove primjene. Glavni uzroci širenja njihove primjene su sve niža
cijena (vea dostupnost) i nedovoljna sigurnost kartica s magnetskom
trakom. Slijedi kratak prikaz povijesti pametnih kartica, od pojavljivanja do
danas [13]:

- 1970. dr. Kunitaka Arimura (Japan) – prvi i jedini patent konceptualne
zamisli pametne kartice.

- 1974. Roland Moreno (Francuska) - patent kartice s integriranim
sklopom (IC Card), kasnije postaje poznata pod imenom „pametna
kartica“.

- 1977. troje komercijalnih proizvoaa (Bull CP8, SGS Thomson,
Schlumberger) poinje s razvojem pametnih kartica.

- 1979. Motorola za Francusko bankarstvo proizvodi prvi siguran
mikrokontroler.

- 1982. terensko testiranje serijske memorijske telefonske kartice u
Francuskoj – prvi veliki ispit IC kartica.

- 1984. prvo uspješno terensko testiranje ATM bankovnih kartica.

- 1986. Bank of Virginia i Maryland National Bank izdaju 14 000 kartica
s Bull CP8 mikrokontrolerom, First National Palm Beach Bank i Mall
Bank izdaju 50 000 Casio kartica svojim klijentima.

- 1987. razvijena prva aplikacija pametnih kartica za široko tržište
Amerikog ministarstva poljoprivrede Peanut Marketing Card.

- 1991. pokrenut projekt First Electronic Benefits Transfer za Wyoming
Special Supplemental Nutrition Program for Women, Infants, and
Children.

- 1992. pokrenut nacionalni program elektronikog novanika
DANMONT u Nizozemskoj.


5
- 1993. terensko testiranje aplikacija za višeuslužne pametne kartice
(Rennes, Francuska), bankovna kartica (Smart Bank Card) ujedno je i
telefonska (Telecarte).

- 1994. Europay, MasterCard i Visa (EMV) objavljuju zajedniku
specifikaciju za bankovne kartice temeljene na mikrokontroleru.
Njemaka poinje s izdavanjem 80 milijuna serijskih memorijskih
zdravstvenih kartica.

- 1995. preko 3 milijuna korisnika mobilnih telefona sa SIM karticama.
Amerikim marincima (Havaji) izdane prve od 40 000 višeuslužnih
pametnih kartica (MARC Cards).

- 1996. izdano preko milijun i pol VISACash bankovnih kartica za
olimpijske igre u Atlanti. MasterCard i Visa sponzoriraju konzorcij za
rješavanje problema interoperabilnosti pametnih kartica – razvijena
dva rješenja: Java Card (Visa) i Multi-application Operating System
MULTOS (MasterCard).

- 1998. u rujnu, administracija Amerike vlade (U.S. Government“s
General Services Administration) i Amerika mornarica (U.S. Navy)
razvijaju sustav pametnih kartica s 9 aplikacija (Smart Card
Technology Center, Washington DC.). Namjena centra jest
demonstracija i evaluacija integracije višeuslužnih pametnih kartica s
drugim vrstama tehnologije u cilju otkrivanja sustava pogodnih za
uporabu u saveznoj vladi (Federal Government). Microsoft objavljuje
novi Windows operativni sustav za pametne kartice. U Francuskoj
poinje izdavanje zdravstvenih pametnih kartica za 50 milijuna
stanovnika.

- 1999. administracija Amerike vlade (U.S. Government“s General
Services Administration) sudjeluje u Smart Access Common ID
projektu. Smart Access Common ID Card program koristiti e sve
federalne agencije kao standard – interoperabilnu korisniku
identifikacijsku karticu – u svrhu omoguavanja fizikog i logikog
(system/network) pristupa njihovim zaposlenicima. Amerika vlada
pokree Java Card višeuslužni program (Washington DC.).


6
Dokumentirati noviju povijest pametnih kartica (od 1999. do danas)
nije jednostavno. Na tržištu svakim danom ima sve više rješenja, za razliite
primjene. Prihvaanje i primjena tehnologije pametnih kartica razlikuje se od
zemlje do zemlje i nacionalni sustavi još nisu kompatibilni. Na slici 2.2
prikazano je predvianje rasta broja proizvedenih pametnih kartica do 2006.
godine [20].
398
541
599
701
872
1052
1169
1262
0
200
400
600
800
1000
1200
1400
Broj prodanih
pametnih kartica, u
milijunima
1999 2000 2001 2002 2003 2004 2005 2006
Godina
Slika 2.2 Predvianje rasta broja prodanih pametnih kartica u svijetu

Uloga pametnih kartica u novanim (i ostalim) transakcijama oita je i
neizbježna. Interoperabilnost, standardizacija i razvoj izazovi su postavljeni
današnjim pametnim karticama. Ti izazovi nisu jednostavni - uz pomo
industrije javiti e se inovativna rješenja koja spajaju nove tehnologije (poput
interaktivne televizije, pametnih mobilnih telefona, runih digitalnih
organizatora (PDA), elektronikih novanika i interenta.

Uslijed zahtjeva na sve široj primjeni pametnih kartica javlja se
potreba za bržim razvojem kartinih aplikacija. Sigurnosni zahtjevi se
neprestano mijenjaju, nema proizvoaa pametnih kartica koji može rei da
je njegov proizvod otporan na sve mogue (budue) napade. Pristup
sigurnosti pametnih kartica sve više se okree standardizaciji. Prepoznavanje
opasnosti, njihova specifikacija i protumjere implementirane prema
standardima, znatno e pojednostaviti korištenje i razumijevanje s jedne
strane, a otežati gubitak informacije s druge. Sigurnosna evaluacija rješenja
treba poeti u što ranijoj fazi izrade, i tei paralelno s razvojem u cilju
pristupanog i pouzdanog rješenja. Neovisnost proizvoaa mikromodula
pametnih kartica i proizvoaa kartinih operacijskih sustava uzrokovati e
niže cijene kartinih sustava. Od pametnih kartica se u budunosti oekuje
raširena uporaba na svim podrujima ljudskih djelatnosti, objedinjavanje više
usluga na jednoj kartici i lakše poslovanje uz maksimalnu sigurnost.


7
2.2. Tehnologija
Veliina pametnih kartica odgovara veliini uobiajenih kreditnih
kartica. Izrauju se od polivinil-klorida (PVC) i sadrže ugraeni mikromodul.
Mikromodul se sastoji od jednog integriranog ipa s memorijom i
mikroprocesorom, a na površini ima osam metalnih kontakata (vidi poglavlje
3.2.). Umetanjem kartice u ita (CAD – Card Acceptance Device) spajaju se
kontakti itaa s odgovarajuim kontaktima pametne kartice i omoguava
meusobna komunikacija [13].

Dijelovi mikromodula su:

- mikroprocesor (Microprocessor Unit – MPU), starije pametne kartice
koristile su 8-bitne, a tijekom 90-tih godina prelazi se na 32-bitne RISC
mikroprocesore s taktom od 25 do 30 MHz.

- ulazno-izlazni kontroler (I/O Controller) koji upravlja tokom podataka
izmeu mikroprocesora i itaa.

- memorija za itanje (ROM) ili programska memorija u koju proizvoa
trajno upisuje programske instrukcije. Te instrukcije su osnova
operacijskog sustava pametne kartice (Chip Operating System –
COS), danas se izvodi kao flash ROM.

- memorija sa sluajnim pristupom (RAM) ili radna memorija koja se
koristi kao privremeno spremište izrauna, operacija nad podacima i
ulazno/izlaznih komunikacija. Ta memorija nije postojana i gubi
podatke pri iskljuenju napajanja.

- aplikacijska memorija, danas veinom EEPROM. Pisanje i brisanje
aplikacijske memorije izvodi se elektriki. Prema internacionalnim
standardima, podaci u EEPROM-u „traju“ 10 godina, mogu se
itati/pisati najmanje 10 000 puta za vrijeme života kartice. Kartine
aplikacije koriste ovu vrstu memorije za pohranu podataka na karticu.

8
2.3. Osnovna svojstva

- cijena – od 1 do 10, raste s veim kapacitetom i složenijim
mikrokontrolerom, niža za velike narudžbe.
- pouzdanost – kartice izvedene prema ISO standardima trebaju biti
otporne na pad, savijanje, abraziju, pritisak, temperaturu, vlažnost,
statiki elektricitet, napad kemikalijama, ultraljubiasto i rendgensko
zraenje, te magnetsko polje.
- ispravljanje grešaka – operacijski sustav kartice ima ugraenu zaštitu
od grešaka, aplikacija terminala mora provjeravati dvo-bajtnu statusnu
rije (vidi poglavlje 3.2.) dobivenu od operacijskog sustava kartice
nakon izvršenja naredbe i, prema potrebi, izvršiti ispravljanje.
- veliina EEPROM-a 1-64 kilobajta, 8-32 kilobajta ROM-a, 256-2048
bajtova RAM-a. Novije metode sažimanja podataka omoguuju
spremanje vee koliine podataka od navedene.
- jednostavnost korištenja – pametne kartice imaju jednostavno suelje
za praktinu primjenu, slino bankovnoj kartici s magnetskom trakom.
- osjetljivost – osjetlijve su na fizika ošteenja mikromodula, no ipak ih
je teže oštetiti nego kartice s magnetskom trakom.
- sigurnost – pametne kartice su vrlo sigurne (no ne i potpuno, vidi
poglavlje 4.5.), podatke pohranjene u mikromodulu je teško kopirati ili
oštetiti, za razliku od kartica s magnetskom trakom. Podrška
enkripcijskim i autentifikacijskim algoritmima te digitalnom potpisu.
- brzina prijenosa – ISO 7816 ograniava kontaktne pametne kartice na
9600 bauda. Neki kartini operacijski sustavi dozvoljavaju promjenu
brzine prijenosa nakon pokretanja mikromodula, dobro dizajnirane
aplikacije izvode operacije u trajanju do 2 sekunde.
- procesna snaga – stariji mikroprocesori na kartici bili su 8-bitni s 16
MHz taktom, današnji 32-bitni s 25-32 MHZ taktom, bolji s pomonim
procesorom za brzu enkripciju.
- izvor napajanja 5V istosmjerno. Veina primjena zahtjeva samo ita
(CAD) s asinkronim taktom, serijskim sueljem i 5-voltnim izvorom
napajanja.

Kljunu ulogu interoperabilnosti i kompatibilnosti u okruženju s više
proizvoaa pametnih kartica imaju standardi. Standardi za integrirano
sklopovlje postoje od 1980-tih. Svjetski standard za pametne kartice je ISO
7816, no još uvijek ne postoji standard za kartini operacijski sustav. Razliiti
proizvoai nude razliite COS-ove, što je važan imbenik pri odabiru kartice
za odreeno rješenje. Razliite grupe i konzorciji rade na prijedlozima
standarda i specifikacija vezanim za pametne kartice (vidi poglavlje 4.6.).

9
2.4. Stanje prije pojave pametnih kartica
Prije pojave pametnih kartica, postojale su razne magnetske
memorijske kartice koje nisu bile standardizirane i kompatibilne. Magnetska
traka je robustna i lako itljiva, ali nije sigurna. Podatke koji su na njoj može
proitati (i kopirati) bilo koji ita magnetskih kartica. Kartice razliitih
proizvoaa drugaije su se programirale i vrijedila su posebna pravila za
pojedinog proizvoaa. Tako su proizvoai razvijali svoj strojni jezik pa ak i
jezik više razine za programiranje kartica. Obino su se takve kartice
programirale u tvornici prilikom izrade ili odmah nakon izrade, pa je postojao
dodatni trošak za korisnika. Naruitelj je morao plaati svoje programere za
izradu aplikacija terminala, i programere proizvoaa kartica (za izradu
kartinih aplikacija). Ako se programeri proizvoaa i programeri naruitelja
nisu dobro sporazumjeli (npr. loša specifikacija funkcija), znalo je doi do
popriline zbrke što je dodatno povealo troškove za naruitelja. Slika 2.3
prikazuje razvojni put memorijske kartice. Idealni razvojni put je oznaen
strelicama sa punom crtom, a sluajevi greški prikazani su crtkanim
strelicama. Do problema može doi na tri mjesta i to:

- prilikom razvoja aplikacije terminala
- prilikom testiranja aplikacije terminala
- krajnji korisnik ili davatelj usluge je uoava probleme bilo sa
aplikacijom terminala ili s programiranom karticom

Naješe razvojni put nije bio idealan, postojali su odreeni problemi
koji su zahtjevali prepravljanje bilo aplikacije terminala, bilo programa na
memorijskoj kartici, što je poveavalo troškove i vremenska kašnjenja. Novije
kartice mogao je programirati i sam naruitelj te se tako izbjeglo nesuglasje,
ali se javio drugi problem: treba nauiti strojni jezik za programiranje kartica
(koji obino nije kompatibilan s drugim proizvoaima). Nestandardiziranost
razliitih proizvoaa uzrokovala je spor razvoj i prihvaanje sustava
pametnih kartica [1].

Programeri
memorijskih kartica
Krajnji
korisnik
usluge
Programeri aplikacije
terminala
Izrada memorijske kartice Uvoenje kartice u rad
Proizvoa memorijskih kartica
Naruitelj-davatelj usluge Krajnji korisnik

Slika 2.3 Nekadašnji razvoj pametnih kartica

10
2.5. Primjena pametnih kartica

Slika 2.4 prikazuje razvojni put pametnih kartica koji je mnogo krai,
brži i pouzdaniji od razvojnog puta magnetskih kartica. Pametne kartice imaju
sklopovlje i programe koji se pokreu s umetanjem u ita. Može se rei da je
operacijski sustav na pametnoj kartici u neku ruku pasivan, jer interpreter
samo odgovara na prije definirane naredbe (veza s vanjskim svijetom je
ograniena). Mikroprocesor na pametnoj kartici može zabraniti (zakljuati)
pristup svojoj programskoj memoriji, a novije pametne kartice imaju ugraene
enkripcijske procedure (funkcije). Zbog tih svojstava pametne kartice su
sigurnije (npr. pametna kartica za satelitski reciver, koja selektivno
omoguava gledanje satelitskih programa na koje ste se pretplatili). Naruitelj
više ne ovisi o programerima proizvoaa, kartine aplikacije se razvijaju
paralelno sa korisnikom aplikacijom te se tako izbjegavaju nesuglasnosti i
nestandardiziranost.

Ako se pojavi greška, brže se otklanja jer se dogodila unutar užeg
kruga ljudi. Pojavom programskih jezika poput Jave i ZBasica (Java Card i
BasicCard) razvoj korisnikih aplikacija i kartinih aplikacija je puno brži i
jednostavniji.

Krajnji
korisnik
usluge
Programeri appleta i
terminalske aplikacije
Izrada pametne kartice
Uvoenje kartice u rad s
terminalskom aplikacijom
Proizvoa pametnih kartica
Naruitelj-davatelj usluge Krajnji korisnik

Slika 2.4 Razvojni put današnjih pametnih kartica

Danas na tržištu prevladavaju kartice temeljene na Java Card
tehnologiji. Visoko su standardizirane pa korisnik (naruitelj) pametnih kartica
više nije vezan za jednog proizvoaa (može ih naruiti od razliitih
proizvoaa).


11
Mogua primjena pametnih kartica je vrlo široka. Pametna kartica se
može upotrijebiti za pohranu svih osobnih identifikacijskih podataka kao i
ostalih podataka svojstvenih samo korisniku kartice. Sve usluge kojima
korisnik raspolaže biti e pohranjene na jednom mjestu – na jednoj pametnoj
kartici. Osim pohranjivanja osobnih identifikacijskih podataka, mogue e biti
pohraniti neke druge dokumente poput lijenikih recepata (ostvareno u
programskom dijelu ovog rada, poglavlje 6.), vozake dozvole, prijevoznih
karata, sredstava plaanja (za npr. cestarinu, benzinske crpke, hotele), i
slino. Pametna kartica e se u isto vrijeme koristiti kao klju vrata obiteljske
kue, klju vrata tvrtke u kojoj ste zaposleni i kao lanska iskaznica u npr.
knjižnici (uvati e podatke o knjigama koje ste posudili).

Zbog visokih sigurnosnih zahtjeva koje pametne kartice moraju
zadovoljavati, njihova „unutrašnjost“ se obino taji, kako bi se otežali mogui
napadi. Uz pojednostavljeno korištenje, od pametnih se kartica oekuje brz
razvoj i uporaba u svakodnevnom životu – stoga je potrebno zadovoljiti
sljedee uvjete:

- višeuslužnost
- sigurnost podataka
- standardiziranost na visokom nivou

Višeuslužnost je svojstvo kartica koje podržavaju sigurno izvoenje
aplikacija namjenjenih ostvarenju razliitih usluga (npr. bankovna kartica koja
je ujedno i klju za ulazak u prostorije neke tvrtke). Sigurnost je osnovni
preduvjet za sve primjene pametnih kartica. Razvojem specifikacija i
standarda proizašlih iz dosadašnjih rješenja i novih saznanja, poveava se i
sigurnost sklopovlja i aplikacija u sustavima pametnih kartica. Novi standardi
odreuju i naine ostvarenja sigurnog izvršavanja i pohrane višeuslužnih
aplikacija.

12
3. Okruženje pametne kartice
Prikaz meudjelovanja i okruženje kartinih aplikacija i aplikacija
terminala prikazan je na slici 3.1.

Raunalo/Terminal
Korisnik kartice
JavaCard/BasicCard applet
uitan na kartici -
kartina aplikacija
Klijent aplikacija
koja se nalazi na
terminalu -
aplikacija terminala
Komunikacija itaa i terminala
pomou APDU-a
Davatelj usluge
ita kartice
Slika 3.1 Okruženje pametne kartice

Kartine aplikacije su u vrstoj sprezi s aplikacijom terminala.
Aplikacija terminala kontrolira ulazne i izlazne podatke koje kartica prima ili
daje, te šalje zahtjeve kartinoj aplikaciji pomou APDU-a (engl. Application
Protocol Data Unit). Kartina aplikacija se na kartici prilikom izvršavanja
ponaša kao jednostavan server - prima, obrauje podatke i vraa rezultate
aplikaciji terminala. Obino u razvojnom paketu dobivenom od proizvoaa
postoji simulator tako da se funkcionalnost i rezultati konstruirane kartine
aplikacije mogu isprobavati prije uitavanja na karticu (vidi poglavlje 6.3.1.).
Time se izbjegavaju nepotrebna uitavanja (download) kartinih aplikacija,
sporije izvršavanje i teže otklanjanje pogrešaka [2].

13
3.1. Kartina aplikacija i aplikacija terminala
Što je aplikacija terminala? Ve je spomenuto da je pametna kartica
malo „neovisno“ raunalo - neovisno utoliko što kad je isprogramirana, može
obavljati svoju funkciju do daljnjega. Dakle postoje aplikacije koje se
izvršavaju na „samoj“ pametnoj kartici (pisane u npr. Javi ili ZBasicu) i
aplikacije koje se izvršavaju na „terminalu“. Pod pojmom terminal misli se na
bilo kakvo raunalo (npr. bankomat) koje uitava podatke s pametne kartice i
barata s tim podacima (npr. skida novac s rauna). Pametne kartice nemaju
vlastito napajanje, stoga je za njihov rad potreban sklop koji im osigurava
napajanje. Nedostatak neovisnosti uzrok je i nekih sigurnosnih problema, no
o tome više u kasnijim poglavljima. Dakle aplikacija terminala je program koji
se izvršava na terminalu, a ima mogunost komunikacije s pametnom
karticom (preko npr. itaa pametnih kartica). Aplikacija terminala može se
pisati u višim programskim jezicima poput C++, Visual Basic, Java itd. (jezici
koji su podržani sueljem proizvoaa pametnih kartica).

Kartina aplikacija (koja se izvršava na kartici) je pisana kao zasebna
cjelina, a potom prevedena i uitana na karticu (danas se razvijaju i drugi
programski jezici kao konkurencija Javi, npr. jezik Forth i korišteni ZBasic).
Programeri koji razvijaju kartine aplikacije moraju obratiti posebnu pozornost
na podruje njene primjene i, prema tom podruju, na mogue izvore napada
ili gubitka podataka (npr. gubitak napajanja u jeftinijim pametnim karticama).
Dakle na vlastitom raunalu pišemo program u jeziku podržanom od
proizvoaa pametnih kartica, prevedemo ga i možemo ga uitati na karticu,
dok aplikacija terminala može (treba) osiguravati podatke za rad kartine
aplikacije. Kako bi pametna kartica poela obavljati svoju funkciju (kao
novanik, kao identifikacija, u upravljanju raznim procesima...), nužna je neka
vrsta aplikacije terminala koja s karticom komunicira. Na karticu se uitava
ve preveden kod (Java byte code, P-code) koji izvodi interpreter.
Ogranienje nije broj uitavanja, ve memorijski prostor.

14
3.2. Kako radi komunikacija kartica-ita?
Za opis komunikacije kartica-ita, može se koristiti OSI model (slika
3.2). U tom modelu su navedeni standardi koji se danas koriste i definiraju
ponašanje u i izmeu slojeva modela.
ISO/IEC 7816-4
ISO/IEC 7816-7
EN 726-3
prEN 1546-3
GSM 11.11
ISO/IEC 7816-3 (T=0)
ISO/IEC 7816-3 Amd (T=1)
ISO/IEC 10 536-3 (T=2)
ISO/IEC 7816-3
(kontaktne kartice)
ISO/IEC 10 536-3
(beskontaktne kartice)
OSI sloj 7
aplikacijski sloj
OSI sloj 2
sloj podatkovne veze
OSI sloj 1
fiziki sloj

Slika 3.2 OSI model komunikacije kartice i itaa

Fiziki sloj je definiran standardom ISO/IEC 7816-3 u kojem su
opisane sve karakteristike komunikacije i implementacije na najnižoj razini.
Komunikacija kartica-ita je digitalna. Tipino se koriste naponske razine
+5/+3 V, obino se visoka razina „1“ definira prvim znakom ATR odgovora.

Prilikom umetanja kartice u ita mehaniki se registrira prisutnost
kartice, zatim se uspostavlja elektrina veza izmeu vanjskih kontakata na
kartici i kontakata u itau (terminalu). Tu leži opasnost od kratkog spoja
izmeu kontakata na samoj kartici (dok se umee ili vadi), pa se na
odgovarajui nain mora zaštititi i kartica i terminal (propisano standardom
ISO/IEC 7816-3). Stoga se spajanje kartice provodi postepeno, pet aktivnih
kontakata se omoguava tonim redoslijedom: prvo se spaja kontakt
uzemljenja (GND), zatim napajanje (VCC) pa takt (CLK). Time je omoguen
rad mikrokontrolera na samoj kartici i on se može resetirati (na kontaktu
RST), na prvom rastuem bridu. tj. kartica se sama upali (tzv. power-on
reset). Metalna ploica s kontaktima pametne kartice prikazana je na slici
3.3.


15

Slika 3.3 Kontakti mikromodula pametne kartice

Zapravo ita nije dobar naziv za ureaj koji služi komunikaciji izmeu
kartice i PC-a jer se njime osim itanja obavlja i pisanje. Dakle komunikacija
je dvosmjerna. Za komunikaciju je raspoloživa samo jedna I/O linija, pa
podatke šalju naizmjence kartica ili ita (druga strana sluša). Ovakav nain
komunikacije naziva se half-duplex procedura. Full-duplex T=1 nain
komunikacije je prijenos na razini blokova podataka. U tom nainu prijenosa
APDU naredbe se prenose podijeljene na blokove podataka. Podržano je
ulanavanje, ponovno slanje i produljenje vremena ekanja. Ako kartica treba
više vremena za obradu podataka izmeu APDU naredbi, može od terminala
zatražiti „produljenje vremena ekanja“ (WTX – Waiting Time Extension) [4].

Svaki blok podataka T=1 protokola sastoji se od sljedeih polja:
- adresa primatelja i poštiljatelja (NAD)
- polja kontrole protokola (PCB)
- dužine INF polja u bajtovima
- informacijskog polja (INF) s podacima o sadržaju bloka
- zaštitnog polja (LRC)

Half-duplex ISO T=0 protokol (standard ISO/IEC 7816-3) je protokol
razvijen u Francuskoj za vrijeme poetnog razvoja pametnih kartica.
Pretpostavlja asinkronu komunikaciju (start i stop bitovi) i bajtno je orijentiran
(najmanja jedinica koja se prenosi je bajt). Svojstvo tog protokola je
maksimalna jednostavnost uz minimalno korištenje memorije. ita
razmjenjuje podatke s karticom preko ulaznih naredbi i izlaznih poruka
(dobivenih od kartice). Format poruke kompatibilan je s ISO 7816-4
standardom (kartice je mogue proitati s bilo kojim itaem koji je
kompatibilan tom protokolu). Poruka (naredba) se prenosi bajt po bajt, kao na
slici 3.4, samo što su umjesto stop bitova na kraju podatkovnog bajta dva bita
uvanja vremena (guard time), tj. dvije elementarne vremenske jedinice (etu)
koje oznaavaju kraj prijenosa bajta. Ako doe do greške, unutar te dvije
jedinice primatelj (terminal ili kartica) treba I/O liniju postaviti nisko, kako bi
pošiljaoc ponovo poslao pogrešan bajt.


16
Komunikacija kartice s vanjskim svijetom je serijska, tj. niz bitova koji
se slijedno šalju preko I/O linije. Smjer bitova ovisi o dogovoru: direktan smjer
(ako je prvi bit nakon poetnog najmanje znaajan) ili inverzni smjer (ako je
prvi bit najznaajniji bit u bajtu). Slika 3.4 prikazuje serijski prijenos podataka
izmeu itaa i kartice.
visoko
nisko
start bit
podatkovni bitovi
paritetni bit
stop bit(ovi)

Slika 3.4 Struktura prijenosa znaka preko I/O linije

Proces komunikacije uvijek zapoinje terminal (ita), kartica
odgovara na naredbe dobivene od terminala (ne šalje podatke sama od
sebe, bez vanjskog zahtjeva). To je komunikacija gospodar-sluga (master-
slave), u kojoj je terminal gospodar, a kartica sluga. Komunikaciju možemo
simboliki prikazati dijagramom na slici 3.5:
Terminal Pametna kartica
PTS
potreban?
Reset
PTS zahtjev
ATR
PTS odgovor
naredba 1
odgovor 1
da
ne
. . .

Slika 3.5 Poetak komunikacije itaa i pametne kartice

17
Nakon što je osigurano uzemljenje, napajanje i takt (time se misli da
izmeu odgovarajuih kontakata nema kratkog spoja ili drugih moguih
grešaka), pametna kartica šalje odgovor na resetiranje ATR (Answer to
Reset) preko ulazno-izlaznog I/O kontakta. To je podatkovni niz maksimalne
duljine 33 bajta, sadrži podatke vezane za prijenosni protokol, podatke
vezane za samu karticu i obino se šalje s vrijednošu djelitelja 372 (divider
value). Vrijednost djelitelja je broj koji pokazuje koliko ciklusa vanjskog takta
(external clock) terminala, na I/O liniji stoji jedan znak (toliko vremena ima
mikroprocesor na kartici da ga prepozna i spremi u I/O meuspremnik). Osim
vrijednosti djelitelja 372 koristi se još standardno vrijednost 512. ATR se
obino sastoji od samo nekoliko bajtova, posebno za aplikacije koje se
trebaju brzo izvesti. Kartica treba vratiti ATR u vremenu 400 – 40000 ciklusa
vanjskog takta od slanja reset signala, ako ne vrati ATR u tom vremenu
terminal ponavlja aktivacijski ciklus (pokušava par puta, ako ne proradi
smatra da je kartica ili ita neispravan). Bez ulaženja u detalje, ATR-om
terminal dobiva niz bajtova ili znakova: TS i T0 – odreuju temeljna svojstva
prijenosa i najavljuju sljedee znakove, TA1, TB1, TC1, … znakovi koji
definiraju suelje prijenosa (važno za naredbe koje slijede), T1, T2, T3 …
znakovi povijesti kartice, te TCK koji je zaštitna suma prethodnih bajtova
(eventualno može biti i posljednji znak ATR-a, ovisno o protokolu) [1].

Poslije ATR-a (a prije slanja prve naredbe) terminal može poslati
naredbu za odabir tipa protokola – PTS. Ta naredba nije dio standarda,
pomou nje je mogue postaviti razliite parametre kartinog protokola.
Zatim kartica eka poruku (naredbu) od terminala, izvršava ju i vraa
odgovor.
Postoje tri vrste naredbi:
Ulazne (Input) ita šalje kartici naredbu i podatke
Izlazne (Output) ita dobiva podatke od kartice
Bez podataka (No data) ita kartici šalje samo naredbu (bez
podataka)

Format naredbe je tzv. Application Protocol Data Unit (APDU) -
jedinica podataka aplikacijskog protokola. Struktura poruke naredba-odgovor
(command-response) je prikazana na slici 3.6 (za ulazne i izlazne naredbe):

CLA P1 INS P2 P3 DATA
zaglavlje podatkovni dio

Slika 3.6 Struktura APDU naredbe

18
Opis polja APDU naredbe prikazan je u tablici 3.1. Sve vrijednosti su u
heksadecimalnom obliku (ako drugaije nije navedeno)

Tablica 3.1 Opis polja APDU naredbe-odgovora
CLA razred naredbe
INS identifikator naredbe (instrukcije)
P1, P2 ulazni parametri za naredbu
P3
duljina, parametar koji specificira broj podatkovnih
bajtova (unutar naredbe) za prijenos na (ili prijenos od)
kartice
Ack
potvrda da je kartica primila naredbu i da je spremna za
prijenos podataka. U sustavu PC-pametna kartica,
driver od itaa lovi odgovor, pa on uope ne dolazi do
aplikacije terminala.
Input data podaci koje ita šalje kartici
Output data podaci koje kartica vraa itau
SW1
status kartice (status word), odgovor na naredbu
(1 bajt)
SW2
opcionalni odgovor koji omoguava dodatne statusne
informacije

Format ulazne poruke naredba-odgovor prikazan je u tablici 3.2:

Tablica 3.2 Ulazna naredba
Citac CLA INS P1 P2 P3 Data
Kartica Ack
SW1
SW2
P3:duljina 1 bajt 1 bajt 1 bajt 1 bajt 1 bajt 1 bajt

bajtova
2 bajta

Opisno to bi izgledalo ovako: terminal šalje kartici zaglavlje od 5
bajtova (CLA, INS, P1, P2, P3) - ako nema greške, kartica vraa potvrdu
(ACK) da je primila zaglavlje - terminal šalje podatkovni dio s brojem bajtova
specificiranim u P3 (Data) - kartica izvršava naredbu, vraa status (SW1) i
duljinu podataka (SW2) - terminal traži odgovor (get response) s traženim
brojem bajtova u P3 (CLA, INS, P1, P2, P3) - kartica vraa podatke i status
(Data, SW1, SW2) - kraj poruke naredba-odgovor.

19

Format izlazne poruke naredba-odgovor prikazan je u tablici 3.3:

Tablica 3.3 Izlazna naredba
Citac CLA INS P1 P2 P3
Kartica Ack Data
SW1
SW2
P3:duljina 1 bajt 1 bajt 1 bajt 1 bajt 1 bajt 1 bajt

bajtova
2 bajta

Za oba formata duljina je duljina ulaznih podataka specificirana
parametrom P3 (drugi nain oznaavanja duljine ulaznih podataka je Lc).
Ako je P3=00h (heksadecimalno), šalje se samo naredba, bez podataka.
Statusna rije (status word) SW1 u izlaznoj poruci pokazuje da li je kartica
uspješno izvršila naredbu i vratila željene podatke, a SW2 sadrži broj
podatkovnih bajtova u izlaznoj poruci, tj. broj znakova koje kartica vraa kao
rezultat (drugi nain oznaavanja duljine izlaznih podataka je Le). Postoji
mogunost individualnog slanja podatkovnih bajtova na karticu (npr. ako je
potrebno duže vrijeme za obradu ili se oekuju greške u prijenosu). U tom
sluaju kartica treba nakon svakog podatkovnog bajta terminalu vratiti
invertirano zaglavlje (CLA, INS, P1, P2, P3) [1].

20
4. Sigurnost pametnih kartica
Može se rei da su pametne kartice samostalni sustavi, no ipak su
izložene opasnostima vanjskih imbenika. esto se primjenjuju u sustavima
koji zahtijevaju jaku sigurnosnu zaštitu i autentifikaciju, pa je tehnologija
izrade pametnih kartica vrsto vezana uz sigurnost. Proizvoai donose nove
složenije mjere zaštite – a hackeri smišljaju sve bolje i bolje naine probijanja
tih zaštita. Ovo neprestano „natjecanje“ vodi otkrivanju sve bolje i bolje
tehnologije [17].

Sigurnost pametnih kartica možemo promatrati kroz:
- komunikaciju
- sklopovlje
- operacijski sustav
- programe koji se izvršavaju na kartici ili ju koriste
4.1. Komunikacija
Komunikacija kartice s vanjskim svijetom opisana je u poglavlju 3.2.
Odvija se pomou APDU paketa izmeu itaa pametnih kartica (CAD) i
kartine aplikacije. Karakteristike komunikacije su:

- mala brzina prijenosa (bit rate) preko serijske dvosmjerne linije
(ISO 7816-3 standard)
- half duplex prijenos informacija (podaci se prenose samo u jednom
smjeru u odreenom trenutku)
- komunikacija se odvija prema složenom protokolu (opisano u
poglavlju 3.2.) opisanom na slici 4.1:

APLIKACIJA
Protokol komunikacije
ITA (CAD) APDU
PROCESOR
SPECIFINE
FUNKCIJE
APDU
APDU
Odgovor
Odgovor
Naredba
T=0, T=1
Odgovor
KARTICA
Slika 4.1 Komunikacija aplikacije terminala i kartine aplikacije

21
Protokol meusobnog identificiranja kartice i itaa obino se izvodi na
sljedei nain:

- kartica generira sluajni broj i šalje ga itau/aplikaciji terminala
- aplikacija kriptira broj s dijeljenom tajnom i šalje ga natrag
pametnoj kartici
- kartica usporeuje dobiveni podatak s vlastitim
- ako je potrebno, ponavlja se isti postupak ali kartica i ita
zamjenjuju mjesta (ita šalje sluajni broj itd.)

Po uspostavi sigurne komunikacije, sve poruke izmeu itaa i kartice
verificiraju se kroz postupak autentifikacije poruke. To je broj koji se
izraunava na temelju podataka, kljua enkripcije i sluajnog broja. Ako je
dobiveni podatak izmijenjen iz bilo kojeg razloga, potrebno je ponovo poslati
poruku. Na karticama koje imaju dovoljno snažan procesor i dovoljno
memorijskog prostora, podaci se mogu verificirati pomou digitalnog potpisa
[17].

Naješe korišteni enkripcijski algoritmi su DES, 3DES (triple DES) i
RSA s kljuevima 56, 168 i 1024 bita respektivno. Nažalost ti algoritmi nisu
neprobojni (dokazali Ross Anderson i Markus Kuhn [12]). Pronalazak
sigurnosnih nedostataka omoguuje definiranje i nadopunjavanje postojeih
standarda te implementaciju novih rješenja u kojima se ti nedostaci
otklanjaju.

22
4.2. Sklopovlje
Svi podaci, lozinke i kljuevi spremljeni u EEPROM-u pametne kartice
mogu biti izbrisani ili izmijenjeni zbog neprikladnog napona napajanja. Stoga
neki sigurnosni procesori na pametnim karticama imaju implementirane
senzore za ispitivanje vanjskih uvjeta. Pravu osjetljivost teško je odrediti a
prilikom svakog umetanja/vaenja kartice iz itaa javlja se kolebanje
napona, pa su takvi procesori rijetki. Postoje i druge opasnosti za podatke na
kartici – poput zagrijavanja na visoku temperaturu ili izlaganja EEPROM-a
ultraljubiastim zrakama.


Slika 4.2 Mikromodul pametne kartice
Ako se kartica uništi i iz plastinog kuišta izvadi mikromodul (slika
4.2) mogu je i reverzni inženjering (kopiranje sklopovlja). Napad analizom
razlika u potrošnji (DPA) je statistiki napad na kriptografske algoritme (vidi
poglavlje 4.5.8.). Temelji se na usporedbi hipoteze s izmjerenim rezultatom i
može otkriti klju enkripcije. Jednostavniji napad analizom potrošnje (SPA)
takoer se može iskoristiti za otkrivanje povjerljivih podataka (vidi poglavlje
4.5.7.).

23
4.3. Operacijski sustav
Operacijski sustav pametne kartice je vrlo jednostavan operacijski
sustav sa najviše jednom niti izvršavanja koja upravlja raspoloživim
resursima kartice. To je I/O (ulazno-izlazni) podsustav kompatibilan s ISO
7816-3 i ISO 7816-4 standardima. Uz upravljanje memorijom koju koriste
funkcije visokog nivoa, neki operacijski sustavi kao dodatak ukljuuju i niz
kriptografskih funkcija.

Podaci na kartici su organizirani u stablastoj strukturi. Korijen te
strukture je jedna glavna datoteka (master file – MF) koja može sadržavati
elementarne datoteke (elementary file – EF) i povezne datoteke (dedicated
file). Elementarne datoteke su datoteke s korisnikim podacima, a povezne
datoteke sadrže podatke o drugim elementarnim i poveznim datotekama –
poput direktorija. Glavna datoteka analogna je osnovnom direktoriju. Slika
4.3 prikazuje strukturu podataka pametnih kartica.

Glavna datoteka
Povezna datoteka Elementarna datoteka Elementarna datoteka Elementarna datoteka
Elementarna datoteka Elementarna datoteka Povezna datoteka
Elementarna datoteka

Slika 4.3 Struktura podataka pametne kartice

Zaglavlja navedenih datoteka sadrže sigurnosne atribute povezane s
pravima korisnika. Aplikacija može pristupiti nekoj datoteci samo ako ima
odgovarajua prava. Osnovna prava su:

- uvijek (always – ALV), pristup datoteci sa svim pravima
- verifikacija korisnika kartice 1 (card holder verification 1 – CHV1),
pristup datoteci mogu je samo ako se korisnik verificirao kroz
CHV1, tj. ako je korisnik upisao ispravan PIN 1 ili ako je aktivna
enkripcija podataka kljuem enkripcije s brojem 1

24
- verifikacija korisnika kartice 2 (card holder verification 2 – CHV2),
pristup datoteci mogu je samo ako se korisnik verificirao kroz
CHV2, tj. ako je korisnik upisao ispravan PIN 2 ili ako je aktivna
enkripcija podataka kljuem enkripcije s brojem 2
- administrativna (administrative – ADM), pistup datotekama mogu
je samo odgovornom administrativnom tijelu
- nikad (never – NEV), pristup datoteci je zabranjen

Kartice koje koriste verifikaciju PIN-om, obino PIN-ove spremaju u
dvije elementarne datoteke (npr. EF
CHV1
i EF
CHV2
). Ako je PIN pogrešno
unesen nekoliko puta, operacijski sustav zakljuava (blokira) karticu. Broj
moguih pogrešnih unosa ovisi o programskom rješenju. Nakon
zakljuavanja, kartica se može otkljuati ako se unese poseban PIN za
otkljuavanje. I taj PIN ima broja pogrešnih unosa, koji takoer može
zakljuati pametnu karticu (u nekim sluajevima, nepovratno – pa se kartica
može „baciti“ iz sigurnosnih razloga). Ako je kartica zakljuana zbog krivog
unosa PIN-a, atributi u zaglavlju svake datoteke se mijenjaju i kod pristupa
zahtijevaju verifikaciju korisnika 1 ili 2 (CHV1 ili CHV2). Kad korisnik unese
PIN za otkljuavanje, atributi datoteka se vraaju u poetno stanje. Broja
pogrešnih unosa PIN-a vraa se na najveu vrijednost, a broja PIN-a za
otkljuavanje smanjuje se za 1 (ako postane 0, više nije mogue otkljuati
karticu).
4.4. Programska rješenja
Openito, sigurnost aplikacije odreena je sigurnošu platforme na
kojoj se aplikacija izvodi, te sigurnosnim osobinama izvedenim u samom
dizajnu aplikacije. Veina današnjih platformi (npr. BasicCard, Java Card)
dizajnirana je na nain da omoguava izgradnju, instalaciju i izvoenje
kartinih aplikacija u visoko zaštienom okruženju. Zbog prisutnosti
sigurnosnih osobina u samoj platformi, programeri koji razvijaju kartine
aplikacije mogu usredotoiti svoje napore na definiranje strategije zaštite,
umjesto na programiranje aplikacija u svrhu nadomještanja nesigurnosti
platforme.

Dobro definirana strategija zaštite mora zadovoljiti sljedea svojstva:

• Autentifikacija – pristup funkcijama i podacima kartine aplikacije mora
biti strogo provjeren. Nužno je provesti proceduru autentifikacije u cilju
provjere identiteta aplikacije terminala. Kod višeuslužnih pametnih
kartica potrebno je provjeriti identitet kartine aplikacije kojoj pristupa
aplikacija terminala, te zadovoljavanje prava pristupa objektima i
podacima spremljenima na pametnoj kartici.

25

• Tajnost – nužna je zaštita privatnosti podataka kartine aplikacije.
Onemoguiti pristup zaštienim podacima, kao što su broj rauna i iznos
kredita, bez prethodno izvršene autentifikacije. Tajni podaci, PIN i tajni
(privatni) kriptografski kljuevi, nikad ne smiju napustiti karticu.

• Integritet – potrebno je osigurati ispravnost podataka kartine aplikacije.
Podaci ne smiju biti mijenjani bez prethodno izvršene procedure
autentifikacije. Promjena podataka štiti se i provjerom potencijalnih
pogreški, npr. iznos e-novanika ne smije prijei maksimalni iznos niti
postati negativan, te ugraenim sklopovsko-programskim rješenjima
poput zaštitne sume i slino.

Razliite kartine aplikacije zahtijevaju razliite razine sigurnosti.
Implementirani sigurnosni mehanizmi esto zahtijevaju više raunarskih
resursa, smanjujui time performanse izvoenja kartinih aplikacija. Zbog
toga je potrebno za svaku kartinu aplikaciju odrediti sigurnosne zahtjeve i
prema njima implementirati odgovarajue sigurnosne mehanizme da bi se
zadovoljila željena razina sigurnosti. Sklopovska podrška, gotove procedure
i biblioteke enkripcijskih algoritama znatno olakšavaju postizanje visoke
razine sigurnosti [14].
4.4.1. Sigurnosne osobine Java Card tehnologije
Sigurnosne se osobine Java Card tehnologije direktno nadograuju i
nadopunjuju iz sigurnosnih osobina Java programskog jezika. Da bi razumjeli
sigurnosne osobine Java Card tehnologije, potrebno je prvo prouiti
sigurnosna svojstva Jave. Java Card platforma podržava podskup
programskog jezika Jave i specifikaciju stogovnog stroja prilagoenu
aplikacijama pametnih kartica (vidi poglavlje 5.2.). Zbog toga Java Card
platforma nasljeuje sigurnosne osobine ugraene u podržani podskup jezika
Jave. Sigurnost jezika Jave tvori temelje sigurnosti Java Card platforme:

- onemoguena je bilo kakva ilegalna konverzija tipova podataka, poput
pretvorbe cjelobrojnog tipa podatka u pokaziva. Dakle, jezik je strogo
tipiziran.
- nužna je provjera granice i duljine polja, prilikom pristupanja polju
podataka.
- ne koristi se aritmetika pokazivaa. Zbog toga ne postoji mogunost
krivotvorenja pokazivaa s ciljem da se zlonamjernim programima
dozvoli njuškanje po sadržaju memorije.
- inicijalizacija varijabli mora biti provedena prije korištenja istih.
- razina pristupa svim razredima, metodama i poljima je strogo
kontrolirana. Na primjer, privatna metoda ne može biti pozvana izvan
razreda u kojem je definirana.

26

U izrazito sigurnosno-osviještenom svijetu pametnih kartica, izdavai
pametnih kartica žele imati sigurnu raunarsku platformu koja e zadovoljiti
specijalne zahtjeve kartinih sustava. Dodatne sigurnosne osobine definirane
u Java Card platformi su:

- tranzijentni i postojani objektni modeli – na Java Card platformi objekti
se standardno pohranjuju u postojanoj memoriji. Iz sigurnosnih
razloga i razloga vezanih uz performanse, Java Card platforma
dopušta da se privremeni podaci, kao što su kljuevi sjednica,
pohrane kao tranzijentni objekti u RAM memoriju. Životno vrijeme
takvih objekata može biti deklarirano kao CLEAR_ON_RESET ili
CLEAR_ON_DESELECT. Što znai da se sadržaj tranzijentnog objekta
postavlja na predefiniranu vrijednost (zero, false, null) svaki
put kad kartica uspostavi novu sjednicu (reset) ili kad se deselektira
trenutno oznaena, selektirana kartina aplikacija.

- atomarnost i transakcije – na Java Card platformi podaci se pohranjuju
kao objekti u postojanu memoriju. Nad njima vršimo operacije pisanja i
itanja. Za vrijeme operacije pisanja može doi do sklopovske
pogreške ili do gubitka napajanja. Da u takvim sluajevima osigura
integritet podataka, Java Card tehnologija definira tri sigurnosna
svojstva. Kao prvo, Java Card platforma jami atomarnost u
pojedinanom ažuriranju elementa postojanog objekta ili razreda. Što
znai da kad doe do pogreške za vrijeme ažuriranja elementa,
platforma osigurava obnavljanje sadržaja elementa na prijašnju
vrijednost. Drugo, metoda arrayCopy u razredu Java
Card.framework.Util jami atomarnost blokovskog ažuriranja
višestrukih podatkovnih elemenata u polju. Ovdje atomarnost znai da
e svi bajtovi biti ili ispravno kopirani ili e kompletno odredišno polje
biti obnovljeno na prijašnju vrijednost. Tree, Java Card platforma
podržava transakcijski model u kojem kartina aplikacija atomarno
ažurira nekoliko razliitih elemenata unutar razliitih postojanih
objekata. Ili se sva ažuriranja unutar transakcije moraju izvesti
ispravno i konzistentno ili se svi postojani elementi vraaju u prijašnja
stanja.

- vatrozid kartine aplikacije – on uva kako sigurnost i integritet
sustava (JCRE) tako i sigurnost i integritet svake kartine aplikacije
koja se nalazi na Java pametnoj kartici. Vatrozid (applet firewall)
kartine aplikacije provodi izolaciju i odvaja sistemski prostor od
prostora kartine aplikacije. Svaka kartina aplikacija se izvodi unutar
konteksta (prostor objekta), a sam vatrozid predstavlja granicu meu
njima. Aplikacije ne mogu meusobno pristupati svakom objektu osim
ako su definirane unutar istog paketa (time dijele isti kontekst) ili ako

27
za pristup objektu koriste dobro definirane, sigurne mehanizme
dijeljenja objekata podržane platformom.

- dijeljenje objekata – dijeljenje objekata je u Java Card sustavu
postignuto na sljedee naine. Prvo, JCRE je povlašten korisnik s
mogunošu pristupa svim kartinim aplikacijama i svim objektima
koje one stvaraju. Drugo, kartina aplikacija potražuje pristup JCRE
servisima i resursima kroz tzv. ulazne toke, ulazne objekte JCRE-a.
Tree, kartine aplikacije koje pripadaju razliitim kontekstima mogu
dijeliti objekte ako su oni instance razreda koje implementiraju suelje
za dijeljenje objekata. Takvi objekti nazivaju se dijeljeni objekti. I
konano, kartine aplikacije i JCRE mogu dijeliti podatke preko
globalno definiranih polja.

- izvorne metode u kartinim aplikacijama – izvorne metode ne izvršava
Java Card stogovni stroj i kao takve nisu predmet sigurnosne zaštite
Java Card platforme. Zbog toga je postizdanim kartinim aplikacijama
(kartine aplikacije koje su uitane na karticu nakon što je kartica
izdana) zabranjeno koristiti izvorne metode. ROM kartine aplikacije i
predizdane kartine aplikacije su kontrolirane od strane izdavaa te se
njima dopušta korištenje izvornih metoda. U takvim kartinim
aplikacijama je suelje izvornog koda predstavljeno vlasnikom
tehnologijom kartinog izdavaa [15].

28
4.5. Mogue opasnosti i naini otklanjanja
Operacijski sustavi pametnih kartica nisu poznati poput komercijalnih
operacijskih sustava (poput Microsoft Windows-a, Unix-a i sl.), i još uvijek ne
postoje etablirana imena za njih. Ti mali sustavi posjeduju zavidnu
funkcionalnost na malom memorijskom prostoru. Ponekad sami proizvoai
operacijskih sustava za pametne kartice ne objavljuju sve sigurnosne
karakteristike, kako bi ih time zaštitili. Pri razmatranju takvih sustava obino
se spominju standardi poput ISO 7816, CEN TC224 ili EMV. U novije vrijeme
sve više se spominje i primjenjuje Java zbog svojih prednosti i raspoloživosti.
Prilikom odabira pametne kartice potrebno je odabrati jedan od tih operacijski
sustava. U ovom poglavlju ukratko se obrauju pitanja sigurnosti operacijskih
sustava pametnih kartica koja se ne nalaze unutar spomenutih standarda i
specifikacija [8].

Izgraditi kartini sustav koji je jeftin i siguran iznimno je težak posao.
Dizajneri moraju razriješiti pitanja poput programske pouzdanosti, odabrati
algoritam enkripcije i veliinu kljua, uoiti sigurnosne propuste sklopovlja i
trenutno važeih protokola. Dizajneri koji razvijaju sigurno sklopovlje suoeni
su s izazovima poput: invazivnih napada (napada prekidom napajanja) ,
analize razlike u potrošnji ili iskorištavanja greške uzrokovane nepredvienim
okolnostima (npr. vaenje kartice za vrijeme izvršavanja aplikacije). Ti
napadi opisuju se u iduim poglavljima.

Opasnosti i napadi kojima su izložene pametne kartice vrlo su skupi
(cijena sustava za otkrivanje podataka obino uvelike nadmašuje cijenu
sustava koji se želi kompromitirati) ili je potrebno puno vremena za otkrivanje
povjerljivih informacija. Tehnologija pametnih kartica se razvija brže od
tehnika napada na njih, i svaka nova generacija pametnih kartica obino
popravlja sve sigurnosne mane prethodne generacije, što ujedno znai i
otpornost na postojee napade.
4.5.1. Napad na osobni identifikacijski broj (PIN) prekidom
napajanja
Uobiajen nain izvedbe kartinih aplikacija koje koriste zaštitu svojih
podataka osobnim identifikacijskim brojem, jest broja pogrešnih unosa.
Svaki krivi unos osobnog identifikacijskog broja uzrokuje poveavanje
brojaa za jedan. Nakon što broja dosegne prije definiranu vrijednost,
kartica (funkcija ili datoteka na kartici) se zakljuava i više se ne može
koristiti (ovdje se promatraju pojednostavljeni primjeri kako bi se lakše
doarale mogue opasnosti).


29
Broja pogrešnih unosa spremljen je u EEPROM-u (privremenoj
memoriji pametne kartice). Kad korisnik unese pogrešan osobni
identifikacijski broj, potrebno je promijeniti broja u EEPROM-u, što uzrokuje
poveanu potrošnju. Tu poveanu potrošnju mogue je mjerenjem lako otkriti
(prikazano na slici 4.4).

I (ma)
t (ms)
90
100
0
30
60
-30
20 40 60 80
I (ma)
t (ms)
90
100
0
30
60
-30
20 40 60 80
Poetak provjere PIN-a
Promjena brojaa -
detekcija i prekid napajanja

Slika 4.4 Otkrivanje pogrešno unesenog PIN-a

Vremensko trajanje operacije upisivanja u EEPROM je nekoliko
milisekundi, a poveana potrošnja se može otkriti i prekinuti nakon nekoliko
mikrosekundi. Dakle, mogue je prekinuti napajanje prije promjene brojaa
unutar EEPROM-a. Sama injenica da je potrebno nešto upisivati u
EEPROM, otkriva krivo unešen osobni identifikacijski broj. Napada može
metodom pokušaja i pogrešaka iskušavati pogrešne PIN-ove, sve dok
operacijski sustav pametne kartice ne upiše ništa u EEPROM, što pokazuje
da je pogoen ispravan PIN.

Programeri pametnih kartica mogu jednostavno otkloniti mogunost
ovakvog napada: prije provjere osobnog identifikacijskog broja, broja je
potrebno umanjiti te ga nakon provjere, samo ako je PIN ispravan vratiti na
poetnu vrijednost. Bilo kakav prekid napajanja prije, tijekom ili nakon
provjere PIN-a, ostavlja broja u umanjenom stanju pa ovakav napad više
nema smisla.

Iako je ovo zastario nain napada, vjerno je prikazana najvea mana i
sigurnosna „rupa“ pametnih kartica – praenje potrošnje struje kako bi se
otkrile povjerljive informacije.

30
4.5.2. Napad prekidom napajanja
itai pametnih kartica obino nemaju mehaniku zaštitu od vaenja
pametne kartice za vrijeme njenog korištenja. Zbog toga postoji mogunost
prekida napajanja koja nije napad na zaštiene kartine podatke, nego
nenamjerna greška [8].
4.5.2.1 Nenamjerni prekid napajanja

Veina današnjih pametnih kartica koristi se u sustavu (terminal –
pametna kartica) koji dozvoljava vaenje kartice za vrijeme njenog korištenja.
Takvo vaenje uzrokuje prekid napajanja na nain koji nije specificiran
standardom. Ako se u trenutku vaenja pametne kartice upravo izvršavalo
pisanje u EEPROM, velika je vjerojatnost da e korištena memorijska adresa
ostati u nedefiniranom stanju, s nedefiniranim podacima. Bez mjera zaštite,
može doi do uništenja važnih informacija, pa ak i do toga da cijela pametna
kartica postane neupotrebljiva. U najgorem sluaju, mogue je odavanje
povjerljivih informacija (iako su u tom sluaju, one korisne samo
zaposlenicima – korisnicima kartinog sustava).

Manjak standarda i specifikacija koji definiraju protumjere, dovodi do
upitnog integriteta podataka – koji bi trebao biti najvažniji kriterij sigurnosti
pametnih kartica kao vrhunskog tehnološkog rješenja. Rješenja raznih
proizvoaa su, iz navedenih razloga, razliita i iz istog razloga i razliite
kvalitete.

4.5.2.2 Namjerni prekid napajanja

Ovakav napad je poznat kao napad na generator sluajnih brojeva
(random seed attack). Jedan od problema pametnih kartica je interno
generiranje kvazi-sluajnih brojeva. DES algoritam koristi stari kvazi-sluajni
broj da bi generirao novi koji treba spremiti u EEPROM za generiranje
sljedeih kvazi-sluajnih brojeva. Pisanje u EEPROM se zbog EEPROM
tehnologije odvija u dva koraka: u prvom se svaki bajt EEPROM elije
postavlja na nulu, a u drugom koraku se upisuju nove vrijednosti.


31
Najbolji trenutak za prekid napajanja je nakon što su u prvom koraku u
EEPROM eliju upisane nule (vidi sliku 4.5). Na taj nain dobiva se poznato
sjeme za nove kvazi-sluajne brojeve i mogu je gubitak povjerljivih
podataka.
EEPROM
......
......
10100101
.....
EEPROM
......
......
00000000
.....
EEPROM
......
......
00111110
.....
Poetna vrijednost
Brisanje EEPROM elije
Upis nove vrijednosti
Najbolji trenutak za
prekid napajanja

Slika 4.5 Ciklus upisivanja u EEPROM

Za obje vrste prekida napajanja postoje zaštitne protumjere koje su
osnovni preduvjet sigurnosti pametnih kartica. Na tržištu se mogu nai dvije
vrste rješenja [8]:

- ograniena zaštita transakcije: nakon prekida napajanja ošteeni
podaci se prepoznaju i dojavljuje ih operacijski sustav pametne
kartice, funkcionalnost pametne kartice nije narušena, ali podaci su
izgubljeni. Ovakva zaštita nije dovoljna za zahtjevne aplikacije, a njena
prednost je jednostavna implementacija.

- potpuna zaštita transakcije: prekid napajanja nakon primitka
naredbe, a prije slanja odgovora s pametne kartice, uzrokuje
automatsku rekonstrukciju podataka kao na poetku naredbe.

Spomenuta rješenja nisu nova: nazivi poput jedinine transakcije
(atomized transaction), shema potvrivanja transakcija (commitment
shemes) i backtrace meuspremnika ve su poznata iz implementacija baza
podataka. No, potpuna zaštita transakcije dovodi do smanjenja uinkovitosti
transakcije. Stari podaci se prvo moraju sauvati, a potom upisivati novi –
broj ciklusa pisanja/itanja u EEPROM se u najmanju ruku udvostruuje u
usporedbi sa sluajem u kojem nema zaštite transakcije.


32
Uinkovitost se kod razliitih proizvoaa pametnih kartica znatno
razlikuje. U stvarnosti se broj ciklusa pisanja višestruko poveava zbog
mehanizama koji spremaju, upisuju i dodaju administrativne podatke,
zauzimaju, iste, pune i otpuštaju backtrace meuspremnik, pa broj može biti
i pet do deset puta vei. Najbolji mehanizmi imaju broj ciklusa pisanja
otprilike trostruko vei od nezaštiene inaice zbog specijalnih aplikacija koje
uinkovito koriste prirunu (cache) memoriju. Postoje rješenja koja štite samo
važnije transakcije (npr. plaanje), manje važne transakcije su nezaštiene.
Takva rješenja prihvatljiva su na jeftinim pametnim karticama s ogranienim
EEPROM-om.
4.5.3. Defragmentacija memorije

Pitanje defragmentacije memorije dugo je bilo neriješeno pitanje na
podruju pametnih kartica. Prilikom brisanja ili upisivanja datoteka u
EEPROM, javljaju se manje ili vee „rupe“ u memoriji ako je nova datoteka
manja od raspoložive memorije. Memorija koja sadrži takva mala
neiskorištena podruja, zove se fragmentirana memorija (vidi sliku 4.6).

1) Inicijalizacija
2) Brisanje
3) Fragmentirana
memorija
Stvaranje datoteka:
- razne aplikacije
- Java appleti
- brisanje aplikacija
- izvršavanje aplikacija
- privremene datoteke
Nema mjesta u
memoriji!
Novi podaci

Slika 4.6 Fragmentacija memorije pametne kartice

U rješenjima s optimizacijom memorije, fragmentacija se ne može
izbjei. Na primjer programski jezik Java esto mijenja applete, pa se za
vrijeme itanja/brisanja appleta u EEPROM-u pojavljuju neiskorištena
podruja. U ekstremnom sluaju može biti slobodno i preko 50% memorije, a
da nema dovoljno velikog dijela za novu datoteku.

33
Defragmentacija je rješenje – postupak u kojem se sav aktivni sadržaj
memorije kopira u kontinuiranom poretku, spajaju se sva manja neiskorištena
memorijska podruja u jedno – slobodnu memoriju. Java programski jezik
nakon izvršavanja programa poziva metodu za skupljanje smea (garbage
collection), ali pritom ne optimizira ono što ostane u memoriji (fiziki sadržaj).
I ovdje, kao i na stolnim raunalima, javlja se problem fizikih referenci – jer
se fizike adrese datoteka ili objekata spremaju kao pokazivai, pa se kod
defragmentacije moraju preraunati i promijeniti sve odgovarajue reference
u memoriji pametne kartice. Defragmentacija naravno mora biti otporna na
prekid napajanja. Kako postupak defragmentacije može trajati i do 10
sekundi, i nije mogue napraviti backtrace meuspremnik u raspoloživom
EEPROM-u, dosad se smatralo da defragmentacija nije izvediva na
pametnim karticama.

No, 1998. godine IBM je razvio sofisticiranu metodu za rješavanje
problema defragmentacije, i može se rei da je defragmentacija pametnih
kartica implementirana, iako zahtjeva vrlo specifinu potporu. Predložena
metoda omoguava brzu defragmentaciju i potpuno je otporna na prekid
napajanja [18]. Spomenuta razmatranja su osnova za daljnje proširivanje, a
cilj je automatski postupak defragmentacije, nevidljiv korisnicima pametnih
kartica.
4.5.4. Greške u EEPROM-u
Puno neugodniji problem su greške u EEPROM-u. Proizvoai
mikroipova garantiraju uvanje podataka u vremenu od 10 godina. To je
statistiki rezultat koji teoretski ima i odstupanja - rijetke EEPROM greške
(npr. promjenu memorijskih podataka kada pametna kartica nije ukljuena).
Zapravo se takve promjene (npr. nekog bita u memorij) javljaju vrlo rijetko u
usporedbi s gubitkom pametnih kartica ili njihovim uništenjem, ali se trebaju
razmotriti zbog mogunosti njihova javljanja. Lokacija promijenjenog bita ne
može se predvidjeti, a stvarno iskustvo pokazuje da se (Murphyev zakon)
obino mijenja najvažniji bit. Takva promjena može uzrokovati sigurnosni
problem i brigu korisnika zbog nepoznavanja uzroka greške.

Namjerna promjena memorijskog sadržaja na pametnoj kartici
mogua je u ekstremnim uvjetima poput izlaganja ultraljubiastom ili
nuklearnom zraenju, no takav napad je gotovo nemogue izvesti precizno (u
sadašnjim uvjetima) i rezultat je nepredvidiv.

Mogua namjerna ili nenamjerna promjena bita u memoriji pametne
kartice zahtjeva adekvatnu zaštitu u operacijskom sustavu. Zbog toga svaki
sadržaj EEPROM memorije mora imati zaštitnu sumu (checksum).
Navedenog zahtjeva nema u postojeim standardima niti u veini
specifikacija, ali ga je mogue nai u sigurnosnim karakteristikama
kvalitetnijih rješenja. Primjer uinkovitog naina izraunavanja zaštitne sume

34
može biti XOR operacija izmeu bajtova koje treba zaštititi. Meutim,
dokazano je da je u sluaju malog broja promijenjenih bitova ADD operacija
izmeu bajtova puno uinkovitija i jednako elegantna kao XOR operacija.

I ovdje, kao i kod zaštite od prekida napajanja, svaka mjera zaštite od
promjene bitova memorije uzrokuje smanjenje uinkovitosti sustava pametne
kartice jer je potrebno dodatno vrijeme za izraunavanje zaštitne sume, kao i
sigurna promjena zaštitne sume u sluaju promjene podataka. Kvalitetni
operativni sustavi pametnih kartica primjenjuju specijalne mehanizme
prirune (cache) memorije kako bi minimizirali smanjenje uinkovitosti.
4.5.5. Vremenski napadi
Navedeni primjeri koncentriraju se na trenutak pisanja u EEPROM.
Kako je za rad pametne kartice potrebna energija, još jedan izvor opasnosti
za podatke kojima se koristi pametna kartica jest potrošnja struje.

Zapravo svaki podatak koji se sprema na ili koji se ita iz pametne
kartice zahtjeva specifinu koliinu struje, koju možemo na neki nain
smatrati „otiskom“ odgovarajueg podatka (footstep). Kako je to realna
opasnost, proizvoai mikroipova razvili su uinkovite mehanizme zaštite.
Najbolji nain zaštite postiže se kombinacijom programskih i sklopovskih
rješenja.

Svrha napada na „otisak“ potrošnje obino je otkrivanje kljueva ili
PIN-ova pametne kartice. Dosad je najuinkovitiji nain napada bio
vremenski napad.

Korelacija izmeu potrošnje struje i podataka koji se obrauju je
funkcija broja jedinica sadržanih unutar podataka (ako podatak ima više
bitova s vrijednošu „1“, potrebno je više energije za manipulaciju njime).
Struju definiramo kao kretanje naboja u neki od memorijskih registara.
Izravan prijevod u bitove nije mogu, osim ako operacija koja se prati nije
operacija nad bitom. No, mogue je prepoznati odreeni uzorak u potrošnji
struje – razmotrimo kao primjer lošu izvedbu verifikacije PIN-a:

Usporedi_PIN:
for ( i=0; i<length(PIN); i++ )
{
if ( PIN[i] != Ispravan_PIN[i] )
return(1)
}
return(0);

35
Ovakva oita izvedba provjere PIN-a nije dozvoljena u operacijskom
sustavu pametne kartice jer dozvoljava jednostavan napad na PIN (slika 4.7).

I (ma)
t (ms)
90
1000
0
30
60
-30
200 400 600 800
I (ma)
t (ms)
90
1000
0
30
60
-30
400 600 800
Referentna toka
200
Razlika trajanju

Slika 4.7 Otkrivanje podataka vremenskim napadom

Funkcija Usporedi_PIN usporeuje uneseni PIN s tonim PIN-om
znak po znak. Na prvi razliit znak izlazi se iz funkcije. Ako pretpostavimo da
nema brojaa „krivih pokušaja“, napada može mjerenjem uzoraka potrošnje
struje vidjeti slinost prilikom iskušavanja PIN-ova i namještati uneseni PIN
sve dok ne pogodi idui znak. Pritom se može ravnati vremenskim trajanjem
obrade i pravilom – što je obrada duža to bolje.

Ve spomenute mjere zaštite od napada PIN-a prekidom napajanja
mogu se primijeniti i protiv vremenskog napada, no nije teško zamisliti
situaciju u kojoj se mjerenje potrošnje struje kartice može iskoristiti za
otkrivanje povjerljivih podataka, ako nisu prikladno zaštieni. Jednostavan
primjer bila bi lozinka koja nema broja krivih unosa ili je on dovoljno velik, pa
je mogue donijeti zakljuke iz uzoraka dobivenih mjerenjem potrošnje struje
pametne kartice. Toka koju bi u tom sluaju trebalo promatrati jest npr.

36
provjera pariteta, u kojoj se ponovo obrauju bajtovi ili bitovi lozinke. Iako je
na ovaj nain teško otkriti podatke mogunost ovakvog napada mora biti
sprijeena, pogotovo kod usporedbe npr. certifikata koji se koriste za
transakcije plaanja.

Sigurnosna zaštita protiv vremenskog napada je generiranje jednakog
broja procesorskih ciklusa za razliite namjene, te onemoguavanje
otkrivanja podataka iz mjerenja potrošnje struje (za pogrešan i ispravan unos
uzorci bi trebali biti isti). Korištenje takvih mjera ne smeta krajnjem korisniku
koji primjenu zaštitnih mjera može primijetiti jedino na sigurnosnom
odobrenju dobivenom s pametnom karticom. Izloženost i opasnost ovakve
vrste napada još uvijek je slabo specificirana i dokumentirana [8].
4.5.6. Analiza diferencijalnih grešaka

Prije nekoliko godina industrija pametnih kartica bila je uzdrmana
objavom kriptografskih razmatranja o jednostavnom razbijanju kljueva na
pametnim karticama (Bellcore napad na RSA algoritam i upotreba analize
diferencijalnih grešaka – Differential Fault Analysis). Oba napada temelje se
na pretpostavci da napada može postaviti/obrisati odreeni bit u memoriji u
odreenom trenutku. To nije mogue u današnjim rješenjima, pa se
mogunost ovakvog napada razmatra samo teoretski.

Dobro je poznato da se tipini DES klju sastoji od 56 bitova, od kojih
svaki ima vrijednost „0“ ili „1“. U prvom koraku izvršavamo normalnu
operaciju enkripcije/autentifikacije u kojoj se koristi klju koji želimo otkriti.
Drugi korak jest postavljanje vrijednosti odreenog bita kljua u „0“
(pretpostavimo da možemo postaviti vrijednost bilo kojeg bita kljua). Ako
sada ponovo izvršimo operaciju iz prvog koraka, dobiti emo ili isti ili razliit
rezultat.

Ako je rezultat razliit, možemo zakljuiti da je vrijednost
promijenjenog bita prije promjene bila „1“ – a ako je rezultat isti, vrijednost
tog bita mora biti „0“. Otkriven je jedan bit. Na isti nain mogu se otkriti i ostali
bitovi. Ovo je samo grubi opis analize diferencijalnih grešaka, u stvarnosti bi
otkrivanje povjerljivih podataka bilo puno kompliciranije. Kako se poetna
pretpostavka promjene vrijednosti bita u memoriji pametne kartice ne može
ostvariti, ovakva vrsta napada nije mogua u današnjim sustavima pametnih
kartica.

37
4.5.7. Napad analizom potrošnje
Kao realna mogunost otkrivanja povjerljivih podataka puno opasniji
su napadi izravnim mjerenjem potrošnje struje. Kod vremenskog napada
usporeivali su se uzorci mjerenja potrošnje struje u korelaciji s vremenskim
trajanjem neke operacije. Utvreno je da iste operacije nad istim podacima
imaju iste uzorke mjerenja struje. Analogno, ista operacija nad razliitim
podacima daje razliite uzorke mjerenja struje, a razlika je povezana s
podacima koji se obrauju. Te razlike u mjerenjima struje mogu se iskoristiti
za otkrivanje povjerljivih podataka.

Fiziki, razlike u mjerenjima struje uzrokovane su brojem bitova sa
sadržajem „1“ u nekom registru, no za uspješan napad nije potrebno
razumijevanje tih detalja. Dvije eše korištene vrste ovakvog napada su:
- analiza potrošnje (Single Power Analysis – SPA)
- analiza razlika u potrošnji (Differential Power Analysis – DPA)

Napad analizom potrošnje je posebno primjenjiv ako se npr. bitovi
kljua obrauju jedan za drugim (kao u procedurama za provjeru pariteta
kljua). U takvoj situaciji mjerenjem uzoraka potrošnje struje može se otkriti
razlika u ovisnosti je li obraivani bit „0“ ili „1“ i mogue je direktno otkrivanje
bitova kljua. Ako se povjerljivi podaci ne obrauju bit po bit (što se uvijek
može izbjei), napad analizom potrošnje je mnogo zamršeniji i obino ga
izvode korisnici (insiders) koji znaju izvorni kod operacije koja se analizira.
Takvi korisnici mogu imati i druge primamljivije naine za otkrivanje
povjerljivih podataka jednostavnije od teškog i preciznog mjerenja potrebnog
za uspješan napad analizom potrošnje. Meutim razmatranja vezana za
napad analizom potrošnje mogu se koristiti kao podloga za napad analizom
razlika u potrošnji [8].

Osim u DES algoritmu, obrada podataka bit po bit može se izbjei,
posebno u procedurama provjere pariteta kljua. Za DES algoritam treba
ostvariti prikladnu zaštitu koja otklanja mogunost SPA/DPA napada.
Vjerojatnost uspješnog napada analizom potrošnje (SPA) vea je nego
vjerojatnost uspješnog napada analizom razlika u potrošnji (DPA) ali zahtjeva
mnogo podataka poznatih samo programerima promatranog sustava i
detaljnu istragu (za napad na pametnu karticu koja nema odgovarajuu
zaštitu).

38
4.5.8. Napad analizom razlika u potrošnji

Napad analizom razlika u potrošnji lakše je izvediv od napada
analizom potrošnje i smatra se najopasnijom vrstom napada kojoj su izložene
današnje pametne kartice. Predstavio ga je Paul Kocher 1998. godine.

Ovakva vrsta napada ne zahtjeva poznavanje programskog rješenja
unutar pametne kartice, pa je primamljiv napadaima koji na raspolaganju
imaju odgovarajuu opremu za mjerenje. Za uspješan napad potreban je
velik broj mjerenja potrošnje struje DES operacija enkripcije/autentifikacije s
istim kljuem.

Odabiru se sigurnosne operacije s poznatim ulaznim ili izlaznim
podacima. Nakon obrade nekoliko tisua uzoraka mjerenja potrošnje struje,
odgovarajue uzorke treba „poravnati“ kako bi se moglo tono odrediti
pojedine (npr. DES) operacije u ovisnosti o taktu. Promatraju se operacije u
prvom krugu DES algoritma, jer se time smanjuje broj podataka koje treba
obraditi.

Svakom od mjerenih uzoraka pridjeljuje se pozitivan ili negativan
predznak, ovisno o pretpostavljenom podkljuu (K
i
). Osnovni DES algoritam
koristi 56-bitni klju podijeljen na 6-bitne podkljueve koji se koriste u prvom
krugu algoritma. Napad analizom razlika u potrošnji pokušava nai jedan od
tih kljueva kako bi se mogao rekonstruirati glavni klju.

Potrebno je generirati svaki od 64 mogua podkljua, te svakom od N
mjerenih uzoraka pridijeliti pozitivan ili negativan predznak u ovisnosti o
rezultatu pretpostavke. Ako se potom N poravnanih uzoraka zbroji, rezultat
e biti šum u 63 od 64 sluaja. U jednom sluaju postoji jedan ili više skokova
u mjerenju potrošnje koji su uzrokovani tonom pretpostavkom (doprinos
nekoliko elektrona koji u svakom od uzroka odgovaraju pogoenom
podkljuu).

Generiranje sljedeih 64 podkljueva za iduu operaciju supstitucije
DES algoritma otkriva svih 48 bitova kljua koji se koriste u prvom krugu (8
podkljueva). Drugi krug otkriva preostalih 8 bitova. Pridavanje
odgovarajueg predznaka može se izvesti ako poznajemo ulazni, izlazni
podatak i pretpostavljeni klju, a ovisi o predvianju rezultata operacije
supstitucije DES algoritma. Ovdje se iznosi samo gruba zamisao napada,
detaljno su opisani u literaturi [18] [19].


39
Oprema potrebna za izvoenje ovakvog napada je vrlo skupa i
dostupna npr. istraživakim institutima i fakultetima, što otežava njegovu
izvedbu. Najvea zapreka analizi razlika u potrošnji jest ogranien broj DES
operacija s istim kljuem. Dok god klju nije poznat, treba ponavljati operaciju
koja obino posjeduje broja pogrešnih pokušaja. Ako postoji takav broja,
broj uzoraka koji se mogu dobiti mjerenjem ogranien je na maksimalan broj
pogrešnih pokušaja što znatno otežava otkrivanje kljua, pa se može rei da
je to prikladna zaštitna mjera. Novija sklopovska rješenja i operacijski sustavi
pametnih kartica takoer imaju ugraenu zaštitu od napada analizom razlika
u potrošnji, pa je on gotovo nemogu ak i s neogranienim brojem mjerenih
uzoraka. Neke od zaštitnih mjera su:

- tehnološka barijera – napredna 0.6 mikronska tehnologija uvelike
smanjuje potrošnju i relativne varijacije operativnih parametara
(napon, struja) pametnih kartica.

- fluktuacija takta – posebna programska rješenja koja, kada se
ispravno koriste, iz ugraenih aplikacija na pametnoj kartici stvaraju
vremenski varijabilne inaice.

- nepredvidljivo ponašanje – ugraeni vremenski okida (timer) s
mogunošu slanja zahtjeva za prekid (interrupt) i nepredvidivi
generator brojeva stvaraju nepredvidive varijacije kod izvršavanja
programskih rješenja, i znatnu razliku u uzorku potrošnje struje za isti
kod.

- robustan dizajn – dizajniranje je modularno i dozvoljava promjene
sklopovlja radi brze i uinkovite primjene, omoguen je brz odgovor na
mogue nove napade.

- kontrola memorije za višeuslužne pametne kartice – napredan sustav
kontrole pristupa memoriji osigurava sigurnu podršku višeuslužnim
pametnim karticama.

- sigurnosni mehanizmi i sklopovske funkcije – skup sigurnosnih
mehanizama i sklopovskih funkcija koje aplikacijama omoguuju
otkrivanje i zaštitu od mogueg napada poput neispravnih uvjeta rada,
pogrešnog adresiranja, narušavanja integriteta mikroprocesora i
slino. Mogui odgovori na napad su: slanje zahtjeva za prekid,
ponovno pokretanje programa (reset), trenutno brisanje svih podataka
u RAM-u i reprogramiranje EEPROM-a.


40
4.6. Kako riješiti pitanje sigurnosti pametnih kartica?
Pametne kartice su primjenjive u mnogim podrujima. Zamisao je
objediniti što više aplikacija na jednoj kartici, i smanjiti broj kartica koje
svakodnevno koristimo. Npr. kartica koju nam je izdala jedna banka mogla bi
se koristiti i za bankovne raune drugih banaka, za knjižnice, osiguranja,
benzinske crpke, hotele, za kupovinu zrakoplovnih karata i sl. Kartica bi
mogla imati ugraene osnovne programe kod izdavanja i podršku za
dodavanje novih programa, naravno, uz uvjet da je dodavanje dozvolio
izdava kartica. Ako imamo samo jednu karticu, a više kartinih aplikacija
koje su na kartici i više aplikacija terminala koje koriste karticu, namee se
pitanje sigurnosti. Što ako kartica doe u krive ruke, može li jedan davaoc
usluga (npr. knjižniar) mijenjati podatke kartinih aplikacija drugih davaoca
(npr. policijskog službenika). Kakva je sigurnost pri prijenosu povjerljivih
podataka s kartice preko Interneta ili mobitelom putem WAP-a. Može li se i
kartini sustav zaraziti virusom? Može li netko ukrasti novac s nje ili otkriti
gdje ste ga trošili?

Nabrojana su razna sigurnosna pitanja koja moraju biti riješena tako
da se zaštiti korisnik i njegovi (povjerljivi) podaci. Izdavai kartica i
proizvoai programskih rješenja za pametne kartice moraju koristiti
zajedniki jezik, u svrhu što kvalitetnijeg i sigurnijeg proizvoda (npr.
sklopovskim rješenjima prilikom izrade kartica zaštititi mogue programske
sigurnosne rupe i obrnuto). Neke od odgovora na ta pitanja sadrži Common
Criteria (ISO 14508) standard, no ta pitanja potiu druga [16].

Poetni koraci u podruju višeuslužnih pametnih kartica uinjeni su:
- u Europi, s EuroSmart standardom koji okuplja proizvoae
pametnih kartica i ISO 14508 standard.
- u Sjedinjenim Amerikim državama, Visa i Smart Card Security
User“s Group (SCSUG) razvojem SCSUG-Smart Card Protection
Profile koji izražava sigurnosne zahtjeve korisnika.
- u Tajvanu, na Industrial Technology Research Institute (ITRI)
razvojem Comprehensive Smart Card Architecture.
- u Sjedinjenim Amerikim državama, Visa i GlobalPlatform razvojem
GlobalPlatform Card Specification i GlobalPlatform Card Security
Requirements Specification temeljenoj na ITRI arhitekturi.
- u Sjedinjenim Amerikim državama, gdje je Visa razvila Visa Open
Platform Protection Profile (OP
3
).

Specifikacijom sigurnosnih zahtjeva omoguen je razvoj pametnih
kartica kompatibilnih sa svima zahtjevima, dok se ISO SC
27
WG
3
rad bavi
problemima evaluacije sustava koji trebaju zadovoljiti spomenute sigurnosne
kriterije.

41
5. Usporedba razvojnih platformi
Na tržištu postoji nekoliko programskih jezika u kojima se izrauju
kartine aplikacije (Java, ZBasic). Aplikacije terminala su takoer odreene
proizvoaem, tj. sueljem (API-jem) koje je razvio proizvoa. U ovom
poglavlju opisuje se razvoj kartinih aplikacija u Javi i ZBasicu.

Nekad je postojalo svega nekoliko proizvoaa pametnih kartica.
Danas je taj broj mnogo vei. Razlog je kljuni dio tehnologije pametnih
kartica – operacijski sustav. Tvrtke koje nude samo operacijske sustave
(programe), omoguuju raznim proizvoaima silicijskih mikromodula
(sklopovlja) jednostavan i uspješan izlazak na tržište pametnih kartica.
Operacijski sustav povezuje instrukcije kartinih aplikacija sa sklopovljem
silicijskog mikromodula. Velike tvrtke koje su ve poznata imena na podruju
pametnih kartica (Schlumberger, Gemplus, Oberthur, Giesecke & Devrient,
Orga) uložile su godine istraživanja u razvoj operacijskih sustava pametnih
kartica. Razvijeni su sigurni programski sustavi za rad s ogranienim
mogunostima kojima raspolažu pametne kartice. Ti proizvoai prodaju
svoje operacijske sustave uz licenciranje i obino je najpovoljnija kupovina
programa u kompletu s pametnom karticom istog proizvoaa (monopol).

No, sve više novih proizvoaa pametnih kartica licencira operacijske
sustave od nezavisnih tvrtki (koje ne proizvode sklopovlje, tj. mikromodule).
Veinom se temelje na Java Card platformi (razvio Sun Microsystems),
vodeoj u programskoj podršci za kartice s mikromodulom. Neovisnost
proizvoaa sklopovlja i proizvoaa programa pametnih kartica uzrokuje
sniženje cijena na dva naina:

- više proizvoaa nudi pametne kartice (bez operacijskog sustava)

- korisnici mogu zasebno kupiti pametnu karticu, operacijski sustav
za nju, terminal i ita – od razliitih proizvoaa

Npr. mnoge tvrtke koje proizvode pametne kartice za Visa
International bankovni sustav, nisu poznata imena (na svjetskom tržištu), ali
nude sklopovsko rješenje s potporom za Java Card i GlobalPlatform (vidi
poglavlje 5.2.3.). Operacijski sustav koji koristi 14 milijuna Visa izdanih
pametnih kartica je JCOP (razvio IBM Corp.). Slino rješenje koristi i
MasterCard International ali s Multos operacijskim sustavom – preko 2
milijuna kartica izdano je u Južnoj Koreji, Tajvanu, Maleziji i Filipinima. Velike
tvrtke tako omoguuju manje poznatim proizvoaima uspjeh na tržištu, a
korisnici na raspolaganju imaju jeftiniji proizvod.

42
Tradicionalni proizvoai pametnih kartica još uvijek tvrde da e
njihovo iskustvo i strunost na kraju prevladati – pametne kartice su vrlo
specifine, mnogo sigurnosnih osobina mora biti ugraeno u operacijski
sustav kako bi se postigla najvea razina sigurnosti. Pored toga tradicionalni
proizvoai pokušavaju zadržati tržište licenciranjem svojih operacijskih
sustava za pametne kartice (poput SchlumbergerSema) drugim
proizvoaima sklopovlja.

Odabir operacijskog sustava za kartini sustav ovisi o performansama
i kompatibilnosti sa standardima. Mnogo novih kartinih operacijskih sustava
nije detaljno ispitano (sigurnosni certifikati su skupi i vremenski zahtjevni) ali
imaju veu uinkovitost od poznatih imena. Kartice razvijene prema Java
Card specifikaciji imaju odreenu slobodu u interpretaciji nekih funkcija (npr.
uitavanje aplikacije na karticu) što može uzrokovati probleme (npr. GSM
tvrtki jer ne može koristiti iste aplikacije terminala za razliite Java Card
pametne kartice). Novija rješenja su sve više standardizirana i uz
organizacije koje donose standarde izbjei e se problem interoperabilnosti.
Sve vea procesorska snaga pametnih kartica približava ih osobnim
raunalima. Programeri osobnih raunala ukljuiti e se u razvoj sustava
pametnih kartica i donijeti nova i bolja rješenja.

Meu proizvoaima neovisnih rješenja je i tvrtka ZeitControl. S
proizvodnjom BasicCard pametnih kartica zapoela je 1996. godine.
BasicCard pametne kartice su jeftinije od Java Card pametnih kartica jer ne
zahtijevaju tako složen kartini operacijski sustav (COS) i mikrokontroler se
može smjestiti na manjem silicijskom ipu. Tvrtke koje nude cjelovita kartina
rješenja odabiru BasicCard kako bi poveale svoju zaradu [11].


43
5.1. BasicCard pametne kartice
Implementacija kartinih sustava dosad se zasnivala na dobrom
poznavanju specifinog jezika i specifinih suelja pojedinih proizvoaa.
Osnovna prednost ZBasic – BasicCard pametnih kartica jest jednostavnost i
niska cijena. Kupljena kartica se može programirati u vrlo kratkom vremenu i
ne zahtjeva veliko iskustvo. ZBasic je jezik slian Basicu (još iz vremena
DOS-a). Prilagoen je operacijskom sustavu pametne kartice s ogranienim
resursima. Porodica BasicCard pametnih kartica dijeli se na:

- Compact
- Enhanced
- Professional

Svojstva BasicCard pametnih kartica [4]:

- niska cijena – razvojni sustav je besplatan (može se skinuti s
Interneta), veina BasicCard pametnih kartica ima cijenu upola
nižu od ostalih trenutno raspoloživih pametnih kartica.

- jednostavno programiranje – gotovo svatko može programirati u
ZBasicu, ili to može nauiti u kratkom vremenu. Naredbe kartine
aplikacije definiraju se poput funkcija u Basic programskom jeziku.
Datoteni sustav BasicCard pametne kartice slian je datotenom
sustavu obine diskete. Ugraena je podrška za enkripcijske
algoritme, a upisivanje i itanje iz EEPROM-a je vrlo jednostavno.

- sigurnost:
o Professional BasicCard podržava enkripciju javnog kljua
RSA, ECC, te AES i SHA-1 algoritme
o Enhanced BasicCard podržava DES, SHA-1, ECC i IDEA
algoritme
o Compact BasicCard podržava SG-LFSR algoritam

- kompatibilnost s ISO standardom – deklariranje ISO kompatibilnih
naredbi u ZBasicu jednostavno je poput deklariranja funkcije, stoga
je razvoj nove ISO kompatibilne pametne kartice vrlo brz.


44
5.1.1. BasicCard tehnologija
ZeitControl Cardsystems je njemaka tvrtka koja proizvodi pametne
kartice i opremu. ZeitControl nudi nekoliko vrsta pametnih kartica.
Najjednostavnija „Compact“ pametna kartica s 1 KB EEPROM memorije,
dovoljna je za male korisnike programe. Za kompleksnije programe, na
raspolaganju su „Enhanced“ i „ Professional“ inaice s najviše 32 KB
EEPROM memorije. Operacijski sustav na kartici temelji se na Basic
interpreteru. Slinost s Java Card tehnologijom i Java programskim jezikom
je velika. Kao što za Javu postoji specifian jezini podskup koji „razumije“
Java Card interpreter, tako i na BasicCard pametnim karticama interpreter
koristi samo dio Basic programskog jezika. Slino Javi, taj interpreter
izvršava P-code (razlikuje se od Java bytecode u instrukcijskom skupu i
tipovima podataka koje podržava [4][15]). U „Enhanced“ karticama interpreter
se izvodi u 17 KB ROM memorije, dok se „Professional“ kartice koriste
varijabilnom koliinom EEPROM memorije za izvedbu Basic interpretera.
Osim spomenutog najjednostavnijeg modela, jae inaice sadrže prilino
sveobuhvatnu implementaciju Basic programskog jezika (ZBasic). Osim byte,
integer i long tipova podataka, podržani su i IEEE brojevi s pominom
tokom. Na raspolaganju je datoteni sustav slian DOS-u (koristi EEPROM
memoriju kao prostor za spremanje podataka) i procedure za pretvorbu
podataka u znakovni niz (string) [9].

Prvenstvena namjena BasicCard pametnih kartica je u trgovini, stoga
sve kartice imaju u operacijski sustav ugraenu enkripcijsku potporu.
Algoritmi enkripcije su složeni i prosjenom korisniku previše zahtjevni, pa
takva ugraena sposobnost znatno olakšava razvoj sigurnih rješenja.
BasicCard pametne kartice izraene su prema ISO standardima važeima na
podruju pametnih kartica. Compact i Enhanced inaice za komunikaciju
koriste T=1 protokol, a Professional inaice uz navedeni koriste i T=0
protokol.
5.1.2. ZBasic programski jezik
ZBasic je potpuno funkcionalan Basic programski jezik. Podržava
pozive funkcija i procedura, korisniki definirane podatke, ulazno-izlazne
datotene operacije, naredbe pretprocesoru itd. Zbog specifinih zahtjeva i
uvjeta rada (pametna kartica) podupire i deklariranje naredbi (commands),
njihovo pozivanje, ulazno-izlaznu enkripciju i kontrolu pristupa datotekama.

ZBasic program sastoji se od jedne kompilacijske jedinice. Kod
prevoenja nema faze povezivanja (linking stage) kako bi se prevoditelju
omoguilo izraunavanje prostora potrebnog za spremanje cijelog programa
na pametnu karticu i uinkovito iskorištenje RAM-a. Izvorni kod se može
raspodijeliti po datotekama, ali sve potrebne datoteke trebaju s kljunom
rijei #Include biti ukljuene u datoteku koja se prevodi.

45
5.1.3. Arhitektura BasicCard pametne kartice
Meudjelovanje izmeu terminala i kartine aplikacije izvodi se
naredbama (commands). Za vrijeme razvoja kartine aplikacije potrebno je
specificirati naredbe koje e ta aplikacija moi izvršavati. Prema ISO 7816-4
standardu za definiranje naredbe se koriste po dva bajta za odabir razreda
(CLA) i instrukcije (INS) unutar razreda (vidi poglavlje 3.2.). Na slici 5.1
prikazana je arhitektura BasicCard pametne kartice:
Operacijski sustav
P-Code interpreter P-Code stog
BasicCard Virtual Machine
Kartina aplikacija
Programsko suelje -
korisniki definirane naredbe
Predefinirane naredbe
(zajednike svim BasicCard
pametnim karticama)
Suelje itaa (Common Reader Interface)
BasicCard naredbeno suelje (Command Interface)
Aplikacija terminala (C, Visual Basic, Deplhi)

Slika 5.1 Arhitektura BasicCard pametne kartice

Uz parametre broja razreda i broja instrukcije, definicija naredbe
sastoji se i od tone definicije parametara koji se prosljeuju na karticu s
terminala ili ih terminal ita s kartice. Kartina aplikacija BasicCard pametne
kartice zapravo je grupa funkcija koje se izvršavaju po primitku naredbi od
strane terminala. Pametna kartica je podreeni ureaj (slave), dok je terminal
nadreen (master) i aplikacije koje se izvršavaju na terminalu odabiru
naredbe koje e izvršavati kartina aplikacija. Kartina aplikacija može
sadržavati i inicijalizacijski kod koji se pokree svaki puta kada se kartica
umetne u ita [4].

46
5.1.3.1 BasicCard operacijski sustav

Operacijski sustav BasicCard pametne kartice ima sljedee
karakteristike:

- potpunu implementaciju T=1 komunikacijskog protokola koja
ukljuuje ulanavanje, ponovno slanje i produženje vremena
ekanja (vidi poglavlje 3.2).

- predefinirane naredbe za uitavanje programa i podataka na
pametnu karticu, ukljuujui automatsku enkripciju.

- virtualni stroj za izvršavanje P-code.

- Enhanced i Professional inaice sadrže log datoteke svih
EEPROM operacija, kako bi se omoguilo njihovo rekonstruiranje u
sluaju gubitka napajanja. Compact inaice nemaju takav
mehanizam, pa je njihove transakcije potrebno štititi programski.

- Enhanced i Professional inaice sadrže datoteni sustav slian
DOS-u s direktorijima organiziranima u stablastoj strukturi (vidi
poglavlje 4.3.). Pristupanje direktorijima i datotekama mogue je na
više naina:

o iz kartine aplikacije datoteke se mogu stvarati, pisati i itati
pomou naredbi istovjetnih naredbama Basic programskog
jezika. Posebne naredbe omoguuju postavljanje prava
pristupa na datoteke i direktorije kako bi se ograniio pristup
aplikaciji terminala. Prava pristupa ovise o kriptografskim
kljuevima, korisnikim lozinkama i sl.

o iz aplikacije terminala, BasicCard pametna kartica izgleda
poput diskete sa simbolikim imenom „@:“. Ako zadovoljava
prava pristupa, aplikacija terminala može na karticu pisati,
itati ili mijenjati datoteke i direktorije kao da je obina
disketa.

o struktura direktorija i datoteka može se definirati u
inicijalizacijskom dijelu kartine aplikacije (File Definition
Section).



47
- nalazi se u flash programabilnom ROM-u, i lako se nadograuje.

- Professional inaice sadrže generator sluajnih brojeva i nude
kvalitetniju sigurnosnu zaštitu [5].
5.1.3.2 BasicCard virtualni stroj

Virtualni stroj BasicCard pametne kartice koristi RAM i EEPROM
memoriju. BasicCard RAM ima sljedea podruja: sustavski RAM, P-Code
stog, podruje public i static podataka i podruje alocirano za izvršavanje
programa (Run-time memory allocation). BasicCard EEPROM ima sljedea
podruja: sustavski EEPROM, tablicu opisnika naredbi (Command descriptor
table), ZBasic programski kod, podruje za znakovne konstante (String
constants), podruje za enkripcijske kljueve, EEPROM podatke i podruje
alocirano za izvršavanje programa. ZC-Basic prevodioc izraunava koliko
memorije treba iz kojeg podruja, a ostatak dodjeljuje RAM i EEPROM
podruju alociranom za izvršavanje programa. BasicCard virtualni stroj
podržava etiri tipa podataka:

- char (1-byte unsigned integer)
- word (2-byte signed integer)
- long (4-byte signed integer)
- real (4-byte IEEE-format floating-point number)
- string

P-code stog se sastoji od tri registra (PC – Program counter, SP –
Stack Pointer, FP – Frame Pointer). Može sadržavati etiri vrste podataka:

- parametre naredbi dobivene s I/O ulaza (nalaze se na dnu stoga).

- argumente procedura i povratnu adresu (prije poziva procedure,
parametri se stavljaju na stog).

- okvir podataka (FRAME data), ine ga Private podaci i privremene
varijable koje je generirao prevodioc. Svaka procedura ima svoj
okvir podataka fiksne veliine, alociran prilikom poziva procedure.
FP registar pokazuje na poetak okvira podataka.

- meurezultate operacija, virtualni stroj nema podatkovnih registara,
sva izraunavanja se obavljaju na P-Code stogu.

48
5.1.3.3 Suelje prema višim programskim jezicima

Tvrtka ZeitControl razvila je efikasno suelje (API) za više programske
jezike (trenutno su podržani C/C++, Visual Basic i Delphi) koje programerima
omoguava korištenje i povezivanje obaju sustava (npr. grafiko korisniko
suelje i BasicCard aplikaciju). Suelje je razvijeno za Windows 32-bitnu
razvojnu platformu. Podržani su ZeitControl CyberMouse, ZeitControl Chipi i
PC/SC kompatibilni itai [6] [7].

Temelj je BasicCard naredbeno suelje za C programski jezik (vidi
sliku 5.1) jer ga mogu koristiti gotovo svi ostali programski jezici. Visual Basic
koristi ActiveX kontrolu nadograenu na spomenuto C suelje. Suelje itaa
potrebno je za povezivanje s jednim od podržanih itaa (detektiraju se za
vrijeme izvršavanja kada se provjeravaju podaci o registriranim itaima na
terminalu na kojem se izvodi aplikacija). U tom suelju nalaze se funkcije za
otvaranje/zatvaranje itaa, spajanje/odspajanje kartice, odabir default
itaa, itd. Naredbeno suelje koristi suelje itaa kako bi povezalo ita s
odgovarajuim objektom u aplikaciji terminala. Podržane su predefinirane
naredbe, jednostavne transakcije, transparentna enkripcija, funkcije za
postavljanje kljueva i polinomijala, funkcije za povezivanje s itaem itd.

49
5.2. Java pametne kartice
S Java tehnologijom, programeri koji rade na podruju pametnih
kartica imaju mogunost standardizacije. Tako, npr. GSM provider može vrlo
lako razvijati nove usluge, koje se mogu selektivno uitati na karticu u
mobitelu („preko zraka“). Kao rezultat, mobilni telefon postaje npr. novanik,
omoguuje prijenos s rauna na raun, kupovinu, iznajmljivanje... i sve to u
vrlo sigurnom i interoperabilnom okruženju. Ako želite promijeniti mobilni
telefon, samo zamijenite aparat, a vašu „osobnu“ pametnu karticu
premjestite.

Današnje pametne kartice proširuju mogunosti tradicionalnih kartica
s magnetskom trakom, dajui korisnicima nove mogunosti i poboljšanja,
ukljuujui:

- siguran pristup podacima s Internet (web-based) i mogunost pohrane
više aplikacija na samo jednu pametnu karticu
- 100 (i više) puta vei kapacitet za pohranu podataka (memorije su
vee, jeftinije)
- poveanu sigurnost i zaštitu od prijevare
- veu pouzdanost zbog boljeg dizajna i kontrole kvalitete u proizvodnji
- raznolikost mikroipova, na raspolaganju su kartice sa širokim
spektrom memorijskih i procesnih svojstava, što omoguuje
jednostavan odabir za specifinu primjenu

Java tehnologija je odigrala veliku ulogu na tržištu pametnih kartica jer
je postala vodea platforma za njihov razvoj. 1999. je isporueno preko 20
milijuna pametnih kartica temeljenih na Java tehnologiji, a u 2000. godini
spominje se broj od preko 100 milijuna. Osim toga, Sun je ušao u partnerstvo
s više od 35 vodeih tvrtki na tom podruju, a vrlo veliki broj Java programera
je mamac za proizvoae. Broj rješenja koja ukljuuju Java pametne kartice
iz dana u dan je sve vei (analogno slici 2.2).

U sluaju pametne kartice koja se temelji na Java tehnologiji,
aplikacije pisane u Javi, u obliku byte-koda, se uitavaju u memoriju
mikroprocesora pametne kartice, gdje ih pokree Java Virtual Machine
(JVM). Izvršni kod nije ovisan o platformi, pa svaka kartica koja ima Java
interpreter može izvršiti istu aplikaciju. Na jednoj kartici može biti više Java
aplikacija, od kojih svaka ima svoj sigurni memorijski prostor kako bi se
osigurao integritet i sprijeilo itanje/pisanje po memoriji programa
(interferencija s drugim programima, ili namjerno, u cilju promjene npr. iznosa
na bankovnom raunu) [3].


50
Veina aplikacija za koje se mogu koristiti pametne kartice zahtjeva
visoku razinu autentifikacije. Stoga pametne kartice imaju mogunost
korištenja javnih i privatnih kljueva i na taj nain ostvaruju tu razinu.
Trenutno je osobni identifikacijski broj (PIN) uobiajeni nain za siguran
pristup, ali u bližoj budunosti to bi mogao biti i npr. otisak prsta. Teži se
tome da se proces autentifikacije što više pojednostavi uz što višu razinu
sigurnosti.

Snaga Java platforme i mogunost pohrane više aplikacija na jednoj
pametnoj kartici – i to od razliitih proizvoaa (providers) - namee Java
Card pametne kartice kao vrlo moan alat u svakodnevnom životu. Trenutno
su za programere pametnih kartica vrlo interesantna sljedea podruja:
mobilna telefonija, zdravstvo, financije te transport. Rastue mogunosti
mobilnih telefona predstavljaju (1999.) 43% tržišta pametnih kartica.
Financijska tržišta su takoer vrlo velika mogunost. Do 2005. velik dio
svjetske bankovne industrije, poevši od Evrope, morati e svoje korisnike
opskrbiti pametnim karticama, jer to zahtijevaju kreditne tvrtke, koje nude
svoje usluge (npr. Visa). Pametne kartice bitno reduciraju mogunost
prijevare, i kreditne tvrtke ih prilagoavaju kao vrlo uinkovitu zaštitu.
Porastom tzv. e-commerce poslova sve više kreditnih tvrtki e nuditi svoje
usluge u ovom obliku. Na podruju medicine, pametne kartice takoer unose
velike mogunosti i veliku pouzdanost, uz smanjenje papirologije i
administrativnih poslova. U prometu je mogue pametne kartice koristiti kao
sredstvo plaanja (naplatne kuice na autoputovima, parkirališta i garaže) ili
kao kartu (npr. avionsku ili autobusnu), sve to bez potrebe za kopanjem po
džepovima i traženjem sitnog novca [3].


51
5.2.1. Java Card tehnologija
Java Card specifikacija omoguuje pokretanje Java programa na
pametnim karticama i drugim ureajima s ogranienom memorijom (npr.
danas 16k, 32k, itd.). Danas je Java Card aplikacijsko okružje registrirano na
OEM bazi kod proizvoaa pametnih kartica i zauzima 90% tržišta pametnih
kartica.

Prednosti Java Card tehnologije su sljedee [2]:

- interoperabilnost – kartine aplikacije razvijene s Java Card
tehnologijom mogu se uitati i pokrenuti na bilo kojoj kartici koja
podupire Java Card tehnologiju, neovisno o proizvoau kartice i
njenom hardwareu.

- sigurnost – Java Card tehnologija se temelji na inherentnoj
(naslijeenoj) sigurnosti Java programskog jezika i omoguuje sigurno
okruženje za izvoenje programa (vidi poglavlje 4.4.1.). Razvijena je u
otvorenom procesu, a industrijska primjena i sigurnosne evaluacije
osiguravaju da vlasnici kartica imaju na raspolaganju najsposobniju i
najsigurniju tehnologiju koja je danas raspoloživa.

- mogunost multi-aplikacija – Java Card tehnologija omoguuje
istovremenu sigurnu koegzistenciju više aplikacija na jednoj pametnoj
kartici.

- dinaminost – nove aplikacije mogu biti sigurno instalirane nakon što
je kartica ve prodana, tako da prodavai mogu dinamino odgovarati
na potrebe kupaca.

- otvorenost – programeri Java Card aplikacija imaju na raspolaganju
prednosti objektno-orijentiranog jezika i dizajna, te pristup ve gotovim
Java razvojnim alatima.

- kompatibilnost s postojeim standardima – Java Card API je
kompatibilan s internacionalnim standardima za pametne kartice poput
ISO 7816 ili EMV. Naveden je kao referenca vodeih industrijsko-
specifinih standarda (npr. Global Platform, ETSI).

52
5.2.2. Java Card jezini podskup
Zbog svojeg malog memorijskog kapaciteta, Java Card platforma
podržava samo pažljivo odabrani, prilagoeni podskup osobina Java jezika.
Taj podskup ukljuuje osobine koje su prilagoene pisanju programa za
pametne kartice i druge male ureaje, istodobno uvajui objektno-
orijentirane osobine Java programskog jezika. Tablica 5.1 istie neke bitne
podržane i nepodržane osobine Java jezika u tehnologiji Smart Card. Kljune
rijei nepodržanih svojstava su takoer ispuštene iz jezika. Neke od
naprednih Java pametnih kartica implementiraju mehanizam sakupljanja
smea, odnosno mehanizam brisanja objekata naslijeen iz Java platforme.

Tablica 5.1 Osobine Java Card jezinog podskupa
Podržane osobine Jave Osobine Jave koje nisu podržane
• Mali primitivni tipovi
podataka: boolean, byte,
short
• Java paketi, razredi, suelja,
iznimke
• Objektno-orijentirane
osobine: nasljeivanje,
virtualne metode,
nadjaavanje, dinamiko
kreiranje objekta, opseg
pristupa, pravila povezivanja
• Opcionalni su kljuna rije int
i 32-bitni tip podatka
• Veliki primitivni tipovi
podataka: long, double, float
• Znakovi i stringovi
• Višedimenzionalna polja
• Dinamiko uitavanje razreda
• Sigurnosni manager
• Sakupljanje smea i
finalizacija
• Dretve
• Serijalizacija objekata
• Kloniranje objekata

Programski alat za provjeru koda (provjera class datoteka) smješten je
na terminalu i taj alat sustavno obavlja provjeru da li kod zadovoljava
specifikaciju Java Card podskupa naredbi iz programskog jezika Java [2].

53
5.2.3. Arhitektura Java Card pametne kartice
Osnovna razlika memorijskih i „pametnih“ kartica (kartica s
mikrokontrolerom) je jednostavan operacijski sustav koji može uitati i
izvršavati razne aplikacije. Budui da se radi o otvorenoj platformi, pametna
kartica sama za sebe slii arhitekturi jednostavnog servera sa sljedeim
osnovnim komponentama (vidi sliku 5.2):

- operacijski sustav kartice (COS)

- JCRE (Java Card Runtime Environment) je izvršna okolina koja
osigurava sigurno i nezavisno izvršavanje kartinih aplikacija

- VOP/SC (Visa Open Platform Security Control) su mehanizmi koji
omoguuju upravljanje funkcijama aplikacije i sigurnosnu kontrolu
izvršavanja

Uz navedene osnovne komponente na slici 5.2 prikazana su dva
suelja pametne kartice koja programer može koristiti u toku razvoja kartine
aplikacije [14].

Operacijski sustav
VOP Card
Manager
Java Card API
Open Platfom
API
Java Card Virtual Machine
JCRE
Applet 4 Applet 3
Applet 2 Applet 1
Programsko suelje (ukljuuje
programere appleta)
APDU suelje (ukljuuje proizvoae
kartica i programere korisnikih
aplikacija)

Slika 5.2 Arhitektura Java Card pametne kartice


54
5.2.3.1 Java Card izvršna okolina

Sve su Java Card pametne kartice potpuno kompatibilne s Java Card
specifikacijom koja je specificirana od Sun Microsystems grupe. Izvršna
okolina omoguuje izvršavanje Java Card kartinih aplikacija. Java Card
izvršnu okolinu ine Java Card sustavske komponente na samoj pametnoj
kartici (ne koriste se komponente na terminalu). Na terminalu se nalazi dio
Java Card virtualnog stroja, programski alat za provjeru class datoteka i
pretvara class datoteka u CAP datoteke pogodne za uitavanje na karticu.
JCRE je odgovorna za upravljanje kartinim resursima, mrežnom
komunikacijom, za izvršavanje kartinih aplikacija i za sigurnost kartinih
aplikacija. No njena osnovna uloga je uloga operacijskog sustava pametne
kartice.

Kao što je prikazano na slici 5.2, JCRE se nalazi iznad sklopovlja
(hardware-a) pametne kartice i iznad izvornog operacijskog sustava. JCRE
elegantno odvaja kartine aplikacije od specifinih tehnologija proizvoaa
pametnih kartica i osigurava standardizirani sustav i suelje za kartine
aplikacije. Kao rezultat, kartine aplikacije je jednostavnije i lakše pisati za
razliite arhitekture.

Dijelovi Java Card izvršne okoline (JCRE) su:

1. Java Card stogovni stroj (JCVM)
2. Java Card API (engl. Application Programing Interface)
3. Suelje otvorene platforme (OP API)
4. Suelje Visa otvorene platforme (opcija)

JCRE sadrži i neke servise specifine za pametne kartice poput
dijeljenja objekata izmeu kartinih aplikacija i odašiljanja APDU-a izmeu
razliitih kartinih aplikacija ili njihovih dijelova. Aplikacijski zaštitni zid (applet
firewall) omoguava meusobnu strogu i potpunu izolaciju uitanih kartinih
aplikacija (ne mogu meusobno dijeliti polja, podatke, objekte i metode).

Java stogovni stroj na osobnom raunalu ili radnoj stanici izvršava se
kao proces operacijskog sustava. Podaci i objekti se kreiraju u RAM-u. Kada
proces završi s radom, Java aplikacije i njihovi objekti se automatski
uništavaju. Na Java pametnoj kartici, Java stogovni stroj se izvršava unutar
Java Card izvršne okoline. JCRE se inicijalizira samo jednom i to onog
trenutka kad se kartica stavi u ita. Pritom se inicijalizira stogovni stroj i
kreiraju objekti koji omoguavaju JCRE servise i upravljanje kartinim
aplikacijama [14].


55
Veina informacija na kartici mora biti ouvana ak i kad kartica nema
napajanja, takvi podaci spremaju se u postojanu memoriju (EEPROM). Kad
se ukloni napajanje zaustavlja se stogovni stroj, ali stanje JCRE-a i objekti
kreirani na kartici ostaju sauvani. Sljedei put kad se na karticu dovede
napajanje, JCRE ponovno pokree izvršavanje stogovnog stroja te uitavanje
podatka iz postojane memorije (EEPROM-a). Treba napomenuti da JCRE ne
nastavlja operacije stogovnog stroja na mjestu na kojem je stogovni stroj stao
kad je kartica ostala bez napajanja. Stogovni stroj se ponovno pokree.
Prekid sjednice JCRE se razlikuje od JCRE inicijalizacije po tome što
kartine aplikacije i objekti kreirani na kartici ostaju sauvani. Za vrijeme nove
sjednice, ako transakcija prethodno nije završila, JCRE izvodi potrebno
išenje (vraa se u konzistentno stanje).

Razdoblje izmeu vremena kad je kartica stavljena u CAD ureaj i
prikljuena na napajanje, i vremena kad se kartica ukloni iz CAD-a, naziva se
CAD sjednica. Za vrijeme CAD sjednice JCRE radi kao obina pametna
kartica – podržava APDU I/O komunikaciju s aplikacijom terminala (slika 5.3).


Slika 5.3 CAD sjednica

Ponovnim uspostavljanjem sjednice (JCRE reset) JCRE ulazi u petlju,
i eka APDU naredbu od terminala. Terminal šalje APDU naredbe Java Card
platformi koristei suelje serijske komunikacije kartinog ulaznog/izlaznog
kontakta. Kad stigne naredba, JCRE ili odabire kartinu aplikaciju za
izvoenje, na što upuuje pristigla naredba, ili prosljeuje naredbu trenutno
aktivnoj, odabranoj kartinoj aplikaciji. Odabrana aplikacija preuzima kontrolu
i obrauje APDU naredbu. Po završetku šalje odgovor terminalu i predaje
kontrolu JCRE-u. Taj proces se ponavlja kad stigne sljedea naredba.

56
5.2.3.2 Java Card stogovni stroj

Java Card stogovni stroj (JCVM) je pojednostavljena inaica Java
stogovnog stroja (JVM) prilagoena pametnim karticama. Tako se Java Card
aplikacije mogu izvršavati na bilo kojoj pametnoj kartici koja podržava JCVM,
nezavisne su o sklopovskim komponentama na kojima se izvršavaju i
pojedine aplikacije se mogu izvršavati na pametnim karticama razliitih
proizvoaa.
class datoteke
Provjera koda
Konverter
Izvankartini JCVM
Interpreter
CAP
datoteka
Uitavanje datoteka
Kartini JCVM

Slika 5.4 Struktura JCVM

Java Card stogovni stroj dijeli na dva dijela (slika 5.4). Prvi dio se
nalazi na terminalu na kojeg je spojen ita. Sastoji se od programskog alata
za provjeru koda i alata za pretvorbu koda u byte-kod. Byte-kod se kasnije
uitava na pametnu karticu pomou programskog alata za uitavanje. Drugi
dio je dio koji se nalazi na kartici – sadrži byte-kod interpreter i alat za
upravljanje sigurnošu.

57
5.2.3.3 Java Card API

Java Card API razredi definiraju funkcionalnost razvijenu od Java
Card razvojnog tima, potrebnu aplikacijskim programerima. API ukljuuje vrlo
mali podskup standardnih Java razreda (java.lang.Object i nekoliko
razreda za iznimke). Izmeu ostalog, API definira i konvencije preko kojih
kartine aplikacije pristupaju JCRE-u i nativnim metodama, ukljuujui i
funkcionalnost operacijskog sistema, pristup memoriji i I/O operacije.
Ukljuuje pakete posveene upravljanju kriptografskim kljuevima i raznim
kriptografskim izraunavanjima:

- Java.lang
- Java Card.framework
- Java Card.security
- Java Card.crypto

5.2.3.4 Otvorena platforma

VOP (engl. Visa Open Platform) je okruženje za upravljanje pametnim
karticama koje na sebi sadrže više kartinih aplikacija. Omoguuje potpuno
sigurno i nezavisno upravljanje pojedinim aplikacijama. Otvorena platforma
se sastoji od sljedeih komponenti:

- naredbi za upravljanje karticom nakon inicijalizacije
- naredbi za uitavanje i instaliranje kartinih aplikacija
- naredbi za upravljanje sigurnošu kartice, ukljuujui naredbe za
kreiranje kljueva i stvaranje sigurnog kanala izmeu kartice i
terminala
- naredbi za siguran rad i komunikaciju itaa i terminala

Isto tako otvorena platforma sadrži specifikaciju koja definira razliite
životne cikluse kartice, kartinih aplikacija te aplikacije terminala. Ovdje se
pod razliitim životnim ciklusima kartinih aplikacija za vrijeme životnog
ciklusa kartice misli na sluajeve kada je kartica prikljuena na ita, ali se
unutar tog vremena izvrši više kartinih aplikacija (imaju razliito trajanje, u
vremenu izmeu jednog umetanja i vaenja kartice iz itaa) [14].


58
6. Primjer razvoja kartinog sustava
Razvijeni sustav „HealthCard“ namijenjen je uporabi u sustavu
zdravstva. ine ga programi koje koristi osiguravajue društvo (zavod),
programi koje koristi lijenik (ili ljekarnik) te podaci o korisniku i programi
pohranjeni na pametnoj kartici. Meudjelovanje pojedinih dijelova sustava
prikazano je na slici 6.1.
Osiguravajue
društvo
Korisnik
Pametna kartica
Baza podataka
HealthProviderDB
HealthInsuranceProvider
- uitavanje programa na
karticu
- inicijalizacija kartice
- personalizacija kartice
- izdavanje kartice korisniku
Lijenik
2
Baza podataka
HealthDoctorDB
HealthDoctor
- evidencija podataka o korisnicima
- izdavanje recepata (uputnica, i sl.)
- pohrana podataka na karticu i u
bazu podataka
Korisnik
HealthCard

Slika 6.1 Struktura prezentacijskog sustava za pametne kartice HeallthCard

Prezentacijski sustav sastoji se od:

- aplikacije terminala HealthInsuranceProvider i baze podataka o
korisnicima zdravstvenog osiguranja HealthProviderDB

- aplikacije terminala HealthDoctor i baze podataka o pacijentima i
njihovim dokumentima (receptima, uputnicama itd.) HealthDoctorDB

- kartine aplikacije HealthCard


59
6.1. Aplikacija terminala HealthInsuranceProvider
Osiguravajue društvo (zavod za zdrastveno osiguranje) izdaje
pametne kartice korisnicima zdrastvenog osiguranja pomou aplikacije
terminala HealthInsuranceProvider. Namjena te aplikacije je:
- uitavanje kartine aplikacije na (praznu) pametnu karticu
- inicijalizacija kartice – generiranje javnog i privatnog kljua ECC-167
algoritma, te dijeljene tajne na kartici
- personalizacija kartice – uitavanje identifikacijskih podataka korisnika
zdrastvenog osiguranja
- pohrana podataka o korisnicima u bazu podataka HealthProviderDB

Izgled aplikacije terminala prikazan je na slici 6.2.


Slika 6.2 Izgled aplikacije terminala HealthInsuranceProvider

U iduim poglavljima ukratko se opisuju glavni dijelovi aplikacije
terminala HealthInsuranceProvider i korištenje aplikacije u trenutku izdavanja
nove zdravstvene pametne kartice. Sve operacije mogue je pratiti u Log
prozoru koji se ukljuuje/iskljuuje u glavnom izborniku odabirom stavki
Postavke i Log box. Za kljune operacije pisanja i itanja s kartice mjeri se
vrijeme izvoenja i takoer ispisuje u Log prozoru.

60
6.1.1. Postavke aplikacije HealthInsuranceProvider
Za ispravan rad potrebno je aplikaciji definirati koji ita treba koristiti i
postaviti parametre veze s bazom podatka o korisnicima. Definiranje itaa
postiže se odabirom stavki Edit i Refresh u glavnom izborniku. Aplikacija
pretražuje registrirane itae i zahtjeva odabir itaa kojeg ete koristiti
(prikazano na slici 6.3).


Slika 6.3 Odabir korištenog itaa
Promjena itaa (ako ih ima više) mogua je i u osnovnom prozoru,
pritiskom na prozor u kojem je ispisan naziv itaa (prikazano na slici 6.4).
Nakon izbora itaa aplikacija se pokušava povezati s karticom. U sluaju
uspješnog povezivanja u prozoru Status ispisuje se ATR i stanje veze s
karticom (slika 6.4).


Slika 6.4 Spajanje s odabranim itaem
Spajanje i odspajanje aplikacije terminala i kartice mogue je
pokrenuti odabirom stavki Connect/Reconnect i Disconnect iz stavke File
glavnog izbornika (stanje veze prikazuje se u prozoru Status). Izborom
stavke Postavke i unutar nje Change Private Key mogue je promijeniti
privatni (ujedno i javni) klju aplikacije terminala (osiguravajueg društva) koji
se koristi za generiranje dijeljene tajne na kartici.

Postavke veze s bazom podataka mogue je mijenjati odabirom stavki
Postavke i DataBase Connection glavnog izbornika. Parametri se postavljaju
prema raunalu na kojem je poslužitelj s bazom podataka o korisnicima.
Unutar prozora HealthInsuranceUser može se odabirom tipke Pretraživanje
baze, pretraživati baza podataka o korisnicima po bilo kojem od polja
(prezime, ime, JMBG...).

61
6.1.2. Uitavanje kartine aplikacije na karticu
Kada korisnik od osiguravajueg društva zatraži zdravstvenu pametnu
karticu „HealthCard“, osiguravajue društvo praznu pametnu karticu puni
programima potrebnima za njen rad (vidi poglavlje 6.3). U glavnom izborniku
potrebno je odabrati stavku File i zatim Load. Prikazati e se prozor u kojem
se zahtjeva unos port number itaa pametnih kartica i stanje u koje se
kartica postavlja nakon uitavanja aplikacije. Stanja kartice su L – Load, P –
Pers, T – Test i R – Run [4]. Stanje Load postavljeno je za vrijeme uitavanja
aplikacija na karticu, stanje Pers postavlja se kada se kartica personalizira
(kad se upišu podaci o korisniku), stanje Test postavlja se za vrijeme
testiranja sustava, a stanje Run se postavlja kad je kartina aplikacija u
cijelosti razvijena (više nisu mogue promjene i ponovna uitavanja – kartica
se zakljuava). Unosom port number i stanja kartice, otvara se dijalog za
odabir datoteke za uitavanje na karticu (prikazano na slici 6.5).


Slika 6.5 Uitavanje kartine aplikacije na karticu

Službenik osiguravajueg društva odabire kartinu aplikaciju za
uitavanje koja se zatim uitava na karticu (briše se sadržaj EEPROM-a na
kartici i puni novom kartinom aplikacijom). Kartina aplikacija definira pristup
direktorijima i datotekama na pametnoj kartici (mogu ako je ukljuena AES
enkripcija sjednikim kljuem br. 1). Idui korak je generiranje javnih i
privatnih kljueva (ECC-167 algoritam), te dijeljene tajne na kartici.

62
6.1.3. Inicijalizacija kartice
Inicijalizacija kartice ukljuuje generiranje javnog i privatnog kljua te
dijeljene tajne. Javni i privatni klju korisnika zdravstvenog osiguranja
generiraju se jednom u životnom ciklusu kartice (generiranje izvodi kartica).
Privatni klju nikad ne napušta karticu, za sva ostala potrebna izraunavanja
koristi se javni klju. Dijeljena tajna (shared secret) se takoer generira na
kartici samo jednom iz javnog kljua osiguravajueg društva (terminala) i
javnog kljua korisnika (kartice). Jednom kada je kartica inicijalizirana,
komunikacija s karticom (upis i itanje podataka korisnika) štiti se simetrinim
AES algorimom koji koristi 16 bajtni klju sjednice.

Službenik osiguravajueg društva u glavnom izborniku odabire stavke
Korisnik i New (prethodno se aplikacija treba spojiti s karticom – vidi poglavlje
6.1.1.). Otvara se prozor HealthInsuranceUser u kojem treba odabrati tipku
Inicijaliziraj karticu. Aplikacija pokree niz procedura potrebnih za
inicijalizaciju, mjeri se vrijeme potrebno za generiranje kljueva i dijeljene
tajne na kartici i prikazuje u Log prozoru (prikazano na slici 6.6).


Slika 6.6 Inicijalizacija pametne kartice HealthCard

Za vrijeme inicijalizacije kartice pripremaju se objekti (varijable) kartice
za sigurnu komunikaciju kartice i itaa u iduim koracima. Svako itanje i
pisanje podataka na karticu zapoinje generiranjem sjednikog kljua.
Sjedniki klju generira se iz javnog kljua kartice (dobivenog ECC-167
algoritmom) i parametra derivacije kljua (trenutno vrijeme kao znakovni niz).
Ako i kartica i terminal uspješno postave sjedniki klju, aplikacija terminala
šalje kartici zahtjev za poetak enkripcije. Nakon toga izvodi se itanje ili
pisanje podataka, te zaustavljanje enkripcije.

63
6.1.4. Upis korisnikih podataka na karticu
Personalizacija kartice je unošenje osobnih podataka korisnika
zdravstvenog osiguranja na karticu i u bazu podataka o korisnicima. Podaci o
korisniku se na kartici spremaju kao polja bajtova (vidi poglavlje 6.3).
Službenik osiguravajueg društva popunjava potrebna polja u prozoru
HealthInsuranceUser i odabire tipku Upiši na karticu i u bazu. Aplikacija
zapoinje komunikaciju kriptiranu sjednikim kljuem, upisuje podatke o
korisniku na karticu i završava sjednicu. U bazi podataka podaci se mijenjaju
transparentno (bilo u sluaju promjene podataka korisnika, bilo u sluaju
dodavanja novog korisnika). Primjer personalizacije kartice prikazan je na
slici 6.7.


Slika 6.7 Unos osobnih podataka korisnika na karticu

Personalizirana kartica spremna je za upotrebu. Korisnik preuzima
karticu i kod prvog posjeta lijeniku poinje praktina upotreba HealthCard
pametne kartice.

64
6.2. Aplikacija terminala HealthDoctor
Lijenik u svojoj ordinaciji posjeduje raunalo s itaem pametnih
kartica i vezom prema bazi podataka HealthDoctorDB. Dolaskom pacijenta
lijenik postavlja dijagnozu i izdaje potrebne recepte, uputnice i slino.
Aplikacija terminala (prikazana na slici 6.8) ima sljedeu namjenu:

- voenje podataka o korisnicima
- voenje podataka o izdanim receptima
- pisanje/brisanje recepata s kartice


Slika 6.8 Izgled aplikacije terminala HealthDoctor

U bazi podataka HealthDoctorDB pohranjuju se podaci o korisniku i
podaci o receptima izdanima za pojedinog korisnika. Postavke itaa i veze s
bazom podataka potrebno je postaviti kao u aplikaciji
HealthInsuranceProvider (vidi poglavlje 6.1.1.). Osnovni prozor aplikacije
sastoji se od etiri dijela (slika 6.8):

- osobni podaci korisnika
- korišteni enkripcijski kljuevi i parametri
- prikaz podataka o korisnicima iz baze HealthDoctorDB
- prikaz podataka o receptima iz baze HealthDoctorDB

65
6.2.1. itanje podataka korisnika s kartice
Pacijent po dolasku predaje svoju HealthCard pametnu karticu
lijeniku, koji odabirom stavke Korisnik i podstavke Proitaj s kartice glavnog
izbornika dobiva prikaz osobnih podataka pacijenta i dosad izdanih recepata.
(slika 6.9). itanje (i pisanje) podataka s kartice je kriptirano AES sjednikim
kljuem (16 bajtova) istovjetno aplikaciji namijenjenoj osiguravajuem društvu
HealthInsuranceProvider (vidi poglavlje 6.1.3).


Slika 6.9 itanje podataka s pametne kartice

Log prozor se koristi za praenje toka izvoenja operacija
(prezentacija mogunosti pametnih kartica). Ukljuuje se kao i u aplikaciji
osiguravajueg društva, odabirom stavke Postavke i unutar nje Log Box
glavnog izbornika. Mjeri se vremensko trajanje operacija itanja/pisanja i
prikazuje unutar Log prozora.

66

6.2.2. Upis podataka na karticu i u bazu podataka
Ako lijenik želi izdati recept, odabire stavku Dokument i unutar nje
Novi recept (prethodno aplikacija mora biti spojena s karticom). Prikazuje se
prozor Recept u kojem se popunjavaju polja s podacima o lijeku koji pacijent
treba koristiti. Nakon unosa, odabirom tipke Spremi\Ispiši podaci o receptu
spremaju se na karticu, u bazu podataka i, ako je potrebno, ispisuju na
pisau (slika 6.10).


Slika 6.10 Unos podataka o lijeku
Recepti se na pametnu karticu spremaju kao datoteke (zaštieni AES
simetrinom enkripcijom). U imenu datoteke nalazi se jednoznana šifra koja
odreuje recept. Odlaskom kod ljekarnika i izdavanjem odreenog lijeka,
recept (datoteka) se briše s kartice, ušteeno je dragocjeno vrijeme,
izbjegava se papirologija, poveava jednostavnost i sigurnost korištenja.
Recepti se brišu pojedinano (stavka Obriši recept) ili svi (stavka Obriši sve)

67
unutar stavke Dokument glavnog izbornika. Brisanje se izvodi transparentno
u bazi podataka i na kartici (ako je umetnuta u ita i spojena s aplikacijom).
6.2.3. Pretraživanje baze podataka korisnika
Kao i u aplikaciji namijenjenoj osiguravajuem društvu omogueno je
pretraživanje baze podataka i pregled rezultata. Pretraživanje zapoinje
odabirom stavke Korisnik i Pretraživanje baze. Otvara se prozor s poljima za
unos podataka o korisniku kojeg želite pronai (slika 6.11). Pretraga se izvodi
prema bilo kojem polju (tj. prema ispunjenim poljima) i prikazuje rezultate u
donjem dijelu aplikacije u kojem je prikaz baze podataka. Ako pretraga vraa
više rezultata, mogue ih je pregledavati – prijelazom na idui ili prethodni
zapis, te „skakanjem“ na odreeni zapis (potrebno je upisati redni broj
željenog zapisa i pritisnuti tipku Skoi na zapis).


Slika 6.11 Pretraživanje baze podataka o korisnicima



68
6.3. Kartina aplikacija HealthCard

Kartine aplikacije (appleti, cardleti) se pišu na terminalu, u jeziku
kojeg podržava operacijski sustav kartice. Nakon prevoenja uitavaju se na
karticu pomou naredbi ili gotovih alata (dobivenih od proizvoaa).
Programeri kartinih aplikacija trebaju se pridržavati pravila jezika u kojem
pišu (podskup jezika Jave, podskup jezika Basic) i imati na umu da pametna
kartica ima ograniene resurse. Sigurnosne opasnosti trebaju biti dobro
definirane u fazi specifikacije sustava, kako bi se smanjila mogunost gubitka
podataka.

Prijašnje pametne kartice su zahtijevale specijalizirani softver za
razvoj i strunjaka za razvoj aplikacija koje su se uitavale na karticu prilikom
proizvodnje. Takvi su programi maskirani u kartici prilikom proizvodnje i ne
mogu se mijenjati. Obino je aplikacija bila kodirana direktno u instrukcijski
set CPU-a. Stoga je imala pristup cijeloj memoriji. Sigurnost je trebalo
provjeriti prije prodaje, jer bi nadogradnja aplikacije iziskivala preveliki trošak
(nakon puštanja kartica u prodaju). S pojavom novih tehnologija (Java Card,
BasicCard), aplikacije se razvijaju s up-to-date razvojnim alatima i odmah
uitavaju na karticu. Stoga se aplikacije brzo razvijaju, uitavaju i
nadograuju nakon inicijalne prodaje kartice, a to pak uzrokuje brže vrijeme
do pojave na tržištu (time to market) i znatno produžuje korisni vijek kartice.

Osnova sustava je kartina aplikacija „HealthCard“. Na kartici su
pohranjeni podaci o korisniku osiguranja, javni i tajni klju, dijeljena tajna te
podaci o npr. ljenikim receptima za lijekove koje korisnik treba kupiti u
ljekarni. Podaci se na karticu uitavaju iz aplikacija terminala
„HealthInsuranceProvider“ i „HealthDoctor“ opisanima u prethodnim
poglavljima. Podaci o korisnicima (i njihovim karticama) pohranjuju se u bazi
podataka (na koju se mogu spajati aplikacije kojima to dozvoli zdrastveno
osiguranje). Personalizacija kartice (povezivanje s odreenim korisnikom) se
obavlja na nain da se uz osnovne podatke o korisniku generiraju javni i tajni
klju te dijeljena tajna. Javni klju se uz ostale podatke o korisniku sprema u
bazu podataka, a kartica se postavlja u stanje run. Zaštita komunikacije
implementirana je upotrebom simetrinog AES algoritma s 16 bajtnim
sjednikim kljuem enkripcije. Sjedniki klju se generira iz javnog kljua
kartice i parametra derivacije kljua (radi jednostavnosti taj parametar je
trenutno vrijeme kao znakovni niz).

Postupak razvoja kartinog sustava temeljenog na BasicCard
tehnologiji slian je razvoju Java Card sustava. Specifinosti odabranog
jezika odreuju razlike u dizajnu (pogotovo u sigurnosnim pitanjima).


69
6.3.1. Razvojni put kartine aplikacije
Prema slici 6.12 tipian razvojni put kartine aplikacije poinje
pisanjem izvornog koda u ZBasic programskom jeziku. Razvojni alat osim
datoteka s izvornim kodom (*.bas) i definicijskih datoteka (*.def), generira:

- projektnu datoteku (*.zcp)

- programsku datoteku terminala (*.zct) koja se sastoji od:
o parametara prevodioca (predefinirane konstante, izvorni kod,
include datoteke)
o izvršnih parametara (parametri naredbene linije, broj COM
port-a)

- programsku datoteku kartice (*.zcc) koja je zapravo virtualna
BasicCard kartica i sastoji se od:
o parametara prevodioca (predefinirane konstante, izvorni kod,
include datoteke)
o memorijskog EEPROM sadržaja virtualne kartice
o broja COM port-a virtualnog itaa

Izvorni kod je mogue odmah prevesti pomou ZC-Basic prevoditelja
ili pokrenuti alat za ispravljanje koda (debugger). ZeitControl nudi dvije vrste
alata za ispravljanje koda – kartini (ispravljanje koda kartinih aplikacija) i
terminalski (ispravljanje koda aplikacija terminala). Obje vrste kao izlaz daju
datoteke (*.dbg) s podacima o greškama u kodu, a mogu se koristiti i
istovremeno kao virtualna kartica i ita (time se olakšava traženje greške).
Prilikom prevoenja potrebno je specificirati inaicu korištene BasicCard
pametne kartice. Prevoenjem se dobiva datoteka (*.img) pogodna za
prijenos i pohranu na karticu ili za simulaciju. Alat za simulaciju može
istovremeno pokrenuti prevedene kartine aplikacije, aplikacije terminala ili
komunicirati s stvarnim itaem i karticom. Alat za uitavanje podataka na
karticu provjerava ima li na kartici dovoljno memorijskog mjesta i inaicu
kartice, a nakon uitavanja postavlja karticu u jedno od pet stanja [4]:

- load – postavlja se za vrijeme uitavanja kartinih aplikacija
- pers – postavlja se dok kartica nije personalizirana (povezana s
odreenim korisnikom), a nakon uitavanja kartine aplikacije
- test – postavlja se za vrijeme testiranja kartice
- run – postavlja se kad je kartica prošla sva testiranja i personalizirana
je, ovom stanju kartica dolazi u ruke korisnika, više nije mogue
mijenjati kartinu aplikaciju

70
Alat za
uitavanje na
karticu
BCLoad
Simulator
ZCMSim
Testiranje
ZBasic datoteke
(*.zcp, *.bas, *.def,
*.zct, *.zcc)
Prevedene datoteke
(*.img)
Upotreba kartice
ili simulatora?
Kartica Simulator
Prevoenje
ZC-Basic compiler
ZCMBasic
ZBasic razvojni alat
ZeitControl
Professional IDE
Terminal
Program
Debbuger
ZCMTerm
BasicCard
Program
Debugger
ZCMCard
Debugg datoteke
(*.dbg)
Debugg datoteke
(*.dbg)
Potrebno
ispravljanje
koda?

Slika 6.12 Razvojni put ZBasic kartine aplikacije

Testiranje kartine aplikacije se obino prvo izvodi sa simulatorom,
jer je tako lakše otkriti greške same kartine aplikacije. Otkrivene greške se
ispravljaju i kartina aplikacija se ponovo uitava na karticu. Konano, nakon
ispravljanja grešaka kartina aplikacija se testira s aplikacijom terminala
(kartina aplikacija je ve testirana i lakše se otkrivaju greške nastale
razvojem aplikacije terminala). Radi jednostavnosti, esto se kao „podloga“
za novu kartinu aplikaciju koristi neka posve jednostavna, a zatim se dodaju
nove funkcionalnosti. Krajnji oblik tog naina razvoja bio bi dodavanje
instrukcije po instrukciju, prevoenje i integracija s aplikacijom terminala
(nakon dodavanja svake instrukcije, prevesti i testirati s aplikacijom
terminala).


71
6.3.2. Dizajniranje kartine aplikacije
Poetak razvoja bilo koje programske aplikacije, pa tako i kartine
aplikacije, treba zapoeti fazom dizajna. U toj fazi se definira arhitektura
kartine aplikacije, a obuhvaa sljedee korake:

- specifikaciju funkcija kartine aplikacije
- odreivanje i dodjeljivanje identifikatora naredbama koje e kartina
aplikacija moi izvršavati
- dizajn strukture same kartine aplikacije
- definiranje suelja izmeu kartine aplikacije i aplikacije terminala
6.3.3. Specifikacija funkcija kartine aplikacije

Za primjer biti e opisana ostvarena kartina aplikacija „HealthCard“
koja omoguava siguran pregled i promjenu podataka o korisniku npr.
zdravstvenog osiguranja. Podaci o korisniku se spremaju u postojanoj
EEPROM memoriji kao polje znakova:

Eeprom User As String*250

Svi podaci o korisniku spremljeni su u jedan niz znakova. Tono
znaenje pojedinog znaka poznato je samo dizajneru sustava. Dekodiranje
se izvodi u aplikaciji terminala. Osim podataka o korisniku u postojanoj
memoriji kartice pohranjeni su podaci o stanju kartice (da li je
personalizirana), dijeljena tajna (shared secret), te simetrini AES sjedniki
klju:
Eeprom Personalised = False
Eeprom SharedSecret As String
Declare Key 1(16)

Aplikacija terminala prepoznaje kartinu aplikaciju pomou imena
definiranog unutar kartine aplikacije:

Declare ApplicationID = ApplicationName$

Osnovni direktorij zaštien je pravima pristupa – aplikacija terminala može
pisati ili itati iz njega samo ako je ukljuena AES enkripcija sjednikim
kljuem br. 1:

Dir "\"
Read Lock Key=1
Write Lock Key=1
End Dir

72
6.3.4. Odreivanje naredbi kartine aplikacije
Kartina aplikacija od aplikacije terminala dobiva zahtjeve za izvršenje
naredbi. Naredbe se definiraju svojim razredom i instrukcijom unutar razreda
(CLA i INS bajtovi – vidi poglavlje 3.2.). „HealthCard“ podržava sljedee
naredbe:

Declare Command &H20 &H00 GetCurve
Declare Command &H20 &H01 GenerateKeyPair
Declare Command &H20 &H02 SetPrivateKey
Declare Command &H20 &H04 GetPublicKey
Declare Command &H20 &H05 Sign
Declare Command &H20 &H06 SetSharedSecred
Declare Command &H20 &H07 SetSessionKey


Declare Command &H80 &H00 WriteUser
Declare Command &H80 &H02 ReadUser

Na svaku APDU naredbu kartina aplikacija odgovara itau tako da
vraa APDU odgovor (koji obavještava ita rezultatu poslane naredbe).
Odgovor sadrži i statusne rijei koje definiraju moguu grešku. Ovaj nain
komuniciranja naredba-odgovor se nastavlja sve dok se aplikacija terminala
ne odspoji ili dok se kartica ne izvadi iz itaa.

6.3.5. Definiranje suelja

Kartina aplikacija koja se izvršava na kartici komunicira s aplikacijom
terminala preko itaa koristei parove APDU naredba-odgovor (Application
Protocol Data Units). Zapravo, suelje izmeu kartine aplikacije i aplikacije
terminala je skup APDU naredbi koje su poznate i podržane od strane
kartine aplikacije i aplikacije terminala. Za svaku APDU naredbu, kartina
aplikacija treba dekodirati polja APDU naredbe. Ako se koriste opcionalna
polja, takoer treba utvrditi njihov format i strukturu. Koristei te definicije
kartina aplikacija zna kako interpretirati svaku naredbu i proitati podatke.
Pomou njih može izvršiti zadatak odreen primljenom naredbom. Za svaki
APDU odgovor, kartina aplikacija bi trebala definirati skup statusnih rijei
(status words SW) koje pokazuju rezultat izvršavanja naredbe. Za normalan
završetak izvoenja, aplet šalje „succes“ (0x9000, prema ISO 7816). Ako
doe do greške, treba vratiti statusnu rije koja definira interno stanje
kartine aplikacije.



73
Const swNotPersonalised = &H6B00
Const swEncryptionRequired = &H6B02
Const swIssuingKeyRequired = &H6B03

Osim navedenih statusnih rijei koje kartina aplikacija vraa sama,
suelje prema višem programskom jeziku (u ovom primjeru Visual Basic [6])
definira i skup statusnih rijei koje signaliziraju uobiajene greške, poput
krivog formata APDU naredbe.


6.3.6. Svojstva korištene pametne kartice
Razvoj aplikacije terminala i kartine aplikacije proveden je za
ZeitControl Professional BasicCard pametnu karticu (revizija 5.4C) i PCSC
USB ita ZeitControl CyberMouse ACR30U-CFC. Kartica koristi
komunikacijski protokol ISO T=1 (opcionalno T=0), 16335 bajtova EEPROM-
a i 686 bajtova RAM-a. Sigurnost je omoguena kroz kriptografske usluge i
svojstva operacijskog sustava kartice koji ima ugraenu podršku za ECC-
167, AES, DES i SHA-1 enkripcijske algoritme.

Aplikacije terminala pisane su u Microsoft Visual Studio.NET – Visual
Basicu. Korišteno je ZeitControl Visual Basic suelje (Active X i Crypto
Control) [6][7], ZeitControl Professional IDE razvojni alat i Microsoft SQL
Server 7.0. Osobno raunalo na kojem je sustav razvijen je AMD Duron 1400
MHz s 256 MB RAM-a.




74
7. Zakljuak

Prezentacijski sustav HealtCard prikazuje jednu od moguih primjena
pametnih kartica. Ostvarene aplikacije terminala i kartina aplikacija ine
cjelinu koja obuhvaa sve radnje potrebne za jednostavno, sigurno i
uinkovito korištenje u sustavu zdravstva. Primjenom takvog sustava
olakšan je posao lijenicima, ljekarnama, specijaliziranim ustanovama za
razne zdrastvene preglede, bolnicama i samim korisnicima – pacijentima.
Pametna kartica koristi se kao identifikacija i mjesto pohrane dokumenata,
skraeno je vrijeme pojedine radnje (pregleda kod lijenika, kupovine lijeka)
bez potrebe za dosadašnjim papirnatim dokumentima. Sustav kao primjer
koristi lijeniki recept, ali mogue ga je proširiti novim primjenama poput
pohrane rezlutata pregleda, uputnica ili kljua vrata bolnike sobe.






75
8. Literatura
[1] W. Rankl, W. Effing: Smart Card - Hand Book, Second Edition, John
Wiley & Sons, New York, 1999.
[2] Zhiqun Chen: Java Card Tehnology for Smart Cards, Addison-
Wesley, US, 2000.
[3] Schlumberger: Hands On Java ™ Card Applet Development With
Schlumberger
[4] Tony Guilfoye: BasicCard - The Compact, Enhanced, and
Professional BasicCards, ZeitControl cardsystems GmbH, Minden
Germany, 2003., dostupno na internet adresi: http://www.basiccard.com
[5] Tony Guilfoye: Professional BasicCard Datasheet, ZeitControl
cardsystems GmbH, Minden Germany, 2003., dostupno na internet
adresi: http://www.basiccard.com
[6] Michael Petig, Robert Kazimirski: BasicCard ActiveX Control – Visual
Basic Programming Manual, ZeitControl Cardsystems GmbH, Minden
Germany, 2002., dostupno na internet adresi: http://www.basiccard.com
[7] Michael Petig: BasicCard Crypto Control – Visual Basic
Programming Manual, ZeitControl Cardsystems GmbH, Minden
Germany, 2002., dostupno na internet adresi: http://www.basiccard.com
[8] Helmut Scherzer: SmartCard Operating System Potential risks and
security countermeasures, IBM Germany Corp., Boeblingen, 2003.,
dostupno na internet adresi: http://ca.itsc.ruhr-uni-
bochum.de/hgi/smaca/scherzer.pdf
[9] Brian Miller: BasicCards 101, Circuit Cellar, Issue 164, March 2004,
dostupno na internet adresi: http://www.basiccard.com
[10] Anthony Cola: Security Is Not Child“s Play, Card Technology, August
2002., dostupno na internet adresi: http://www.basiccard.com
[11] Donald Davis: Battering Down A Barrier To Entry, Card Techlology,
August 2002., dostupno na internet adresi: http://www.basiccard.com
[12] Ross Anderson, Markus Kuhn: Tamper Resistance – A Cautionary
Note, Computer Laboratory, Cambridge University, Department of
Computer Sciences, Purdue University, 1996., dostupno na internet
adresi: http://www.cl.cam.ac.uk/users/rja14/tamper.html
[13] Cardwerk, Smarter Card Solutions, http://www.cardwerk.com
[14] Java Technology, http://java.sun.com
[15] JavaWorld, Fueling Innovation, http://www.javaworld.com

76
[16] Smart Card Security – GlobalPlatform Technology,
http://www.gammassl.co.uk
[17] Smart Card Technology and Security,
http://people.cs.uchicago.edu/~dinoj/smartcard/security.html
[18] IBM Research, http://www.research.ibm.com
[19] Cryptography Research, http://www.cryptography.com
[20] U.S. General Services Administration, Smart Card Standards and
Interoperability, http://www.estrategy.gov/smartgov/smart_card.cfm


77
9. Sažetak
Ovaj diplomski rad prouava sigurnost pametnih kartica, mogue
sigurnosne nedostatke i naine njihova otklanjanja. Usporeuju se Java Card
i BasicCard razvojne platforme. Praktini (programski dio) ine aplikacije
terminala (Visual Basic) i kartina aplikacija (ZBasic) namijenjene upotrebi u
zdravstvu. Sustav omoguava uitavanje kartinih aplikacija na pametnu
karticu, inicijalizaciju kartice (generiranje javnog i privatnog kljua ECC 167
algoritmom, te dijeljene tajne), personalizaciju kartice (unos osobnih
podataka korisnika), upisivanje, itanje i brisanje dokumenata (lijenikih
recepata), te zaštitu komunikacije simetrinim AES algoritmom. Podaci o
korisnicima i dokumentima su pohranjeni u bazama podataka, jednostavno
se mijenjaju, brišu i unose. Pametna kartica koristi se kao identifikacija
korisnika i kao mjesto pohrane podataka umjesto dosadašnjih papira,
upotreba je jednostavna, brza i sigurna.


78
10. Abstract
This work examines security of smart cards, their potential flaws and
security countermeasures. It also compares two smart card platforms Java
Card and BasicCard. It's practical part are terminal applications (VisualBasic)
and card application (ZBasic), developed for use in healthcare. System
enables downloading card applications on the smart card, initialization of
smart card (generation of the public and private key with ECC 167 algorithm,
setting shared secret on the card), personalization of smart card (entering
personal user data on the card), writting, reading and deleting documents
(medical prescriptions) and it uses secure communication (symmetric AES
algorithm). User data and documents are stored in two databases, they are
easy to update, delete or insert. Smart card is used as user identification and
data storage, there is no need for papers, so it provides simple, fast and
secure use.



79
Prilog: Kratice
ADM Administrative
AES Advanced Encryption Standard
AID Application Identifier
ALW Always
APDU Application Protocol Data Unit
API Application Programming Interface
ATR Answer to Reset
CAD Card Acceptance Device
CAP Java Card executable code format
CHV Card Holder Verification
CLK Clock
COM Component Object Model Implementation
COS Chip/Card Operating System
CPU Central Processing Unit
DES Data Encrytption Standard
DF Dedicated File
DFA Differential Fault Analysis
DOS Disk Operating System
DPA Differential Power Analysis
ECC Elliptic Curve Cryptography
EEPROM Electrical Erasable Programmable Read-Only Memory
EF Elementary File
etu Elementary time unit
GND Ground
GSM Global System for Mobile Communications
I/O Input/output
IBM International Business Machines
IC Integrated Circuit
IDEA International Data Encryption Algorithm
INF Information Field
IOP COM Interoperabilitiy COM


80
ISO/IEC International Organization for Standardization / International
Electrotehnical Commission
ITRI Industrial Technology Research Institute
JCOP Java Card Open Platform
JCRE Java Card Runtime Enviroment
JCVM Java Card Virtual Machine
JVM Java Virtual Machine
LEN Length
LRC Longitudinal Redundancy Check
MAC Message Authentication Code
MF Master File
MPU Microprocessor Unit
NAD Nod Address
NEV Never
OSI Open Systems Interconnection
PCB Protocol Control Byte
PIN Personal Identification Number
PDA Personal Digital Assistant
PTS Protocol Type Select
PVC Polyvinyl Chloride
RAM Random Access Memory
RISC Reduced Instruction Set Computing
ROM Read-Only Memory
RSA Rivest-Shamir-Adleman
RST Reset
SCSUG Smart Card Security User's Group
SG-LFSR Shrinking Generator – Linear Feedback Shift Registers
SHA Secure Hash Algorithm
SIM Subscriber Identification Module
SPA Single Power Analysis
VCC Power supply voltage
VOP Visa Open Platform
VOP/SC Visa Open Platform Security Control
WAP Wireless Application Protocol
WTX Waiting Time Extension
XOR Exclusive OR

81

Sign up to vote on this title
UsefulNot useful