Your SlideShare is downloading. ×
0
Java Card Vatroslav Mihalj FER, svibanj 2003.
<ul><li>~60 min </li></ul><ul><li>pitanja na kraju prezentacije </li></ul><ul><li>zainteresirani za okupljanje i suradnju ...
Sadržaj <ul><li>I. Što je “pametna kartice” </li></ul><ul><li>II. Standardi i specifikacije </li></ul><ul><li>III. Pametna...
I. Što je “pametna kartica”
Pametna kartica <ul><li>plastična kartica standardiziranih dimenzija, s ugrađenim čipom </li></ul>
<ul><li>standardiziran raspored i dimenzije kontakata čipa </li></ul><ul><li>sigurnije od magnetskih kartica  </li></ul><u...
Osobine pametnih kartica <ul><li>sigurnost </li></ul><ul><ul><li>kartica posjeduje zaštitne mehanizme  </li></ul></ul><ul>...
Tipovi čip kartica <ul><li>memorijske kartice </li></ul><ul><li>pametne kartice </li></ul><ul><ul><ul><li>“ obična” pametn...
Memorijske kartice <ul><li>primjer: telefonske kartice </li></ul><ul><li>nemaju mikroprocesor </li></ul><ul><li>1K-4K poda...
Razlike između memorijskih i pametnih kartica <ul><li>pametne kartice: </li></ul><ul><ul><li>mikroprocesor rukuje podacima...
Kontaktne i beskontaktne kartice <ul><li>kontaktne pametne kartice se stavljaju u CAD (Card Acceptance Device) </li></ul><...
 
Primjene pametnih kartica <ul><li>zdravstvene iskaznice </li></ul><ul><li>ID kartice </li></ul><ul><ul><li>Stega Crad: int...
<ul><li>Internet </li></ul><ul><ul><li>potpisivanje/kriptiranje maila (S/MIME, PGP) ili prometa  </li></ul></ul><ul><ul><u...
Kriptografija <ul><li>ciljevi kriptografije: </li></ul><ul><ul><li>povjerljivost  </li></ul></ul><ul><ul><li>integritet </...
Pametne kartice i kriptografija <ul><li>spremanje tajnih/kriptiranih podataka </li></ul><ul><li>kartica kao token </li></u...
II. Standardi i specifikacije
Standardi i specifikacije <ul><li>ISO 7816 </li></ul><ul><li>GSM </li></ul><ul><li>EMV </li></ul><ul><li>Open Platform </l...
ISO 7816 <ul><li>specifikacija podijeljena u 8 dijelova: </li></ul><ul><li>1 - fizičke karakteristike </li></ul><ul><li>2 ...
GSM <ul><li>SIM kartice - mobilna telefonija </li></ul><ul><ul><li>Subscriber Identity Module: identifikacija korisnika </...
EMV <ul><li>Europay-Mastercard-Visa </li></ul><ul><li>temelji se na ISO 7816 </li></ul><ul><li>proprietary proširenja za s...
Open Platform <ul><li>ISO 7816 i EMV kompatibilno </li></ul><ul><li>razvila Visa </li></ul><ul><li>višenamjenski kartični ...
Open Card Framework <ul><li>IBM, OpenCard konzorcij </li></ul><ul><li>vrlo kompleksan i moćan  host-side framework ,   imp...
 
PC/SC <ul><li>PC Smart Card  </li></ul><ul><li>arhitektura za interakciju računala s karticama </li></ul><ul><li>omogućen ...
 
Usporedba standarda
 
III. Pametna kartica iznutra
Dijelovi pametne kartice <ul><li>memorija, mikroprocesor i I/O sustav su upakirani u jedan jedini čip </li></ul><ul><li>st...
 
Mikroprocesor <ul><li>8/16/32bitni (RISC) mikroprocesor, najčešće Motorola 6805 ili Intel 8051 </li></ul><ul><li>vanjski c...
Memorija <ul><li>ROM - sadržava programe i OS </li></ul><ul><ul><li>upis podataka prilikom proizvodnje čipa =  masking </l...
Kontakti <ul><li>Vcc - napajanje (3-5V) </li></ul><ul><li>RST - za slanje reset signala mikroprocesoru (warm reset; cold r...
Sigurnosni mehanizmi <ul><li>komponente sigurnosti: </li></ul><ul><ul><li>tijelo kartice - posebne boje, hologrami i sl. <...
<ul><li>zaštitni mehanizmi: </li></ul><ul><ul><li>tehnologije proizvodnje poluvodiča </li></ul></ul><ul><ul><li>dizajn čip...
IV. Principi rada pametne kartice
Razvoj aplikacija <ul><li>dugotrajan i težak proces </li></ul><ul><li>nestandardiziranost iznutra </li></ul><ul><ul><li>ra...
Smart Card OS <ul><li>vrlo jednostavni operacijski sustavi </li></ul><ul><li>(standardizirani) skupovi instrukcija nad koj...
Komunikacijski model <ul><li>half duplex </li></ul><ul><li>razmjena podataka u paketima nazvanim APDU </li></ul><ul><ul><l...
Command APDU <ul><li>CLA - klasa instrukcije (ISO, PC/SC, specifična za proizvođača) </li></ul><ul><li>INS – instrukcija <...
Response APDU <ul><li>SW1, SW2 - status word(s), poruka o uspješnosti izvršenja naredbe </li></ul><ul><ul><li>0x90 00 ako ...
 
Transportni protokoli <ul><li>transportni protokoli </li></ul><ul><ul><li>prenose APDU pakete </li></ul></ul><ul><ul><li>T...
Open Smart Card Systems <ul><li>nova generacija kartica </li></ul><ul><li>reduciranje vremena izdavanja </li></ul><ul><li>...
V. Java Card
Nastanak ideje <ul><li>zahtjevi:  </li></ul><ul><ul><li>RAD umjesto asemblera i osciloskopa </li></ul></ul><ul><ul><li>&qu...
 
Što je Java Card <ul><li>podskup Jave s  runtime  okolinom optimiranom za pametne kartice i slične uređaje s ograničenom m...
<ul><ul><li>kompatibilnost s postojećim standardima - temelji se na ISO 7816 specifikaciji </li></ul></ul><ul><li>olakšan ...
Podskup jezika
Arhitektura <ul><li>potpuna odvojenost kartičnog sustava od appleta  </li></ul><ul><ul><li>pristupanje sustavu kroz jezik ...
<ul><li>dijelovi Java Card specifikacije: </li></ul><ul><ul><li>JCVM - definira podskup Java jezika i virtualni stroj prik...
 
Java Card Runtime Environment <ul><li>funkcija slična OS-u, sistemske klase analogne kernelu </li></ul><ul><li>inicijaliza...
JCVM <ul><li>off-card  </li></ul><ul><ul><li>resursi nisu ograničeni </li></ul></ul><ul><ul><li>ne izvršava se za vrijeme ...
<ul><li>konverter ( converter ) –  off card </li></ul><ul><ul><li>provjerava zadovoljavanje JC podskupa </li></ul></ul><ul...
 
Obrada naredbi <ul><li>JCRE radi s APDU paketima </li></ul><ul><li>command APDU </li></ul><ul><ul><li>predaja appleta nazn...
VI. Java Card API
Java Card API <ul><li>prilagođenost ISO 7816 modelu </li></ul><ul><li>osnovni (core) paketi: </li></ul><ul><ul><li>java.la...
java.lang <ul><li>podskup &quot;pravog&quot; java.lang paketa </li></ul><ul><li>mnoge metode nepodržane  </li></ul><ul><li...
javacard.framework <ul><li>osnovne klase i sučelja za applete </li></ul><ul><li>klasa  Applet  osnova za applete </li></ul...
javacard.security,  javacardx.crypto <ul><li>framework za kriptografske funkcije </li></ul><ul><li>(a)simetrični algoritmi...
Atomarnost <ul><li>atomarnost: izmjena ili uspjeva u cijelosti ili se objekt vraća u prethodno stanje </li></ul><ul><li>ka...
<ul><li>javacard.framework.Util </li></ul><ul><li>public static short arrayCopy(byte[] src, short srcOff, byte[] dest, sho...
Transakcije <ul><li>slično bazama podataka  (begin, commit, rollback), ali nema gnježđenja </li></ul><ul><ul><li>JCSystem....
VII. Java Card applet
 
Appleti <ul><li>pohranjeni u CAP - vrsta JAR arhive </li></ul><ul><li>jedino ROM appleti mogu imati native metode (ubaciva...
Razvoj po koracima <ul><li>1. dizajn </li></ul><ul><ul><li>specificiranje funkcija </li></ul></ul><ul><ul><li>dodjela appl...
<ul><li>3. implementacija  error handling  mehanizama </li></ul><ul><ul><li>nedetektirana pogreška može uzrokovati blokira...
javacard.framework.Applet <ul><li>public static void install (byte[] bArray, short bOffset, byte bLength) </li></ul><ul><l...
<ul><li>protected final void register() </li></ul><ul><li>protected final void register(byte[] bArray, short bOffset, byte...
<ul><li>public boolean select() </li></ul><ul><li>JCRE pozivom ove metode obavještava applet da je selektiran </li></ul><u...
<ul><li>public abstract void process (APDU apdu) </li></ul><ul><li>JCRE pozivom obavještava applet da procesira nadolazeći...
<ul><li>public void deselect () </li></ul><ul><li>JCRE pozivom ove metode obavještava trenutno selektiran applet da će dru...
 
Primanje i slanje podataka <ul><li>getBuffer()  metoda, APDU   objekt </li></ul><ul><li>veličina buffera: min. 37B </li></...
<ul><li>slanje odgovora: </li></ul><ul><ul><li>setOutgoing  </li></ul></ul><ul><ul><ul><li>samo postavlja data transfer mo...
<ul><li>status riječi ( status words ) </li></ul><ul><ul><li>JCRE kreira SW1 i SW2 u  response APDU  nakon završetka  proc...
 
Slanje/primanje - sažetak  <ul><li>1.  slučaj: nema podataka u naredbi ni u odgovoru </li></ul><ul><ul><ul><li>poziva se  ...
<ul><li>2.  slučaj: nema podataka u naredbi, podaci u odgovoru </li></ul><ul><ul><ul><li>poziva se  process  metoda applet...
<ul><li>3.  slučaj: podaci u naredbi, nema podataka u odgovoru </li></ul><ul><ul><ul><li>poziva se  process  metoda applet...
 
Optimiranje appleta <ul><li>ograničeni sistemski resursi </li></ul><ul><li>temeljno je optimirati generalni dizajn </li></...
<ul><li>ako je moguće, kreirati sve potrebne objekte u konstruktoru </li></ul><ul><ul><li>izbjegavanje “out-of-memory” </l...
<ul><li>eliminirati redundantan i dupliciran kod </li></ul><ul><ul><li>ne inicijalizirati varijablu ako ne treba </li></ul...
Nedostaci Java Card platforme <ul><li>previše prepuštanja implementatorima: int, garbage collection... </li></ul><ul><li>n...
<ul><li>JCRE mora biti savršen, jer je &quot;svemoguć&quot;, pa je cilj napadača </li></ul><ul><li>Java Card nije uistinu ...
VIII. Java Card sigurnosni mehanizmi
JCRE <ul><li>JCRE ima poseban sistemski kontekst, s posebnim privilegijama (poput OS-a) </li></ul><ul><ul><li>poziv bilo k...
Java Card platform security <ul><li>Java language security </li></ul><ul><li>Java Card additional security </li></ul>
Java langugage security <ul><li>strongly typed - nema neispravnih konverzija </li></ul><ul><li>provjera granice polja pril...
Java Card Additional Security <ul><li>mogućnost određivanja automatske duljine života objekata (persistent-flash, transien...
<ul><li>kontrola dijeljenja objekata (object sharing) </li></ul><ul><li>native metode ISKLJUČIVO u ROM appletima (ubacivan...
Applet firewall <ul><li>višeaplikacijsko okruženje  </li></ul><ul><li>Java Card: applet firewall </li></ul><ul><ul><ul><li...
Object Sharing <ul><li>mehanizmi dijeljenja objekata : </li></ul><ul><ul><li>JCRE privilegije i entry point objekti </li><...
<ul><li>javacard.framework.Shareable </li></ul><ul><ul><li>interface </li></ul></ul><ul><ul><li>ne definira metode niti čl...
IX. Praktični dio
JCWDE <ul><li>simulacija JC u “običnom” JVM </li></ul><ul><li>komunikacija TCP/IP (port 9025) </li></ul><ul><li>ne zahtjev...
<ul><li>nije kompletna simulacija, nepodržano: </li></ul><ul><ul><li>download .CAP </li></ul></ul><ul><ul><li>RMI </li></u...
C-JCRE <ul><li>prilična sličnost s &quot;pravom&quot; Java karticom </li></ul><ul><li>podržava download .CAP </li></ul><ul...
Konvertiranje u .CAP <ul><li>download; samo za karticu i C-JCRE </li></ul><ul><ul><ul><li>converter [-out JCA] [-classdir]...
Off-card verifikacija <ul><li>verificiranje .CAP datoteke: </li></ul><ul><ul><li>verify <export-files.EXP> <applet.CAP> </...
Kreiranje, download i simulacija <ul><li>instalirati Java Card Development Kit </li></ul><ul><li>instalirati java.comm pak...
 
Off-card instalacija <ul><li>generiranje instalacijske skripte pomoću off-card installera </li></ul><ul><ul><li>scriptgen ...
 
APDUTool <ul><li>šalje APDU naredbe appletu i prima odgovore </li></ul><ul><li>prva i zadnja naredba za APDUTool: </li></u...
Simulacija: JCWDE <ul><li>JCWDE.exe < appfile.APP > </li></ul><ul><ul><li>applet se učitava ako je referenciran u .APP dat...
Simulacija: C-JCRE <ul><li>CREF.exe -o < EEPROM2save > </li></ul><ul><li>CREF.exe -i <E2load> [-o <E2save> ] nastavlja izv...
Travel Card applet <ul><li>autor: Ivica Čardić </li></ul><ul><li>kupovanje i rezervacija (avionskih) karata </li></ul><ul>...
X. Literatura i resursi
Elektronički dokumenti <ul><li>Java Card CD </li></ul><ul><ul><li>zbirka dokumenata, članaka, priručnika i sl. u elektroni...
Linkovi <ul><li>http://java.sun.com/products/javacard/ </li></ul><ul><li>http://sigurnost.zemris.fer.hr </li></ul><ul><li>...
<ul><li>http://www.gemplus.com </li></ul><ul><li>http://www.scdk.com </li></ul><ul><li>http://www.smartcardforum.com </li>...
Knjige <ul><li>Z. Chen: “Java Card Technology for Smart Cards”, Addison-Wesley, 2000. </li></ul><ul><li>“ Smart Card Handb...
 
Upcoming SlideShare
Loading in...5
×

Java card (2003)

1,088

Published on

Old (2003) Java Card presentation

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,088
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
39
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Java card (2003)"

  1. 1. Java Card Vatroslav Mihalj FER, svibanj 2003.
  2. 2. <ul><li>~60 min </li></ul><ul><li>pitanja na kraju prezentacije </li></ul><ul><li>zainteresirani za okupljanje i suradnju u grupi s ciljem razmjene materijal i iskustava, te za eventualnbe zajedničke projekte, bilo Java Card/J2ME, bilo neko drugo podrucje, slobodno se mogu javiti </li></ul>
  3. 3. Sadržaj <ul><li>I. Što je “pametna kartice” </li></ul><ul><li>II. Standardi i specifikacije </li></ul><ul><li>III. Pametna kartica iznutra </li></ul><ul><li>IV. Principi rada pametne kartice </li></ul><ul><li>V. Java Card </li></ul><ul><li>VI. Java Card API </li></ul><ul><li>VII. Java Card applet </li></ul><ul><li>VIII. Java Card sigurnosni mehanizmi </li></ul><ul><li>IX. Praktični dio </li></ul><ul><li>X. Literatura i resursi </li></ul>
  4. 4. I. Što je “pametna kartica”
  5. 5. Pametna kartica <ul><li>plastična kartica standardiziranih dimenzija, s ugrađenim čipom </li></ul>
  6. 6. <ul><li>standardiziran raspored i dimenzije kontakata čipa </li></ul><ul><li>sigurnije od magnetskih kartica </li></ul><ul><ul><li>teže kopiranje podataka, teža zlouporaba </li></ul></ul>
  7. 7. Osobine pametnih kartica <ul><li>sigurnost </li></ul><ul><ul><li>kartica posjeduje zaštitne mehanizme </li></ul></ul><ul><ul><li>PIN zaštićuje od neautoriziranog pristupa </li></ul></ul><ul><ul><ul><li> pohrana osjetljivih/tajnih podataka </li></ul></ul></ul><ul><li>pouzdanost </li></ul><ul><ul><li>ne ovise o ranjivim vanjskim resursima </li></ul></ul><ul><ul><li>korištenje kriptografije za zaštitu podataka i vanjske operacije </li></ul></ul><ul><li>jednostavne za korištenje </li></ul><ul><li>cijena 1$-20$ </li></ul>
  8. 8. Tipovi čip kartica <ul><li>memorijske kartice </li></ul><ul><li>pametne kartice </li></ul><ul><ul><ul><li>“ obična” pametna kartica </li></ul></ul></ul><ul><ul><ul><li>Java Card </li></ul></ul></ul><ul><ul><ul><li>SIM kartica </li></ul></ul></ul><ul><ul><ul><li>... </li></ul></ul></ul>
  9. 9. Memorijske kartice <ul><li>primjer: telefonske kartice </li></ul><ul><li>nemaju mikroprocesor </li></ul><ul><li>1K-4K podataka </li></ul><ul><li>izvršavanje predprogramiranih zadataka </li></ul><ul><li>nemogućnost preprogramiranja kad se potroše </li></ul><ul><li>slaba zaštita </li></ul><ul><li>IZUZETNO JEFTINE! </li></ul>
  10. 10. Razlike između memorijskih i pametnih kartica <ul><li>pametne kartice: </li></ul><ul><ul><li>mikroprocesor rukuje podacima i radi s memorijom </li></ul></ul><ul><ul><li>vanjske aplikacije nemaju direktan pristup podacima, za razliku od memorijskih kartica </li></ul></ul><ul><ul><li>ponekad postoji koprocesore (kriptografija) </li></ul></ul>
  11. 11. Kontaktne i beskontaktne kartice <ul><li>kontaktne pametne kartice se stavljaju u CAD (Card Acceptance Device) </li></ul><ul><ul><li>CAD = čitač pametnih kartica </li></ul></ul><ul><ul><li>najveći dio pametnih kartica ovakvog tipa </li></ul></ul><ul><li>napajaje i komunikacija beskontaktnih kartica: ugrađena antena </li></ul><ul><ul><li>inducirani napon ili ponekad baterije </li></ul></ul><ul><li>pogodne gdje se traži brzina prolaska (javni transport) </li></ul>
  12. 13. Primjene pametnih kartica <ul><li>zdravstvene iskaznice </li></ul><ul><li>ID kartice </li></ul><ul><ul><li>Stega Crad: integtegracija kartica, steganografije i digitalnog vodenog žiga </li></ul></ul><ul><li>satelitska televizija </li></ul><ul><li>mobilna telefonija (SIM kartice) </li></ul><ul><li>bankarstvo </li></ul><ul><li>transport </li></ul><ul><li>parkiranje </li></ul><ul><li>dodatne usluge (e-zaba, eGovernment) </li></ul>
  13. 14. <ul><li>Internet </li></ul><ul><ul><li>potpisivanje/kriptiranje maila (S/MIME, PGP) ili prometa </li></ul></ul><ul><ul><ul><li>spremaju ključeve </li></ul></ul></ul><ul><ul><ul><li>mogu poslužiti i kao kripto-porcesori </li></ul></ul></ul><ul><ul><li>autentikacija </li></ul></ul><ul><ul><li>elektronički novac (naročito micropayments) </li></ul></ul>
  14. 15. Kriptografija <ul><li>ciljevi kriptografije: </li></ul><ul><ul><li>povjerljivost </li></ul></ul><ul><ul><li>integritet </li></ul></ul><ul><ul><li>autentičnost </li></ul></ul><ul><li>kriptografski algoritmi: simetrični i asimetrični </li></ul><ul><li>hash, signature </li></ul><ul><li>random data </li></ul>
  15. 16. Pametne kartice i kriptografija <ul><li>spremanje tajnih/kriptiranih podataka </li></ul><ul><li>kartica kao token </li></ul><ul><ul><li>povećanje sigurnosti sustava u kojima se koristi </li></ul></ul><ul><ul><ul><li>autorizacija: mobiteli, set top boxes </li></ul></ul></ul><ul><ul><ul><li>enkripcijski modul </li></ul></ul></ul><ul><ul><li>OTP, challenge-response </li></ul></ul>
  16. 17. II. Standardi i specifikacije
  17. 18. Standardi i specifikacije <ul><li>ISO 7816 </li></ul><ul><li>GSM </li></ul><ul><li>EMV </li></ul><ul><li>Open Platform </li></ul><ul><li>OpenCard Framework </li></ul><ul><li>PC/SC </li></ul>
  18. 19. ISO 7816 <ul><li>specifikacija podijeljena u 8 dijelova: </li></ul><ul><li>1 - fizičke karakteristike </li></ul><ul><li>2 - dimenzije i smještaj kontakata </li></ul><ul><li>3 - signali i transportni protokoli </li></ul><ul><li>4 - međuindustrijske naredbe </li></ul><ul><li>5 - identifikatori aplikacija </li></ul><ul><li>6 - međuindustrijski podatkovni elementi </li></ul><ul><li>7 - međuindustrijske SCQL naredbe </li></ul>
  19. 20. GSM <ul><li>SIM kartice - mobilna telefonija </li></ul><ul><ul><li>Subscriber Identity Module: identifikacija korisnika </li></ul></ul><ul><li>pametna kartica s manjim plastičnim tijelom </li></ul><ul><li>generira jednokratne enkripcijske ključeve pri digitalnom prenošenju govora </li></ul><ul><li>GSM API for Java Card </li></ul>
  20. 21. EMV <ul><li>Europay-Mastercard-Visa </li></ul><ul><li>temelji se na ISO 7816 </li></ul><ul><li>proprietary proširenja za specifične potrebe financijske industrije </li></ul>
  21. 22. Open Platform <ul><li>ISO 7816 i EMV kompatibilno </li></ul><ul><li>razvila Visa </li></ul><ul><li>višenamjenski kartični sustavi </li></ul>
  22. 23. Open Card Framework <ul><li>IBM, OpenCard konzorcij </li></ul><ul><li>vrlo kompleksan i moćan host-side framework , implementiran u Javi </li></ul><ul><li>standardizirana sučelja za interakciju s čitačima i aplikacijama na karticama </li></ul><ul><li>pokušava se izbjeći ovisnost o platformama, proizvođačima kartica i pružateljima usluga </li></ul><ul><li>podržava i Java i “obične” kartice </li></ul>
  23. 25. PC/SC <ul><li>PC Smart Card </li></ul><ul><li>arhitektura za interakciju računala s karticama </li></ul><ul><li>omogućen pristup karticama iz jezika visokog nivoa </li></ul><ul><ul><li>specifični service provider moduli enkapsuliraju funkcionalnosti specifične smart kartice </li></ul></ul><ul><li>sličan koncept kao OCF </li></ul><ul><ul><li>na Windows sustavima OCF pristupa CAD uređajima (čitačima) kroz PC/SC manager </li></ul></ul>
  24. 27. Usporedba standarda
  25. 29. III. Pametna kartica iznutra
  26. 30. Dijelovi pametne kartice <ul><li>memorija, mikroprocesor i I/O sustav su upakirani u jedan jedini čip </li></ul><ul><li>standardiziran raspored i veličina kontakata </li></ul>
  27. 32. Mikroprocesor <ul><li>8/16/32bitni (RISC) mikroprocesor, najčešće Motorola 6805 ili Intel 8051 </li></ul><ul><li>vanjski clock do 5MHz, skuplje kartice imaju i množitelj (2,4,8) </li></ul><ul><li>ponekad se dodaje kriptografski koprocesor </li></ul><ul><li>Gemplus: 32bit RISC, 64K EEPROM </li></ul>
  28. 33. Memorija <ul><li>ROM - sadržava programe i OS </li></ul><ul><ul><li>upis podataka prilikom proizvodnje čipa = masking </li></ul></ul><ul><li>RAM - radna memorija; obično 256B-1K </li></ul><ul><li>EEPROM - flash memorija </li></ul><ul><ul><li>&quot;hard disk”, 4K-64K </li></ul></ul><ul><ul><li>~100 000 ciklusa pisanja; trajanje zapisanog ~10 godina </li></ul></ul><ul><ul><li>čitanje približno brzo kao i iz RAM-a, pisanje 1000 puta sporije </li></ul></ul>
  29. 34. Kontakti <ul><li>Vcc - napajanje (3-5V) </li></ul><ul><li>RST - za slanje reset signala mikroprocesoru (warm reset; cold reset = izvlačenje) </li></ul><ul><li>CLK - vanjski clock (kartice ne posjeduju unutarnji clock) </li></ul><ul><li>GND - referentni napon, uzima se kao 0V </li></ul><ul><li>Vpp - opcionalno, koristi se u starijim karticama </li></ul><ul><li>I/O - prijenos podataka i naredbi </li></ul><ul><li>RFU - reserved for future use </li></ul>
  30. 35. Sigurnosni mehanizmi <ul><li>komponente sigurnosti: </li></ul><ul><ul><li>tijelo kartice - posebne boje, hologrami i sl. </li></ul></ul><ul><ul><li>čip (aktivna i pasivna zaštita) </li></ul></ul><ul><ul><li>operacijski sustav </li></ul></ul><ul><ul><li>aplikacije </li></ul></ul><ul><li>upis jedinstvenog ID broja čipa u ROM </li></ul><ul><ul><li>generiranje ključa </li></ul></ul><ul><ul><li>&quot;crna lista&quot; kartica </li></ul></ul>
  31. 36. <ul><li>zaštitni mehanizmi: </li></ul><ul><ul><li>tehnologije proizvodnje poluvodiča </li></ul></ul><ul><ul><li>dizajn čipa </li></ul></ul><ul><ul><li>lažne strukture - zbunjivanje napadača </li></ul></ul><ul><ul><li>interne sabirnice </li></ul></ul><ul><ul><li>dizajn memorije, zaštitni slojevi - nemogućnost statičkog očitavanja sadržaja memorije </li></ul></ul><ul><ul><li>kodiranje memorije i sabirnica </li></ul></ul><ul><ul><li>kriptiranje PIN-a </li></ul></ul><ul><ul><li>... </li></ul></ul>
  32. 37. IV. Principi rada pametne kartice
  33. 38. Razvoj aplikacija <ul><li>dugotrajan i težak proces </li></ul><ul><li>nestandardiziranost iznutra </li></ul><ul><ul><li>različiti proizvođači, različit hardware, razvojni alati (assembler, osciloskop) </li></ul></ul><ul><ul><li>proprietary platforme i razvojni alati </li></ul></ul><ul><ul><li>problemi oko nadogradnje softvera i premještanja aplikacija na druge platforme </li></ul></ul><ul><li>low level komunikacijski protokoli i memory management </li></ul><ul><li>dugotrajna izgradnja &quot;from the ground-up&quot; </li></ul>
  34. 39. Smart Card OS <ul><li>vrlo jednostavni operacijski sustavi </li></ul><ul><li>(standardizirani) skupovi instrukcija nad kojima se grade korisničke aplikacije </li></ul><ul><li>hijerarhijski datotečni sustav </li></ul><ul><li>master file-root </li></ul><ul><li>dedicated file-direktorij </li></ul><ul><li>elementary file-datoteka </li></ul>
  35. 40. Komunikacijski model <ul><li>half duplex </li></ul><ul><li>razmjena podataka u paketima nazvanim APDU </li></ul><ul><ul><li>Application Protocol Data Unit </li></ul></ul><ul><ul><li>command APDU, response APDU </li></ul></ul><ul><li>kartica je uvijek slave </li></ul><ul><ul><li>čeka zahtjev od hosta (računalo) </li></ul></ul><ul><ul><li>nakon obrade šalje odgovor </li></ul></ul>
  36. 41. Command APDU <ul><li>CLA - klasa instrukcije (ISO, PC/SC, specifična za proizvođača) </li></ul><ul><li>INS – instrukcija </li></ul><ul><li>P1, P2 - parametri uz instrukciju </li></ul><ul><li>Lc - dužina opcionalnog polja podataka </li></ul><ul><li>Le - očekivani broj okteta u odgovoru hosta </li></ul>
  37. 42. Response APDU <ul><li>SW1, SW2 - status word(s), poruka o uspješnosti izvršenja naredbe </li></ul><ul><ul><li>0x90 00 ako uspješno izvršeno </li></ul></ul><ul><li>opcionalno podaci od hosta prema kartici (podatkovno polje) </li></ul>
  38. 44. Transportni protokoli <ul><li>transportni protokoli </li></ul><ul><ul><li>prenose APDU pakete </li></ul></ul><ul><ul><li>T=0 </li></ul></ul><ul><ul><ul><li>block oriented (blok okteta) </li></ul></ul></ul><ul><ul><li>T=1 </li></ul></ul><ul><ul><ul><li>byte/character oriented (blokovi su okteti) </li></ul></ul></ul><ul><ul><ul><li>rijetko korišten </li></ul></ul></ul><ul><li>answer to reset (ATR) </li></ul><ul><ul><li>niz okteta, maksimalne duljine 33B </li></ul></ul><ul><ul><li>“ predstavljanje” kartice nakon warm reseta </li></ul></ul><ul><ul><li>daje razne parametre </li></ul></ul>
  39. 45. Open Smart Card Systems <ul><li>nova generacija kartica </li></ul><ul><li>reduciranje vremena izdavanja </li></ul><ul><li>izolacija od specifičnih zahtjeva hardvera i OS-a </li></ul><ul><li>download aplikacija na karticu </li></ul><ul><li>jezici visokog nivoa </li></ul><ul><li>primjeri: MultOS, Smart Card for Windows, Java Card </li></ul>
  40. 46. V. Java Card
  41. 47. Nastanak ideje <ul><li>zahtjevi: </li></ul><ul><ul><li>RAD umjesto asemblera i osciloskopa </li></ul></ul><ul><ul><li>&quot;naprednije&quot; aplikacije </li></ul></ul><ul><ul><li>interakcija s Internetom </li></ul></ul><ul><ul><li>sve uz isti nivo sigurnosti kao dotad </li></ul></ul><ul><li>ključni atributi Jave: </li></ul><ul><ul><li>jednostavnost - simplicity </li></ul></ul><ul><ul><li>pouzdanost - safety </li></ul></ul><ul><ul><li>sigurnost - security </li></ul></ul>
  42. 49. Što je Java Card <ul><li>podskup Jave s runtime okolinom optimiranom za pametne kartice i slične uređaje s ograničenom memorijom </li></ul><ul><li>karakteristike JC aplikacija: </li></ul><ul><ul><li>sigurne (secure) - kontrola memorije i izvršavanja, razdvajanje applet firewallom </li></ul></ul><ul><ul><li>prijenosne (portable), hardverski neovisne </li></ul></ul><ul><ul><li>višeaplikacijske (multiapplication) - više appleta na kartici, applet firewall sprječava nedopuštenu interakciju </li></ul></ul>
  43. 50. <ul><ul><li>kompatibilnost s postojećim standardima - temelji se na ISO 7816 specifikaciji </li></ul></ul><ul><li>olakšan razvoj u suporedbi s &quot;klasičan&quot; za određeni mikrokontroler (npr. 8051) </li></ul><ul><li>otvorenost platforme, definiran API i runtime environment </li></ul><ul><li>skrivanje složenosti i detalja kartičinog podsustava </li></ul>
  44. 51. Podskup jezika
  45. 52. Arhitektura <ul><li>potpuna odvojenost kartičnog sustava od appleta </li></ul><ul><ul><li>pristupanje sustavu kroz jezik visokog nivoa (Java) </li></ul></ul><ul><li>Java Card definira platformu na kojoj se aplikacije napisane u Javi mogu izvršavati na pametnim karticama. </li></ul>
  46. 53. <ul><li>dijelovi Java Card specifikacije: </li></ul><ul><ul><li>JCVM - definira podskup Java jezika i virtualni stroj prikladan za kartice </li></ul></ul><ul><ul><li>JCRE - precizno opisuje ponašanje (runtime behavior) </li></ul></ul><ul><ul><li>Java Card API - specificira skup osnovnih i extension Java paketa/klasa za kartične aplikacije </li></ul></ul>
  47. 55. Java Card Runtime Environment <ul><li>funkcija slična OS-u, sistemske klase analogne kernelu </li></ul><ul><li>inicijalizacija se vrši samo jednom za vrijeme trajanja kartice </li></ul><ul><li>inicijalizira VM, kreira instance appleta </li></ul><ul><li>uklanjanjem energije, suspendira se </li></ul><ul><ul><li>očuvanje stanja u flash memoriji </li></ul></ul><ul><ul><li>VM se resetira </li></ul></ul>
  48. 56. JCVM <ul><li>off-card </li></ul><ul><ul><li>resursi nisu ograničeni </li></ul></ul><ul><ul><li>ne izvršava se za vrijeme izvođenja </li></ul></ul><ul><ul><li>class loading, bytecode verification, resolution & linking </li></ul></ul><ul><li>on-card - byte interpreter </li></ul>
  49. 57. <ul><li>konverter ( converter ) – off card </li></ul><ul><ul><li>provjerava zadovoljavanje JC podskupa </li></ul></ul><ul><ul><li>inicijalizacija static varijabli i razrješavanje simboličkih referenci </li></ul></ul><ul><ul><li>alokacija i kreiranje potrebne strukture </li></ul></ul><ul><ul><li>daje .CAP (converted applet); temeljen na JAR formatu </li></ul></ul><ul><li>CAP se stavlja na karticu (download) i izvršava </li></ul>
  50. 59. Obrada naredbi <ul><li>JCRE radi s APDU paketima </li></ul><ul><li>command APDU </li></ul><ul><ul><li>predaja appleta naznačenom u naredbi </li></ul></ul><ul><ul><li>izabrani applet procesira APDU, šalje odgovor, te predaje kontrolu JCRE </li></ul></ul>
  51. 60. VI. Java Card API
  52. 61. Java Card API <ul><li>prilagođenost ISO 7816 modelu </li></ul><ul><li>osnovni (core) paketi: </li></ul><ul><ul><li>java.lang </li></ul></ul><ul><ul><li>javacard.framework </li></ul></ul><ul><ul><li>javacard.security </li></ul></ul><ul><li>extension paket: </li></ul><ul><ul><li>javacardx.crypto </li></ul></ul><ul><li>- nema: GUI, network I/O, desktop file system I/O </li></ul>
  53. 62. java.lang <ul><li>podskup &quot;pravog&quot; java.lang paketa </li></ul><ul><li>mnoge metode nepodržane </li></ul><ul><li>objekti: Object, Throwable, Exception </li></ul><ul><li>iznimke (exceptions): RuntimeException, ArithmeticException, ArrayIndexOutOfBondsException, ArrayStoreException, ClassCastException, IndexOutOfBondsException, NullPointerException, SecurityException, NegativeArraySizeException </li></ul>
  54. 63. javacard.framework <ul><li>osnovne klase i sučelja za applete </li></ul><ul><li>klasa Applet osnova za applete </li></ul><ul><li>klasa APDU: rukovanje APDU paketima </li></ul><ul><li>javacard.framework.JCSystem sučelje prema sustavu </li></ul><ul><ul><li>nije podržan java.lang.System </li></ul></ul><ul><ul><li>metode za kontrolu izvršavanja appleta, upravljanje resursima i transakcijama </li></ul></ul>
  55. 64. javacard.security, javacardx.crypto <ul><li>framework za kriptografske funkcije </li></ul><ul><li>(a)simetrični algoritmi (Cipher), RandomData, digitalni potpis (Signature), MessageDigest </li></ul><ul><li>apstraktne klase; samo API, implementaciju daje JCRE provider </li></ul><ul><li>javacardx.crypto : klase i sučelja koja podliježu kontroli izvoza </li></ul>
  56. 65. Atomarnost <ul><li>atomarnost: izmjena ili uspjeva u cijelosti ili se objekt vraća u prethodno stanje </li></ul><ul><li>kartica pohranjuje osjetljive podatke, treba spriječiti gubitak u slučaju pogreške prilikom izvođenja ili prekida napajanja </li></ul><ul><li>robusni mehanizmi za osiguranje atomarnosti </li></ul>
  57. 66. <ul><li>javacard.framework.Util </li></ul><ul><li>public static short arrayCopy(byte[] src, short srcOff, byte[] dest, short desOff, short length) </li></ul><ul><li>public static short arrayCopyNonAtomic(byte[] src, short srcOff, byte[] dest, short desOff, short length) </li></ul>
  58. 67. Transakcije <ul><li>slično bazama podataka (begin, commit, rollback), ali nema gnježđenja </li></ul><ul><ul><li>JCSystem.beginTransaction(); </li></ul></ul><ul><ul><li>JCSystem.commitTransaction(); </li></ul></ul><ul><ul><li>JCSystem.abortTransaction() </li></ul></ul><ul><li>automatski abort ako se eksplicitno ne pozove commit ili abort </li></ul><ul><li>u slučaju prekida napajanja ili pogreške, rollback prvom slijedećom prilikom </li></ul>
  59. 68. VII. Java Card applet
  60. 70. Appleti <ul><li>pohranjeni u CAP - vrsta JAR arhive </li></ul><ul><li>jedino ROM appleti mogu imati native metode (ubacivanje prilikom maskinga ) </li></ul><ul><li>moguće više instanci istog appleta </li></ul><ul><li>applet ID: niz okteta koji jednoznačno identificira svaki applet </li></ul><ul><ul><li>5B: National Registered Application Provider (RID) - dodjeljuje ISO </li></ul></ul><ul><ul><li>0B-11B: Proprietary Application Identifier Extension (PIX) </li></ul></ul>
  61. 71. Razvoj po koracima <ul><li>1. dizajn </li></ul><ul><ul><li>specificiranje funkcija </li></ul></ul><ul><ul><li>dodjela applet ID </li></ul></ul><ul><ul><li>dizajn struktura klasa i metoda </li></ul></ul><ul><ul><li>definiranje sučelja između appleta i host aplikacije (APDU naredbe i sadržaj) </li></ul></ul><ul><ul><ul><li>PROBLEM: definiranjem APDU naredbi za svaki se applet razvija proprietary protokol </li></ul></ul></ul><ul><li>2. kodiranje </li></ul>
  62. 72. <ul><li>3. implementacija error handling mehanizama </li></ul><ul><ul><li>nedetektirana pogreška može uzrokovati blokiranje kartice ili gubitak podataka </li></ul></ul><ul><ul><li>provjeriti podržava li applet naredbu, je li naredba dobro formatirana i krši li neke uvjete </li></ul></ul><ul><li>4. testiranje </li></ul>
  63. 73. javacard.framework.Applet <ul><li>public static void install (byte[] bArray, short bOffset, byte bLength) </li></ul><ul><li>JCRE poziva da kreira instancu appleta </li></ul><ul><li>entry point za applet, kao main za Java aplikaciju </li></ul><ul><li>bArray su instalacijski parametri </li></ul><ul><li>u nju smjestiti pozive konstruktora appleta </li></ul>
  64. 74. <ul><li>protected final void register() </li></ul><ul><li>protected final void register(byte[] bArray, short bOffset, byte bLength) </li></ul><ul><li>applet registrira instancu kod JCRE </li></ul><ul><li>svaka instanca ima jedinstven applet ID </li></ul><ul><li>obično ju poziva konstruktor appleta </li></ul>
  65. 75. <ul><li>public boolean select() </li></ul><ul><li>JCRE pozivom ove metode obavještava applet da je selektiran </li></ul><ul><li>ukoliko selektiranje appleta ne uspije, vraća se status 0x6999 </li></ul>
  66. 76. <ul><li>public abstract void process (APDU apdu) </li></ul><ul><li>JCRE pozivom obavještava applet da procesira nadolazeći command APDU </li></ul><ul><li>JEDINI standardizirani command APDU na JC je SELECT appleta </li></ul><ul><ul><li>proprietary APDU i protokol za aplikacije </li></ul></ul>
  67. 77. <ul><li>public void deselect () </li></ul><ul><li>JCRE pozivom ove metode obavještava trenutno selektiran applet da će drugi applet biti selektiran </li></ul><ul><li>cleanup operacije </li></ul>
  68. 79. Primanje i slanje podataka <ul><li>getBuffer() metoda, APDU objekt </li></ul><ul><li>veličina buffera: min. 37B </li></ul><ul><li>metode za učitavanje podataka: </li></ul><ul><ul><li>setIncomingAndReceive </li></ul></ul><ul><ul><ul><li>za količinu podataka koja stane u APDU buffer </li></ul></ul></ul><ul><ul><li>receiveBytes </li></ul></ul><ul><ul><ul><li>dolazi iza prethodne jednom ili više puta, ako ima više podataka nego što stane u buffer, sve dok se svi podaci ne učitaju </li></ul></ul></ul>
  69. 80. <ul><li>slanje odgovora: </li></ul><ul><ul><li>setOutgoing </li></ul></ul><ul><ul><ul><li>samo postavlja data transfer mode; više se ne mogu primati podaci ( half duplex ) </li></ul></ul></ul><ul><ul><li>setOutgoingLength </li></ul></ul><ul><ul><ul><li>max. 256B prema hostu </li></ul></ul></ul><ul><ul><li>sendBytes </li></ul></ul><ul><ul><ul><li>uzastopnim pozivima applet može poslati više od maksimalnih 256B </li></ul></ul></ul><ul><ul><li>skraćeno: setOutgoingAndSend - cijela poruka mora stati u buffer </li></ul></ul>
  70. 81. <ul><li>status riječi ( status words ) </li></ul><ul><ul><li>JCRE kreira SW1 i SW2 u response APDU nakon završetka process metode appleta </li></ul></ul><ul><ul><li>normalan završetak: 0x9000 </li></ul></ul><ul><li>Slanje podataka koji nisu u APDU bufferu </li></ul><ul><ul><li>ako su podaci u lokalnom bufferu u appletu, trebaju se kopirati u APDU buffer </li></ul></ul><ul><ul><li>kopiranje i slanje obavlja funkcija sendBytesLong iz APDU klase </li></ul></ul><ul><ul><li>može se uzastopno pozivati </li></ul></ul>
  71. 83. Slanje/primanje - sažetak <ul><li>1. slučaj: nema podataka u naredbi ni u odgovoru </li></ul><ul><ul><ul><li>poziva se process metoda appleta </li></ul></ul></ul><ul><ul><ul><li>applet ustanovi da nema dodatnih podataka uz zahtjev </li></ul></ul></ul><ul><ul><ul><li>applet izvršava naredbu iz APDU headera </li></ul></ul></ul><ul><ul><ul><li>applet se vraća iz process metode </li></ul></ul></ul>
  72. 84. <ul><li>2. slučaj: nema podataka u naredbi, podaci u odgovoru </li></ul><ul><ul><ul><li>poziva se process metoda appleta </li></ul></ul></ul><ul><ul><ul><li>applet ustanovi da nema dodatnih podataka uz zahtjev, ali da treba poslati podatke uz odgovor </li></ul></ul></ul><ul><ul><ul><li>applet izvršava naredbu iz APDU headera </li></ul></ul></ul><ul><ul><ul><li>applet šalje odgovor: setOutgoingAndSend za kratak odgovor; setOutgoing , setOutgoingLength , sendBytes / sendBytesLong za više podataka </li></ul></ul></ul><ul><ul><ul><li>applet se vraća iz process metode </li></ul></ul></ul>
  73. 85. <ul><li>3. slučaj: podaci u naredbi, nema podataka u odgovoru </li></ul><ul><ul><ul><li>poziva se process metoda appleta </li></ul></ul></ul><ul><ul><ul><li>applet ustanovi da ima podataka uz zahtjev, ali da ne treba poslati podatke uz odgovor </li></ul></ul></ul><ul><ul><ul><li>applet poziva setIncomingAndReceive , te po potrebi receiveBytes </li></ul></ul></ul><ul><ul><ul><li>povratak iz process metode </li></ul></ul></ul><ul><li>4. slučaj: podaci i u naredbi i u odgovoru </li></ul><ul><li>primanje naredbe kao u slučaju 3, slanje odgovora kao u slučaju 2 </li></ul>
  74. 87. Optimiranje appleta <ul><li>ograničeni sistemski resursi </li></ul><ul><li>temeljno je optimirati generalni dizajn </li></ul><ul><li>što rjeđe upisivanje u sporu EEPROM memoriju (više koristiti RAM) </li></ul><ul><li>ograničen stog </li></ul><ul><ul><li>optimirati broj parametara metoda i lokalnih varijabli </li></ul></ul><ul><ul><li>ograničiti gnježđenje poziva metoda (stack overflow) </li></ul></ul><ul><ul><li>izbjegavati rekurziju </li></ul></ul>
  75. 88. <ul><li>ako je moguće, kreirati sve potrebne objekte u konstruktoru </li></ul><ul><ul><li>izbjegavanje “out-of-memory” </li></ul></ul><ul><ul><li>install metoda koja poziva konstruktor je transakcija </li></ul></ul><ul><ul><ul><li>oslobađanje resursa ako se dogodi pogreška u inicijalizaciji </li></ul></ul></ul><ul><ul><li>object reuse: nema garbage collectiona, memorije može ponestati </li></ul></ul>
  76. 89. <ul><li>eliminirati redundantan i dupliciran kod </li></ul><ul><ul><li>ne inicijalizirati varijablu ako ne treba </li></ul></ul><ul><li>pristup polju traži više bytekodova nego lokalnoj varijabli </li></ul><ul><li>switch obično brži nego if/else, ali... </li></ul><ul><li>“ a+b-c” traži više bytekodova nego x=a+b x=x-c (međurezultat) </li></ul><ul><li>final static sličan #define </li></ul><ul><ul><li>konverter zamjenjuje referenciranje varijable s njenom vrijednošću </li></ul></ul>
  77. 90. Nedostaci Java Card platforme <ul><li>previše prepuštanja implementatorima: int, garbage collection... </li></ul><ul><li>native metode bi mogle probiti applet firewall </li></ul><ul><li>nespretnost kreiranja appleta (off-card, on-card, CAP...) </li></ul><ul><li>multiaplikacijsko okruženje - applet mora biti &quot;dobar&quot;, inače... </li></ul>
  78. 91. <ul><li>JCRE mora biti savršen, jer je &quot;svemoguć&quot;, pa je cilj napadača </li></ul><ul><li>Java Card nije uistinu &quot;cross platform&quot; </li></ul><ul><li>... </li></ul>
  79. 92. VIII. Java Card sigurnosni mehanizmi
  80. 93. JCRE <ul><li>JCRE ima poseban sistemski kontekst, s posebnim privilegijama (poput OS-a) </li></ul><ul><ul><li>poziv bilo koje metode bilo kojeg objekta </li></ul></ul><ul><ul><li>pristup svim instancama svih appleta </li></ul></ul><ul><ul><li>zbog “svemoćnosti” i pristupa svemu mora biti dobro napravljen </li></ul></ul><ul><ul><ul><li>napadaču je dovoljno da preuzme kontrolu nad JCRE da bi tako potpuno preuzeo kontrolu nad svime na kartici </li></ul></ul></ul>
  81. 94. Java Card platform security <ul><li>Java language security </li></ul><ul><li>Java Card additional security </li></ul>
  82. 95. Java langugage security <ul><li>strongly typed - nema neispravnih konverzija </li></ul><ul><li>provjera granice polja prilikom pristupa </li></ul><ul><li>nema pokazivača </li></ul><ul><li>inicijalizacija varijabli prije upotrebe </li></ul><ul><li>kontrola pristupa metodama i članovima klase </li></ul>
  83. 96. Java Card Additional Security <ul><li>mogućnost određivanja automatske duljine života objekata (persistent-flash, transient-RAM) </li></ul><ul><li>atomarnost i transakcije - osiguranje integriteta u slučaju prekida operacije </li></ul><ul><li>applet firewall - sigurnost i integritet sustava (JCRE) i svakog appleta na kartici (umjesto sandboxa) </li></ul>
  84. 97. <ul><li>kontrola dijeljenja objekata (object sharing) </li></ul><ul><li>native metode ISKLJUČIVO u ROM appletima (ubacivanje u tvornici - masking ) </li></ul><ul><ul><li>ne izvodi ih JC VM i ne ulaze u security protection koji jamči Java </li></ul></ul><ul><ul><li>download takvih appleta na karticu nije podržan </li></ul></ul>
  85. 98. Applet firewall <ul><li>višeaplikacijsko okruženje </li></ul><ul><li>Java Card: applet firewall </li></ul><ul><ul><ul><li>“ pravi” JVM: sandbox, classloader </li></ul></ul></ul><ul><ul><ul><li>ograničenje pristupa podacima drugih appleta </li></ul></ul></ul><ul><li>kontekst (context): firewallom odijeljen i zaštićen dio Java Card sustava </li></ul><ul><ul><li>dodjela instancama appleta prilikom kreiranja </li></ul></ul><ul><ul><li>nema ga između instanci appleta iz istog paketa </li></ul></ul>
  86. 99. Object Sharing <ul><li>mehanizmi dijeljenja objekata : </li></ul><ul><ul><li>JCRE privilegije i entry point objekti </li></ul></ul><ul><ul><li>globalna polja (global arrays) </li></ul></ul><ul><ul><li>dijeljena sučelja (shareable interfaces) </li></ul></ul><ul><li>pristup dijeljenim objektima kroz context switch, izvođenje u novom kontekstu </li></ul><ul><li>u slučaju završetka/iznimke vraćanje prethodnog konteksta </li></ul><ul><li>moguće gnježđenje promjena konteksta </li></ul>
  87. 100. <ul><li>javacard.framework.Shareable </li></ul><ul><ul><li>interface </li></ul></ul><ul><ul><li>ne definira metode niti članove </li></ul></ul><ul><ul><li>služi samo kao temelj drugim sučeljima, da naznači da ona imaju posebna obilježja </li></ul></ul>
  88. 101. IX. Praktični dio
  89. 102. JCWDE <ul><li>simulacija JC u “običnom” JVM </li></ul><ul><li>komunikacija TCP/IP (port 9025) </li></ul><ul><li>ne zahtjeva konvertiranje u .CAP </li></ul><ul><li>konfiguracijska datoteka (.APP) koja identificira applete - 1 linija po appletu </li></ul><ul><ul><li>prvi mora biti InstallerApplet, koji je analogan installeru na kartici </li></ul></ul>
  90. 103. <ul><li>nije kompletna simulacija, nepodržano: </li></ul><ul><ul><li>download .CAP </li></ul></ul><ul><ul><li>RMI </li></ul></ul><ul><ul><li>object/applet/package deletion </li></ul></ul><ul><ul><li>persistent card state </li></ul></ul><ul><ul><li>applet firewall </li></ul></ul><ul><ul><li>transakcije </li></ul></ul><ul><ul><li>applet instance creation </li></ul></ul>
  91. 104. C-JCRE <ul><li>prilična sličnost s &quot;pravom&quot; Java karticom </li></ul><ul><li>podržava download .CAP </li></ul><ul><li>očuvanje stanja između sessiona </li></ul><ul><li>podržava card reset u slučaju pogreške pri alokaciji objekta pri prekinutoj transakciji </li></ul>
  92. 105. Konvertiranje u .CAP <ul><li>download; samo za karticu i C-JCRE </li></ul><ul><ul><ul><li>converter [-out JCA] [-classdir] <applet package> <AID> <package version> </li></ul></ul></ul><ul><li>podrška za 32-bitni int: &quot;-i” </li></ul><ul><ul><li>vendor dependent implementation </li></ul></ul><ul><li>JCA format: ROM masking </li></ul>
  93. 106. Off-card verifikacija <ul><li>verificiranje .CAP datoteke: </li></ul><ul><ul><li>verify <export-files.EXP> <applet.CAP> </li></ul></ul><ul><li>verifikacijom se utvrđuje: </li></ul><ul><ul><li>je li CAP interno konzistentan </li></ul></ul><ul><ul><li>je li konzistentan s kontekstom u kojem će se nalaziti </li></ul></ul>
  94. 107. Kreiranje, download i simulacija <ul><li>instalirati Java Card Development Kit </li></ul><ul><li>instalirati java.comm paket </li></ul><ul><li>kompajliranje: javac -g <applet.java> </li></ul><ul><ul><li>OBAVEZNO &quot;-g&quot;, jer converter treba neke debugging informacije </li></ul></ul><ul><li>testiranje (simulacija) jednim od simulatora </li></ul><ul><ul><li>korištenje APDUTool alata </li></ul></ul>
  95. 109. Off-card instalacija <ul><li>generiranje instalacijske skripte pomoću off-card installera </li></ul><ul><ul><li>scriptgen -o <script_name> <applet.CAP> </li></ul></ul><ul><li>u skriptu OBAVEZNO dodati: </li></ul><ul><ul><li>&quot;powerup&quot; i &quot;powerdown” </li></ul></ul><ul><ul><li>naredbe za selektiranje on-card installera </li></ul></ul><ul><ul><li>naredbe za kreiranje appleta koji su u CAP </li></ul></ul><ul><ul><ul><li>CAP je paket, ne jedan applet </li></ul></ul></ul>
  96. 111. APDUTool <ul><li>šalje APDU naredbe appletu i prima odgovore </li></ul><ul><li>prva i zadnja naredba za APDUTool: </li></ul><ul><ul><li>powerup - priprema APDUTool za čitanje command APDU </li></ul></ul><ul><ul><li>powerdown </li></ul></ul><ul><li>dodatne naredbe: echo, delay </li></ul>
  97. 112. Simulacija: JCWDE <ul><li>JCWDE.exe < appfile.APP > </li></ul><ul><ul><li>applet se učitava ako je referenciran u .APP datoteci </li></ul></ul><ul><li>apdutool.exe <ScriptFile> > <O utputFile > </li></ul>
  98. 113. Simulacija: C-JCRE <ul><li>CREF.exe -o < EEPROM2save > </li></ul><ul><li>CREF.exe -i <E2load> [-o <E2save> ] nastavlja izvođenje u onom stanju u kojem je prethodno završilo </li></ul><ul><li>apdutool <ScriptFile> > < OutputFile > </li></ul>
  99. 114. Travel Card applet <ul><li>autor: Ivica Čardić </li></ul><ul><li>kupovanje i rezervacija (avionskih) karata </li></ul><ul><li>JDK 1.3, JC 2.1.2/JC 2.2, C-JCRE simulator </li></ul><ul><ul><li>JC 2.2 NE RADI s J2SDK 1.4 </li></ul></ul><ul><li>skripte: </li></ul><ul><ul><li>kompajliranje i kovertiranje (command prompt): </li></ul></ul><ul><ul><ul><li>skriptaJC22.bat – Java Card 2.2 </li></ul></ul></ul><ul><ul><ul><li>skriptaJC212.bat – Java Card 2.1.2 </li></ul></ul></ul><ul><ul><li>simcref.bat – pokretanje C-JCRE simulatora (u prvom command prompt prozoru) </li></ul></ul><ul><ul><li>simapdu.bat – APDU naredbe za simulaciju (u drugom command prompt prozoru) </li></ul></ul>
  100. 115. X. Literatura i resursi
  101. 116. Elektronički dokumenti <ul><li>Java Card CD </li></ul><ul><ul><li>zbirka dokumenata, članaka, priručnika i sl. u elektroničkom obliku </li></ul></ul><ul><ul><li>HTML, TXT, DOC, PDF, PS </li></ul></ul><ul><ul><li>može se dobiti od: </li></ul></ul><ul><ul><ul><li>mene </li></ul></ul></ul><ul><ul><ul><li>prof. Žagara </li></ul></ul></ul>
  102. 117. Linkovi <ul><li>http://java.sun.com/products/javacard/ </li></ul><ul><li>http://sigurnost.zemris.fer.hr </li></ul><ul><li>http://citeseer.nj.nec.com (može i preko Googlea) </li></ul><ul><li>http://www.javacard.org, http://www.javacard.org/mirroring/tamper.html </li></ul><ul><li>http://www.javaworld.com </li></ul><ul><li>http://www.javaguru.com </li></ul><ul><li>http://javacardforum.org </li></ul><ul><li>http://www.jdance.com </li></ul><ul><li>http://www.opencard.com </li></ul>
  103. 118. <ul><li>http://www.gemplus.com </li></ul><ul><li>http://www.scdk.com </li></ul><ul><li>http://www.smartcardforum.com </li></ul><ul><li>http://www.redbooks.ibm.com </li></ul><ul><li>http://www.drdobbs.com </li></ul><ul><li>http://www.informit.com </li></ul>
  104. 119. Knjige <ul><li>Z. Chen: “Java Card Technology for Smart Cards”, Addison-Wesley, 2000. </li></ul><ul><li>“ Smart Card Handbook” </li></ul><ul><li>S.B. Guthrey, T.M. Jurgensen: “Smart Card Developer’s Kit” </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×