SVEUČILIŠTE
U ZAGREBU
FAKULTET ELEKTROTEHNIKE I
RAČUNARSTVA
Zavod za elektroniku,
mikroelektroniku, računalne i inteligentne sustave
SEMINARSKI
RAD
VIŠENAMJENSKA PAMETNA
KARTICA
0160010184
Mentor:
doc. dr. sc. Marin Golub
Izvorni kod, java izvršni kod(class datoteke) i paketi potrebni za rad aplikacije: aplikacija.zip
2.
OSNOVNO O PAMETNIM KARTICAMA
2.3.2
Kontaktne mikroprocesorske kartice
2.3.3
Bezkontaktne mikroprocesorske kartice.
2.3.4
Kombinirane mikroprocesorske kartice
4.1.2
Kartice sa spremljenim vrijednostima(Stored Value Card)
4.2
Sigurnost i autentifikacija
4.2.1
Korištenje kriptografije
5.
DATOTEČNI SUSTAV I KONTROLA PRISTUPA
5.1
Datotečna logička struktura
5.1.2
Glavna datoteka (Master File – MF)
5.1.3
Namjenska datoteka (Dedicated File – DF)
5.1.4
Elementarna datoteka (Elementary File – EF)
5.1.4.1
Transparentna datoteka
5.1.4.2
Linearna datoteka s blokovima jednake veličine
5.1.4.3
Linearna datoteka s blokovima promjenjive veličine
5.1.4.4
Ciklička datoteka s blokovima jednake veličine
5.2
Sigurnost datotečnog sustava
5.2.1
Doseg pojedinog atributa pristupa
6.1
Odgovor na resetiranje ATR ( Answer to reset)
6.2
Protokoli za komuniciranje
6.3
APDU (Application Protocol Data Units)
7.1
Elementi Java Card aplikacije
7.1.1
Pomoćne aplikacije i sistem
7.1.2
Aplikacije poslužitelja(host)
7.1.3
Java Card apleti na kartici i okolina.
7.2
Komuniciranje s Java Card apletom (pristup pametnoj kartici)
7.2.1
Komuniciranje preko poruka
7.2.2
Java Card Remote Metode Invocation(JCRMI) model
7.2.3
Security and Trust Services API(SATSA)
7.3
Java Card Stogovni Stroj(JCVM)
7.4
Java Card Izvršna Okolina(JCRE)
7.4.1
Životni ciklus Java Card apleta
7.4.2
Java Card sjednica i logički kanali
7.4.3
Izolacija apleta i dijeljenje objekata.
7.5
Java Card API(Application Programming Interface)
7.5.5
javacard.framework.service
8.
IMPLEMENTACIJA VIŠENAMJENSKE PAMETNE KARTICE
8.1
Višenamjenska pametna kartica
8.1.1
Identifikacijska kartica
8.2 Izvedba višenamjenske pametne kartice
8.2.1
Apleti za pametnu karticu
8.3
Sigurnosni mehanizmi i komunikacija
8.4
Opis razreda za implementaciju višenamjenske pametne kartice
8.4.1
Razredi za aplete koje izvodi pametna kartica
8.4.2.1
Razredi za implementaciju kriptografskih funkcija
8.4.2.2
Razredi za komunikaciju s pametnom karticom
8.4.2.3
Razredi za izradu grafičkog sučelja
Razvoj tehnologije omogućio je minijaturizaciju uređaja. S tim razvojem nastala su i mala računala koja se mogu smjestiti na jedan čip. Ova mala računala omogućila su nastanak pametne kartice, čija osnova je malo ugrađeno računalo na plastičnoj kartici. Razvoj tehnologije donio je i veću potrebu za sigurnošću. Pametna kartica s čipom uvelike doprinosi sigurnosti korisnikovih podataka i sredstava spremljenih na kartici te mogućnosti korištenja različitih usluga jednom pametnom karticom, dok joj njezina veličina omogućuje laku prenosivost.
Ovaj seminar u početku uvodi u osnovna znanja o pametnim karticama, opisuju se neki važniji standardi te primjena pametne kartice u različitim aplikacijama, opisuje se datotečna struktura pametne kartice te pristup datotekama na pametnoj kartici, nakon toga slijedi opis komunikacije pametne kartice s uređajima za prihavat pametnih kartica. Jedan od važnijih elemenata koji je potreban za razvoj aplikacija za pametne kartice je Java Card tehnologija koja je također opisana.
Na kraju seminara opisuje se praktični rad u kojem se radilo na više aplikacija za pametnu karticu koja se tada može upotrebljavati u različitim vrstama usluga čime ona postaje višenamjenska pametna kartica.
2. OSNOVNO O PAMETNIM KARTICAMA
Pametnu karticu(eng. Smart Card) možemo opisati kao plastičnu karticu sa umetnutim čipom koji sadrži mikroprocesor. Pametne kartice ne sadrže u sebi nikakav uređaj za napajanje već napajanje dobivaju od uređaja za prihvat kartica CAD(Card Acceptance Device). Pametna kartica izgleda kao normalna kreditna kartica s razlikom što na sebi ima metalne kontakte (kod kontaktnih kartica). Za razliku od kreditne kartice s magnetnom trakom, pametne kartice pružaju puno veći nivo sigurnosti za podatke koji su na kartici, a također se jedna kartica može koristiti za više različitih usluga, a za svaku uslugu zadužen je određeni program spremljen na kartici.
Pametna kartica se ponekad definira kao kreditna kartica s "mozgom", a za mozak se smatra malo ugrađeno računalo na čipu koji je umetnut u karticu. Zbog ovog takozvanog ugrađenog "mozga", pametne kartice su poznate i kao čip-kartice ili IC-kartice(integrirani krug, eng. integrated circuit). Neki tipovi kartica mogu imati samo trajnu memoriju sa upisanim sadržajem, dok druge imaju ugrađen mikroprocesor. Uglavnom plastična kartica sa ugrađenim čipom u sebi može se smatrati pametnom karticom, međutim u većini slučajeva pametnom karticom se smatra kartica koja ima ugrađeni mikroprocesor.
Kapacitet za spremanje podataka kod pametnih kartica je mnogo veći od kapaciteta kod magnetskih kartica. Ukupan kapacitet magnetske kartice je 125B, dok se kapacitet pametnih kartica kreće najčešće od 1KB do 64KB. Drugim riječima jedna pametna kartica od 64KB može spremiti podataka isto kao i 500 magnetskih kartica.
Očigledno je da je veliki kapacitet prednost u korištenju pametnih kartica, ali jednom od najvažnijih funkcija pametne kartice smatra se činjenica da podaci spremljeni na pametnu karticu mogu biti zaštićeni od neovlaštenog pristupa i mijenjanja podataka. Unutar pametne kartice, pristup memoriji kontroliran je sigurnim logičkim krugovima. Kako pristup podacima na kartici može biti jedino preko serijskog sučelja koje je nadgledano i upravljano operacijskim sustavom i sistemom sigurne logike, povjerljivi podaci zapisani na kartici su zaštićeni od neovlaštenog vanjskog pristupa. Ovi zaštićeni podaci mogu jedino biti obrađeni mikroprocesorom unutar kartice.
Zbog toga što je teško pročitati ili zapisati podatke na karticu bez autorizacije te zbog toga što pametna kartica može stati u svaki džep, pametna kartica je isključivo primjerana za sigurnu pohranu podataka. Bez dozvole vlasnika kartice, podaci ne mogu biti čitani ni mijenjani.
Karticu sa umetnutim mikroprocesorom prvo su izmislila dva Njemačka inženjera 1967. godine. Međutim ova kartica nije bili predstavljena javnosti sve dok francuz Roland Moreno nije objavio patent na pametne kartice u Francuskoj 1974. godine. Razvojem poluvodičke tehnologije u proizvodnji mikroprocesora, cijena izrade pametne kartice se jako smanjila. Probijanje pametne kartice na tržište dogodilo se 1984. godine kada je francuska pošta i telekomunikacije pustilo u promet telefonske kartice sa čipom.
1987. godine donijeta je specifikacija ISO-7816 za pametne kartice od međunarodnog odbora za standarde (International Standard Organisation – ISO) i od tada format pametne kartice je standardiziran. U današnje vrijeme kartice različitih proizvođača mogu komunicirati sa terminalima koristeći zajednički set naredaba.
Prema fizičkim karakteristikama čip-kartice mogu biti razvrstane u četiri glavne kategorije:
- memorijske kartice
- kontaktne mikroprocesorske kartice
- bezkontaktne mikroprocesorske kartice
- kombinirane mikroprocesorske kartice
Memorijske kartice su kartice koje na umetnutom čipu imaju samo memoriju i pristupnu logiku. Slično kao i kartice sa magnetskom trakom, memorijske kartice mogu biti korištene samo za spremanje podataka tj. nema mogućnost obrade podataka. Bez ugrađenog mikroprocesora, koristi se sinkroni komunikacijski mehanizam između čitača i kartice gdje je komunikacijski kanal pod direktnom kontrolom čitača. Pohranjeni podaci na kartici mogu biti čitani odgovarajućom naredbom.
U starijim memorijskim karticama nema ugrađene sigurne kontrolne logike. Zbog toga neovlašten pristup podacima na kartici ne može biti spriječen. Današnje memorijske kartice imaju u čip ugrađenu i sigurnu logiku koja omogućuje da pristup sigurnoj zoni imaju samo korisnici sa odgovarajućom lozinkom.
Kontaktne mikroprocesorske kartice su kako i naziv govori kartice koje imaju ugrađen mikroprocesor na umetnutom čipu, a prijenos podataka može biti samo onda kad je kartica umetnuta u uređaj za prihvat kartica CAD(eng. Card Acceptance Device) ili čitač kartica za što kartica ima osam zlatnih kontakata na sebi kojima se električki spaja sa CAD uređajem..
Na čipu su uz mikroprocesor i ostale komponente koje sačinjavaju arhitekturu računala, dakle komponente koje su na čipu su:
- mikroprocesor
- maskirajuća ROM memorija
- nepromjenjiva memorija (EEPROM)
- RAM memorija
- Ulazno/izlazni(I/O) port
Vanjski izgled ovih kartica baziran je na ISO-7816-1 i ISO-7816-2 standardu koji određuje dimenzije kartice te smještaj kontakata na kartici i njihov razmještaj, struktura kontaktne pametne kartice prikazana je na slici 2.1.
Slika 2.1 – Struktura kontaktne pametne kartice
Razlika između ovih kartica i memorijskih je u tome što ove kartice mogu izvoditi programe koji su pohranjeni u trajnu memoriju koja je obično EEPROM memorija.
Jedna od glavnih mogućnosti mikroprocesorskih pametnih kartica je sigurnost. U stvari kontaktne mikroprocesorske pametne kartice su uglavnom prilagođene za sigurni prijenos podataka. Ako se korisnik ne autentificira uspješno, podacima spremljenim na kartici neće se moći pristupiti. Također ako je kartica izgubljena, podaci spremljeni na kartici neće biti izloženi neovlaštenom pristupu ako su ti podaci prikladno spremljeni na kartici. Pošto je sama kartica malo računalo ona može sigurno obraditi unutarnje podatke te slati rezultat na I/O port.
Kontaktne pametne kartice nisu pogodne za sve tipove aplikacija, osobito kada su uključene masovne transakcije, npr. u transportu, i kada je potrebno da se podaci sa kartice pročitaju u vrlo kratkom periodu vremena, kontaktne kartice kod kojih je potrebno da se umetnu u CAD uređaj prije nego dođe do prijenosa podataka nisu baš dobar izbor. Korištenjem elektro-magnetskih valova bezkontaktne pametne kartice mogu slati podatke prema CAD uređaju sa udaljenosti od nekoliko cm do 50 cm. Transakcija kod ovih kartica može se izvršiti tako da se kartice uopće ne vadi iz korisnikovog novčanika.
Ove kartice isto kao i kontaktne nemaju nikakvo unutarnje napajanje već koriste tehnologiju koja omogućava CAD uređajima da napaja i komunicira s karticom, bez fizičkog kontakta s karticom, preko elektromagnetskih valova. Struktura bezkontaktne kartice prikazana je na slici 2.2.
Sika 2.2 – Struktura bezkontaktne pametne kartice
Bezkontaktne pametne kartice su pogodne kod velikog broja pristupa kartici i prijenosa podataka, ali nisu pogodne kad je potreban prijenos velike količine podataka od kartice prema CAD uređaju. Također jedan od nedostataka bezkontaktnih kartica je taj da može doći do transakcije između CAD uređaja i kartice bez znanja korisnika.
Kontaktne i bezkontaktne kartice koriste dva različita protokola za komuniciranje s CAD uređajem. Obje kartice imaju svoje prednosti i nedostatke. Kontaktne pametne kartice imaju veći nivo sigurnosti, dok bezkontaktne kartice imaju bolje i jednostavnije za korištenje transakcijsko okruženje. U pokušaju da se korisnicima omoguće prednosti jednih i drugih kartica. Postoje dva načina na koji se to može načiniti:
1. pametna kartica ima dva sučelja za komunikaciju, jedno je kontaktno, a drugo je bezkontaktno tako da kartica može komunicirati sa CAD uređajem tako da se stavi u njega ili preko elektromagnetskih valova
2. kontaktna pametna kartica se umetne u poseban uređaj koji ima napajanje za karticu i antenu tako da može komunicirati preko elektromagnetskih valova sa CAD uređajem
Kroz povijest razvoja pametnih kartica uspostavljeni su različiti standardi za rješavanje problema kompatibilnosti kartica različitih proizvođača. Prvi standard bio je ISO-7816 kojeg je izdala međunarodna organizacija za standarde(International Standard Organisation - ISO) 1987. godine. Prije toga proizvođači kartica i CAD uređaja imali su svoje standarde za te kartice i uređaje koji nisu bili kompatibilni s karticama i uređajima ostalih proizvođača. Sa ISO standardom pametne kartice različitih proizvođača mogu komunicirati istim protokolom. Fizičke karakteristike i dimenzije su također jednake za sve kartice i one su također propisane standardom, također je propisan položaj kontakata na kartici te značenje pojedinog kontakta te protokol i sadržaj poruka kod razmjene poruka. Ovi standardi osiguravaju da kartice proizvedene od jednog proizvođača mogu biti prihvaćene od CAD uređaja drugog proizvođača.
Osim ISO standarda postoje i drugi standardi, slijedi popis najvažnijih standarda za pametne kartice:
- ISO-7816
- EMV (Europay, Mastercard, Visa)
- GSM (Global Standard for Mobile Communications)
ISO-7816 je međunarodni standard za pametne kartice(čip kartice). ISO-7816 standard sastoji se od šest dijelova:
1. ISO-7816-1
2. ISO-7816-2
3. ISO-7816-3
4. ISO-7816-4
5.
ISO-7186-5
6.
ISO-7186-6
Ovaj dio ISO-7816 standarda opisuje fizičke karakteristike pametnih kartica njezine dimenzije, te otpornost kartice na vanjske smetnje.
Dimenzije kartice po ovom standardu iznose 85.60mm × 53.98mm × 0.80mm. Za karticu su također propisane granice izlaganja koje kartica mora izdržati u različitim elektromagnetskim fenomenima kao što su rengenske zrake, UV svjetlo, elektromagnetska polja, elektrostatička polja te temperatura ambijenta u kojem se nalazi kartica tako da ona i nakon izlaganja tim uvjetima i dalje normalno funkcionira. Također ovaj standard određuje karakteristike kartice kada se ona savija ili rasteže, ovo osigurava da je kartica proizvedena tako da se garantira besprijekorno funkcioniranje kartice i da ona obavlja svoju funkciju u očekivanom životnom ciklusu kartice. Ovaj standard također određuje da spojevi između površinskih kontakata i ulazno izlaznih pinova integriranog kruga moraju biti otporni na mahaničke stresove.
ISO-7816-2 standard određuje dimenzije i lokaciju kontakata na kartici te funkciju i poziciju određenog kontakta. Kontaktna pločica na površini pametne kartice koja je spojena za izvodima integriranog kruga(čipa) umetnutog u pametnu karticu ima osam kontakata koji su označeni od C1 do C8. Međutim nije svih osam kontakata povezano sa integriranim krugom i u današnje vrijeme ti kontakti još nemaju svoju specijalnu funkciju već su ti kontakti rezerviarni za buduću upotrebu. Na slici 3.1 prikazan je raspored kontakata, a u tablici 3.1 oznake i opis pojedinog kontakta.
Slika 3.1 – Raspored kontakata pametne kartice
Kontakt |
Oznaka |
Opis |
C1 |
Vcc |
Kontakt za napajanje integriranog kruga – obično se kreće od +3V do +5V |
C2 |
RST |
Kontakt za reset preko kojeg se pokreće reset protokol |
C3 |
CLK |
Kontakt preko kojeg dovodimo takt signal integriranom krugu |
C4 |
RFU |
Rezervirano za buduću upotrebu (Reserved for Future Use) |
C5 |
GND |
Kontakt električne mase |
C6 |
Vpp |
Napajanje koje se u prošlosti koristilo za programiranje EEPROM memorije |
C7 |
I/O |
Ulazno/izlazni port, veza kartice s vanjskim svijetom, omogućuje half-duplex komunikaciju između čitača i CAD uređaja |
C8 |
RFU |
Rezervirano za buduću upotrebu (Reserved for Future Use) |
Tablica 3.1 – Oznake i opis kontakata pametne kartice
Ovaj dio standarda opisuje električne signale i protokole prenošenja signala kod pametnih kartica. Većina ovog standarda važna je za proizvođače CAD uređaja i za programere koji žele uspostaviti komunikaciju s pametnom karticom na vrlo niskom nivou, signalnom nivou. Ovim standardom deklariraju se razine napona, jačine struja te perioda trajanja signala, također se definiraju protokoli(T=0, T=1) omuniciranja između CAD uređaja i kartice
Ovaj standard određuje cijelu logičku strukturu pametne kartice te naredbe i protokole za komuniciranje, a specificira:
- sadržaj poruka, naredbi i odgovora, odaslanih od CAD uređaja prema kartici i obrnuto
- strukturu i sadržaj bajtova koje šalje pametna kartica kao odgovor na reset
- strukturu datoteka i podataka
- metode pristupa datotekama i podacima na kartici
- metode za sigurno komuniciranje
- metode pristupa algoritmima koji su procesuirani na kartici. Ovaj standard ne opisuje te algoritme
Ovaj dio standarda opisuje brojevni sustav za prikaz identifikatora aplikacija AID-a(eng. Application Identifiers). Svaki AID ima dva dijela. Prvi dio je identifikator registriranog aplikacijskog pružatelja RID(eng. Registered Application Provider Identifier) koji se sastoji od 5 bajta i oni su jedinstveni(eng. unique). Drugi dio AID je varijabilne duljine do 11 bajtova koji omogućuje RID-u identifikaciju specifične aplikacije.
Opisuje međuindustrijske podatkovne elemente, fizički transport uređaja i prijenos podataka, odgovor na reset ATR(eng. Answer To Reset). Ova specifikacija dozvoljava dva protokola T=0 i T=1. Kartica može podržavati bilo koji, ali ne oba.
EMV sandard također je jedan od važnijih standarda za pametne kartice kojeg su formirale vodeće financijske tvrtke u kartičnom poslovanju Europay, Mastercard i Visa. Ovaj standard pokriva elektromehaničke karakteristike, protokole, podatke te instrukcije koje spaja sa bankovnim transakcijama. Cilj EMV specifikacije je da svi sustavi za plaćanje dijele iste POS-terminale(eng. Point of Sales), kao što to čine magnetne kartice i aplikacije za njih. Zbog toga što će se uskoro sve bankovne magnetne kartice mijenjati pametnim karticama, ovaj standard osigurava da nove bankovne pametne kartice budu kompatibilne s bankovnim transakcijskim sustavima. Zahvaljujući ovom standardu, sve bankovno orijentirane pametne kartice bit će kompatibilne jedna s drugom isto kao i prijašnje(dosadašnje) magnetne kartice. Fleksibilnošću EMV standarda, bankama je dopušteno da dodaju svoje opcije i specijalne potrebe u platni sustav pametnih kartica.
GSM(eng. Global Standard for Mobile Communications) standard je jedan od najvažnijih stndarda za pametne kartice u digitalnim mobilnim komunikacijama. GSM specifikacija započela je 1982. godine pod CEPT-om(Conference Euopeanne des Postes et Telecommunications), kasnije je nastavljena pod ETSI-em(eng. European Telecommunications Standards Institute). GSM specifikacija podijeljena je u dva dijela, prvi dio opisuje osnovne funkcionalne karakteristike dok drugi dio opisuje sučelje te logičku strukturu kartice. Originalno, ova specifikacija je bila prvenstveno napravljena za mobilnu telefonsku mrežu. Kada se pametna kartica počela koristiti u mobilnim telefonima kao modul identifikacije pretplatnika(eng. Subscriber Identification Module – SIM), dio GSM standarda postao je standard pametnih kartica.
Sa GSM mrežom, sve GSM tvrtke izdaju SIM kartice svojim pretplatnicima. Svaka SIM kartica ima funkciju da identificira pretplatnika u mreži. SIM kartica može biti standardnih dimenzija ili manjih dimenzija. Zbog toga što se ova kartica koristi za držanje funkcija GSM mreže koriste se mikrokontroleri boljih performansi, mikroprocesor je najmanje 16-bitni dok je EEPROM memorija namijenjena spremanju aplikacija te parametara mreže i pretplatnikovih podataka.
S velikim rastom internet tehnologije i elektroničke trgovine, pametne kartice su postale sve šire prihvaćene i korištene kao kartice sa sigurno spremljenim sadržajem. U ovom poglavlju opisat će se neke aplikacije gdje se koristi tehnologija pametnih kartica. Ove aplikacije možemo podijeliti u pet glavnih kategorija:
1. Elektroničko plaćanje
2. Sigurnost i autentifikacija
3. Transport
4. Telekomunikacije
5. Zdrastvena kartica
Novčana sredstva korisnika mogu biti spremljena na pametnu karticu u obliku elektroničkog novca te se koristiti za gotovinsko plaćanje. Elektronički novac može se koristiti za manje kupnje kod kojeg nebi bilo potrebe za autorizaciju preko PIN(eng. Personal Identification Number) broja. Novčana sredstva na kartici pokriva korisnikova banka preko njegova računa u banci ili se ta sredstva pokrivaju na neki drugi način. Kada se korisnik karticom plaća neka sredstva ili usluge, elektronički novac se skida s kartice i šalje na račun davaoca usluge(prodavača). Slično i klasičnom novčaniku korisnik kartice može napuniti svoju karticu elektroničkim novcem u banci u bilo koje vrijeme.
Transakcije elektroničkim novcem u većini slučajeva ne zahtijevaju korištenje PIN broja. Ovo ubrzava transakciju, ali ima nedostatak da je elektronički novac na kartici tada ranjiv isto kao i klasični novac. Širenjem korištenja elektroničkog novca smanjit će se troškovi banke zbog smanjenja držanja velike količine novca(klasičnog).
Od 1994. godine došlo je do značajnijeg razvoja aplikacija za rad sa elektroničkim novcem u Europi koje su se proširile i izvan Europe. U vezi pametnih kartica i elektroničkog novca bilo je razvijeno nekoliko globalnih projekata od kojih bi izdvojio: ProtonCard tvrtke Banksys, VisaCash od tvrtke Visa International te Mondex tvrtke Mastercard. Ovi projekti bili su širom prihvaćeni u trgovinama diljem svijeta.
Drugi način korištenja pametnih kartica u elektroničkoj trgovini su elektroničke kovanice(žetoni - eng. tokens). Princip je taj da se memorija pametne kartice koristi za spremanje elektroničkih kovanica ili elektroničkih karti. Pametna kartica može spremati kovanice ili karte za različite usluge i za svaku uslugu kovanice mogu biti ponovo napunjene.
Za primjer može se uzeti parkiranje gdje se umjesto metalnih kovanica koristi pametna kartica sa elektroničkim kovanicama. Prednost ovog sistema je u tome što više neće biti potrebna kolekcija metalnih kovanica, eleiminirat će se opasnost od lopova, također kartica će moći pratiti korištenje kovanica te vraćati rezultat korisniku.
Sa gledišta opskrbljivača i sistem operatora, glavni zahtjev gotovo svih kartičnih sistema je da osiguraju da je trenutna kartica važeća i da je korisnik kartice prava osoba koja može koristiti tu karticu. Da se provjeri vlasnik kartice, korisnici trebaju kod korištenja unijeti svoj PIN(Personal Identification Number) broj. PIN broj se radije čuva na kartici nego na terminalu.
Identifikacija i autentifikacija obavljaju se na terminalu. Jedan od problema je da se osigura da kartica pruža neku vrstu autentifikacijskog kriterija. Ovo može biti riješeno korištenjem kriptirane komunikacije između kartice i terminala. Dobro je poznato da kriptografija osigurava tajnost sadržaja poruka, a pruža i autentičnost poruka.
U stanju da se izvedu kriptografske procedure, pametna kartica bi trebala imati:
- dovoljnu računalnu snagu za pokretanje kriptografskih algoritama
- kriptografski algoritmi koje koristi moraju biti sigurni
- pametna kartica mora osigurati fizičku sigurnost tj. ne smije biti moguće pročitati tajne ključeve iz memorije pametne kartice
Pametne kartice što se tiče fizičke strukture imaju posebne kriptografske koprocesore za više kriptografskih algoritama. Pametne kartice sadržavaju simetrične i asimetrične algoritme. Najčešći simetrični algoritmi u pametnim karticama su: DES, 3DES, AES, a najčešći asimetrični algoritam je RSA.
Identifikacija pojedinca je jedan od najkompleksnijih zadataka u području informacijske tehnologije. Identifikacija zahtijeva od pojedinca da identificira samog sebe, a od računalnog sustava zahtijeva da prepozna da je novopridošla poruka identifikacije generirana od legalnog korisnika. Sistem nakon identifikacije preuzima svu odgovornost za sve akcije koje identificirani korisnik napravi za koje ima autorizacijske dozvole.
Najopćenitiji uređaj koji se koristi za kontrolu pristupa privatnim područjima, gdje se rade osjetljivi poslovi ili gdje su spremljeni podaci, su ključevi i magnetske kartice. Oni oboje imaju svoje nedostatke: mogu se jednostavno kopirati ili kad su ukradeni mogu dozvoliti pristup neautoriziranim osobama. Pametne kartice zaobilaze ovaj problem jer ih je teško kopirati i u mogućnosti su spremiti digitalizirane karakteristike osobe(biometrija). Sa odgovarajućom verifikacijskom opremom ovi podaci mogu biti korišteni kod točke ulaza da provjere identitet nosioca kartice. Kartica može također biti individualno personalizirana tako da se određenoj osobi dozvoli pristup određenim zaštićenim prostorijama za koje vlanik kartice ima odobrenje.
U današnje vrijeme za sigurnu razmjenu informacija najčešće se koriste kriptografski sustavi s javnim ključem ili asimetrični sustavi. Zbog toga razvila se infrastruktura javnih ključeva PKI(Public Key Infrastructure). Kad dva potencijalna korisnika žele komunicirati svaki od njih mora na neki način saznati javni ključ drugog sudionika. Također kod te razmjene oni moraju znati da taj drugi korisnik nije neki uljez te da javni ključ kojeg dobiju stvarno pripada osobi koja se predstavila tim ključem. Kako bi se moglo provjeriti da li neki javni ključ pripada pravoj osobi stvoren je digitalni certifikat. Digitalni certifikat stvara certifikacijski centar u trenutku kad neki korisnik želi tajni i javni ključ za komuniciranje. U tom trenutku certifikacijski centar generira javni i privatni ključ korisnika te na temelju podataka o korisniku stvara digitalni certifikat tog korisnika. Digitalni certifikat sadrži informacije o vlasniku certifikata i njegov javni ključ, ovo dvoje čini poruku u certifikatu, te sadrži kriptirani sažetak(hash) poruke koji se kriptira privatnim kjučem certifikacijskog centra. U stvari digitalni certifikat je digitalni potpis koji u poruci sadrži javni ključ.
Kako pametne kartice sadrže javne i tajne ključeva korisnika za komuniciranje tako se također mogu iskoristiti i za spremanje digitalnog certifikata na njima. Prilikom protokola autentifikacije korisnika koristi se pametna kartica za komuniciranje na kojoj su spremljeni svi elementi potrebni za komuniciranje: javni ključ, tajni ključ, digitalni certifikat.
Pristup računalnim prostorijama te pristup računalu može biti kontroliran pametnim karticama. Pametna kartica može autentificirati korisnika računalu domaćinu.Ovisno o okolini koja se štiti pristupom mreži pametne kartice mogu pružiti sljedeće funkcije:
- manipulacija različitih autentifikacijskih kodova za različite razine sigurnosti
- korištenje biometrijske tehnologije kao dodatna mjera sigurnosti
- podržavanje pregleda grešaka i zlonamjernih pokušaja logiranja
Identifikaciju korisnika kod pristupa računalu vrši pametna kartica provjerom PIN(Personal Identification Number) broja korisnika. Ako je PIN broj pogrešan kartica jednostavno odbija raditi te nije moguće napraviti pristup računalu jer ne radi aplikacija za pristup, koja sadrži korisničko ime i lozinku korisnika.
Pametna kartica može se ponašati i kao elektronički novac za vozače koji trebaju platiti cestarinu prije nego mogu koristiti cestu, tunel ili most. Na pametnoj kartici se može povećati količina novca na naplatnoj stanici(npr. benzinska postaja), a kod svakog prolaza kroz neku kontrolnu točku iznos na kartici se smanjuje. Kod ove primjene najprikladnije bi bile bezkontaktne kartice jer njih nije potrebno umetati u CAD uređaj.
Telekomunikacije su jedan od najvećih korisnika pametnih kartica. Od 1988. godine pametne kartice postale su jedne od najvažnijih komponenata u telefonskim stanicama(mobilni telefoni). Podaci mreže, informacije pretplatnika i svi kritični podaci mobilne mreže spremljeni su unutar kartice. S ovom karticom, pretplatnik može obaviti poziv s bilo kojeg mobilnog telefona. Također svaki poziv preko telefona može biti kriptiran što osigurava privatnost.
Zbog visoke razine sigurnosti za spremljene podatke, pametne kartice nude novu perspektivu za zdrastvene aplikacije. Pametne kartice mogu se koristiti za spremanje različitih informacija o vlasniku kartice kao što su osobne informacije vlasnika, polica osiguranja, hitne medicinske informacije, podaci o prijemu u bolnicu te tekući medicinski podaci o vlasniku.
Pametne kartice mogu se koristiti za spremanje informacija različitih razina koje su autorizirane pojedinim korisnicima. Liječnici mogu imati pristup medicinskim kartonu pacijenta na kartici. Podaci za hitne slučajeve kao npr. popis osoba kojima se treba javiti u slučaju nezgode te podaci o bolestima pacijenta koji mogu biti korišteni da bi se spasio pacijentov život. U nekim zemljama potrebno je imati osiguranje za plaćanje bolnice, sa podacima o osiguranju spremljenim na kartici administrativna procedura je vrlo jednostavna.
U ovom poglavlju opisat će se logička struktura pametnih kartica, datotečni sustav koji koristi pametna kartica te osobine koje se koriste za zaštitu podataka u kartici.
Podaci u pametnoj kartici spremljeni su u EEPROM(eng. Electric Eraseable Programmable Read Only Memory) na sličan način kao i podaci na tvrdom disku računala, gdje direktoriji tvore hijerarhijsku strukturu nalik stablu. Na vrhu stabla nalazi se glavna datoteka ili direktorij(eng. Master File - MF) i on je na svakoj kartici samo jedan. Ispod glavne datoteke(MF) može se nlaziti više namjenskih datoteka ili direktorija(eng. Dedicated File - DF) te više više elementarnih datoteka(eng. Elementary File – EF). Dakle datotečni sustav pametnih kartica može se podijeliti na tri datoteke:
1. Glavna datoteka(Master File - MF)
2. Namjenska datoteka(Dedicated File – DF)
3. Elementarna datoteka(Elementary File – EF)
Struktura logičkog datotečnog sustava pametne kartice prikazana je na slici 5.1.
Slika
5.1 – Struktura logičkog datotečnog sustava pametne kartice
ISO standard propisuje da se svakoj datoteci bila ona glavna(MF), namjenska(DF) ili elementarna(EF) moće pristupiti na barem jedan način dolje naveden:
Glavna datoteka(MF) je specijalna namjenska datoteka koja je korijen(root) ili glavni direktorij datotečne stablate strukture pametne kartice kao što je prikazano na slici 5.1. Glavna datoteka prema ISO-7816-4 standardu ima identifikator datoteke(ID) jednak 3F0016 i može postojati samo jedna na kartici. Glavnu datoteku možemo smatrati direktorijem koji sadrži sve ostale namjenske datoteke(DF) i elementarne datoteke(EF). Glavnoj datoteci pristupa se odmah nakon što je mikrokontroler dobio napajanje, te kada se kartica izvadi iz čitača pa ponovo ubaci u čitač ili kada se izvrši reset protokol. Glavna datoteka kao i bilo koja namjenska datoteka definirana je samo svojim opisnikom i nema uz sebe više nikakve dodatne (korisničke)podatke.
Namjenska datoteka(DF) je poddirektorij u datotečnoj strukturi pametne kartice. Namjenska datoteka može sadržavati druge namjenske datoteke te elementarne datoteke slika 5.1.
Kod kreiranje namjenske datoteke potrebno je specificirati njezinu veličinu te približnu veličinu ostalih datoteka koje će sadržavati unutar sebe. Ako se kod kreiranja majenske datoteke zauzme premali prostor te želimo kreirati neku novu datoteku s kojom ćemo premašiti veličinu memorije koja je rezervirana za tu namjensku datoteku tada će biti potrebno obrisati tu namjensku datoteku te je ponovno kreirati sa odgovarajućom veličinom memorije koju će zauzeti vrijednostima tako da sve ostale datoteke stanu u memorijski prostor namijenjen toj namjenskoj datoteci. Dakle namjenskoj datoteci nije omogućeno naknadno mijenjanje memorijskog prostora već je potrebno sav memorijski prostor rezervirati kod kreiranja namjenske datoteke.
Elementarne datoteke(EF) mogu sadržavati aplikacije, podatke kao što su imena, datumi, serijski brojevi. Tipovi elementarnih datoteka definirani su ISO-7816 standardom i mogu biti:
· Transparentne
· Blokovski organizirane
- Linearne s blokovima jednake duljine
- Linearne s blokovima promjenjive veličine
- Cikličke s blokovima jednake veličine
Slika 5.2 – Tipovi elementarnih datoteka
Transparentna dateka sadrži sadrži sekvencijalni niz bajtova. Ova datoteka se naziva transparentnom jer nema nikakve interne strukture – sadrži jedan blok podataka. Transparentne datoteke korisne su spremanje podataka kao što su ključevi za kriptografske algoritme.
Linearna datoteka s blokovima jednake veličine podijeljena je na zapise koji su svi jednake veličine. Svaki zapis u datoteci identificiran je brojem koji je sekvencijalno dodan zapisu kod kreiranja zapisa. Broj zapisa koristi se za čitanje ili pisanje u specifični zapis. Najviše je moguće kreirati 255 zapisa jednake veličine gdje veličina može biti 1 do 255 bajta.
Linearna datoteka s blokovima promjenjive datoteke ista je kao i linearna datoteka s blokovima jednake veličine s tom razlikom da se ima mogućnost kreiranja različite veličine zapisa. Može se kreirati najviše 255 zapisa veličine od 1 do 255 bajta. Ove datoteke pogodne su za spremanje podataka različite veličine u istu datoteku. Kod ovih datoteka treba više vremena za traženje zapisa kod operacija čitanja i pisanja i zahtijevaju malo više prostora za zaglavlje zapisa.
Ciklička datoteka s blokovima jedanke veličine pos strukturi je jednaka linearnoj datoteci s blokovima jednake veličine s tom razlikom da pokazivač datoteke ne pokazuje na prvi zapis već se pokaivač automatski povećava kod zapisivanja novog zapisa i uvijek pokazuje na zapis koji je zadnji upisan. Kad se popune svi zapisi pokazivač automatski pokazuje na prvi zapis u datoteci. Ove datoteke pogodne su za evidenciju "posljednjih 10" operacija.
Sigurnost je jedna od najvažnijih stvari kod pametnih kartica. Zbog ovog razloga, posebna briga posvećena je tome kako se pristupa podacima i tko može pristupiti podacima na pametnoj kartici.
Svaku datoteku koja je gore opisana može se pojedinačno zaštititi korištenjem atributa pristupa te uvjeta pristupa. Za primjer atribut za datoteku može biti čitanje, a uvjet pristupa može biti CHV(eng. Cardholder Verification) tj. verifikacija korisnika, ovim se misli da ako se želi pročitati datoteka mora se prvo unijeti ispravna lozinka. Osnovni sigurnosni mehanizmi definirani standardom ISO-7816-4 su:
- Autentifikacija lozinkom – korisnik mora znati lozinku prije nego može pristupiti datoteci
- Autentifikacija ključem – korisnik mora znati vrijednost ključa spremljenog na kartici
- Autentifikacija podataka(Data authentication) – kartica dodaje kod podacima tako da korisnik može biti siguran da kartica nije lažna.
- Kriptiranje podataka – kartica kriptira podatke
Svaki operacijski sustav kartica ima sigurnost temeljenu atributima pristupa i uvjeta pristupa. Često glavna datoteka(MF) i namjenska datoteka(DF) imaju visoku razinu sigurnosti tako da samo izdavači kartica ili proizvođači aplikacija mogu pristupati tim datotekama. Za primjer samo proizvođač aplikacije može imati dozvolu za onemogućiti aplikaciju na kartici i to samo kad zna specijalni ključ, koji je spremljen u hijerarhiji datoteka.
Hex vrijednost |
Atribut pristupa |
Opis restrikcije |
0 |
ALW |
Always(Uvijek) – specificira da je akcija nad datotekom uvijek moguća. Nema nikakvih restrikcija za datoteku. |
1 |
CHV1 |
CardHolder Verified – datoteci se može pristupiti jedino kad je unesen ispravan CHV1 ključ, CHV1 ključ je obično ključ korisnika kartice ili PIN. Verifikacija se može izvesti neposredno prije pristupa datoteci ili već prije u nekoj od sjednica. |
2 |
CHV2 |
CardHolder Verified – datoteci se može pristupiti jedino kad je unesen ispravan CHV2 ključ, CHV2 ključ je obično ključ administratora kartice. Verifikacija se može izvesti neposredno prije pristupa datoteci ili već prije u nekoj od sjednica. |
3 |
PRO |
Protected(Zaštićen) – Zaštićen mod pristupa datoteci, PRO autentifikacija koristi enkripciju za provjeru identiteta korisnika koji želi pristupiti datoteci na kartici. Koristi se digitalni potpis koji se dodaje naredbi za pristup datoteci. PRO autentifikacija vrijedi samo za jednu operaciju s datotekom. |
4 |
AUT |
Authenticate(Autentifikacija) – Datoteci se može pristupiti jedino kad je prisutan ispravan ključ u relevantnoj vanjskoj datoteci ključa. Verifikacija se može izvesti neposredno prije rada s datotekom ili prije u nekoj od sjednica. Ovaj pristup zahtijeva vanjskog poslužitelja(host) za autentifikaciju. |
5 |
RFU |
Za buduću upotrebu(Reserved for Future Use). |
6 |
CHV1 i PRO |
Zahtijeva CHV1 i PRO provjeru za pristup zaštićenoj datoteci. |
7 |
CHV2 i PRO |
Zahtijeva CHV2 i PRO provjeru za pristup zaštićenoj datoteci |
8 |
CHV1 i AUT |
Zahtijeva CHV1 i AUT provjeru za pristup zaštićenoj datoteci |
9 |
CHV2 i AUT |
Zahtijeva CHV2 i AUT provjeru za pristup zaštićenoj datoteci |
A |
RFU |
Za buduću upotrebu(Reserved for Future Use). |
B |
RFU |
Za buduću upotrebu(Reserved for Future Use). |
C |
RFU |
Za buduću upotrebu(Reserved for Future Use). |
D |
RFU |
Za buduću upotrebu(Reserved for Future Use). |
E |
RFU |
Za buduću upotrebu(Reserved for Future Use). |
F |
NEV |
Never(nikad) – Datoteci nije omogućen nikakav pristup aplikacije izvan kartice. Datoteci mogu pristupiti samo programi u kartici. |
Tablica 5.1 – Atributi pristupa
Pošto pametna kartica može imati mnogo različitih aplikacija od različitih proizvođača, potrebna je metoda kojom će se omogućiti sigurnosna stijena(firewall) između aplikacija. Ovo je omogućeno tako da proizvođač aplikacije definira domene koje sadrže grupe datoteka i svaka domena ima svoj ključ za pristup. Prikaz područja domena prikazano je na slici 5.3.
Slika 5.3 – Područja domena sigurnosti
Na gore prikazanoj slici 5.3 postoje dva ključa i dvije domene. Prvi ključ KEY1 relevantan je za datoteke EF1, EF2 i EF2, dok je drugi ključ KEY2 relevantan za datoteku EF4. Dakle domena ili područje za prvi ključ KEY1 je Domena 1, a za drugi ključ KEY2 domena ili područje je Domena 2.
Komunikacija između CAD(eng. Card Acceptance Device) uređaja i pametne kartice odvija se preko jedne linije i zbog toga se kartica i CAD uređaj moraju izmjenjivati u slanju poruka, dok jedna strana šalje poruku druga prima i obrnuto. Ovakav protokol zove se poludupleks(eng. Half-Duplex) protokol. Pametna kartica i CAD uređaj imaju gospodar-sluga(eng. master – slave) odnos gdje se kartica ponaša kao sluga, a CAD uređaj gospodar. Ovaj odnos označuje da kartica nikad ne šalje poruku bez vanjskog zahtjeva tj. komunikaciju uvijek pokreće CAD uređaj.
Umetanjem pametne kartice u CAD uređaj ili resetiranjem kartice, kartice šalje podatkovni niz poznat kao ATR(eng. Answer To Reset) tj. odgovor na resetiranje. ATR signalizira CAD uređaju da je kartica uspješno pokrenuta te se stvara komunikacijski kanal između kartice i CAD uređaja. ATR podatak može imati najviše 33 bajta i može sadržavati podatkovne elemente navedene u tablici 6.1.
Podatkovni element |
Značenje i opis |
TS |
Inicijalni znak (Initial character) je prvi bajta ATR podatka. Specificira konvenciju koja se koristi za sve podatke u ATR-u i narednim komunikacijskim procesima. Ovaj bajta predstavlja ATR komponentu i on mora biti poslan. Postoje samo dva dopuštena koda za ovaj bajt: 3B16 za izravnu konvenciju(direct convention) i 3F16 za inverznu konvenciju(inverse convention) |
T0 |
Znak veličine(Format character) je drugi bajt ATR podatka. Sadrži bit polje koje pokazuje koji će znakovi sučelja biti poslani, a pokazuje i broj narednih znakova. Ovaj bajt isto kao i TS mora biti prisutan u svakom ATR-u. |
TA1, TB1, TC1, TD1,... |
Znakovi sučelja(Interface characters) određuju sve parametre prijenosa koji se u protokolu koriste. Ovi znakovi su opcionalni u ATR-u i mogu se ispustiti. |
T1, T2,...,Tk |
Povijesni znakovi(Historical caharacters). Ovi podaci nalaze se u ATR datoteci i mogu sadržavati kompleksne informacije u vezi pametne kartice i operacijskog sustava, npr. kartična svojstva, kartični i čip serijski brojevi, verzija ROM maske, čipa i operacijskog sustava. |
TCK |
Kontrolni znak(Check character). Ovaj bajt je XOR kontrolna suma od bajta T0 do zadnjeg bajta prije kontrolnog znaka. Kontrolna suma može se koristiti kao dodatak u paritetnom testiranju da se verificira točnist ATR prijenosa. |
Tablica 6.1 – Elementi ATR-a(Answer To Reset)
Standard ISO-7816-3 specificira ukupno 16 protokola. Protokoli su označeni s 'T=' plus sekvencijalni broj od 0 do 15. U praksi nas zanimaju 4 protokola. Protokoli T=0 i T=1 su dominantni i oni se najviše koriste. T=2 protokol je još uvijek u razvoju, a T=14 koristi se za nacionalne funkcije, za primjer ovaj protokol koristi se u Njemačkoj za telefonske kartice.
T=0
protokol je prvi standardiziran protokol za pametne kartice, a pravila kod
kreiranja bila su minimalno korištenje memorije i maksimalna jednostavnost.
Protokol je bajtovno orijentiran i svaki TPDU(Transmission Protocol Data Unit)
sastoji se od dva dijela zaglavlja i podataka. Zaglavlje sadrži pet bajta kako
je prikazano u tablici 6.2.
Ime |
Opis |
CLA |
Specificira klasu instrukcije |
INS |
Specificira određenu instrukciju |
P1 |
Specificira adresu |
P2 |
Specificira adresu |
P3 |
Specificira broj bajtova prenesenih prema ili od pametne kartice |
Tablica 6.2 – Elementi zaglavlja TPDU naredbe za T=0 protokol
Mehanizam provjere greške je jednostavan i koristi provjeru pariteta pojedinog bajta. Kod detekcije pogreške zahtijeva se ponovno slanje naredbe.
Kartica odgovara CAD uređaju sa zaglavljem koje sadrži tri od četiri bajta kako je prikazano u tablici 6.3.
Ime |
Opis |
ACK |
Označava primitak [CLA,INS] naredbe |
NULL |
Koristi se za kontrolu protoka I/O kanala |
SW1 |
Status informacija za nadzor tekuće naredbe |
SW2 |
Status informacija za nadzor tekuće naredbe(opcionalno) |
Tablica 6.3 – Elementi zaglavlja odgovora TPDU naredbe kod T=0 protokola
T=1 je blokovski orijentiran protokol. Ovo znači da se dobro definiran skup podataka ili blok prenosi kao jedna podatkovna jedinica između pametne kartice i CAD uređaja. U blok može biti ugrađena APDU(Application Protocol Data Unit) namijenjenja nekoj specifičnoj naredbi. Ova mogućnost omogućava vrlo dobro uslojavanje između sloja povezivanja i aplikacijskog sloja. Stavljanje informacije u blok zahtijeva da blok bude prenesen bez greške jer inače protokol može biti jednostavno izgubljen. Detekcija i ispravka grešaka kod T=1 protokola je zbog toga kompleksnija nego kod T=0 protokola.
Detekcija pogrešaka u T=1 protokolu se obavlja uzdužnom redundancijom znakova -LRC (longitudinal redundancy character), koji je u suštini puno kompleksniji od provjere pariteta koja se obavljala u T=0 protokolu, ili se obavlja korištenjem provjerom cikličke redundancije znakova - CRC(cyclic redundancy check). Ove operacije provjere grešaka garantiraju detektiranje bilo koje jednobitne greške u prijenosnom bloku. Kada se detektira greška koja je nastala tijekom prijenosa signalizira se odašiljatelju da ponovi slanje bloka kojem je detektirana greška.
U T=1 protokolu postoje tri osnovna različita tipa blokova koji imaju jednaku strukturu, kako je prikazano na slici 6.1, ali različitu svrhu:
· Informacijski blok – Ovaj blok služui za prenošenje podataka između aplikacijskog programa u kartici i aplikacijskog programa na strani poslužitelja.
· Blok potvrde i primanja – Ovaj blok služi za prenošenje negativne ili pozitivne potvrde o tome da li je blok prenesen bez greške preko informacijskog kanala.
· Nadzorni blok – Ovaj blok služi za prijenos kontrolnih informacija između pametne kartice i CAD uređaja.
Slika 6.1 – Struktura T=1 prijenosnog bloka
Svaki T=1 blok kao što je vidljivo iz slike 6.1 ima tri polja:
· Uvodno polje (eng. prologue field) – Obavezno polje bloka koje ima duljinu od 3 bajta. Sadrži ova tri elementa:
- NAD – Adresa čvora (eng. node address)
- PCB – Kontrolni bajt protokola (eng. Protocol control byte)
- LEN – duljina
· Informacijsko polje (eng. information field) – Opcionalno polje bloka koje može biti duljine do 254 bajta.
· Zaključno polje (eng. epilogue field) – Obavezno polje bloka koje je duljine od jednog do dva bajta.
NAD element se koristi za identifikaciju adrese izvora i odredišta bloka. Ova mogućnost adresiranja je od velike koristi kad se T=1 protokol koristi za podaržavanjej višestrukih logičkih veza između pametne kartice i višestrukih aplikacijskih spojnih točaka na strani CAD uređaja. NAD ima dva podelementa:
· SAD (eng. Source Address) – Adresa izvora označava se sa tri najmanje značajna bita NAD bajta.
· DAD (eng. Destination Address) – Adresa odredišta označava se od petog do sedmog bita NAD bajta
U situacijama gdje se ne koriste višestruki logički kanali NAD element postavljen je na nulu. Druga dva bita, koji se ne koriste za SAD i DAD podelemente, služe za prijenos informacija namijenjenih kontroliranju VPP napajanja(napajanje za programiranje EEPROM memorije).
PCB element koristi se za identificiranje tipa bloka(informacijskog, bloka potvrde i primanja te nadzornog bloka). Dva najznačajnija bita PCB bajta koriste se za označavanje različitih tipova:
- Najznačajniji bit postavljen u 0 označava da je blok informacijski
- Dva najznačajnija bita postavljena u 1 označavaju da je blok nadzorni
- Najznačajniji biti postavljen u 1, a sljedeći postavljen u 0 označava da je riječ o bloku potvrede i primanja
APDU(eng. Application Protocol Data Units) je internacionalno standardizirana jedinica podataka za razmjenu podataka između pametne kartice i CAD uređaja. U prijenosnom sloju se APDU naziva TPDU koji je u aplikacijskom sloju podijeljen na dva APDU dijela koji su: APDU naredba i APDU odgovor. APDU možemo opisati kućicama gdje svaka kućica sadrži naredbu koju šalje CAD uređaj pametnoj kartici ili pametna kartica šalje odgovor CAD uređaju.
Svaka APDU naredba ima dva elementa zaglavlje i tijelo. Veličina zaglavlja je fiksna i iznosi 4 bajta, dok veličina tijela varira ovisno o količini podatak koji se šalju. Slika 6.2 prikazuje strukturu APDU naredbe.
Slika 6.2 – Struktura APDU naredbe
CLA vrijednost |
Klasa instrukcije |
0x0n,
0x1n |
ISO-7816-4
instrukcije kartice, npr. za pristup datotekama i sigurne operacije |
0x20
do 0x7F |
Rezervirano |
0x8n
do 0x9n |
ISO-7816-4
format koji se koristi za osobne aplikacijski-specifične instrukcije |
0xAn |
Aplikacijsko-specifične
instrukcije |
0xB0
do 0xCF |
ISO-7816-4
format za korištenje aplikacijsko specifičnih instrukcija |
0xD0
do 0xFE |
Aplikacijsko-specifične
instrukcije |
FF |
Rezervirano
za izbor vrste protokola |
Tablica 6.4 – Vrijednosti i klasa CLA polja
Struktura APDU odgovora koji vraća kartica je mnogo jednostavnija i prikazana je na slici 6.3.
Slika 6.3 – Struktura APDU odgovora
Također kao i APDU naredba i APDU odgovor ima opiconalna i obavezna polja.
Vrijednosti statusne riječi definirane su ISO-7816-4 standardom. Moguće vrijednosti statusne riječi SW1 i SW2 mogu se prikazati blok dijagramom prema načinu izvođenja procesa kako je prikazano na slici 6.4.
Slika 6.4 – Moguće vrijednosti statusne riječi SW1 i SW2
Java Card tehnologija predstavlja najmanju Java platformu za memorijski ograničene uređaje poput pametnih kartica, te omogućuje da se programi pisani u Java programskom jeziku mogu izvršavati na pametnim karticama. Ova tehnologija je ustvari podskup Java tehnologije koji omogućuje kreiranje aplikacija za pametne kartice tzv. aplete(Java Card Applets) koji se izvršavaju na kartici. Posebnost Java Card platforme je u tome što višestruke aplikacije različitih proizvođača mogu sigurno koegzistirati na pametnoj kartici.
Tipični Java Card uređaj ima mikroprocesor koji može biti od 8-bitni, 16-bitni ili 32-bitni te sadrži 1KB RAM memorije i više od 16KB trajne memorije(EEPROM). Većina kartica također ima i posebne koprocesore te RAM memoriju za kriptografske algoritme.
Specifikacija Java Card tehnologije sastoji se od 3 dijela:
· Java Card Virtual Machine (JCVM) koji sadrži podskup Java programskog jezika te virtualni stogovni stroj(Virtual Machine – VM) za pametnu karticu
· Java Card Runtime Evironment (JCRE) koji dodatno definira runtime ponašanje za Java pametne kartice
· Java Card API specifikacija koja definira jezgru okvira(framework) te ekstenzije Java paketa i razreda za aplikacije pametnih kartica.
Cijela Java Card aplikacija sastoji se od pomoćne aplikacije(eng. back-end application) i sistema, aplikacije poslužitelja (eng. host application), sučelja CAD uređaja te apleta na kartici (eng. on-card applet), korisničkih vjerodajnica(eng. credential) i programske podrške. Svi ti elementi čine sigurnu end to end aplikaciju. Slika 7.1 prikazuje arhitekturu Java Card aplikacije.
Slika 7.1 – Arhitektura Java Card aplikacije
Tipična Java Card aplikacija nije samostalna, točnije sadrži stranu kartice(eng. card-side), stranu čitača(eng. reader-side) te pomoćne elemente(eng. back-end elements).
Pomoćne aplikacije(eng. back-end application) omogućavaju usluge koje su podržane u Java apletu. Na primjer, pomoćna aplikacija omogućuje vezu prema sigurnom sustavu, zajedno sa vjerodajnicama(credential) u kartici. U sustavima elektroničkog plaćanja pomoćne aplikacije omogućuju pristup kreditnim karticama i ostalim informacijama elektroničkog plaćanja.
Aplikacije poslužitelja(eng. host) nalaze se na desktopu ili terminalu kao što je osobno računalo, na terminalu elektroničkog plaćanja, u mobilnim telefonima ili u sigurnim podsustavima. Aplikacija poslužitelja upravlja komunikacijom između korisnika, Java Card apleta te pomoćne aplikacije pružatelja usluge.
Isporučitelji pametnih kartica obično osiguravaju, ne samo razvojnu podršku, već i API podršku za aplikacije poslužitelja. Ovdje se za primjer može navesti OpenCard Framework koji sadrži Java orijentiran paket API funkcija koje skrivaju detalje međudjelovanja sa CAD uređajima različitih proizvođača.
Java Card platforma je multi-aplikacijsko okruženje. Kao što prikazuje slika 7.1, jedan ili više Java apleta mogu se nalaziti na kartici, zajedno sa programskom podrškom koju čine operacijski sustav kartice i Java Card izvršna okolina JCRE(eng. Java Card Runtime Environment). JCRE sadrži Java Card Stogovni Stroj JCVM(eng. Java Card Virtual Machine), Java Card Framework i API funkcije.
Svi Java Card apleti nasljeđuju Applet osnovni razred te moraju implementirati metode install() i process(). JCRE poziva metodu install() kada se instalira aplet i metodu process() svaki put kad dolazi APDU naredba namijenjana apletu.
Za komunikaciju između poslužitelja(host) i Java Card apleta postoje dva modela. Prvi model je osnovna komunikacija preko poruka, a drugi model je baziran na Java Card Remote Metode Invocation(JCRMI) koji je podskup Java RMI raspodijeljenih objekata.
Komuniciranje preko poruka koje je prikazano na slici 7.2 osnovno je za sve Java Card komunikacije. U centru komunikacije nalazi se APDU(Applicatio Protocol Data Unit), logički paket podataka koji se prenosi između CAD uređaja i Java Card Frameworka. APDU blok opisan je u poglavlju 6.3.
Slika 7.2 – Komunikacija preko poruka
Java Card Framework prima te prosljeđuje odgovarajućem apletu bilo koju dospjelu APDU naredbu poslanu od CAD uređaja. Aplet procesuira APDU naredbu i šalje APDU odgovor. Komunikacija između CAD uređaja i pametna kartice najčešće je bazirana na dva protokola, bajtno orijentiranim T=0 koji je opisan u poglavlju 6.2.1 i blokovski orijentiranom T=1 protokolu opisanim u poglavlju 6.2.2. Alternativni protokoli su T=USB i T=RF. Razred JCRE APDU skriva neke detalje protokola od aplikacije, ali ne sve zbog toga što je protokol T=0 prilično kompleksan.
JCRMI komunikacijski model oslanja se na podskup Java RMI raspodijeljenih objekata. Kod ovog komunikacijskog modela poslužiteljska aplikacija kreira i čini dostupnim udaljeni objekt, a klijent aplikacija dobiva udaljenu referencu na udaljeni objekt, te tada poziva udaljenu metodu na tom objektu. Kod JCRMI-a Java Card aplet je poslužitelj, a aplikacija na poslužitelju(host) je klijent.
JCRMI je dan u paketu javacardx.rmi u razredu RMIService. JCRMI poruke su enkapsulirane u sklopu APDU objekta prolazi prema RMIService metodama. Drugim riječima, JCRMI pruža mehanizam modela raspodijeljenih objekata na vrhu APDU-baziranog modela poruka preko kojeg poslužitelj i klijent komuniciraju, prenošenjem informacija, argumenata te vraćanjem vrijednosti nazad i naprijed.
SATSA specificira opcionalni paket koji pruža sigurnosne i povjerljive API funkcije. Ovaj klijent API pruža pristup servisima koji imaju sigurnosne elemente(kao pametna kartica), uključujući sigurno spremanje i dobavljanje osjetljivih informacija, isto kao kriptografski i autentifikacijski servisi.
SATSA koristi Generic Connection Framework(GCF) koji pruža više abstraktno sučelje za komuniciranje modelom poruka i JCRMI komunikacijskim modelom. Za podržavanje komunikacije preko poruka SATSA definira apdu: URL sheme i APDUConnection, a za podržavanje JCRMI-a definira jcrmi: scheme i JavaCardRMIConnection.
SATSA obuhvaća sljedeće pakete:
· java.rmi - definira podskup Java 2 Standard Edition java.rmi paketa, konkretno Remote i RemoteException rezrede.
· javacard.framework - definira standard Java Card API iznimaka koje udaljena metoda može baciti: CardRuntimeException, ISOException, APDUException, CardException, PINException, SystemException, TransactionException i UserException.
· javacard.framework.service - definira standard Java Card API servis iznimaka koji može udaljena metoda baciti: ServiceException.
·
javacard.security
- definira standard Java Card API za iznimke koje bacaju kriptografske metode: CryptoException.
·
javacard.microedition
definira dva podsučelja za konekciju: APDUConnection za pristup pametnim karticama koji je
baziran na APDU naredbama te JavaCardRMIConnection
za Java Card RMI protokol.
· javax.microedition.jcrmi - definira razrede i sučelja koje koristi zamjenski programski element koje generira kompiler Java Card RMI zamjenskog programskog elementa.
· javax.microedition.pki - definira klase za osnovno rukovanje korisničkim certifikatima.
· javax.microedition.securityservice - definira razrede za generiranje digitalnih potpisa na razini aplikacija.
Java Card Stogovni Stroj (eng. Java Card Virtual Machine - JCVM) specifikacija definira podskup Java programskog jezika i Java kompatibilnog virtualnog stogovnog stroja(eng. Virtual Machine-VM) za pametne kartice uključujući prikaz binarnih podataka i formate datoteka te JCVM set instrukcija.
VM za Java Card platformu implemntiran je u dva dijela. Prvi dio je izvan kartice i to je u stvari razvojni alat(konverter), tipično prikazan kao Java Card Converter tool, koji ubacuje, verificira te dalje priprema Java razrede u Java paketu za izvršavanje na kartici. Izlaz iz konvertera je konvertirana aplet datoteka ili CAP(eng. Converted Applet) datoteka. CAP datoteka sadrži sve klase iz Java paketa u binarnom obliku za izvršavanje na kartici. Drugi dio VM-a je implementiran na kartici i on interpretira bajtkod, rukovodi razredima i objektima itd.
JCVM podržava samo ograničen podskup Java programskog jezika, ali sadrži mnoge poznate mogućnosti uključujući objekte, nasljeđivanje, pakete, dinamičko kreiranje objekata, virtualne metode, sučelja te iznimke. JCVM specifikacija izbacuje potporu za mnoge elemente Java jezika koji koriste mnogo memorije. Tipovi varijabli kao što su char, double, float ili višedimenzionalna polja nisu podržani dok je podrška za int opcionalna.
JCRE(eng. Java Card Runtime Environment) specifikacija definira životni ciklus JCVM-a, životni ciklus apleta, kako se apleti selektiraju i izoliraju jedan od drugog, transakcije te dijeljenje i postojanost objekta. JCRE osigurava sučelje neovisno o paltformi tj. neovisnost o operacijskom sustavu kartice. JCRE se sastoji od JCVM-a, Java Card API-a te bilo koje specifikacije isporučitelja. Slika 7.3 prikazuje arhitekturu Java kartice i JCRE.
Slika 7.3 – Java Card arhitektura i JCRE
Svaki aplet na kartici je jedinstveno identificiran aplikacijskim identfikacijskim brojem(AID). AID je sekvenca od 5 do 16 bajtova. Svaki aplet mora nasljeđivati Applet abstraktni razred koji definira metode koje koristi JCRE za kontroliranje životnog ciklusa apleta kako je prikazano na slici 7.4.
Slika 7.4 – Metode životnog ciklusa Java Card apleta
Životni ciklus Java Card apleta počinje kad je aplet učitan na karticu i kad JCRE poziva statičku metodu apleta Applet.install() i kad se aplet registrira sa JCRE-om pozivanjem Applet.register() metode. Jednom kad je aplet instaliran i registriran on se nalazi u neselektiranom stanju ali dostupan za selekciju i APDU procesiranje. U neselektiranom stanju aplet je neaktivan. Aplet dolazi u selektirano stanje za APDU procesiranje kada poslužiteljska aplikacija zahtijeva od JCRE-a da selektira određeni aplet na kartici. Da JCRE obavijesti aplet da je selektiran, od poslužiteljske aplikacije, JCRE poziva select() metodu. Aplet tipično izvodi odgovarajuću inicijalizaciju kao pripremu za APDU procesiranje. Jednom kad je selekcija obavljena JCRE preusmjerava dolazeće APDU naredbe selektiranom apletu pozivajući metodu process(). Deselekcija apleta se izvodi kad poslužiteljska aplikacija zahtijeva od JCRE-a da selektira neki drugi aplet. JCRE obavještava aktivni aplet da će biti deselektiran pozivajući deselect() metodu, koja tipično izvodi bilo koje logičko čišćenje memorije i vraća aplet u neaktivno tj. neselektirano stanje.
Sjednica kartice je vremenski period kad je kartica upaljena i kad razmjenjuje APDU naredbe s CAD uređajem.
Java Card platforma podržava koncept logičkih kanala koji dopuštaju do 16 aplikacijskih sesija na pametnoj kartici koje mogu biti otvorene u isto vrijeme, s jednom sesijom po logičkom kanalu. Kako procesiranje APDU naredbe na kartici ne može biti prekinuto i svaki APDU sadrži referencu prema logičkom kanalu(CLA bajt), alternativno APDU naredba može pristupiti prema više apleta na kartici pseudo-simultano. Aplet se može dizaknirati tako da bude multi-selektivan, tako da komunicira na više logičkih kanala. Multi-selektivni apleti moraju implementirati javacard.framework.MultiSelectable sučelje i pripadajuće metode.
Java Card platforma je sigurno više-aplikacijsko okruženje, više različitih apleta od različitih proizvođača mogu sigurno koegzistirati na istoj kartici. Svaki aplet je dodijeljen izvršnom sklopu koji kontrolira pristup objektima koji su mu dodijeljeni. Granica između jednog izvršnog sklopa i drugog se često naziva sigurnosna stijena apleta(applet firewall). To je Java Card izvršno poboljšanje Java sigurnosnog koncepta i kombinira funkcionalnost učitavanja klasa, java.ClassLoader, i pristupnog kontrolera java.AccessController. Java Card sigurnosna stijena kreira virtualnu hrpu koja sadrži metode kojima može neki objekt pristupiti i podatke kojima mogu pristupiti samo oni objekti koji pripadaju istom području zaštitne stijene. Jedno područje zaštitne stijene može sadržavati više apleta i drugih objekata, kao što su tajni ključevi. Java Card platforma podržava sigurnu raspodijeljenost ključeva preko zaštitne stijene kao što je prikazano na slici 7.5.
Slika 7.5 – Zaštitna stijena apleta i raspodijeljenost objekata
Tipičan procedura kod raspodijeljenog komuniciranja:
Apleti u istoj izvršnoj okolini imaju pristup jedan drugom po standardu, tako da Appleta i Appletb ne trebaju slijediti prijašnju proceduru za međusobno dijeljenje objekata.
U ovom poglavlju opisat će se Java Card API(Application Programming interface) paketi koji se koriste za programiranje Java Card apleta.
Paketi u Java Card API-u su:
·
java.io
·
java.lang
·
java.rmi
·
javacard.framework
·
javacard.framework.service
·
javacard.security
·
javacardx.crypto
Podskup java.io paketa u standardnoj verziji Java programskog jezika. Ovaj paket sadrži razred iznimke IOException koji je uključen u Java Card API da očuva hijerarhiju iznimaka identičnih u Java standardnom programskom jeziku. Razred java.io.IOException je nadrazred razreda java.rmi.RemoteException
Ovaj paket omogućava razrede koji su osnovni za dizajn Java Card tehnologije kao podskupa Java programskog jezika. Raredi u ovom paketu su izvedeni iz java.lang paketa standardnog Java programskog jezika i predstavljaju osnovnu funkcionalnost potrebnu za JCVM. Ova osnovna funkcionalnost predstavljena je razredom Object, koji je osnovni razred za sve Java razrede, te razredom Throwable, koji je osnovni razred za iznimke.
Iznimke koje su uključene u ovaj paket su one koje može izbaciti JCVM. Ove iznimke predstavljaju samo podskup iznimaka dostupnih u java.lang paketu standardnog Java programskog jezika.
Paket java.rmi definira Remote sučelje koje identificira sučelje čije metode mogu biti pozvane od CAD uređaja. Također ovaj paket definira RemoteException razred iznimke koja može biti izbačena da označi da je došlo do greške prilikom izvođenja udaljene(remote) metode.
Sadrži okosnicu razreda i sučelja za izgradnju, komuniciranje i rad s Java Card apletima. Ovi razredi i sučelja omogućuju minimum potrebne funkcionalnosti za Java Card okruženje. Ako je potrebna dodatna funkcionalnost, npr. specijalizirati karticu za konkretnu kupnju, potrebni su dodatni okviri ili okosnice.
Ključni razredi i sučelja u ovom paketu su:
· AID – enkapsulira aplikacijski identifikacijski broj(AID) koji je dodijeljen apletu
· APDU – omogućuje metode za kontroliranje ulaza i izlaza kartice
· Applet – osnovna klasa za sve Java Card aplete na kartici. Omogućuje metode za rad s apletima koji su učitani na karticu, instalirani i koji se izvršavaju na kartici koja podržava Java Card platformu
· CardException, CardRuntimeException – omogućuje funkcionalost sličnu kao i java.lang.Exception i java.lang.RuntimeException u standardnom Java programskom jeziku, ali specijaliziranu za kartično okruženje
· ISO7816 – omogućuje važne konstante za rad s ulazom i izlazom podataka
· JCSystem – omogućuje metode za kontroliranje sistemske funkcionalnosti kao što je rukovanje transakcijama, privremenim objektima, mehanizmom brisanja objekata, rukovanje resursima te raspodijeljenim objektima među apletima
· MultiSelectable – omogućuje metode koje omogućavaju naprednije tehnike programiranja s logičkim kanalima
· Shareable – omogućuje mehanizme koji omogućavaju objektima da budu raspodijeljeni preko sigurnosne stijene apleta
· Util – omogućuje konvencionalne metode za rad s poljima podataka
Ovaj paket omogućuje okvir ili okosnicu razreda i sučelja za posluživanje koji dopuštaju Java Card apletima da budu dizajnirani kao agregatne poslužiteljske komponente. Paket sadrži agregatni razred pod nazivom Dispatcher koji ukjlučuje metode za dodavanje servisa u svoj registar, otprema APDU naredbi registriranom servisu te uklanjanje servisa iz registra.
Paket također sadrži sučelje Service koje ima metode za procesiranje APDU naredbi i dopušta otprematelju ili dispečeru svjestan višestrukih servisa. Podsučelja omogućavaju implementaciju servisa sa dodanim funkcionalnostima:
Razred BasicService omogućuje osnovnu funkcionalnost servisa i svi servisi su izgrađeni kao podrazredi ovog razreda. Također omogućuje definiranu implementaciju za metode definirane u Service sučelju i definira skup pomoćnih metoda koje omogućuju APDU spremniku da omogući kooperacijuizmeđu razlićitih servisa.
Ovaj paket omogućuje razrede i sučelja koji sadrže javno dostupne funkcionalnosti za implementiranje sigurnosnog i kriptografskog okvira na Java Card platformi. Razredi u javacard.security paketu osiguravaju definicije algoritama koji omogućuju sigurnosne i kriptografske funkcije:
Dodatni paket koji sadrži funkcionalnost, koja može biti subjekt u izlazmoj kontroli, za implementiranje sigurnosnog i kriptografskog okvira na Java Card platformi. Paket javacardx.crypto sadrži razred Cipher i KeyEncryption sučelje. Cipher razred omogućuje metode za kriptiranje i dekriptiranje podataka. KeyEncryption sučelje omogućuje funkcionalnost koja dopušta ključevima da budu ažurirani u sigurnom s kraja na kraj(end-to-end) modu.
Višenamjenska pametna kartica zamišljena je s ciljem da se jedna pametna kartica može koristiti za rad s različitim servisima i uslugama namijenjenih pametnim karticama. Ovim se želi reći da umjesto da za svaki servis ili uslugu postoji kartica namijenjena samo tom servisu(npr. kreditna kartica, identifikacijska iskaznica, zdrastvena kartica itd.), postoji jedna kartica koja će raditi s tim svim uslugama i servisima, tj. umjesto da se ima pet kartica za pet različitih usluga imat će se jedna kartica koja će omogućavat rad sa tih pet usluga.
U ovom seminarskom radu za primjer rada višenamjenske kartice implementirane su tri usluge koje su nezavisne jedna o drugoj:
- identifikacijska kartica
- vozačka dozvola
- bankovni račun
Namijenjena je za identifikaciju korisnika, npr. kao osobna iskaznica, koji mora znati PIN broj za pristup podacima na kartici. U slučaju nepoznavanja PIN broja ne može se pristupiti podacima na kartici te nije moguća identifikacija korisnika te se može reći da osoba koja ima karticu nije vlasnik te kartice. Ova identifikacijska kartica bila bi pogodna za poduzeća gdje je potrebna identifikacija korisnika prije njegovog ulaska u zaštićene prostorije.
Zamjena za sadašnju vozačku dozvolu, sadrži sve potrebne podatke o vozaču, o valjanosti dozvole, te kategorije vozila kojim osoba ima pravo upravljati. Također sadrži neke informacije, npr. da vozač mora nositi naočale tijekom vožnje i drugo.
Sadrži informacije o bankovnom računu, broj računa, broj kartice, podaci korisnika, sredstva na računu. Korisnik može pregledavari stanje računa i uzimati sredstva s računa međutim ne može dodavati sredstva, to može samo administrator koji se verificira kartici svojim PIN brojem.
Razvoj aplikacija za višenamjensku karticu mogli bi podijeliti u dva dijela:
- Razvoj apleta za pametnu karticu
- Razvoj terminala
Apleti za pametnu karticu rađeni su u Java Card tehnologiji koja omogućava brz razvoj i neovisnost izvođenja apleta od operacijskog sustava kartice i proizvođaču kartice. Jedino što je bitno je da kartice podržavaju Java Card tehnologiju.
Svaki aplet ima dva četveroznamenkasta PIN broja(4 bajta). Jedan PIN broj je korisnički, dok je drugi administratorski. Administrator ima sve dozvole, on može čitati i pisati podatke dok korisnik može samo čitati podatke. Aplet također instancira kripto algoritme i funkciju za račuananje sažetka. Algoritmi koji se koriste su:
- RSA s 1024-bitnim ključem
- DES
- SHA1
Terminal je u sredini komunikacijskog kanala između korisnika i apleta na pametnoj kartici. Preko sučelja terminala korisnik se verificira svojim PIN brojem, pregledava podatke dok administrator može i upisivati podatke na karticu. Slike koje slijede prikazuju izgled terminala za administratora i korisnika(Slika 8.1 do Slika 8.4).
Slika 8.1 – Terminal administratora za identifikacijsku karticu
Slika 8.2 – Terminal korisnika za identifikacijsku karticu
Slika 8.3 – Terminal administratora za aplikaciju bankovnog računa
Slika 8.4 – Terminal korisnika za aplikaciju bankovnog računa
Terminala i pametna kartica implementiraju algoritme za sigurnu razmjenu podataka. Nakon selektiranje apleta i unosa PIN broja(Slika 8.6) dolazi do razmjene ključeva za kriptoalgoritme preko kojih se vrši sigurna razmjena podataka. Apleti dopuštaju pet pogrešnih unosa PIN broja(Slika 8.7) nakon čega se kartica blokira(Slika 8.8). Aplet generira javni(PublicKey) i privatni ključ(PrivateKey) za 1024-bitni RSA asimetrični algoritam kriptiranja tijekom postavljanja podataka na karticu od strane administratora. Nakon što je unesen ispravan PIN i terminal dobije potvrdu da je verifikacija PIN brojem uspjela(slika 8.9), terminal zatraži od kartice da mu pošalje svoj javni ključ(PublicKey). Nakon što kartica pošalje svoj javni ključ i terminal ga uspješno primi tada terminal generira 64-bitni DES ključ(DESKey) kojeg kriptira javnim ključem kartice(PublicKey) i šalje ga apletu na kartici. Kad aplet dobije kriptirani DES ključ, on ga dekriptira svojim privatnim ključem() i spremi ga za trenutnu sesiju komuniciranja. Slika 8.5 prikazuje tijek komuniciranja apleta i terminala.
Slika 8.5 – Tijek komunikacije između terminala i kartice
Aplet također digitalno potpisuje podatke koje šalje terminalu. Digitalni potpis kreira se SHA1 funkcijom sažetka kojom se dobije 160-bitni sažetak kojeg aplet tada kriptira svojim privatnim RSA ključem. Nakon što terminal dobije podatke i provjeri potpis ispisuje poruku da je primio podatke i da je digitalni potpis valjan Slika 8.10.
Slika 8.6 – Unos PIN broja
Slika 8.7 – Pogresan unos PIN broja
Slika 8.8 – Kartica blokirana
Slika 8.9 – Ispravan PIN broj
Slika 8.10 – Dobavljanje podataka i provjera digitalnog potpisa
Za pametnu karticu implementirana su tri razreda, svaki razred je za određeni aplet na kartici koji su međusobno neovisni. Svaki aplet identificiran je svojim AID brojem i AID brojem paketa u kojem se taj aplet nalazi. Prvih pet bajtova AID broja paketa i AID broja apleta moraju biti jednaki. Razredi u implementaciji su:
- IDCard – koji se nalazi paketu jcard.seminar.idcard. Kad se iz ovog razreda stvori aplet i kad se on kovertira u format za izvođenje na pametnoj kartici dobije svoj AID broj koji je jednak D0000010101016 , dok paket jcard.seminar.idcard ima AID broj jednak D00000101016.
- DriverLicenceCard – nalazi se u paketu jcard.seminar.dlcard. AID broj apleta je D00000202020, AID broj paketa jcard.seminar.dlcard jednak D000002020.
- BankAcountCard – nalazi se u paketu jcard.seminar.bankacount. AID broj apleta je D00000303030, AID broj paketa jcard.seminar.bankacount je D000003030
Za izradu terminala postoji više razreda. Razrede možemo grubo podijeliti u tri grupe:
- Razredi za implementaciju kriptografskih funkcija
- Razredi za komunikaciju s pametnom karticom
- Razredi za izradu grafičkog sučelja
-
DESCrypt – ima funkciju
generiranja DES ključa te funkciju kriptiranja i dekiptiranja DES algoritmom.
-
RSACrypt – ima funkciju
dekriptiranja javnim ključem RSA algoritma.
-
SHA1Hash – ima funkciju stvaranja
160 bitnog sažetka. U kombinaciji s RSACyrpt razredom provjerava se digitalni
potpis poslan od apelta na pametnoj kartici.
- CardClient – implementira metode za razmjenu kriptografskih ključeva i metode za verifikaciju PIN brojem te promjena PIN broja. Također sadrži konstante za provjeru APDU odgovora koje šalje kartica.
- IDClient – komunikacija između terminala i apleta za implementaciju identifikacijske kartice. Nasljeđuje razred CardClient te još implementira metode za postavljanje i dobavljanje poataka s kartice.
- DLClient – komunikacija između terminala i apleta za implementaciju vozačke dozvole. Nasljeđuje razred CardClient te implementira metode za postavljanje i dobivanje podataka i informacija.
- BAClient – komunikacija između terminala i apleta za implementaciju bankovnog računa. Nasljeđuje razred te implementira metode za postavljanje i dobivanje podataka i sredstava na računu te dodavanje i skidanje iznosa s računa.
- IDCardGui - Grafičko sučelje za identifikacijsku karticu. Stvara kanal za komunikaciju koji onda koristi razred za komunikaciu.
- DLCardGui – Grafičko sučelje za vozačku dozvolu. Isto stvara kanal za komunikaciju koji tada koristi razred za komunikaciju.
- BACardGui – Grafičko sučelje za bankovni račun. Također stvara komunikacijski kanal koji koristi razred za komuniciranje.
- PinDialog – Kreiranje prozora za unos PIN broja. Koristi CardClient razred za komunikaciju s karticom.
- ChangePinDialog – Kreiranje prozira za promjenu PIN broja. Koristi CardClient razred za komunikaciju s karticom.
- Gui - Stvaranje završnog grafičkog sučelja. Koristi prije navedene grafičke komponente osim PinDialog razreda i ChangePinDialog razreda.
- SC - Razred preko kojeg se pokreće terminal. Sadrži main funkciju kojom se poziva razred Gui.
Ovim seminarom želi se pokazati kako upotrebom pametne kartice i Java Card tehnologije napraviti višenamjensku pametnu karticu koja sadrži više neovisnih aplikacija svaka namijenjena određenom servisu ili namjeni. U ovom seminaru prikazan je primjer tri aplikacije koje se izvode na jednoj pametnoj kartici, a za koje postoje tri različita terminala.
U skoroj budućnosti bi mogli očekivati pojavu ovakvih kartica u široj primjeni, npr. jedna pametna kartica koja bi implementirala aplete za kreditne kartice za nekoliko različitih banaka ili ili jedna kartica na kojoj bi bila i osobna iskaznica, zdrastvena iskaznica te vozačka dozvola.
Pametna kartica je proizvod koji pruža veliku sigurnost za koju je i napravljena, a zajedno s Java Card tehnologijom pruža veliku fleksibilnost i brzinu u izradi za pametne kartice. Ovdje treba spomenuti i OpenCard Framework koji nudi biblioteke za izgradnju terminala neovisnih o proizvođaču CAD uređaja.
Nedostatak u bržem napredovanju višenamjenskih pametnih kartica je u tome što ne postoje standardi kao što je EMV za bankarske funkcije za aplikacije kao što su osobna iskaznica i zdrastvena iskaznica. Ti standardi bi omogućavali da aplikacije na pametnim karticama za određeni servis rade na svim terminalima u svijetu namijenjenih tim servisima.
[1]
IBM Redbooks, Smart Cards: A Case Study, http://www.redbooks.ibm.com/redbooks/pdfs/sg24539
[2]
Sun Microsytems, Java Card Specifications v2.2.1., http://java.sun.com/products/javacard
[3]
Sun Microsytems, Java CardTM Development Kit
User's Guide v2.2.1.
[4]
Sun Microsytems, Java CardTM API Reference
v2.2.1.
[5]
Sun Microsytems, Virtual Machine Specification for the
Java CardTM Platform v2.2.1.
[6]
Sun Microsytems, Runtime Environment Specification for
the Java CardTM Platform v2.2.1
[7]
Sun Microsytems, An Introduction to Java Card
Technology, http://developers.sun.com/techtopics/mobility/javacard/articles
[8]
CardWerk Technologies, http://www.cardwerk.com
[9]
Schlumberger, Cyberflex® AccessTM Cards
Programmer's Guide
[10]
Schlumberger, CryptoflexTM Card's
Programmer's Guide
[11]
OpenCard, http://www.opencard.org
[12] Smart Card Developer Kit, http://unix.be.eu.org/docs/smart-card-developer-kit
AES - Advanced Encryption Standard
AID - Applet Identification Number
APDU - Application Protocol Data Unit
API - Application Programming
Interface
ATR - Answer To Reset
CAD - Card Acceptance Device
CAP - Converted Applet
CBC - Cipher Block Chaining
CHV - CardHolder Verification
CRC - Cyclic Redundancy Check
DES - Data Encryption Standard
DF - Dedicated File
EEPROM - Electric Erasable
Programmable Read Only Memory
EF - Elementary File
EMV - Europay-MasterCard-Visa
GCF - Generic Connection Framework
GSM - Global Standard for Mobile
communications
IC - Integrated Circuit
ID - Identification Number
ISO - international Standard
Organisation
JCRE - Java Card Runtime Environment
JCRMI
- Java Card Remote Methode Invocation
JCVM - Java Card Virtual Machine
LRC - Longitudinal Redundancy Check
MF - Master File
OCF - Open Card Framework
PIN - Personal Identification Number
PKI - Public Key Infrastructure
RAM - Random Access Memory
ROM - Read Only Memory
RSA - Rivest, Shamir, Adleman
SATSA - Security and Trust Services
API
SIM - Subscriber Identification
Number
TPDU - Transmission Protocol Data
Unit
VM - Virtual Machine