You are on page 1of 85

SVEUILITE 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.


Sadraj
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. OKRUENJE 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 RJEENJA ......................................................................................... 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. Greke u EEPROM-u ....................................................................................... 33
4.5.5. Vremenski napadi ............................................................................................. 34
4.5.6. Analiza diferencijalnih greaka......................................................................... 36
4.5.7. Napad analizom potronje................................................................................ 37
4.5.8. Napad analizom razlika u potronji .................................................................. 38
4.6. KAKO RIJEITI 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. Pretraivanje 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 koritene pametne kartice.................................................................. 73
7. ZAKLJUAK................................................................................................................. 74
8. LITERATURA................................................................................................................ 75
9. SAETAK...................................................................................................................... 77
10. ABSTRACT................................................................................................................... 78
PRILOG: KRATICE ............................................................................................................... 79


1
1. Uvod

Visoka tehnologija i sigurnost svojstva su dananjih pametnih kartica.
Cilj ovog rada je prouiti postojea programska rjeenja obzirom na njihova
tehnoloka, sigurnosna i razvojna svojstva. Posebna panja 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 dosadanje kartice s magnetskom trakom) i aplikacije terminala s
bazom podataka o korisnicima. Sustav je priloen na optikom mediju.

Razvoj sustava i saznanja koja omoguuju daljnje istraivanje 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 vaeima 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 tritu pametnih kartica i novu BasicCard
koja jednostavnou i niom 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 dananjih kartica pojavile su se u Americi ranih pedesetih godina
prolog stoljea i bile su simbol bogatstva, posjedovala ih je samo probrana
elita. Sadravale su jednostavne podatke koje je bilo teko krivotvoriti.
Kartice s magnetskom trakom bile su prvo znaajnije poboljanje (u tom
obliku se i danas veinom koriste). Pojavom elektronike i mikroelektronike
omoguena je izrada raunala na malom silicijskom ipu, povrine 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 traene
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 proiriti na sva podruja ljudskog ivota. To su
zapravo mala raunala sa svim svojim potrebnim komponentama (sadre
CPU, RAM, ROM i EEPROM) i sve vie neovisna o terminalu (host).

Pojam pametna kartica upotrebljava se za bilo kakvu karticu koja
moe vezati informaciju uz neku praktinu primjenu. Kartice s magnetskom
trakom imaju traku s magnetskim materijalom na jednom dijelu svoje
povrine, 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 zatien, omoguuje jednostavnu izmjenu podataka.
Mikroprocesorske kartice se po nainu komunikacije s itaem dijele se na
kontaktne (komunikacija preko metalnih kontakata na povrini 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, bre i jednostavnije.
Osim Java Card razvojne platforme, na tritu 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 brem razvoju i usvajanju
pametnih kartica, veliku teinu 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 (moe biti kriptiran ili zatien raznim
tipovima stroge meusobne autentifikacije). U zadnje vrijeme se proizvode
pametne kartice koje na sebi sadre ugraene kriptografske procesore
odvojene od glavnog procesora radi to boljih performansi (sklopovsko
kriptiranje je uglavnom bre od izvravanja programskog algoritma). Slika 2.1
prikazuje vanjski izgled moderne pametne kartice.

I dok s jedne strane tehnologija napreduje munjevitom brzinom,
pametne kartice se sve vie koriste u svim granama ljudske djelatnosti.
esto se javljaju problemi kad treba iz hrpe kartica izvaditi ba onu koju treba
za traenog davatelja usluge. Javljaju se prve vieuslune pametne kartice
koje imaju vie primjena (npr. bankovna i telefonska kartica). Razvoj
standarda i specifikacija olakati e njihovu primjenu. Vano 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 prolo
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 nia
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 uspjeno 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 trite
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 vieuslune 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 vieuslunih
pametnih kartica (MARC Cards).

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

- 1998. u rujnu, administracija Amerike vlade (U.S. Governments
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 vieuslunih 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. Governments 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 vieusluni program (Washington DC.).


6
Dokumentirati noviju povijest pametnih kartica (od 1999. do danas)
nije jednostavno. Na tritu svakim danom ima sve vie rjeenja, 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
neizbjena. Interoperabilnost, standardizacija i razvoj izazovi su postavljeni
dananjim pametnim karticama. Ti izazovi nisu jednostavni - uz pomo
industrije javiti e se inovativna rjeenja 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 brim razvojem kartinih aplikacija. Sigurnosni zahtjevi se
neprestano mijenjaju, nema proizvoaa pametnih kartica koji moe rei da
je njegov proizvod otporan na sve mogue (budue) napade. Pristup
sigurnosti pametnih kartica sve vie se okree standardizaciji. Prepoznavanje
opasnosti, njihova specifikacija i protumjere implementirane prema
standardima, znatno e pojednostaviti koritenje i razumijevanje s jedne
strane, a oteati gubitak informacije s druge. Sigurnosna evaluacija rjeenja
treba poeti u to ranijoj fazi izrade, i tei paralelno s razvojem u cilju
pristupanog i pouzdanog rjeenja. Neovisnost proizvoaa mikromodula
pametnih kartica i proizvoaa kartinih operacijskih sustava uzrokovati e
nie cijene kartinih sustava. Od pametnih kartica se u budunosti oekuje
rairena uporaba na svim podrujima ljudskih djelatnosti, objedinjavanje vie
usluga na jednoj kartici i lake poslovanje uz maksimalnu sigurnost.


7
2.2. Tehnologija
Veliina pametnih kartica odgovara veliini uobiajenih kreditnih
kartica. Izrauju se od polivinil-klorida (PVC) i sadre ugraeni mikromodul.
Mikromodul se sastoji od jednog integriranog ipa s memorijom i
mikroprocesorom, a na povrini 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 spremite 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 sloenijim
mikrokontrolerom, nia za velike narudbe.
- pouzdanost kartice izvedene prema ISO standardima trebaju biti
otporne na pad, savijanje, abraziju, pritisak, temperaturu, vlanost,
statiki elektricitet, napad kemikalijama, ultraljubiasto i rendgensko
zraenje, te magnetsko polje.
- ispravljanje greaka operacijski sustav kartice ima ugraenu zatitu
od greaka, aplikacija terminala mora provjeravati dvo-bajtnu statusnu
rije (vidi poglavlje 3.2.) dobivenu od operacijskog sustava kartice
nakon izvrenja naredbe i, prema potrebi, izvriti ispravljanje.
- veliina EEPROM-a 1-64 kilobajta, 8-32 kilobajta ROM-a, 256-2048
bajtova RAM-a. Novije metode saimanja podataka omoguuju
spremanje vee koliine podataka od navedene.
- jednostavnost koritenja pametne kartice imaju jednostavno suelje
za praktinu primjenu, slino bankovnoj kartici s magnetskom trakom.
- osjetljivost osjetlijve su na fizika oteenja mikromodula, no ipak ih
je tee otetiti nego kartice s magnetskom trakom.
- sigurnost pametne kartice su vrlo sigurne (no ne i potpuno, vidi
poglavlje 4.5.), podatke pohranjene u mikromodulu je teko kopirati ili
otetiti, za razliku od kartica s magnetskom trakom. Podrka
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, dananji 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 okruenju s vie
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 vaan imbenik pri odabiru kartice
za odreeno rjeenje. 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 moe
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 vie razine za programiranje kartica. Obino su se takve kartice
programirale u tvornici prilikom izrade ili odmah nakon izrade, pa je postojao
dodatni troak 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. loa specifikacija funkcija), znalo je doi do
popriline zbrke to je dodatno povealo trokove za naruitelja. Slika 2.3
prikazuje razvojni put memorijske kartice. Idealni razvojni put je oznaen
strelicama sa punom crtom, a sluajevi greki prikazani su crtkanim
strelicama. Do problema moe 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

Najee razvojni put nije bio idealan, postojali su odreeni problemi
koji su zahtjevali prepravljanje bilo aplikacije terminala, bilo programa na
memorijskoj kartici, to je poveavalo trokove i vremenska kanjenja. 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 Nekadanji razvoj pametnih kartica

10
2.5. Primjena pametnih kartica

Slika 2.4 prikazuje razvojni put pametnih kartica koji je mnogo krai,
bri i pouzdaniji od razvojnog puta magnetskih kartica. Pametne kartice imaju
sklopovlje i programe koji se pokreu s umetanjem u ita. Moe 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 moe 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
vie ne ovisi o programerima proizvoaa, kartine aplikacije se razvijaju
paralelno sa korisnikom aplikacijom te se tako izbjegavaju nesuglasnosti i
nestandardiziranost.

Ako se pojavi greka, bre se otklanja jer se dogodila unutar ueg
kruga ljudi. Pojavom programskih jezika poput Jave i ZBasica (Java Card i
BasicCard) razvoj korisnikih aplikacija i kartinih aplikacija je puno bri 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 dananjih pametnih kartica

Danas na tritu prevladavaju kartice temeljene na Java Card
tehnologiji. Visoko su standardizirane pa korisnik (naruitelj) pametnih kartica
vie nije vezan za jednog proizvoaa (moe ih naruiti od razliitih
proizvoaa).


11
Mogua primjena pametnih kartica je vrlo iroka. Pametna kartica se
moe upotrijebiti za pohranu svih osobnih identifikacijskih podataka kao i
ostalih podataka svojstvenih samo korisniku kartice. Sve usluge kojima
korisnik raspolae 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.
knjinici (uvati e podatke o knjigama koje ste posudili).

Zbog visokih sigurnosnih zahtjeva koje pametne kartice moraju
zadovoljavati, njihova unutranjost se obino taji, kako bi se oteali mogui
napadi. Uz pojednostavljeno koritenje, od pametnih se kartica oekuje brz
razvoj i uporaba u svakodnevnom ivotu stoga je potrebno zadovoljiti
sljedee uvjete:

- vieuslunost
- sigurnost podataka
- standardiziranost na visokom nivou

Vieuslunost je svojstvo kartica koje podravaju 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 proizalih iz dosadanjih rjeenja i novih saznanja, poveava se i
sigurnost sklopovlja i aplikacija u sustavima pametnih kartica. Novi standardi
odreuju i naine ostvarenja sigurnog izvravanja i pohrane vieuslunih
aplikacija.

12
3. Okruenje pametne kartice
Prikaz meudjelovanja i okruenje 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 Okruenje 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 izvravanja
ponaa 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 izvravanje i tee otklanjanje pogreaka [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, moe
obavljati svoju funkciju do daljnjega. Dakle postoje aplikacije koje se
izvravaju na samoj pametnoj kartici (pisane u npr. Javi ili ZBasicu) i
aplikacije koje se izvravaju 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 vie u kasnijim poglavljima. Dakle aplikacija terminala je program koji
se izvrava na terminalu, a ima mogunost komunikacije s pametnom
karticom (preko npr. itaa pametnih kartica). Aplikacija terminala moe se
pisati u viim programskim jezicima poput C++, Visual Basic, Java itd. (jezici
koji su podrani sueljem proizvoaa pametnih kartica).

Kartina aplikacija (koja se izvrava 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 koriteni 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 piemo program u jeziku podranom od
proizvoaa pametnih kartica, prevedemo ga i moemo ga uitati na karticu,
dok aplikacija terminala moe (treba) osiguravati podatke za rad kartine
aplikacije. Kako bi pametna kartica poela obavljati svoju funkciju (kao
novanik, kao identifikacija, u upravljanju raznim procesima...), nuna 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, moe se koristiti OSI model (slika
3.2). U tom modelu su navedeni standardi koji se danas koriste i definiraju
ponaanje 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 najnioj 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 lei opasnost od kratkog spoja
izmeu kontakata na samoj kartici (dok se umee ili vadi), pa se na
odgovarajui nain mora zatititi 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 moe 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 slui komunikaciji izmeu
kartice i PC-a jer se njime osim itanja obavlja i pisanje. Dakle komunikacija
je dvosmjerna. Za komunikaciju je raspoloiva samo jedna I/O linija, pa
podatke alju naizmjence kartica ili ita (druga strana slua). 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. Podrano je
ulanavanje, ponovno slanje i produljenje vremena ekanja. Ako kartica treba
vie vremena za obradu podataka izmeu APDU naredbi, moe od terminala
zatraiti produljenje vremena ekanja (WTX Waiting Time Extension) [4].

Svaki blok podataka T=1 protokola sastoji se od sljedeih polja:
- adresa primatelja i potiljatelja (NAD)
- polja kontrole protokola (PCB)
- duine INF polja u bajtovima
- informacijskog polja (INF) s podacima o sadraju bloka
- zatitnog 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 koritenje 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 greke, unutar te dvije
jedinice primatelj (terminal ili kartica) treba I/O liniju postaviti nisko, kako bi
poiljaoc ponovo poslao pogrean 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 moemo
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
greaka), pametna kartica alje odgovor na resetiranje ATR (Answer to
Reset) preko ulazno-izlaznog I/O kontakta. To je podatkovni niz maksimalne
duljine 33 bajta, sadri podatke vezane za prijenosni protokol, podatke
vezane za samu karticu i obino se alje s vrijednou 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 (pokuava par puta, ako ne proradi
smatra da je kartica ili ita neispravan). Bez ulaenja 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 (vano za naredbe koje slijede), T1, T2, T3
znakovi povijesti kartice, te TCK koji je zatitna suma prethodnih bajtova
(eventualno moe biti i posljednji znak ATR-a, ovisno o protokolu) [1].

Poslije ATR-a (a prije slanja prve naredbe) terminal moe 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, izvrava 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 greke, kartica vraa potvrdu
(ACK) da je primila zaglavlje - terminal alje podatkovni dio s brojem bajtova
specificiranim u P3 (Data) - kartica izvrava naredbu, vraa status (SW1) i
duljinu podataka (SW2) - terminal trai odgovor (get response) s traenim
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
uspjeno izvrila naredbu i vratila eljene podatke, a SW2 sadri 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 due vrijeme za obradu ili se oekuju greke 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
Moe se rei da su pametne kartice samostalni sustavi, no ipak su
izloene opasnostima vanjskih imbenika. esto se primjenjuju u sustavima
koji zahtijevaju jaku sigurnosnu zatitu i autentifikaciju, pa je tehnologija
izrade pametnih kartica vrsto vezana uz sigurnost. Proizvoai donose nove
sloenije mjere zatite a hackeri smiljaju sve bolje i bolje naine probijanja
tih zatita. Ovo neprestano natjecanje vodi otkrivanju sve bolje i bolje
tehnologije [17].

Sigurnost pametnih kartica moemo promatrati kroz:
- komunikaciju
- sklopovlje
- operacijski sustav
- programe koji se izvravaju 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 sloenom 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 snaan procesor i dovoljno
memorijskog prostora, podaci se mogu verificirati pomou digitalnog potpisa
[17].

Najee koriteni enkripcijski algoritmi su DES, 3DES (triple DES) i
RSA s kljuevima 56, 168 i 1024 bita respektivno. Naalost ti algoritmi nisu
neprobojni (dokazali Ross Anderson i Markus Kuhn [12]). Pronalazak
sigurnosnih nedostataka omoguuje definiranje i nadopunjavanje postojeih
standarda te implementaciju novih rjeenja 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 teko 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 uniti i iz plastinog kuita izvadi mikromodul (slika
4.2) mogu je i reverzni inenjering (kopiranje sklopovlja). Napad analizom
razlika u potronji (DPA) je statistiki napad na kriptografske algoritme (vidi
poglavlje 4.5.8.). Temelji se na usporedbi hipoteze s izmjerenim rezultatom i
moe otkriti klju enkripcije. Jednostavniji napad analizom potronje (SPA)
takoer se moe 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 najvie jednom niti izvravanja koja upravlja raspoloivim
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 moe sadravati
elementarne datoteke (elementary file EF) i povezne datoteke (dedicated
file). Elementarne datoteke su datoteke s korisnikim podacima, a povezne
datoteke sadre 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 sadre sigurnosne atribute povezane s
pravima korisnika. Aplikacija moe 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 pogreno
unesen nekoliko puta, operacijski sustav zakljuava (blokira) karticu. Broj
moguih pogrenih unosa ovisi o programskom rjeenju. Nakon
zakljuavanja, kartica se moe otkljuati ako se unese poseban PIN za
otkljuavanje. I taj PIN ima broja pogrenih unosa, koji takoer moe
zakljuati pametnu karticu (u nekim sluajevima, nepovratno pa se kartica
moe 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
pogrenih unosa PIN-a vraa se na najveu vrijednost, a broja PIN-a za
otkljuavanje smanjuje se za 1 (ako postane 0, vie nije mogue otkljuati
karticu).
4.4. Programska rjeenja
Openito, sigurnost aplikacije odreena je sigurnou platforme na
kojoj se aplikacija izvodi, te sigurnosnim osobinama izvedenim u samom
dizajnu aplikacije. Veina dananjih platformi (npr. BasicCard, Java Card)
dizajnirana je na nain da omoguava izgradnju, instalaciju i izvoenje
kartinih aplikacija u visoko zatienom okruenju. Zbog prisutnosti
sigurnosnih osobina u samoj platformi, programeri koji razvijaju kartine
aplikacije mogu usredotoiti svoje napore na definiranje strategije zatite,
umjesto na programiranje aplikacija u svrhu nadomjetanja nesigurnosti
platforme.

Dobro definirana strategija zatite mora zadovoljiti sljedea svojstva:

Autentifikacija pristup funkcijama i podacima kartine aplikacije mora
biti strogo provjeren. Nuno je provesti proceduru autentifikacije u cilju
provjere identiteta aplikacije terminala. Kod vieuslunih 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 nuna je zatita privatnosti podataka kartine aplikacije.
Onemoguiti pristup zatienim podacima, kao to su broj rauna i iznos
kredita, bez prethodno izvrene 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 izvrene procedure
autentifikacije. Promjena podataka titi se i provjerom potencijalnih
pogreki, npr. iznos e-novanika ne smije prijei maksimalni iznos niti
postati negativan, te ugraenim sklopovsko-programskim rjeenjima
poput zatitne sume i slino.

Razliite kartine aplikacije zahtijevaju razliite razine sigurnosti.
Implementirani sigurnosni mehanizmi esto zahtijevaju vie 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 podrka, gotove procedure
i biblioteke enkripcijskih algoritama znatno olakavaju 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 podrava 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 podrani 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.
- nuna 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 njukanje po sadraju memorije.
- inicijalizacija varijabli mora biti provedena prije koritenja istih.
- razina pristupa svim razredima, metodama i poljima je strogo
kontrolirana. Na primjer, privatna metoda ne moe biti pozvana izvan
razreda u kojem je definirana.

26

U izrazito sigurnosno-osvijetenom 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
doputa da se privremeni podaci, kao to su kljuevi sjednica,
pohrane kao tranzijentni objekti u RAM memoriju. ivotno vrijeme
takvih objekata moe biti deklarirano kao CLEAR_ON_RESET ili
CLEAR_ON_DESELECT. to znai da se sadraj 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 vrimo operacije pisanja i
itanja. Za vrijeme operacije pisanja moe doi do sklopovske
pogreke 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 auriranju elementa postojanog objekta ili razreda. to
znai da kad doe do pogreke za vrijeme auriranja elementa,
platforma osigurava obnavljanje sadraja elementa na prijanju
vrijednost. Drugo, metoda arrayCopy u razredu Java
Card.framework.Util jami atomarnost blokovskog auriranja
viestrukih podatkovnih elemenata u polju. Ovdje atomarnost znai da
e svi bajtovi biti ili ispravno kopirani ili e kompletno odredino polje
biti obnovljeno na prijanju vrijednost. Tree, Java Card platforma
podrava transakcijski model u kojem kartina aplikacija atomarno
aurira nekoliko razliitih elemenata unutar razliitih postojanih
objekata. Ili se sva auriranja unutar transakcije moraju izvesti
ispravno i konzistentno ili se svi postojani elementi vraaju u prijanja
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 podrane platformom.

- dijeljenje objekata dijeljenje objekata je u Java Card sustavu
postignuto na sljedee naine. Prvo, JCRE je povlaten korisnik s
mogunou pristupa svim kartinim aplikacijama i svim objektima
koje one stvaraju. Drugo, kartina aplikacija potrauje 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 izvrava
Java Card stogovni stroj i kao takve nisu predmet sigurnosne zatite
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 doputa koritenje 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 zatitili. Pri razmatranju takvih sustava obino
se spominju standardi poput ISO 7816, CEN TC224 ili EMV. U novije vrijeme
sve vie se spominje i primjenjuje Java zbog svojih prednosti i raspoloivosti.
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 teak posao.
Dizajneri moraju razrijeiti pitanja poput programske pouzdanosti, odabrati
algoritam enkripcije i veliinu kljua, uoiti sigurnosne propuste sklopovlja i
trenutno vaeih protokola. Dizajneri koji razvijaju sigurno sklopovlje suoeni
su s izazovima poput: invazivnih napada (napada prekidom napajanja) ,
analize razlike u potronji ili iskoritavanja greke uzrokovane nepredvienim
okolnostima (npr. vaenje kartice za vrijeme izvravanja aplikacije). Ti
napadi opisuju se u iduim poglavljima.

Opasnosti i napadi kojima su izloene pametne kartice vrlo su skupi
(cijena sustava za otkrivanje podataka obino uvelike nadmauje cijenu
sustava koji se eli kompromitirati) ili je potrebno puno vremena za otkrivanje
povjerljivih informacija. Tehnologija pametnih kartica se razvija bre 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 zatitu svojih
podataka osobnim identifikacijskim brojem, jest broja pogrenih 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 vie se ne moe
koristiti (ovdje se promatraju pojednostavljeni primjeri kako bi se lake
doarale mogue opasnosti).


29
Broja pogrenih unosa spremljen je u EEPROM-u (privremenoj
memoriji pametne kartice). Kad korisnik unese pogrean osobni
identifikacijski broj, potrebno je promijeniti broja u EEPROM-u, to uzrokuje
poveanu potronju. Tu poveanu potronju 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 pogreno unesenog PIN-a

Vremensko trajanje operacije upisivanja u EEPROM je nekoliko
milisekundi, a poveana potronja se moe otkriti i prekinuti nakon nekoliko
mikrosekundi. Dakle, mogue je prekinuti napajanje prije promjene brojaa
unutar EEPROM-a. Sama injenica da je potrebno neto upisivati u
EEPROM, otkriva krivo uneen osobni identifikacijski broj. Napada moe
metodom pokuaja i pogreaka iskuavati pogrene PIN-ove, sve dok
operacijski sustav pametne kartice ne upie nita 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 vie
nema smisla.

Iako je ovo zastario nain napada, vjerno je prikazana najvea mana i
sigurnosna rupa pametnih kartica praenje potronje struje kako bi se
otkrile povjerljive informacije.

30
4.5.2. Napad prekidom napajanja
itai pametnih kartica obino nemaju mehaniku zatitu od vaenja
pametne kartice za vrijeme njenog koritenja. Zbog toga postoji mogunost
prekida napajanja koja nije napad na zatiene kartine podatke, nego
nenamjerna greka [8].
4.5.2.1 Nenamjerni prekid napajanja

Veina dananjih pametnih kartica koristi se u sustavu (terminal
pametna kartica) koji dozvoljava vaenje kartice za vrijeme njenog koritenja.
Takvo vaenje uzrokuje prekid napajanja na nain koji nije specificiran
standardom. Ako se u trenutku vaenja pametne kartice upravo izvravalo
pisanje u EEPROM, velika je vjerojatnost da e koritena memorijska adresa
ostati u nedefiniranom stanju, s nedefiniranim podacima. Bez mjera zatite,
moe doi do unitenja vanih 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 najvaniji kriterij sigurnosti
pametnih kartica kao vrhunskog tehnolokog rjeenja. Rjeenja 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 zatitne protumjere koje su
osnovni preduvjet sigurnosti pametnih kartica. Na tritu se mogu nai dvije
vrste rjeenja [8]:

- ograniena zatita transakcije: nakon prekida napajanja oteeni
podaci se prepoznaju i dojavljuje ih operacijski sustav pametne
kartice, funkcionalnost pametne kartice nije naruena, ali podaci su
izgubljeni. Ovakva zatita nije dovoljna za zahtjevne aplikacije, a njena
prednost je jednostavna implementacija.

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

Spomenuta rjeenja 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 zatita 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 zatite transakcije.


32
Uinkovitost se kod razliitih proizvoaa pametnih kartica znatno
razlikuje. U stvarnosti se broj ciklusa pisanja viestruko poveava zbog
mehanizama koji spremaju, upisuju i dodaju administrativne podatke,
zauzimaju, iste, pune i otputaju backtrace meuspremnik, pa broj moe biti
i pet do deset puta vei. Najbolji mehanizmi imaju broj ciklusa pisanja
otprilike trostruko vei od nezatiene inaice zbog specijalnih aplikacija koje
uinkovito koriste prirunu (cache) memoriju. Postoje rjeenja koja tite samo
vanije transakcije (npr. plaanje), manje vane transakcije su nezatiene.
Takva rjeenja prihvatljiva su na jeftinim pametnim karticama s ogranienim
EEPROM-om.
4.5.3. Defragmentacija memorije

Pitanje defragmentacije memorije dugo je bilo nerijeeno 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 raspoloive memorije. Memorija koja sadri takva mala
neiskoritena podruja, zove se fragmentirana memorija (vidi sliku 4.6).

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

Slika 4.6 Fragmentacija memorije pametne kartice

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

33
Defragmentacija je rjeenje postupak u kojem se sav aktivni sadraj
memorije kopira u kontinuiranom poretku, spajaju se sva manja neiskoritena
memorijska podruja u jedno slobodnu memoriju. Java programski jezik
nakon izvravanja programa poziva metodu za skupljanje smea (garbage
collection), ali pritom ne optimizira ono to ostane u memoriji (fiziki sadraj).
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 moe trajati i do 10
sekundi, i nije mogue napraviti backtrace meuspremnik u raspoloivom
EEPROM-u, dosad se smatralo da defragmentacija nije izvediva na
pametnim karticama.

No, 1998. godine IBM je razvio sofisticiranu metodu za rjeavanje
problema defragmentacije, i moe se rei da je defragmentacija pametnih
kartica implementirana, iako zahtjeva vrlo specifinu potporu. Predloena
metoda omoguava brzu defragmentaciju i potpuno je otporna na prekid
napajanja [18]. Spomenuta razmatranja su osnova za daljnje proirivanje, a
cilj je automatski postupak defragmentacije, nevidljiv korisnicima pametnih
kartica.
4.5.4. Greke u EEPROM-u
Puno neugodniji problem su greke u EEPROM-u. Proizvoai
mikroipova garantiraju uvanje podataka u vremenu od 10 godina. To je
statistiki rezultat koji teoretski ima i odstupanja - rijetke EEPROM greke
(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 unitenjem, ali se trebaju
razmotriti zbog mogunosti njihova javljanja. Lokacija promijenjenog bita ne
moe se predvidjeti, a stvarno iskustvo pokazuje da se (Murphyev zakon)
obino mijenja najvaniji bit. Takva promjena moe uzrokovati sigurnosni
problem i brigu korisnika zbog nepoznavanja uzroka greke.

Namjerna promjena memorijskog sadraja na pametnoj kartici
mogua je u ekstremnim uvjetima poput izlaganja ultraljubiastom ili
nuklearnom zraenju, no takav napad je gotovo nemogue izvesti precizno (u
sadanjim uvjetima) i rezultat je nepredvidiv.

Mogua namjerna ili nenamjerna promjena bita u memoriji pametne
kartice zahtjeva adekvatnu zatitu u operacijskom sustavu. Zbog toga svaki
sadraj EEPROM memorije mora imati zatitnu sumu (checksum).
Navedenog zahtjeva nema u postojeim standardima niti u veini
specifikacija, ali ga je mogue nai u sigurnosnim karakteristikama
kvalitetnijih rjeenja. Primjer uinkovitog naina izraunavanja zatitne sume

34
moe biti XOR operacija izmeu bajtova koje treba zatititi. 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 zatite od prekida napajanja, svaka mjera zatite od
promjene bitova memorije uzrokuje smanjenje uinkovitosti sustava pametne
kartice jer je potrebno dodatno vrijeme za izraunavanje zatitne sume, kao i
sigurna promjena zatitne 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 potronja struje.

Zapravo svaki podatak koji se sprema na ili koji se ita iz pametne
kartice zahtjeva specifinu koliinu struje, koju moemo na neki nain
smatrati otiskom odgovarajueg podatka (footstep). Kako je to realna
opasnost, proizvoai mikroipova razvili su uinkovite mehanizme zatite.
Najbolji nain zatite postie se kombinacijom programskih i sklopovskih
rjeenja.

Svrha napada na otisak potronje obino je otkrivanje kljueva ili
PIN-ova pametne kartice. Dosad je najuinkovitiji nain napada bio
vremenski napad.

Korelacija izmeu potronje struje i podataka koji se obrauju je
funkcija broja jedinica sadranih unutar podataka (ako podatak ima vie
bitova s vrijednou 1, potrebno je vie 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 potronji
struje razmotrimo kao primjer lou 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 pokuaja, napada moe mjerenjem uzoraka potronje
struje vidjeti slinost prilikom iskuavanja PIN-ova i namjetati uneseni PIN
sve dok ne pogodi idui znak. Pritom se moe ravnati vremenskim trajanjem
obrade i pravilom to je obrada dua to bolje.

Ve spomenute mjere zatite od napada PIN-a prekidom napajanja
mogu se primijeniti i protiv vremenskog napada, no nije teko zamisliti
situaciju u kojoj se mjerenje potronje struje kartice moe iskoristiti za
otkrivanje povjerljivih podataka, ako nisu prikladno zatieni. Jednostavan
primjer bila bi lozinka koja nema broja krivih unosa ili je on dovoljno velik, pa
je mogue donijeti zakljuke iz uzoraka dobivenih mjerenjem potronje 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 teko otkriti podatke mogunost ovakvog napada mora biti
sprijeena, pogotovo kod usporedbe npr. certifikata koji se koriste za
transakcije plaanja.

Sigurnosna zatita protiv vremenskog napada je generiranje jednakog
broja procesorskih ciklusa za razliite namjene, te onemoguavanje
otkrivanja podataka iz mjerenja potronje struje (za pogrean i ispravan unos
uzorci bi trebali biti isti). Koritenje takvih mjera ne smeta krajnjem korisniku
koji primjenu zatitnih mjera moe primijetiti jedino na sigurnosnom
odobrenju dobivenom s pametnom karticom. Izloenost i opasnost ovakve
vrste napada jo uvijek je slabo specificirana i dokumentirana [8].
4.5.6. Analiza diferencijalnih greaka

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 greaka Differential Fault Analysis). Oba napada temelje se
na pretpostavci da napada moe postaviti/obrisati odreeni bit u memoriji u
odreenom trenutku. To nije mogue u dananjim rjeenjima, 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 izvravamo normalnu
operaciju enkripcije/autentifikacije u kojoj se koristi klju koji elimo otkriti.
Drugi korak jest postavljanje vrijednosti odreenog bita kljua u 0
(pretpostavimo da moemo postaviti vrijednost bilo kojeg bita kljua). Ako
sada ponovo izvrimo operaciju iz prvog koraka, dobiti emo ili isti ili razliit
rezultat.

Ako je rezultat razliit, moemo 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 greaka, u stvarnosti bi
otkrivanje povjerljivih podataka bilo puno kompliciranije. Kako se poetna
pretpostavka promjene vrijednosti bita u memoriji pametne kartice ne moe
ostvariti, ovakva vrsta napada nije mogua u dananjim sustavima pametnih
kartica.

37
4.5.7. Napad analizom potronje
Kao realna mogunost otkrivanja povjerljivih podataka puno opasniji
su napadi izravnim mjerenjem potronje struje. Kod vremenskog napada
usporeivali su se uzorci mjerenja potronje 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
sadrajem 1 u nekom registru, no za uspjean napad nije potrebno
razumijevanje tih detalja. Dvije ee koritene vrste ovakvog napada su:
- analiza potronje (Single Power Analysis SPA)
- analiza razlika u potronji (Differential Power Analysis DPA)

Napad analizom potronje je posebno primjenjiv ako se npr. bitovi
kljua obrauju jedan za drugim (kao u procedurama za provjeru pariteta
kljua). U takvoj situaciji mjerenjem uzoraka potronje struje moe 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
moe izbjei), napad analizom potronje je mnogo zamreniji 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 tekog i preciznog mjerenja potrebnog
za uspjean napad analizom potronje. Meutim razmatranja vezana za
napad analizom potronje mogu se koristiti kao podloga za napad analizom
razlika u potronji [8].

Osim u DES algoritmu, obrada podataka bit po bit moe se izbjei,
posebno u procedurama provjere pariteta kljua. Za DES algoritam treba
ostvariti prikladnu zatitu koja otklanja mogunost SPA/DPA napada.
Vjerojatnost uspjenog napada analizom potronje (SPA) vea je nego
vjerojatnost uspjenog napada analizom razlika u potronji (DPA) ali zahtjeva
mnogo podataka poznatih samo programerima promatranog sustava i
detaljnu istragu (za napad na pametnu karticu koja nema odgovarajuu
zatitu).

38
4.5.8. Napad analizom razlika u potronji

Napad analizom razlika u potronji lake je izvediv od napada
analizom potronje i smatra se najopasnijom vrstom napada kojoj su izloene
dananje pametne kartice. Predstavio ga je Paul Kocher 1998. godine.

Ovakva vrsta napada ne zahtjeva poznavanje programskog rjeenja
unutar pametne kartice, pa je primamljiv napadaima koji na raspolaganju
imaju odgovarajuu opremu za mjerenje. Za uspjean napad potreban je
velik broj mjerenja potronje struje DES operacija enkripcije/autentifikacije s
istim kljuem.

Odabiru se sigurnosne operacije s poznatim ulaznim ili izlaznim
podacima. Nakon obrade nekoliko tisua uzoraka mjerenja potronje 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 potronji pokuava 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 vie skokova
u mjerenju potronje 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 moe 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. istraivakim institutima i fakultetima, to oteava njegovu
izvedbu. Najvea zapreka analizi razlika u potronji jest ogranien broj DES
operacija s istim kljuem. Dok god klju nije poznat, treba ponavljati operaciju
koja obino posjeduje broja pogrenih pokuaja. Ako postoji takav broja,
broj uzoraka koji se mogu dobiti mjerenjem ogranien je na maksimalan broj
pogrenih pokuaja to znatno oteava otkrivanje kljua, pa se moe rei da
je to prikladna zatitna mjera. Novija sklopovska rjeenja i operacijski sustavi
pametnih kartica takoer imaju ugraenu zatitu od napada analizom razlika
u potronji, pa je on gotovo nemogu ak i s neogranienim brojem mjerenih
uzoraka. Neke od zatitnih mjera su:

- tehnoloka barijera napredna 0.6 mikronska tehnologija uvelike
smanjuje potronju i relativne varijacije operativnih parametara
(napon, struja) pametnih kartica.

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

- nepredvidljivo ponaanje ugraeni vremenski okida (timer) s
mogunou slanja zahtjeva za prekid (interrupt) i nepredvidivi
generator brojeva stvaraju nepredvidive varijacije kod izvravanja
programskih rjeenja, i znatnu razliku u uzorku potronje 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 vieuslune pametne kartice napredan sustav
kontrole pristupa memoriji osigurava sigurnu podrku vieuslunim
pametnim karticama.

- sigurnosni mehanizmi i sklopovske funkcije skup sigurnosnih
mehanizama i sklopovskih funkcija koje aplikacijama omoguuju
otkrivanje i zatitu od mogueg napada poput neispravnih uvjeta rada,
pogrenog adresiranja, naruavanja 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 rijeiti pitanje sigurnosti pametnih kartica?
Pametne kartice su primjenjive u mnogim podrujima. Zamisao je
objediniti to vie 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 knjinice, osiguranja,
benzinske crpke, hotele, za kupovinu zrakoplovnih karata i sl. Kartica bi
mogla imati ugraene osnovne programe kod izdavanja i podrku za
dodavanje novih programa, naravno, uz uvjet da je dodavanje dozvolio
izdava kartica. Ako imamo samo jednu karticu, a vie kartinih aplikacija
koje su na kartici i vie aplikacija terminala koje koriste karticu, namee se
pitanje sigurnosti. to ako kartica doe u krive ruke, moe li jedan davaoc
usluga (npr. knjiniar) mijenjati podatke kartinih aplikacija drugih davaoca
(npr. policijskog slubenika). Kakva je sigurnost pri prijenosu povjerljivih
podataka s kartice preko Interneta ili mobitelom putem WAP-a. Moe li se i
kartini sustav zaraziti virusom? Moe li netko ukrasti novac s nje ili otkriti
gdje ste ga troili?

Nabrojana su razna sigurnosna pitanja koja moraju biti rijeena tako
da se zatiti korisnik i njegovi (povjerljivi) podaci. Izdavai kartica i
proizvoai programskih rjeenja za pametne kartice moraju koristiti
zajedniki jezik, u svrhu to kvalitetnijeg i sigurnijeg proizvoda (npr.
sklopovskim rjeenjima prilikom izrade kartica zatititi mogue programske
sigurnosne rupe i obrnuto). Neke od odgovora na ta pitanja sadri Common
Criteria (ISO 14508) standard, no ta pitanja potiu druga [16].

Poetni koraci u podruju vieuslunih pametnih kartica uinjeni su:
- u Europi, s EuroSmart standardom koji okuplja proizvoae
pametnih kartica i ISO 14508 standard.
- u Sjedinjenim Amerikim dravama, Visa i Smart Card Security
Users Group (SCSUG) razvojem SCSUG-Smart Card Protection
Profile koji izraava sigurnosne zahtjeve korisnika.
- u Tajvanu, na Industrial Technology Research Institute (ITRI)
razvojem Comprehensive Smart Card Architecture.
- u Sjedinjenim Amerikim dravama, Visa i GlobalPlatform razvojem
GlobalPlatform Card Specification i GlobalPlatform Card Security
Requirements Specification temeljenoj na ITRI arhitekturi.
- u Sjedinjenim Amerikim dravama, 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 tritu 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 uspjean izlazak na trite 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) uloile su godine istraivanja u razvoj operacijskih sustava pametnih
kartica. Razvijeni su sigurni programski sustavi za rad s ogranienim
mogunostima kojima raspolau 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 vie 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 podrci za kartice s mikromodulom. Neovisnost
proizvoaa sklopovlja i proizvoaa programa pametnih kartica uzrokuje
snienje cijena na dva naina:

- vie 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 tritu), ali
nude sklopovsko rjeenje 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 rjeenje koristi i
MasterCard International ali s Multos operacijskim sustavom preko 2
milijuna kartica izdano je u Junoj Koreji, Tajvanu, Maleziji i Filipinima. Velike
tvrtke tako omoguuju manje poznatim proizvoaima uspjeh na tritu, 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 pokuavaju zadrati trite 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 moe uzrokovati probleme (npr. GSM
tvrtki jer ne moe koristiti iste aplikacije terminala za razliite Java Card
pametne kartice). Novija rjeenja su sve vie standardizirana i uz
organizacije koje donose standarde izbjei e se problem interoperabilnosti.
Sve vea procesorska snaga pametnih kartica pribliava ih osobnim
raunalima. Programeri osobnih raunala ukljuiti e se u razvoj sustava
pametnih kartica i donijeti nova i bolja rjeenja.

Meu proizvoaima neovisnih rjeenja 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 sloen kartini operacijski sustav (COS) i mikrokontroler se
moe smjestiti na manjem silicijskom ipu. Tvrtke koje nude cjelovita kartina
rjeenja 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 moe 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 (moe se skinuti s
Interneta), veina BasicCard pametnih kartica ima cijenu upola
niu od ostalih trenutno raspoloivih pametnih kartica.

- jednostavno programiranje gotovo svatko moe programirati u
ZBasicu, ili to moe 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 podrka za enkripcijske
algoritme, a upisivanje i itanje iz EEPROM-a je vrlo jednostavno.

- sigurnost:
o Professional BasicCard podrava enkripciju javnog kljua
RSA, ECC, te AES i SHA-1 algoritme
o Enhanced BasicCard podrava DES, SHA-1, ECC i IDEA
algoritme
o Compact BasicCard podrava 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 najvie 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
izvrava P-code (razlikuje se od Java bytecode u instrukcijskom skupu i
tipovima podataka koje podrava [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 sadre prilino
sveobuhvatnu implementaciju Basic programskog jezika (ZBasic). Osim byte,
integer i long tipova podataka, podrani 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 sloeni i prosjenom korisniku previe zahtjevni, pa
takva ugraena sposobnost znatno olakava razvoj sigurnih rjeenja.
BasicCard pametne kartice izraene su prema ISO standardima vaeima 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. Podrava
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 iskoritenje RAM-a. Izvorni kod se moe
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 izvravati. 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 izvravaju po primitku naredbi od
strane terminala. Pametna kartica je podreeni ureaj (slave), dok je terminal
nadreen (master) i aplikacije koje se izvravaju na terminalu odabiru
naredbe koje e izvravati kartina aplikacija. Kartina aplikacija moe
sadravati 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 produenje vremena
ekanja (vidi poglavlje 3.2).

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

- virtualni stroj za izvravanje P-code.

- Enhanced i Professional inaice sadre 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 sadre datoteni sustav slian
DOS-u s direktorijima organiziranima u stablastoj strukturi (vidi
poglavlje 4.3.). Pristupanje direktorijima i datotekama mogue je na
vie 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 moe na karticu pisati,
itati ili mijenjati datoteke i direktorije kao da je obina
disketa.

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



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

- Professional inaice sadre generator sluajnih brojeva i nude
kvalitetniju sigurnosnu zatitu [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 izvravanje
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 izvravanje programa. ZC-Basic prevodioc izraunava koliko
memorije treba iz kojeg podruja, a ostatak dodjeljuje RAM i EEPROM
podruju alociranom za izvravanje programa. BasicCard virtualni stroj
podrava 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). Moe sadravati 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 viim programskim jezicima

Tvrtka ZeitControl razvila je efikasno suelje (API) za vie programske
jezike (trenutno su podrani C/C++, Visual Basic i Delphi) koje programerima
omoguava koritenje i povezivanje obaju sustava (npr. grafiko korisniko
suelje i BasicCard aplikaciju). Suelje je razvijeno za Windows 32-bitnu
razvojnu platformu. Podrani 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 podranih itaa (detektiraju se za
vrijeme izvravanja 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. Podrane 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 moe 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 okruenju. Ako elite promijeniti mobilni
telefon, samo zamijenite aparat, a vau osobnu pametnu karticu
premjestite.

Dananje pametne kartice proiruju mogunosti tradicionalnih kartica
s magnetskom trakom, dajui korisnicima nove mogunosti i poboljanja,
ukljuujui:

- siguran pristup podacima s Internet (web-based) i mogunost pohrane
vie aplikacija na samo jednu pametnu karticu
- 100 (i vie) puta vei kapacitet za pohranu podataka (memorije su
vee, jeftinije)
- poveanu sigurnost i zatitu 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 tritu 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 uao u partnerstvo
s vie od 35 vodeih tvrtki na tom podruju, a vrlo veliki broj Java programera
je mamac za proizvoae. Broj rjeenja 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). Izvrni kod nije ovisan o platformi, pa svaka kartica koja ima Java
interpreter moe izvriti istu aplikaciju. Na jednoj kartici moe biti vie 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
koritenja javnih i privatnih kljueva i na taj nain ostvaruju tu razinu.
Trenutno je osobni identifikacijski broj (PIN) uobiajeni nain za siguran
pristup, ali u blioj budunosti to bi mogao biti i npr. otisak prsta. Tei se
tome da se proces autentifikacije to vie pojednostavi uz to viu razinu
sigurnosti.

Snaga Java platforme i mogunost pohrane vie 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% trita pametnih kartica.
Financijska trita su takoer vrlo velika mogunost. Do 2005. velik dio
svjetske bankovne industrije, poevi 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 zatitu.
Porastom tzv. e-commerce poslova sve vie 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, parkiralita i garae) ili
kao kartu (npr. avionsku ili autobusnu), sve to bez potrebe za kopanjem po
depovima i traenjem 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 okruje registrirano na
OEM bazi kod proizvoaa pametnih kartica i zauzima 90% trita 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
okruenje 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 raspoloiva.

- mogunost multi-aplikacija Java Card tehnologija omoguuje
istovremenu sigurnu koegzistenciju vie 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
podrava samo paljivo 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
podrane i nepodrane osobine Java jezika u tehnologiji Smart Card. Kljune
rijei nepodranih svojstava su takoer isputene 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
Podrane osobine Jave Osobine Jave koje nisu podrane
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
Viedimenzionalna polja
Dinamiko uitavanje razreda
Sigurnosni manager
Sakupljanje smea i
finalizacija
Dretve
Serijalizacija objekata
Kloniranje objekata

Programski alat za provjeru koda (provjera class datoteka) smjeten 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 moe uitati i
izvravati 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 izvrna okolina koja
osigurava sigurno i nezavisno izvravanje kartinih aplikacija

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

Uz navedene osnovne komponente na slici 5.2 prikazana su dva
suelja pametne kartice koja programer moe 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 izvrna okolina

Sve su Java Card pametne kartice potpuno kompatibilne s Java Card
specifikacijom koja je specificirana od Sun Microsystems grupe. Izvrna
okolina omoguuje izvravanje Java Card kartinih aplikacija. Java Card
izvrnu 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, mrenom
komunikacijom, za izvravanje 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 lake pisati za
razliite arhitekture.

Dijelovi Java Card izvrne 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 sadri i neke servise specifine za pametne kartice poput
dijeljenja objekata izmeu kartinih aplikacija i odailjanja APDU-a izmeu
razliitih kartinih aplikacija ili njihovih dijelova. Aplikacijski zatitni 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 izvrava se
kao proces operacijskog sustava. Podaci i objekti se kreiraju u RAM-u. Kada
proces zavri s radom, Java aplikacije i njihovi objekti se automatski
unitavaju. Na Java pametnoj kartici, Java stogovni stroj se izvrava unutar
Java Card izvrne 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 izvravanje 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 zavrila, JCRE izvodi potrebno
ienje (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 podrava 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 zavretku 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 izvravati na bilo kojoj pametnoj kartici koja podrava JCVM,
nezavisne su o sklopovskim komponentama na kojima se izvravaju i
pojedine aplikacije se mogu izvravati 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 sadri byte-kod interpreter i alat za
upravljanje sigurnou.

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 okruenje za upravljanje pametnim
karticama koje na sebi sadre vie 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 sigurnou 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 sadri 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 izvri vie 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 drutvo (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
drutvo
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 drutvo (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 koritenje 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
postie se odabirom stavki Edit i Refresh u glavnom izborniku. Aplikacija
pretrauje registrirane itae i zahtjeva odabir itaa kojeg ete koristiti
(prikazano na slici 6.3).


Slika 6.3 Odabir koritenog itaa
Promjena itaa (ako ih ima vie) 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 pokuava povezati s karticom. U sluaju
uspjenog 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 drutva) 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 posluitelj s bazom podataka o korisnicima.
Unutar prozora HealthInsuranceUser moe se odabirom tipke Pretraivanje
baze, pretraivati 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 drutva zatrai zdravstvenu pametnu
karticu HealthCard, osiguravajue drutvo 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 upiu podaci o korisniku), stanje Test postavlja se za vrijeme
testiranja sustava, a stanje Run se postavlja kad je kartina aplikacija u
cijelosti razvijena (vie 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

Slubenik osiguravajueg drutva odabire kartinu aplikaciju za
uitavanje koja se zatim uitava na karticu (brie se sadraj 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 naputa 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 drutva (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.

Slubenik osiguravajueg drutva 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 uspjeno 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 unoenje 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).
Slubenik osiguravajueg drutva popunjava potrebna polja u prozoru
HealthInsuranceUser i odabire tipku Upii na karticu i u bazu. Aplikacija
zapoinje komunikaciju kriptiranu sjednikim kljuem, upisuje podatke o
korisniku na karticu i zavrava 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
- koriteni 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 drutvu
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 drutva, 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\Ispii 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 (zatieni AES
simetrinom enkripcijom). U imenu datoteke nalazi se jednoznana ifra koja
odreuje recept. Odlaskom kod ljekarnika i izdavanjem odreenog lijeka,
recept (datoteka) se brie s kartice, uteeno je dragocjeno vrijeme,
izbjegava se papirologija, poveava jednostavnost i sigurnost koritenja.
Recepti se briu pojedinano (stavka Obrii recept) ili svi (stavka Obrii 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. Pretraivanje baze podataka korisnika
Kao i u aplikaciji namijenjenoj osiguravajuem drutvu omogueno je
pretraivanje baze podataka i pregled rezultata. Pretraivanje zapoinje
odabirom stavke Korisnik i Pretraivanje 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
vie 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 Pretraivanje baze podataka o korisnicima



68
6.3. Kartina aplikacija HealthCard

Kartine aplikacije (appleti, cardleti) se piu na terminalu, u jeziku
kojeg podrava operacijski sustav kartice. Nakon prevoenja uitavaju se na
karticu pomou naredbi ili gotovih alata (dobivenih od proizvoaa).
Programeri kartinih aplikacija trebaju se pridravati pravila jezika u kojem
piu (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.

Prijanje 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 troak
(nakon putanja 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 bre vrijeme
do pojave na tritu (time to market) i znatno produuje 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. Zatita 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 izvrnih 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 sadraja 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 grekama u kodu, a mogu se koristiti i
istovremeno kao virtualna kartica i ita (time se olakava traenje greke).
Prilikom prevoenja potrebno je specificirati inaicu koritene BasicCard
pametne kartice. Prevoenjem se dobiva datoteka (*.img) pogodna za
prijenos i pohranu na karticu ili za simulaciju. Alat za simulaciju moe
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 prola sva testiranja i personalizirana
je, ovom stanju kartica dolazi u ruke korisnika, vie 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 lake otkriti greke same kartine aplikacije. Otkrivene greke se
ispravljaju i kartina aplikacija se ponovo uitava na karticu. Konano, nakon
ispravljanja greaka kartina aplikacija se testira s aplikacijom terminala
(kartina aplikacija je ve testirana i lake se otkrivaju greke 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 izvravati
- 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 zatien je pravima pristupa aplikacija terminala moe
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 izvrenje
naredbi. Naredbe se definiraju svojim razredom i instrukcijom unutar razreda
(CLA i INS bajtovi vidi poglavlje 3.2.). HealthCard podrava 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 obavjetava ita rezultatu poslane naredbe).
Odgovor sadri i statusne rijei koje definiraju moguu greku. 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 izvrava 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 podrane 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 moe izvriti zadatak odreen primljenom naredbom. Za svaki
APDU odgovor, kartina aplikacija bi trebala definirati skup statusnih rijei
(status words SW) koje pokazuju rezultat izvravanja naredbe. Za normalan
zavretak izvoenja, aplet alje succes (0x9000, prema ISO 7816). Ako
doe do greke, 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 viem programskom jeziku (u ovom primjeru Visual Basic [6])
definira i skup statusnih rijei koje signaliziraju uobiajene greke, poput
krivog formata APDU naredbe.


6.3.6. Svojstva koritene 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 podrku za ECC-
167, AES, DES i SHA-1 enkripcijske algoritme.

Aplikacije terminala pisane su u Microsoft Visual Studio.NET Visual
Basicu. Koriteno 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 koritenje u sustavu zdravstva. Primjenom takvog sustava
olakan 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 dosadanjim papirnatim dokumentima. Sustav kao primjer
koristi lijeniki recept, ali mogue ga je proiriti 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 Childs 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. Saetak
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 zatitu komunikacije simetrinim AES algoritmom. Podaci o
korisnicima i dokumentima su pohranjeni u bazama podataka, jednostavno
se mijenjaju, briu i unose. Pametna kartica koristi se kao identifikacija
korisnika i kao mjesto pohrane podataka umjesto dosadanjih 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

You might also like