java card (2003)
DESCRIPTION
Old (2003) Java Card presentationTRANSCRIPT
Java CardJava CardVatroslav MihaljVatroslav Mihalj
FER, svibanj 2003.FER, svibanj 2003.
2
~60 min~60 min pitanja na kraju prezentacijepitanja na kraju prezentacije zainteresirani za okupljanje i zainteresirani za okupljanje i
suradnju u grupi s ciljem razmjene suradnju u grupi s ciljem razmjene materijal i iskustava, te za materijal i iskustava, te za eventualnbe zajedničke projekte, eventualnbe zajedničke projekte, bilo Java Card/J2ME, bilo neko drugo bilo Java Card/J2ME, bilo neko drugo podrucje, slobodno se mogu javitipodrucje, slobodno se mogu javiti
3
SadržajSadržaj
I. Što je “pametna kartice”I. Što je “pametna kartice”
II. Standardi i specifikacijeII. Standardi i specifikacije
III. Pametna kartica iznutraIII. Pametna kartica iznutra
IV. Principi rada pametne karticeIV. Principi rada pametne kartice
V. Java CardV. Java Card
VI. Java Card APIVI. Java Card API
VII. Java Card appletVII. Java Card applet
VIII. Java Card sigurnosni mehanizmiVIII. Java Card sigurnosni mehanizmi
IX. Praktični dioIX. Praktični dio
X. Literatura i resursiX. Literatura i resursi
I. Što je “pametna kartica”I. Što je “pametna kartica”
5
Pametna karticaPametna kartica
plastična kartica standardiziranih plastična kartica standardiziranih dimenzija, s ugrađenim čipomdimenzija, s ugrađenim čipom
6
standardiziran raspored i dimenzije standardiziran raspored i dimenzije kontakata čipakontakata čipa
sigurnije od magnetskih kartica – teže kopiranje podataka, teža
zlouporaba
7
Osobine pametnih karticaOsobine pametnih kartica sigurnostsigurnost
– kartica posjeduje zaštitne mehanizme kartica posjeduje zaštitne mehanizme – PIN zaštićuje od neautoriziranog pristupaPIN zaštićuje od neautoriziranog pristupa
pohrana osjetljivih/tajnih podatakapohrana osjetljivih/tajnih podataka
pouzdanost pouzdanost – ne ovise o ranjivim vanjskim resursimane ovise o ranjivim vanjskim resursima– korištenje kriptografije za zaštitu podataka i korištenje kriptografije za zaštitu podataka i
vanjske operacijevanjske operacije jednostavne za korištenjejednostavne za korištenje cijena 1$-20$cijena 1$-20$
8
Tipovi čip karticaTipovi čip kartica
memorijske karticememorijske kartice pametne karticepametne kartice
» ““obična” pametna karticaobična” pametna kartica» Java CardJava Card» SIM karticaSIM kartica» ......
9
Memorijske karticeMemorijske kartice
primjer: telefonske karticeprimjer: telefonske kartice nemaju mikroprocesornemaju mikroprocesor 1K-4K podataka1K-4K podataka izvršavanje predprogramiranih izvršavanje predprogramiranih
zadatakazadataka nemogućnost preprogramiranja kad se nemogućnost preprogramiranja kad se
potrošepotroše slaba zaštitaslaba zaštita IZUZETNO JEFTINE!IZUZETNO JEFTINE!
10
Razlike između Razlike između memorijskih i pametnih memorijskih i pametnih
karticakartica pametne kartice:pametne kartice:
– mikroprocesor rukuje podacima i radi mikroprocesor rukuje podacima i radi s memorijom s memorijom
– vanjske aplikacije nemaju direktan vanjske aplikacije nemaju direktan pristup podacima, za razliku od pristup podacima, za razliku od memorijskih karticamemorijskih kartica
– ponekad postoji koprocesore ponekad postoji koprocesore (kriptografija)(kriptografija)
11
Kontaktne i beskontaktne Kontaktne i beskontaktne karticekartice
kontaktne pametne kartice se stavljaju kontaktne pametne kartice se stavljaju u CAD (Card Acceptance Device)u CAD (Card Acceptance Device)– CAD = čitač pametnih karticaCAD = čitač pametnih kartica– najveći dio pametnih kartica ovakvog tipanajveći dio pametnih kartica ovakvog tipa
napajaje i komunikacija beskontaktnih napajaje i komunikacija beskontaktnih kartica: kartica: ugrađena antenaugrađena antena– inducirani napon ili ponekad baterijeinducirani napon ili ponekad baterije
pogodne gdje se traži brzina prolaska pogodne gdje se traži brzina prolaska (javni transport)(javni transport)
12
13
Primjene pametnih karticaPrimjene pametnih kartica
zdravstvene iskaznicezdravstvene iskaznice ID karticeID kartice
– Stega Crad: integtegracija kartica, Stega Crad: integtegracija kartica, steganografije i digitalnog vodenog žigasteganografije i digitalnog vodenog žiga
satelitska televizijasatelitska televizija mobilna telefonija (SIM kartice)mobilna telefonija (SIM kartice) bankarstvobankarstvo transporttransport parkiranjeparkiranje dodatne usluge (e-zaba, eGovernment)dodatne usluge (e-zaba, eGovernment)
14
InternetInternet– potpisivanje/kriptiranje maila (S/MIME, potpisivanje/kriptiranje maila (S/MIME,
PGP) ili prometa PGP) ili prometa » spremaju ključevespremaju ključeve» mogu poslužiti i kao kripto-porcesorimogu poslužiti i kao kripto-porcesori
– autentikacijaautentikacija– elektronički novac (naročito elektronički novac (naročito
micropayments)micropayments)
15
KriptografijaKriptografija
ciljevi kriptografije:ciljevi kriptografije:– povjerljivost povjerljivost – integritetintegritet– autentičnostautentičnost
kriptografski algoritmi: simetrični i kriptografski algoritmi: simetrični i asimetričniasimetrični
hash, signaturehash, signature random datarandom data
16
Pametne kartice i Pametne kartice i kriptografijakriptografija
spremanje tajnih/kriptiranih spremanje tajnih/kriptiranih podatakapodataka
kartica kao tokenkartica kao token– povećanje sigurnosti sustava u kojima povećanje sigurnosti sustava u kojima
se koristi se koristi » autorizacija: mobiteli, set top boxesautorizacija: mobiteli, set top boxes» enkripcijski modulenkripcijski modul
– OTP, challenge-responseOTP, challenge-response
II. Standardi i specifikacijeII. Standardi i specifikacije
18
Standardi i specifikacijeStandardi i specifikacije
ISO 7816ISO 7816 GSMGSM EMVEMV Open PlatformOpen Platform OpenCard FrameworkOpenCard Framework PC/SCPC/SC
19
ISO 7816ISO 7816
specifikacija podijeljena u 8 dijelova:specifikacija podijeljena u 8 dijelova:1 - fizičke karakteristike1 - fizičke karakteristike2 - dimenzije i smještaj kontakata2 - dimenzije i smještaj kontakata3 - signali i transportni protokoli3 - signali i transportni protokoli4 - međuindustrijske naredbe4 - međuindustrijske naredbe5 - identifikatori aplikacija5 - identifikatori aplikacija6 - međuindustrijski podatkovni 6 - međuindustrijski podatkovni
elementielementi7 - međuindustrijske SCQL naredbe7 - međuindustrijske SCQL naredbe
20
GSMGSM SIM kartice - mobilna telefonijaSIM kartice - mobilna telefonija
– Subscriber Identity Module: Subscriber Identity Module: identifikacija korisnikaidentifikacija korisnika
pametna kartica s manjim pametna kartica s manjim plastičnim tijelomplastičnim tijelom
generira jednokratne enkripcijske generira jednokratne enkripcijske ključeve pri digitalnom prenošenju ključeve pri digitalnom prenošenju govoragovora
GSM API for Java CardGSM API for Java Card
21
EMVEMV
Europay-Mastercard-VisaEuropay-Mastercard-Visa temelji se na ISO 7816temelji se na ISO 7816 proprietary proširenja za specifične proprietary proširenja za specifične
potrebe financijske industrijepotrebe financijske industrije
22
Open PlatformOpen Platform
ISO 7816 i EMV kompatibilnoISO 7816 i EMV kompatibilno razvila Visarazvila Visa višenamjenski kartični sustavivišenamjenski kartični sustavi
23
Open Card FrameworkOpen Card Framework
IBM, OpenCard konzorcijIBM, OpenCard konzorcij vrlo kompleksan i moćan vrlo kompleksan i moćan host-side host-side
frameworkframework,, implementiran u Javiimplementiran u Javi standardizirana sučelja za interakciju s standardizirana sučelja za interakciju s
čitačima i aplikacijama na karticamačitačima i aplikacijama na karticama pokušava se izbjeći ovisnost o pokušava se izbjeći ovisnost o
platformama, proizvođačima kartica i platformama, proizvođačima kartica i pružateljima uslugapružateljima usluga
podržava i Java i “obične” karticepodržava i Java i “obične” kartice
24
25
PC/SCPC/SC PC Smart Card PC Smart Card arhitektura za interakciju računala s arhitektura za interakciju računala s
karticamakarticama omogućen pristup karticama iz jezika omogućen pristup karticama iz jezika
visokog nivoa visokog nivoa – specifični specifični service providerservice provider moduli moduli
enkapsuliraju funkcionalnosti specifične enkapsuliraju funkcionalnosti specifične smart karticesmart kartice
sličan koncept kao OCFsličan koncept kao OCF– na Windows sustavima OCF pristupa CAD na Windows sustavima OCF pristupa CAD
uređajima (čitačima) kroz PC/SC uređajima (čitačima) kroz PC/SC managermanager
26
27
Usporedba standardaUsporedba standarda
28
III. Pametna kartica iznutraIII. Pametna kartica iznutra
30
Dijelovi pametne karticeDijelovi pametne kartice
memorija, mikroprocesor i I/O memorija, mikroprocesor i I/O sustav su upakirani u jedan jedini sustav su upakirani u jedan jedini čipčip
standardiziran raspored i veličina standardiziran raspored i veličina kontakatakontakata
31
32
MikroprocesorMikroprocesor
8/16/32bitni (RISC) mikroprocesor, 8/16/32bitni (RISC) mikroprocesor, najčešće Motorola 6805 ili Intel najčešće Motorola 6805 ili Intel 80518051
vanjski clock do 5MHz, skuplje vanjski clock do 5MHz, skuplje kartice imaju i množitelj (2,4,8)kartice imaju i množitelj (2,4,8)
ponekad se dodaje kriptografski ponekad se dodaje kriptografski koprocesorkoprocesor
Gemplus: 32bit RISC, 64K EEPROMGemplus: 32bit RISC, 64K EEPROM
33
MemorijaMemorija ROM - sadržava programe i OSROM - sadržava programe i OS
– upis podataka prilikom proizvodnje čipa = upis podataka prilikom proizvodnje čipa = maskingmasking
RAM - radna memorija; obično 256B-1KRAM - radna memorija; obično 256B-1K EEPROM - flash memorijaEEPROM - flash memorija
– "hard disk”, 4K-64K"hard disk”, 4K-64K– ~100 000 ciklusa pisanja; trajanje ~100 000 ciklusa pisanja; trajanje
zapisanog ~10 godinazapisanog ~10 godina– čitanje približno brzo kao i iz RAM-a, čitanje približno brzo kao i iz RAM-a,
pisanje 1000 puta sporijepisanje 1000 puta sporije
34
KontaktiKontaktiVcc - napajanje (3-5V)Vcc - napajanje (3-5V)
RST - za slanje reset signala mikroprocesoru (warm reset; RST - za slanje reset signala mikroprocesoru (warm reset; cold reset = izvlačenje)cold reset = izvlačenje)
CLK - vanjski clock (kartice ne posjeduju unutarnji clock)CLK - vanjski clock (kartice ne posjeduju unutarnji clock)
GND - referentni napon, uzima se kao 0VGND - referentni napon, uzima se kao 0V
Vpp - opcionalno, koristi se u starijim karticamaVpp - opcionalno, koristi se u starijim karticama
I/O - prijenos podataka i naredbiI/O - prijenos podataka i naredbi
RFU - reserved for future useRFU - reserved for future use
35
Sigurnosni mehanizmiSigurnosni mehanizmi
komponente sigurnosti:komponente sigurnosti:– tijelo kartice - posebne boje, hologrami i tijelo kartice - posebne boje, hologrami i
sl.sl.– čip (aktivna i pasivna zaštita)čip (aktivna i pasivna zaštita)– operacijski sustavoperacijski sustav– aplikacijeaplikacije
upis jedinstvenog ID broja čipa u ROMupis jedinstvenog ID broja čipa u ROM– generiranje ključageneriranje ključa– "crna lista" kartica"crna lista" kartica
36
zaštitni mehanizmi:zaštitni mehanizmi:– tehnologije proizvodnje poluvodičatehnologije proizvodnje poluvodiča– dizajn čipadizajn čipa– lažne strukture - zbunjivanje napadačalažne strukture - zbunjivanje napadača– interne sabirniceinterne sabirnice– dizajn memorije, zaštitni slojevi - nemogućnost dizajn memorije, zaštitni slojevi - nemogućnost
statičkog očitavanja sadržaja memorijestatičkog očitavanja sadržaja memorije– kodiranje memorije i sabirnicakodiranje memorije i sabirnica– kriptiranje PIN-akriptiranje PIN-a– ......
IV. Principi rada pametne IV. Principi rada pametne karticekartice
38
Razvoj aplikacijaRazvoj aplikacija
dugotrajan i težak procesdugotrajan i težak proces nestandardiziranost iznutranestandardiziranost iznutra
– različiti proizvođači, različit hardware, različiti proizvođači, različit hardware, razvojni alati (assembler, osciloskop)razvojni alati (assembler, osciloskop)
– proprietary platforme i razvojni alatiproprietary platforme i razvojni alati– problemi oko nadogradnje softvera i problemi oko nadogradnje softvera i
premještanja aplikacija na druge platformepremještanja aplikacija na druge platforme low level komunikacijski protokoli i memory low level komunikacijski protokoli i memory
managementmanagement dugotrajna izgradnja "from the ground-up" dugotrajna izgradnja "from the ground-up"
39
Smart Card OSSmart Card OS
vrlo jednostavni operacijski sustavivrlo jednostavni operacijski sustavi (standardizirani) skupovi (standardizirani) skupovi
instrukcija nad kojima se grade instrukcija nad kojima se grade korisničke aplikacijekorisničke aplikacije
hijerarhijski datotečni sustav hijerarhijski datotečni sustav
master file-root dedicated file-direktorijelementary file-datoteka
40
Komunikacijski modelKomunikacijski model
half duplexhalf duplex razmjena podataka u paketima razmjena podataka u paketima
nazvanim APDUnazvanim APDU– Application Protocol Data UnitApplication Protocol Data Unit– command APDU, response APDUcommand APDU, response APDU
kartica je uvijek kartica je uvijek slaveslave– čeka zahtjev od čeka zahtjev od hosta hosta (računalo)(računalo)– nakon obrade šalje odgovornakon obrade šalje odgovor
41
Command APDUCommand APDU CLA - klasa instrukcije (ISO, PC/SC, CLA - klasa instrukcije (ISO, PC/SC,
specifična za proizvođača)specifična za proizvođača) INS – instrukcijaINS – instrukcija P1, P2 - parametri uz instrukcijuP1, P2 - parametri uz instrukciju Lc - dužina opcionalnog polja Lc - dužina opcionalnog polja
podatakapodataka Le - očekivani broj okteta u Le - očekivani broj okteta u
odgovoru odgovoru hostahosta
42
Response APDUResponse APDU
SW1, SW2 - status word(s), poruka SW1, SW2 - status word(s), poruka o uspješnosti izvršenja naredbeo uspješnosti izvršenja naredbe– 0x90 00 ako uspješno izvršeno0x90 00 ako uspješno izvršeno
opcionalno podaci od opcionalno podaci od hostahosta prema prema kartici (podatkovno polje)kartici (podatkovno polje)
43
44
Transportni protokoliTransportni protokoli
transportni protokolitransportni protokoli– prenose APDU paketeprenose APDU pakete– T=0 T=0
» block oriented (blok okteta)block oriented (blok okteta)
– T=1 T=1 » byte/character oriented (blokovi su okteti) byte/character oriented (blokovi su okteti) » rijetko korištenrijetko korišten
answer to reset (ATR)answer to reset (ATR)– niz okteta, maksimalne duljine 33Bniz okteta, maksimalne duljine 33B– ““predstavljanje” kartice nakon warm resetapredstavljanje” kartice nakon warm reseta– daje razne parametredaje razne parametre
45
Open Smart Card SystemsOpen Smart Card Systems nova generacija karticanova generacija kartica reduciranje vremena izdavanjareduciranje vremena izdavanja izolacija od specifičnih zahtjeva izolacija od specifičnih zahtjeva
hardvera i OS-ahardvera i OS-a download aplikacija na karticudownload aplikacija na karticu jezici visokog nivoajezici visokog nivoa primjeri: MultOS, Smart Card for primjeri: MultOS, Smart Card for
Windows, Windows, Java CardJava Card
V. Java CardV. Java Card
47
Nastanak idejeNastanak ideje
zahtjevi: zahtjevi: – RAD umjesto asemblera i osciloskopaRAD umjesto asemblera i osciloskopa– "naprednije" aplikacije"naprednije" aplikacije– interakcija s Internetominterakcija s Internetom– sve uz isti nivo sigurnosti kao dotadsve uz isti nivo sigurnosti kao dotad
ključni atributi Jave: ključni atributi Jave: – jednostavnost - simplicityjednostavnost - simplicity– pouzdanost - safetypouzdanost - safety– sigurnost - securitysigurnost - security
48
49
Što je Java CardŠto je Java Card
podskup Jave s podskup Jave s runtime runtime okolinom okolinom optimiranom za pametne kartice i slične optimiranom za pametne kartice i slične uređaje s ograničenom memorijomuređaje s ograničenom memorijom
karakteristike JC aplikacija:karakteristike JC aplikacija:– sigurne (secure) - kontrola memorije i sigurne (secure) - kontrola memorije i
izvršavanja, razdvajanje applet firewallomizvršavanja, razdvajanje applet firewallom– prijenosne (portable), hardverski neovisneprijenosne (portable), hardverski neovisne– višeaplikacijske (multiapplication) - više višeaplikacijske (multiapplication) - više
appleta na kartici, applet firewall sprječava appleta na kartici, applet firewall sprječava nedopuštenu interakcijunedopuštenu interakciju
50
– kompatibilnost s postojećim standardima kompatibilnost s postojećim standardima - temelji se na ISO 7816 specifikaciji- temelji se na ISO 7816 specifikaciji
olakšan razvoj u suporedbi s olakšan razvoj u suporedbi s "klasičan" za određeni mikrokontroler "klasičan" za određeni mikrokontroler (npr. 8051)(npr. 8051)
otvorenost platforme, definiran API i otvorenost platforme, definiran API i runtime environmentruntime environment
skrivanje složenosti i detalja skrivanje složenosti i detalja kartičinog podsustavakartičinog podsustava
51
Podskup jezikaPodskup jezika
52
ArhitekturaArhitektura
potpuna odvojenost kartičnog potpuna odvojenost kartičnog sustava od appleta sustava od appleta – pristupanje sustavu kroz jezik visokog pristupanje sustavu kroz jezik visokog
nivoa (Java)nivoa (Java)
Java Card definira platformu na kojoj se aplikacije napisane u Javi mogu izvršavati na pametnim karticama.
53
dijelovi Java Card specifikacije:dijelovi Java Card specifikacije:– JCVM - definira podskup Java jezika i JCVM - definira podskup Java jezika i
virtualni stroj prikladan za karticevirtualni stroj prikladan za kartice– JCRE - precizno opisuje ponašanje JCRE - precizno opisuje ponašanje
(runtime behavior)(runtime behavior)– Java Card API - specificira skup Java Card API - specificira skup
osnovnih i extension Java osnovnih i extension Java paketa/klasa za kartične aplikacijepaketa/klasa za kartične aplikacije
54
55
Java Card Runtime Java Card Runtime EnvironmentEnvironment
funkcija slična OS-u, sistemske klase funkcija slična OS-u, sistemske klase analogne kerneluanalogne kernelu
inicijalizacija se vrši samo jednom za inicijalizacija se vrši samo jednom za vrijeme trajanja karticevrijeme trajanja kartice
inicijalizira VM, kreira instance inicijalizira VM, kreira instance appletaappleta
uklanjanjem energije, suspendira seuklanjanjem energije, suspendira se– očuvanje stanja u flash memorijiočuvanje stanja u flash memoriji– VM se resetiraVM se resetira
56
JCVMJCVM off-card off-card
– resursi nisu resursi nisu ograničeniograničeni
– ne izvršava se za ne izvršava se za vrijeme izvođenjavrijeme izvođenja
– class loading, class loading, bytecode bytecode verification, verification, resolution & linkingresolution & linking
on-cardon-card - byte - byte interpreterinterpreter
57
konverter (konverter (converterconverter) – ) – off cardoff card– provjerava zadovoljavanje JC podskupaprovjerava zadovoljavanje JC podskupa– inicijalizacija static varijabli i inicijalizacija static varijabli i
razrješavanje simboličkih referenci razrješavanje simboličkih referenci – alokacija i kreiranje potrebne strukturealokacija i kreiranje potrebne strukture– daje .CAP (converted applet); temeljen daje .CAP (converted applet); temeljen
na JAR formatuna JAR formatu CAP se stavlja na karticu (download) CAP se stavlja na karticu (download)
i izvršavai izvršava
58
59
Obrada naredbiObrada naredbi
JCRE radi s APDU paketimaJCRE radi s APDU paketima command APDUcommand APDU
– predaja appleta naznačenom u predaja appleta naznačenom u naredbinaredbi
– izabrani applet procesira APDU, šalje izabrani applet procesira APDU, šalje odgovor, te predaje kontrolu JCREodgovor, te predaje kontrolu JCRE
VI. Java Card APIVI. Java Card API
61
Java Card APIJava Card API
prilagođenost ISO 7816 modeluprilagođenost ISO 7816 modelu osnovni (core) paketi:osnovni (core) paketi:
– java.langjava.lang– javacard.frameworkjavacard.framework– javacard.securityjavacard.security
extension paket:extension paket:– javacardx.cryptojavacardx.crypto
- nema: GUI, network I/O, desktop file - nema: GUI, network I/O, desktop file system I/Osystem I/O
62
java.langjava.lang podskup "pravog" java.lang paketapodskup "pravog" java.lang paketa mnoge metode nepodržane mnoge metode nepodržane objekti: Object, Throwable, Exceptionobjekti: Object, Throwable, Exception iznimke (exceptions): iznimke (exceptions): RuntimeException, RuntimeException,
ArithmeticException, ArithmeticException, ArrayIndexOutOfBondsException, ArrayIndexOutOfBondsException, ArrayStoreException, ClassCastException, ArrayStoreException, ClassCastException, IndexOutOfBondsException, IndexOutOfBondsException, NullPointerException, SecurityException, NullPointerException, SecurityException, NegativeArraySizeExceptionNegativeArraySizeException
63
javacard.frameworkjavacard.framework
osnovne klase i sučelja za appleteosnovne klase i sučelja za applete klasa klasa Applet Applet osnova za appleteosnova za applete klasa APDU: rukovanje APDU klasa APDU: rukovanje APDU
paketimapaketima javacard.framework.JCSystem sučelje javacard.framework.JCSystem sučelje
prema sustavuprema sustavu– nije podržan java.lang.Systemnije podržan java.lang.System– metode za kontrolu izvršavanja appleta, metode za kontrolu izvršavanja appleta,
upravljanje resursima i transakcijamaupravljanje resursima i transakcijama
64
javacard.security, javacard.security, javacardx.cryptojavacardx.crypto
framework za kriptografske funkcijeframework za kriptografske funkcije (a)simetrični algoritmi (Cipher), (a)simetrični algoritmi (Cipher),
RandomData, digitalni potpis RandomData, digitalni potpis (Signature), MessageDigest(Signature), MessageDigest
apstraktne klase; samo API, apstraktne klase; samo API, implementaciju daje JCRE providerimplementaciju daje JCRE provider
javacardx.cryptojavacardx.crypto: klase i sučelja : klase i sučelja koja podliježu kontroli izvozakoja podliježu kontroli izvoza
65
AtomarnostAtomarnost
atomarnost: izmjena ili uspjeva u atomarnost: izmjena ili uspjeva u cijelosti ili se objekt vraća u cijelosti ili se objekt vraća u prethodno stanjeprethodno stanje
kartica pohranjuje osjetljive kartica pohranjuje osjetljive podatke, treba spriječiti gubitak u podatke, treba spriječiti gubitak u slučaju pogreške prilikom izvođenja slučaju pogreške prilikom izvođenja ili prekida napajanja ili prekida napajanja
robusni mehanizmi za osiguranje robusni mehanizmi za osiguranje atomarnostiatomarnosti
66
javacard.framework.Utiljavacard.framework.Util
public static short arrayCopy(byte[] src, public static short arrayCopy(byte[] src, short srcOff, byte[] dest, short desOff, short srcOff, byte[] dest, short desOff, short length)short length)
public static short public static short arrayCopyNonAtomic(byte[] src, short arrayCopyNonAtomic(byte[] src, short srcOff, byte[] dest, short desOff, short srcOff, byte[] dest, short desOff, short length)length)
67
TransakcijeTransakcije
slično bazama podatakaslično bazama podataka (begin, (begin, commit, rollback), ali nema gnježđenjacommit, rollback), ali nema gnježđenja– JCSystem.beginTransaction();JCSystem.beginTransaction();– JCSystem.commitTransaction();JCSystem.commitTransaction();– JCSystem.abortTransaction()JCSystem.abortTransaction()
automatski abort ako se eksplicitno ne automatski abort ako se eksplicitno ne pozove commit ili abortpozove commit ili abort
u slučaju prekida napajanja ili pogreške, u slučaju prekida napajanja ili pogreške, rollback prvom slijedećom prilikomrollback prvom slijedećom prilikom
VII. Java Card appletVII. Java Card applet
69
70
AppletiAppleti pohranjeni u CAP - vrsta JAR arhivepohranjeni u CAP - vrsta JAR arhive jedino ROM appleti mogu imati native jedino ROM appleti mogu imati native
metode (ubacivanje prilikom metode (ubacivanje prilikom maskingamaskinga)) moguće više instanci istog appletamoguće više instanci istog appleta applet ID: applet ID: niz okteta koji jednoznačno niz okteta koji jednoznačno
identificira svaki appletidentificira svaki applet– 5B: National Registered Application Provider 5B: National Registered Application Provider
(RID) - dodjeljuje ISO(RID) - dodjeljuje ISO– 0B-11B: Proprietary Application Identifier 0B-11B: Proprietary Application Identifier
Extension (PIX)Extension (PIX)
71
Razvoj po koracimaRazvoj po koracima
1. dizajn1. dizajn– specificiranje funkcijaspecificiranje funkcija– dodjela applet ID dodjela applet ID – dizajn struktura klasa i metodadizajn struktura klasa i metoda– definiranje sučelja između appleta i definiranje sučelja između appleta i
host aplikacije (APDU naredbe i sadržaj)host aplikacije (APDU naredbe i sadržaj)»PROBLEM: definiranjem APDU naredbi za
svaki se applet razvija proprietary protokol
2. kodiranje2. kodiranje
72
3. implementacija 3. implementacija error handlingerror handling mehanizamamehanizama– nedetektirana pogreška može nedetektirana pogreška može
uzrokovati blokiranje kartice ili uzrokovati blokiranje kartice ili gubitak podatakagubitak podataka
– provjeriti podržava li applet naredbu, provjeriti podržava li applet naredbu, je li naredba dobro formatirana i krši li je li naredba dobro formatirana i krši li neke uvjeteneke uvjete
4. testiranje4. testiranje
73
javacard.framework.Applejavacard.framework.Applett
public static void install (byte[] bArray, public static void install (byte[] bArray, short bOffset, byte bLength)short bOffset, byte bLength)
JCRE poziva da kreira instancu JCRE poziva da kreira instancu appletaappleta
entry point za applet, kao main za entry point za applet, kao main za Java aplikacijuJava aplikaciju
bArray bArray su instalacijski parametrisu instalacijski parametri u nju smjestiti pozive konstruktora u nju smjestiti pozive konstruktora
appletaappleta
74
protected final void register()protected final void register()
protected final void register(byte[] protected final void register(byte[] bArray, short bOffset, byte bLength)bArray, short bOffset, byte bLength)
applet registrira instancu kod JCREapplet registrira instancu kod JCRE svaka instanca ima jedinstven applet svaka instanca ima jedinstven applet
IDID obično ju poziva konstruktor appletaobično ju poziva konstruktor appleta
75
public boolean select()public boolean select() JCRE pozivom ove metode JCRE pozivom ove metode
obavještava applet da je selektiranobavještava applet da je selektiran ukoliko selektiranje appleta ne ukoliko selektiranje appleta ne
uspije, vraća se status 0x6999uspije, vraća se status 0x6999
76
public abstract void process (APDU public abstract void process (APDU apdu)apdu)
JCRE pozivom obavještava applet JCRE pozivom obavještava applet da procesira nadolazeći command da procesira nadolazeći command APDUAPDU
JEDINI standardizirani command JEDINI standardizirani command APDU na JC je SELECT appletaAPDU na JC je SELECT appleta– proprietary APDU i protokol za proprietary APDU i protokol za
aplikacijeaplikacije
77
public void deselect ()public void deselect () JCRE pozivom ove metode JCRE pozivom ove metode
obavještava trenutno selektiran obavještava trenutno selektiran applet da će drugi applet biti applet da će drugi applet biti selektiranselektiran
cleanup operacijecleanup operacije
78
79
Primanje i slanje podatakaPrimanje i slanje podataka
getBuffer()getBuffer() metoda, APDU metoda, APDU objektobjekt veličina buffera: min. 37Bveličina buffera: min. 37B metode za učitavanje podataka:metode za učitavanje podataka:
– setIncomingAndReceivesetIncomingAndReceive » za količinu podataka koja stane u APDU za količinu podataka koja stane u APDU
bufferbuffer
– receiveBytes receiveBytes » dolazi iza prethodne jednom ili više puta, dolazi iza prethodne jednom ili više puta,
ako ima više podataka nego što stane u ako ima više podataka nego što stane u buffer, sve dok se svi podaci ne učitajubuffer, sve dok se svi podaci ne učitaju
80
slanje odgovora:slanje odgovora:
– setOutgoing setOutgoing » samo postavlja data transfer mode; više se ne samo postavlja data transfer mode; više se ne
mogu primati podaci (mogu primati podaci (half duplexhalf duplex))
– setOutgoingLengthsetOutgoingLength» max. 256B prema hostumax. 256B prema hostu
– sendBytessendBytes» uzastopnim pozivima applet može poslati više od uzastopnim pozivima applet može poslati više od
maksimalnih 256Bmaksimalnih 256B
– skraćeno: skraćeno: setOutgoingAndSendsetOutgoingAndSend - cijela - cijela poruka mora stati u bufferporuka mora stati u buffer
81
status riječi (status riječi (status wordsstatus words))
– JCRE kreira SW1 i SW2 u JCRE kreira SW1 i SW2 u response APDU response APDU nakon završetka nakon završetka process process metode appletametode appleta
– normalan završetak: 0x9000normalan završetak: 0x9000 Slanje podataka koji nisu u APDU bufferuSlanje podataka koji nisu u APDU bufferu
– ako su podaci u lokalnom bufferu u appletu, ako su podaci u lokalnom bufferu u appletu, trebaju se kopirati u APDU buffertrebaju se kopirati u APDU buffer
– kopiranje i slanje obavlja funkcija kopiranje i slanje obavlja funkcija sendBytesLong sendBytesLong iz APDU klaseiz APDU klase
– može se uzastopno pozivatimože se uzastopno pozivati
82
83
Slanje/primanje - sažetak Slanje/primanje - sažetak
1. slučaj: nema podataka u naredbi ni u slučaj: nema podataka u naredbi ni u odgovoruodgovoru
poziva se poziva se processprocess metoda appleta metoda appleta
applet ustanovi da nema dodatnih applet ustanovi da nema dodatnih podataka uz zahtjevpodataka uz zahtjev
applet izvršava naredbu iz APDU headeraapplet izvršava naredbu iz APDU headera
applet se vraća iz applet se vraća iz processprocess metode metode
84
2. slučaj: nema podataka u naredbi, podaci u slučaj: nema podataka u naredbi, podaci u odgovoruodgovoru
poziva se poziva se processprocess metoda appleta metoda appleta
applet ustanovi da nema dodatnih podataka uz applet ustanovi da nema dodatnih podataka uz zahtjev, ali da treba poslati podatke uz zahtjev, ali da treba poslati podatke uz odgovorodgovor
applet izvršava naredbu iz APDU headeraapplet izvršava naredbu iz APDU headera
applet šalje odgovor: applet šalje odgovor: setOutgoingAndSendsetOutgoingAndSend za za kratak odgovor; kratak odgovor; setOutgoingsetOutgoing, , setOutgoingLengthsetOutgoingLength, , sendBytessendBytes//sendBytesLong sendBytesLong za više podatakaza više podataka
applet se vraća iz applet se vraća iz processprocess metode metode
85
3. slučaj: podaci u naredbi, nema podataka u slučaj: podaci u naredbi, nema podataka u odgovoruodgovoru
poziva se poziva se processprocess metoda appleta metoda appleta
applet ustanovi da ima podataka uz zahtjev, ali da applet ustanovi da ima podataka uz zahtjev, ali da ne treba poslati podatke uz odgovorne treba poslati podatke uz odgovor
applet poziva applet poziva setIncomingAndReceivesetIncomingAndReceive, te po , te po potrebi potrebi receiveBytesreceiveBytes
povratak iz povratak iz process process metodemetode
4. slučaj: podaci i u naredbi i u odgovoruslučaj: podaci i u naredbi i u odgovoruprimanje naredbe kao u slučaju 3, slanje odgovora kao primanje naredbe kao u slučaju 3, slanje odgovora kao u slučaju 2u slučaju 2
86
87
Optimiranje appletaOptimiranje appleta ograničeni sistemski resursiograničeni sistemski resursi temeljno je optimirati generalni dizajntemeljno je optimirati generalni dizajn što rjeđe upisivanje u sporu EEPROM što rjeđe upisivanje u sporu EEPROM
memoriju (više koristiti RAM)memoriju (više koristiti RAM) ograničen stogograničen stog
– optimirati broj parametara metoda i lokalnih optimirati broj parametara metoda i lokalnih varijablivarijabli
– ograničiti gnježđenje poziva metoda (stack ograničiti gnježđenje poziva metoda (stack overflow)overflow)
– izbjegavati rekurzijuizbjegavati rekurziju
88
ako je moguće, kreirati sve ako je moguće, kreirati sve potrebne objekte u konstruktorupotrebne objekte u konstruktoru– izbjegavanje “out-of-memory”izbjegavanje “out-of-memory”– install metoda koja poziva konstruktor install metoda koja poziva konstruktor
je transakcija je transakcija » oslobađanje resursa ako se dogodi oslobađanje resursa ako se dogodi
pogreška u inicijalizacijipogreška u inicijalizaciji
– object reuse: nema garbage object reuse: nema garbage collectiona, memorije može ponestati collectiona, memorije može ponestati
89
eliminirati redundantan i dupliciran kodeliminirati redundantan i dupliciran kod
– ne inicijalizirati varijablu ako ne trebane inicijalizirati varijablu ako ne treba pristup polju traži više bytekodova nego pristup polju traži više bytekodova nego
lokalnoj varijablilokalnoj varijabli switch obično brži nego if/else, ali...switch obično brži nego if/else, ali... ““a+b-c” traži više bytekodova nego a+b-c” traži više bytekodova nego
x=a+b x=x-c (međurezultat)x=a+b x=x-c (međurezultat) final static sličan #definefinal static sličan #define
– konverter zamjenjuje referenciranje konverter zamjenjuje referenciranje varijable s njenom vrijednošćuvarijable s njenom vrijednošću
90
Nedostaci Java Card Nedostaci Java Card platformeplatforme
previše prepuštanja previše prepuštanja implementatorima: int, garbage implementatorima: int, garbage collection...collection...
native metode bi mogle probiti native metode bi mogle probiti applet firewallapplet firewall
nespretnost kreiranja appleta (off-nespretnost kreiranja appleta (off-card, on-card, CAP...)card, on-card, CAP...)
multiaplikacijsko okruženje - applet multiaplikacijsko okruženje - applet mora biti "dobar", inače...mora biti "dobar", inače...
91
JCRE mora biti savršen, jer je JCRE mora biti savršen, jer je "svemoguć", pa je cilj napadača"svemoguć", pa je cilj napadača
Java Card nije uistinu "cross Java Card nije uistinu "cross platform"platform"
......
VIII. Java Card sigurnosni VIII. Java Card sigurnosni mehanizmimehanizmi
93
JCREJCRE
JCRE ima poseban sistemski JCRE ima poseban sistemski kontekst, s posebnim privilegijama kontekst, s posebnim privilegijama (poput OS-a)(poput OS-a)– poziv bilo koje metode bilo kojeg objektapoziv bilo koje metode bilo kojeg objekta– pristup svim instancama svih appletapristup svim instancama svih appleta– zbog “svemoćnosti” i pristupa zbog “svemoćnosti” i pristupa
svemu mora biti dobro napravljensvemu mora biti dobro napravljen» napadaču je dovoljno da preuzme kontrolu napadaču je dovoljno da preuzme kontrolu
nad JCRE da bi tako potpuno preuzeo nad JCRE da bi tako potpuno preuzeo kontrolu nad svime na karticikontrolu nad svime na kartici
94
Java Card platform Java Card platform securitysecurity
Java language securityJava language security
Java Card additional securityJava Card additional security
95
Java langugage securityJava langugage security
strongly typed - nema neispravnih strongly typed - nema neispravnih konverzijakonverzija
provjera granice polja prilikom provjera granice polja prilikom pristupapristupa
nema pokazivačanema pokazivača inicijalizacija varijabli prije upotrebeinicijalizacija varijabli prije upotrebe kontrola pristupa metodama i kontrola pristupa metodama i
članovima klasečlanovima klase
96
Java Card Additional Java Card Additional SecuritySecurity
mogućnost određivanja automatske mogućnost određivanja automatske duljine života objekata (persistent-duljine života objekata (persistent-flash, transient-RAM)flash, transient-RAM)
atomarnost i transakcije - osiguranje atomarnost i transakcije - osiguranje integriteta u slučaju prekida operacijeintegriteta u slučaju prekida operacije
applet firewall - sigurnost i integritet applet firewall - sigurnost i integritet sustava (JCRE) i svakog appleta na sustava (JCRE) i svakog appleta na kartici (umjesto sandboxa)kartici (umjesto sandboxa)
97
kontrola dijeljenja objekata (object kontrola dijeljenja objekata (object sharing)sharing)
native metode ISKLJUČIVO u ROM native metode ISKLJUČIVO u ROM appletima (ubacivanje u tvornici - appletima (ubacivanje u tvornici - maskingmasking))– ne izvodi ih JC VM i ne ulaze u ne izvodi ih JC VM i ne ulaze u
security protection koji jamči Javasecurity protection koji jamči Java– download takvih appleta na karticu download takvih appleta na karticu
nije podržannije podržan
98
Applet firewallApplet firewall
višeaplikacijsko okruženje višeaplikacijsko okruženje Java Card: applet firewallJava Card: applet firewall
» ““pravi” JVM: sandbox, classloader pravi” JVM: sandbox, classloader » ograničenje pristupa podacima drugih appletaograničenje pristupa podacima drugih appleta
kontekst (context): firewallom kontekst (context): firewallom odijeljen i zaštićen dio Java Card odijeljen i zaštićen dio Java Card sustavasustava– dodjela instancama appleta prilikom dodjela instancama appleta prilikom
kreiranjakreiranja– nema ga između instanci appleta iz istog nema ga između instanci appleta iz istog
paketapaketa
99
Object SharingObject Sharing
mehanizmi dijeljenja objekatamehanizmi dijeljenja objekata::– JCRE privilegije i entry point objektiJCRE privilegije i entry point objekti– globalna polja (global arrays)globalna polja (global arrays)– dijeljena sučelja (shareable interfaces)dijeljena sučelja (shareable interfaces)
pristup dijeljenim objektima kroz context pristup dijeljenim objektima kroz context switch, izvođenje u novom kontekstuswitch, izvođenje u novom kontekstu
u slučaju završetka/iznimke vraćanje u slučaju završetka/iznimke vraćanje prethodnog kontekstaprethodnog konteksta
moguće gnježđenje promjena kontekstamoguće gnježđenje promjena konteksta
100
javacard.framework.Shareablejavacard.framework.Shareable– interfaceinterface– ne definira metode niti članovene definira metode niti članove– služi samo kao temelj drugim služi samo kao temelj drugim
sučeljima, da naznači da ona imaju sučeljima, da naznači da ona imaju posebna obilježjaposebna obilježja
IX. Praktični dioIX. Praktični dio
102
JCWDEJCWDE
simulacija JC u “običnom” JVMsimulacija JC u “običnom” JVM komunikacija TCP/IP (port 9025)komunikacija TCP/IP (port 9025) ne zahtjeva konvertiranje u .CAPne zahtjeva konvertiranje u .CAP konfiguracijska datoteka (.APP) konfiguracijska datoteka (.APP)
koja identificira applete - 1 linija po koja identificira applete - 1 linija po appletuappletu– prvi mora biti InstallerApplet, koji je prvi mora biti InstallerApplet, koji je
analogan installeru na karticianalogan installeru na kartici
103
nije kompletna simulacija, nije kompletna simulacija, nepodržano:nepodržano:– download .CAPdownload .CAP– RMIRMI– object/applet/package deletionobject/applet/package deletion– persistent card statepersistent card state– applet firewallapplet firewall– transakcijetransakcije– applet instance creationapplet instance creation
104
C-JCREC-JCRE
prilična sličnost s "pravom" Java prilična sličnost s "pravom" Java karticomkarticom
podržava download .CAPpodržava download .CAP očuvanje stanja između očuvanje stanja između sessionasessiona podržava card reset u slučaju podržava card reset u slučaju
pogreške pri alokaciji objekta pri pogreške pri alokaciji objekta pri prekinutoj transakcijiprekinutoj transakciji
105
Konvertiranje u .CAPKonvertiranje u .CAP
download; samo za karticu i C-JCREdownload; samo za karticu i C-JCREconverter [-out JCA] [-classdir] <applet converter [-out JCA] [-classdir] <applet
package> <AID> <package version>package> <AID> <package version>
podrška za 32-bitni int: "-i”podrška za 32-bitni int: "-i”– vendor dependent implementationvendor dependent implementation
JCA format: ROM JCA format: ROM maskingmasking
106
Off-card verifikacijaOff-card verifikacija
verificiranje .CAP datoteke:verificiranje .CAP datoteke:verify <export-files.EXP> verify <export-files.EXP>
<applet.CAP><applet.CAP> verifikacijom se utvrđuje:verifikacijom se utvrđuje:
– je li CAP interno konzistentanje li CAP interno konzistentan– je li konzistentan s kontekstom u je li konzistentan s kontekstom u
kojem će se nalazitikojem će se nalaziti
107
Kreiranje, download i Kreiranje, download i simulacijasimulacija
instalirati Java Card Development Kitinstalirati Java Card Development Kit instalirati java.comm paketinstalirati java.comm paket kompajliranje: javac -g <applet.java>kompajliranje: javac -g <applet.java>
– OBAVEZNO "-g", jer converter treba neke OBAVEZNO "-g", jer converter treba neke debugging informacijedebugging informacije
testiranje (simulacija) jednim od testiranje (simulacija) jednim od simulatorasimulatora– korištenje APDUTool alatakorištenje APDUTool alata
108
109
Off-card instalacijaOff-card instalacija
generiranje instalacijske skripte generiranje instalacijske skripte pomoću off-card installerapomoću off-card installerascriptgen -o <script_name> <applet.CAP>scriptgen -o <script_name> <applet.CAP>
u skriptu OBAVEZNO dodati:u skriptu OBAVEZNO dodati:– "powerup" i "powerdown”"powerup" i "powerdown”– naredbe za selektiranje on-card installeranaredbe za selektiranje on-card installera– naredbe za kreiranje appleta koji su u CAPnaredbe za kreiranje appleta koji su u CAP
» CAP je paket, ne jedan appletCAP je paket, ne jedan applet
110
111
APDUToolAPDUTool
šalje APDU naredbe appletu i šalje APDU naredbe appletu i prima odgovoreprima odgovore
prva i zadnja naredba za prva i zadnja naredba za APDUTool:APDUTool:– powerup - priprema APDUTool za powerup - priprema APDUTool za
čitanje command APDUčitanje command APDU– powerdownpowerdown
dodatne naredbe: echo, delaydodatne naredbe: echo, delay
112
Simulacija: JCWDESimulacija: JCWDE
JCWDE.exe <JCWDE.exe <appfile.APPappfile.APP>>applet se učitava ako je referenciran applet se učitava ako je referenciran
u .APP datoteciu .APP datoteci
apdutool.exe apdutool.exe <ScriptFile><ScriptFile> >> <O<OutputFileutputFile>>
113
Simulacija: C-JCRESimulacija: C-JCRE
CREF.exe -o <CREF.exe -o <EEPROM2saveEEPROM2save>>
CREF.exe -i <E2load> [-o <E2save> CREF.exe -i <E2load> [-o <E2save> ] nastavlja izvođenje u onom ] nastavlja izvođenje u onom stanju u kojem je prethodno stanju u kojem je prethodno završilozavršilo
apdutool apdutool <ScriptFile><ScriptFile> > > <<OutputFileOutputFile>>
114
Travel Card appletTravel Card applet
autor: Ivica Čardićautor: Ivica Čardić kupovanje i rezervacija (avionskih) karatakupovanje i rezervacija (avionskih) karata JDK 1.3, JC 2.1.2/JC 2.2, C-JCRE simulatorJDK 1.3, JC 2.1.2/JC 2.2, C-JCRE simulator
– JC 2.2 NE RADI s J2SDK 1.4JC 2.2 NE RADI s J2SDK 1.4 skripte:skripte:
– kompajliranje i kovertiranje (command prompt):kompajliranje i kovertiranje (command prompt):» skriptaJC22.bat – Java Card 2.2skriptaJC22.bat – Java Card 2.2» skriptaJC212.bat – Java Card 2.1.2skriptaJC212.bat – Java Card 2.1.2
– simcref.bat – pokretanje C-JCRE simulatora (u simcref.bat – pokretanje C-JCRE simulatora (u prvom command prompt prozoru)prvom command prompt prozoru)
– simapdu.bat – APDU naredbe za simulaciju (u simapdu.bat – APDU naredbe za simulaciju (u drugom command prompt prozoru)drugom command prompt prozoru)
X. Literatura i resursiX. Literatura i resursi
116
Elektronički dokumentiElektronički dokumenti
Java Card CDJava Card CD– zbirka dokumenata, članaka, zbirka dokumenata, članaka,
priručnika i sl. u elektroničkom oblikupriručnika i sl. u elektroničkom obliku– HTML, TXT, DOC, PDF, PSHTML, TXT, DOC, PDF, PS– može se dobiti od:može se dobiti od:
» menemene» prof. Žagaraprof. Žagara
117
LinkoviLinkovi
http://java.sun.com/products/javacard/http://java.sun.com/products/javacard/ http://sigurnost.zemris.fer.hrhttp://sigurnost.zemris.fer.hr http://citeseer.nj.nec.com (može i preko http://citeseer.nj.nec.com (može i preko
Googlea)Googlea) http://www.javacard.org, http://www.javacard.org,
http://www.javacard.org/mirroring/tamper.htmlhttp://www.javacard.org/mirroring/tamper.html http://www.javaworld.comhttp://www.javaworld.com http://www.javaguru.comhttp://www.javaguru.com http://javacardforum.orghttp://javacardforum.org http://www.jdance.comhttp://www.jdance.com http://www.opencard.comhttp://www.opencard.com
118
http://www.gemplus.comhttp://www.gemplus.com http://www.scdk.comhttp://www.scdk.com http://www.smartcardforum.comhttp://www.smartcardforum.com http://www.redbooks.ibm.comhttp://www.redbooks.ibm.com http://www.drdobbs.comhttp://www.drdobbs.com http://www.informit.comhttp://www.informit.com
119
KnjigeKnjige
Z. Chen: “Java Card Technology for Z. Chen: “Java Card Technology for Smart Cards”, Addison-Wesley, Smart Cards”, Addison-Wesley, 2000.2000.
““Smart Card Handbook”Smart Card Handbook” S.B. Guthrey, T.M. Jurgensen: S.B. Guthrey, T.M. Jurgensen:
“Smart Card Developer’s Kit”“Smart Card Developer’s Kit”
120