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
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.
- 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].
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:
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:
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.
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:
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:
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.
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