• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Java card (2003)
 

Java card (2003)

on

  • 1,179 views

Old (2003) Java Card presentation

Old (2003) Java Card presentation

Statistics

Views

Total Views
1,179
Views on SlideShare
1,177
Embed Views
2

Actions

Likes
0
Downloads
29
Comments
0

1 Embed 2

http://www.linkedin.com 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Java card (2003) Java card (2003) Presentation Transcript

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