Documente Academic
Documente Profesional
Documente Cultură
cole dt IMAG, INRIA, LIFL - Autrans, aot 1999 Construction dapplications rparties
Jean-Jacques Vandewalle
Gemplus Research Lab
Introduction
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
carte = (serveurs +) terminaux + cartes u Traitements et donnes prsents la fois dans le terminal, (le lecteur,) et la carte u Ncessit de communiquer entre le terminal et la carte
n
Sujet du cours
n
fonction des spcificits de la carte puce Support matriel, normalisation Interfaces matrielle (terminal - lecteur - carte) et logicielle (protocoles de communication) Mode de programmation hrit des composants embarqus u En fonction des besoins des applications Souplesse de dveloppement, haut niveau de scurit, volutivit des applications u Illustre avec la plate- forme Java Card et lenvironnement de dveloppement GemXpresso
TM TM
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Auditoire du cours
n
de la carte puce u Intresss par la scurisation de donnes/daccs base de cartes u Intresss par la distribution de donnes sur support individuel
n
du langage Java u Concerns par lvolution rcente des environnements carte u Intresss par les techniques issues des environnements rpartis
5
TM
Programme du cours
n
Roland Moreno la Java Card (30 mn.) u La technologie Java Card 2.0 (40 mn.) Illustr par un exemple u Nouveauts : Java Card 2.1, VOP 2.0, OCF 1.1 et Systmes concurrents (20 mn.)
n
(10 mn.) u Application des principes de programmation des applications rparties la Java Card (40 mn.) Illustr par un exemple u Sujets appronfondir et perspectives de travail (10 mn.) u Conclusion et discussion (15mn.)
6
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Objectif du cours
n n
Hypothse : La carte puce est un lment des systmes dinformation Problme : Elle est difficile intgrer dans les applications Lemme : Montrer que Java Card offre aux dveloppeurs non carte la possibilit de programmer facilement des cartes puce Thorme : Montrer quune application carte peut tre construite comme une application rpartie Corollaire : La construction dapplications avec la carte puce devient plus simple
7
Cheminement de la dmonstration
n
Java applique la carte puce u Utilisation du langage Java et de lAPI Java Card
n
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Historique (1/2)
n n n n n
1974 : Dpots de brevets par Roland Moreno 1978 : Michel Ugon (Bull CP8) invente le M.A.M. 1980 : Cration du G.I.E. carte mmoire 1981 : Dbut de la normalisation AFNOR 1982-1984 : Exprimentation de paiement par cartes sur 3 sites. La technologie Bull est retenue pour les cartes bancaires (CB) 1983 : Lancement de la tlcarte par la D.G.T. Dbut de la normalisation ISO 1988 : Cration de Gemplus
10
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Historique (2/2)
n n
1990 : Tlcarte entre dans le dictionnaire 1992-1999 : Essor des applications avec des cartes puce
u Gnralisation
des CB u Tlphonie mobile (GSM) utilise une carte SIM u Premires expriences de carte sant (Ssame, Vitale, All.) u Premiers porte-monnaie lectroniques (Proton, La Poste)
n
des capacits matrielles u Systmes dexploitation de plus en plus ouverts u Systme Java Card
11
Carte mmoire
u Mmoire
simple (sans processeur) accessible en lecture sans protection, mais lcriture peut tre rendue impossible u Carte porte-jetons pour applications de pr-paiement
n
accessible via des circuits pr-programms et figs pour une application particulire u Carte scuritaire pouvant effectuer des calculs figs
n
Carte puce
u Microcontrleur
encart (processeur + mmoires) u Carte programmable pouvant effectuer tout type de traitements
12
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
La normalisation
u Caractristiques
Le microcontrleur
u Technologie
Les fonctionnalits
u Cycle
Normalisation du matriel
n
ISO 7816
u Partie
1 : caractristiques physiques Format carte de crdit (85 * 54 * 0.76 mm.) Dfinition des contraintes que doit supporter une carte u Partie 2 : dimensions et positions des contacts
3 v. ou 4.75-5.25 v. Signal de R.A.Z. 3.58 ou 4.92 MHz VCC RST CLK (RFU) GND (VPP) I/O (RFU) criture mmoire EPROM 1 seule ligne ==> semi-duplex
u Partie
3 : caractristiques lectriques
14
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Normalisation de la communication
n
dun caractre 1 bit dmarrage, 8 bits donnes, 1 bit de parit Dfinition dun temps de garde entre 2 caractres u Rponse de la carte la R.A.Z. : squence doctets dcrivant les caractristiques de la carte u Slection du type de protocole u Protocoles de communication (asynchrones et semi-duplex) Mode matre-esclave : la carte rpond des commandes T=0 : transmission de caractres (le plus utilis) T=1 : transmission de blocs de caractres
15
ISO 7816-4
u Dfinition
du format des paquets de donnes changs entre un lecteur et une carte : APDUs (Application Programming Data Units) de commande et de rponse u Mots dtat SW1 et SW2 standardis (OK = 0x9000)
16
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Normalisation de commandes
n n n n
n n n
ISO 7816-4 : Manipulation des donnes au travers dune structure hirarchique de fichiers ISO 7816-5 : Identification des applications ISO 7816-6 : lments de donnes rfrences (accs direct) ISO 7816-7 : Manipulation des donnes au travers dun schma relationnel ETSI GSM 11.11 : Commandes des cartes S.I.M. E.M.V. : Commandes de paiement etc.
17
+ bus + mmoires runis sur un mme substrat de silicium (technologie de 0,7 0,35 microns) u Peut tre re-programm par lcriture de programmes en mmoire non-volatile
n
lments de scurit
u Composant
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Types de microprocesseur
u 8-16-32
(Read-Only Memory) : mmoire non-volatile lecture seule (jusqu 64 Ko) u RAM (Random Access Memory) : mmoire volatile accs rapide (jusqu 2 Ko) u EEPROM (Electrical Erasable Programmable ROM) : mmoire non-volatile rinscriptible (jusqu 32 Ko) lEPROM devenue obsolte Nouveaux types : Flash EEPROM
19
Fabrication
u Inscription
dun programme en mmoire ROM dfinissant les fonctionnalits de base de la carte : masque fig sachant traiter un nombre limit de commandes pr-dfinies
Initialisation
u Inscription
en EEPROM des donnes communes lapplication u Possibilits pour certaines cartes dajouter des filtres
n
Personnalisation
u Inscription
porteur
20
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Utilisation
u Envoi dAPDUs
de commande la carte u Traitement de ces commandes par le masque de la carte Si commande reconnue
Traitement en interne de la commande ==> lecture/criture de donnes en EEPROM Renvoi dun APDU de rponse
Si
commande inconnue
Renvoi dun code derreur
Mort
u Par
Caractristique commune : dfinition dun jeu fig de commandes que la carte sait traiter Types de masques
u Masque
spcifique une application (B0, Proton, SIM) : Lecture/criture de donnes figes avec rgles de scurit figes u Masque spcifique un contexte applicatif (GPK, CryptoFlex) : Lecture/criture de donnes formates, fonctions de scurit adaptes au contexte u Masque gnrique (MCOS, MFC, PocketBase) : Lecture/criture de donnes, algorithmes cryptographiques
22
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
La carte
u Accessible
via un jeu de commandes fig grav lors de la fabrication du composant u Maintient des donnes pouvant voluer
n
un lecteur de cartes (et donc un driver pour le piloter) u Messages changs dfinis par des APDUs de commande
n
avec la carte via le driver du lecteur u Envoie des requtes APDUs conformes au jeu de commandes de la carte
23
Schma gnral
u Le
terminal contrle, la carte est passive u Dialogue terminal-carte de type requte/rponse u Format de messages standard : APDUs
24
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
lments importants
n
carte est un serveur fig en terme de fonctionnalits u Le dveloppement du code ncessite des comptences carte Le code est gnralement dvelopp par les fabricants u Pas de possibilit dvolution et dadaptation du code Pas de chargement dynamique de nouveaux programmes en EEPROM
n
dAPI standard daccs aux drivers des lecteurs u Drivers offrent uniquement une API de transport des APDUs
25
un masque qui accepte dexcuter des programmes en EEPROM (rare et pas standardis)
dinterface standard de communication avec les diffrents lecteurs (travaux en cours) u Communication via APDUs (trs bas niveau)
26
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
La carte puce est un vritable ordinateur utilis comme serveur portable et scuris de donnes personnelles Elle est programme comme un composant embarqu avec un code applicatif fig Elle est difficile intgrer dans les systmes dinformations
27
le dveloppement de programmes pour la carte sans avoir besoin de graver un nouveau masque Faciliter et acclrer les dveloppements de codes dans la carte u Faire de la carte un environnement dexcution de programmes ouvert (chargement dynamique de code) Rendre plus souples et plus volutives les applications carte u Faciliter lintgration des cartes dans les applications Faciliter et acclrer les dveloppements dapplications clientes des cartes
28
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
lments de solutions
u Java
Utiliser
u GemXpresso Utiliser
les concepts de la programmation dapplications rparties pour dvelopper des applications carte avec Java Card
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Les concepts
u Qu'est-ce
que Java Card ? u Statut du standard Java Card u Sous-ensemble du langage Java u La machine virtuelle u Le modle mmoire
n
La pratique
u Concepts
de programmation u Les APIs de programmation u Dveloppement d'une applet Java Card u Construire une application avec la Java Card
31
Une Java Card est une carte puce qui peut excuter des programmes Java (applets carte)
u Utilisation
du langage Java pour programmer des applications carte Base sur un standard, programmation oriente-objet u Java Card dfinit un sous-ensemble de Java (1.0.2, sic!) ddi pour la carte puce : Sous-ensemble du langage de programmation Java Sous-ensemble du paquetage java.lang Dcoupage de la machine virtuelle Java Modle mmoire adapt la carte APIs spcifiques la carte
32
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
les fabricants de cartes et Sun pour tablir les spcifications + des utilisateurs pour promouvoir Java Card
Licencis Bull, Dallas Semiconductor, De La Rue, Gemplus, Giesecke & Devrient, Inside Technologies, Keycorp, Lucent, Motorola, NatWest, Oberthur, Schlumberger, Toshiba, TL Technologies, ... Produits
u Schlumberger
: CyberFlex Open 16K (JC 2.0) u Gemplus : GemXpresso RAD 1.0 (JC 2.0) u Bull SA : Odyssey (JC 2.0) u Giesecke & Devrient : C@ppucino (JC 2.0) u Dallas Semiconductor : iButton (bague Java!)
34
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Pourquoi un sous-ensemble ?
u Limitations
carte : puissance de calcul, tailles des mmoires JVM doit pouvoir sexcuter sur composant 8 bits avec 512 octets RAM, 16 Ko EEPROM, et 24 Ko ROM u Contexte applicatif carte : petites applications de type serveur
n
de base prsentes dans la carte (avec le masque) u Nouvelles classes charges dans la carte ne doivent rfrencer que des classes connues
n
Objets
u Instances
de classes ou de tableaux une dimension u Allocation dynamique dobjets supporte (new ) u Pas de clonage dobjets (mthode equals() supporte)
n
de dsallocation explicite non plus ==> mmoire alloue peut ne pas tre rcupre u Pas de mthode finalize()
36
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Types de base (nombres signs, complment 2) : byte, short, boolean (8 bits), int (optionnel)
u En
labsence du type int, les calculs intermdiaires ou non assigns doivent toujours tre casts en byte ou short u Pas de types char (pas de classe String), double, float et long u Pas de modifieur transient u Pas de classes Boolean, Byte, Class, etc.
n
Pas de threads
u Pas
volatile
de mthodes, mthodes abstraites et interfaces u Invocation de mthodes virtuelles u Mots-cls instanceof, super et this
n
Scurit
u Notion
de paquetage et modifieurs public, protected et identiques Java u Pas de classe SecurityManager : politique de scurit implmente dans la machine virtuelle
private
38
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
tre dfinies (extends Throwable ), propages (throw) et interceptes (catch) u Classes Throwable, Exception et Error supportes et certaines de leurs sous-classes (dans java.lang)
n
pour les classes de base (masques) u Optionnelles pour les nouvelles classes charges
n
Atomicit
u Mise
jour de champs dobjets doit tre atomique u Modle transactionnel : beginTransaction(), commitTransaction() et abortTransaction()
39
Supports:
u u u u u u u u u
Non supports :
u u u u u u u
boolean, byte, short, int Object Tableau une dimension Mthodes virtuelles Allocation dynamique Paquetages Exceptions Interface Mthodes natives
float, double, long char, String Tableau n dimensions Class et ClassLoader Ramasse-miettes SecurityManager Threads
40
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Mots-cls non disponibles : char, double, float, long, synchronized, transient, volatile API java.lang de Java Card rduite :
u
Object { public Object(); public boolean equals(Object obj); } Throwable { public Throwable(); } -- Exception -- RuntimeException -- ArithmeticException -- ClassCastException -- NullPointerException -- SecurityException -- ArrayStoreException -- NegativeArraySizeException -- IndexOutOfBoundsException -- ArrayIndexOutOfBoundsException
41
de byte-code u Gestion des classes et objets u Isolation des applets Par paquetage
}
42
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
daccs lendroit o sont stocks les fichiers de classes depuis la carte u Pas de vrifieur dans la carte permettant de vrifier dynamiquement la validit dune classe charge
n
mais dcoupe en une partie dans la carte et une partie hors carte (Java Card Converter)
43
44
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Vrifieur de Bytecode
u Utilise
le vrifieur de Bytecode Java classique u Contrle le sous-ensemble Java Card (langage + API)
n
: initialise les structures de donnes de la JCVM u Optimisation : ajuste lespace mmoire, remplace certains InvokeVirtual par des InvokeStatic, etc. u dition de liens : rsout les rfrences symboliques des classes dj prsentes dans la carte (via image de la carte)
n
Signeur
u Valide
le passage par le vrifieur et le convertisseur par une signature vrifie par la carte au moment du chargement
45
en EEPROM sans ramasse-miettes u Attention ! aux clauses throw new Exception(); Crer l'objet une fois (patron "singleton"), utiliser des mthodes statiques Exception.throwIt(...); Dtruire les objets locaux non assigns en fin d'excution
n
L'objet applet
u Cr
une seule fois (avec un identifiant AID unique) u Toujours une applet active par dfaut
46
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Les concepts
u Qu'est-ce
que Java Card ? u Statut du standard Java Card u Sous-ensemble du langage Java u La machine virtuelle u Le modle mmoire
n
La pratique
u Concepts
de programmation u Les APIs de programmation u Dveloppement d'une applet Java Card (+ exemples) u Construire une application avec la Java Card
47
Approche traditionnelle
Terminal Commandes
Applications clientes
(APDUs)
Rponses
u Masque
carte traite les APDUs de commande u Masque carte lit/crit/met jour les donnes carte u Application cliente envoie des APDUs de commande
48
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Terminal Commandes
Applications clientes
(APDUs)
Rponses
u Environnement
d'excution Java Card (JCRE) = support de l'excution d'applets carte grce l'API Java Card u Applets carte traitent des APDUs de commande u Application cliente envoie des APDUs de commande
49
Paquetage
u Principale
javacard.framework
API pour programmer une applet carte u Dfinit les classes : AID, APDU, Applet, ISO, PIN, JCSystem, Util Plus des classes d'exceptions
n
Extensions
u
javacardx.framework
: gestion de cls publiques et prives, gnrateur de nombres alatoires, fonction de chiffrement et de hashage...
javacardx.crypto
50
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
statiques (natives) pour interagir avec le JCRE Gestion des transactions (1 seul niveau) Gestion du partage d'objets entre applets statiques (natives) utiles pour performance carte Copie, comparaison de tableaux de bytes Cration de short partir de byte
51
la raison
d'un code secret (tableau doctets) OwnerPIN : code secret pouvant tre mis jour
52
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Applet carte
n
de slection depuis le terminal u Slection par AID (chaque applet doit avoir un AID unique)
n
n n
Une fois installe dans la carte, est toujours disponible Classe qui hrite de javacard.framework.Applet Doit implmenter les mthodes qui interagissent avec le JCRE :
u
53
(une fois) par le JCRE quand l'applet est charge dans la carte u Doit senregistrer auprs du JCRE (mthode register())
n
par le JCRE quand un APDU de slection est reu et dsigne cette applet u Rend l'applet active
n
par le JCRE quand un APDU de commande est reu pour cette applet (doit tre active) par le JCRE pour dslectionner l'applet courante
54
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
par le JCRE la rception d'un APDU de commande par la carte Appel la mthode process() de l'applet courante
Classe javacard.framework.APDU
u Compatible
avec le format de messages ISO 7816-4 u Cache les caractristiques des protocoles de communication bas niveau (T=0 ou T=1) u Encapsule les changes de messages APDUs (commandes et rponses) dans un buffer d'entres/sorties
55
56
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
enregistrement et initialisation u Slection et dslection u Transmission des APDUs u Rcupration des exceptions
n
Mthodes natives
u Entres/sorties,
transactions, cryptographie
57
son propre tat : gestion des champs de l'applet, crer des objets et les rfrencer pour travailler u Rpondre des APDUs de commande (mthode process()) et retourner des APDUs de rponse
n
Conception
u Crer
les objets de base l'installation, initialiser les champs Implmentation de la mthode install() u Dfinir les APDUs traits par la mthode process() Implmentation d'un analyseur de commandes Utilisation des champs et objets de l'applet u Dfinir les traitements la slection et la dslection
58
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
tat de l'applet :
u Maintient
Oprations :
u Lecture
: retourne la valeur du compteur u Incrmentation/dcrmentation : ajoute/soustrait un montant au compteur et retourne la nouvelle valeur du compteur
n
Slection et dslection :
u Aucun
traitement
59
Rappels :
int lire()
Commande
: AA 01 XX XX 00 04
Rponse : RV3 RV2 RV1 RV0 90 00 int incrementer( int ) Commande Rponse
: RV3 RV2 RV1 RV0 90 00 int decrementer( int ) : idem mais INS=03
60
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Exemple 2 (1/4)
package banque.com ; import javacard.framework.*; public class Pme extends Applet { final static byte Pme_CLA = (byte)0xB0; final static byte Crediter_INS = (byte)0x10; final static byte Debiter_INS = (byte)0x20; final static byte Lire_INS = (byte)0x30; final static byte Valider_INS = (byte)0x40; final static byte MaxEssai_PIN = (byte)0x03; final static byte MaxLg_PIN = (byte)0x08; final static short BalanceNegative_SW = (short)0x6910; OwnerPin pin; byte balance; byte[] buffer; private Pme( byte[] valeurPin ) { pin = new OwnerPIN(MaxEssai_PIN, MaxLg_PIN); balance = 0; register() ; }
63
Exemple 2 (2/4)
public static void install( APDU apdu ) { new Pme(); buffer = apdu.getBuffer(); byte octetsLus = (byte)apdu.setIncomingAndReceive(); if ( octetsLus <= MaxLg_PIN ) pin.updateAndUnblock(buffer, ISO.OFFSET_CDATA , octetsLus); } public boolean select() { pin.reset(); return true; } public void process( APDU apdu ) { buffer = apdu.getBuffer(); if ( buffer[ISO.OFFSET_CLA] != Pme_CLA ) ISOException.throwIt(ISO.SW_CLA_NOT_SUPPORTED); switch ( buffer[ISO.OFFSET_INS] ) { case Crediter_INS : crediter(apdu); return; case Debiter_INS : debiter(apdu); return; case Lire_INS : lire(apdu); return; case Valider_INS : valider(apdu); return; default: ISOEXception.throwIt(ISO.SW_INS_NOT_SUPPORTED); } }
64
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Exemple 2 (3/4)
// Rception de donnes private void crediter( APDU apdu ) { if ( !pin.isValidated() ) ISOException.throwIt(ISO.SW_PIN_RIQUIRED); byte octetsLus = apdu.setIncomingAndReceive(); if ( octetsLus != 1 ) ISOException.throwIt(ISO.SW_WRONG_LENGTH); balance = (byte)(balance + buffer[ISO.OFFSET_CDATA]); } // Rception de donnes private void debiter( APDU apdu ) { if ( !pin.isValidated() ) ISOException.throwIt(ISO.SW_PIN_RIQUIRED); byte octetsLus = apdu.setIncomingAndReceive(); if ( octetsLus != 1 ) ISOException.throwIt(ISO.SW_WRONG_LENGTH); if ( (balance - buffer[ISO.OFFSET_CDATA]) < 0 ) ISOException.throwIt(BalanceNegative_SW); balance = (byte)(balance - buffer[ISO.OFFSET_CDATA]); }
65
Exemple 2 (4/4)
// mission de donnes private void lire( APDU apdu ) { if ( !pin.isValidated() ) ISOException.throwIt(ISO.SW_PIN_RIQUIRED); apdu.setOutgoing(); apdu.setOutgoingLength((byte)1); buffer[0] = balance; apdu.sendBytes((short)0, (short)1) ; } // Manipulation du code secret private void valider( APDU apdu ) { byte octetsLus = apdu.setIncomingAndReceive(); pin.check(buffer, ISO.OFFSET_CDATA, octetsLus); } }
66
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
dans la carte (application serveur = applet Java Card) u Code dans le terminal (application cliente)
n
de lapplication serveur (applet) Implmentation de services u Installation de lapplet dans les cartes Initialisation de services u Construction de lapplication cliente Invocation de services
67
des classes de lapplet avec lAPI Java Card u Dfinition des APDUs de commande traits par lapplet et des APDUs de rponse renvoys par lapplet (donnes ou erreurs) : implmentation de la mthode process() u Le JCRE fournit lenvironnement dexcution et la couche de communication
n
conversion et chargement scuris de lapplet dans les cartes (Java Card IDE) u Appel la mthode install() des applets (non standardis)
68
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
des classes du terminal (avec JDK) u Communication avec le serveur (applet carte) tablissement de la liaison : envoi dun APDU de slection avec lAID de lapplet (standardis) Invocation de services de lapplet :
codage et envoi dAPDUs de commande conformes ceux traits par lapplet rception et dcodage des APDUs de rponse retourns par lapplet
u Pas
69
70
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
: abstractions pour les lecteurs, les modes de communication, les connexions/dconnexions avec la carte opencard.core.service : framework pour la dfinition de services carte
opencard.core.terminal
Existant
u PC/SC
: API C/C++ Microsoft pour accder aux cartes sur les plates- formes Windows 32 bits (98 et NT4 et 5) u API Cliente du Gemplus SDK Tout lecteur Gemplus Java VM (JDK 1.1 ou MS 2.0) sous Windows et Solaris
71
Paquetage
com.gemplus.gcr
u Classe Ifd
(Interface Device) Reprsente le lecteur Gre canaux de communication avec le lecteur Sous-classe pour chaque mode de communication u Classe Icc (Integrated Circuit Card) Reprsente la carte Gre la connexion la carte Gre lchange dAPDUs avec la carte par la mthode :
ApduResponse exchangeApdu(ApduCommand command) throws GcrException
u Classe GcrException
communication
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
int montant = System.in.read(); byte[] montantApdu = new byte[4]; montantApdu[0] = (byte)(montant >> 24); montantApdu[1] = (byte)(montant >> 16); montantApdu[2] = (byte)(montant >> 8); montantApdu[3] = (byte)(montant); ApduCommand commande = new ApduCommand(0xAA, 0x03, 0, 0, montantApdu, 4); ApduResponse reponse = carte.exchangeApdu(commande); if ( reponse.getShortStatus() == 0x9000 ) { byte[] apduValeur = reponse.getDataOut(); int valeur = (apduValeur[0]<<24) | (apduValeur[1] <<16) | (apduValeur[2]<<8) | apduValeur[3]; System.out.println(Valeur compteur : + valeur); } else { if ( reponse.getShortStatus() == 0x6910 ) { /* Traite lerreur Valeur ngative */ } }
74
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
sur Java pour programmer la carte u Base sur APDUs pour communication client-applet
n
Points positifs
u Carte
Nouveauts arrivent...
75
Nouveauts
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
des fichiers de chargement dapplet carte : .cap u Nouveaux modles : objets temporaires, partage dobjets, etc. u Modification des spcifications de lAPI
n
Agenda
u Sortie
en fvrier 99 u Implmentation de rfrence le 31 mars 1999 API + simulateur pour JVM classique (crypto, transactions, etc.) Convertisseur ??? Machine virtuelle Java Card ???
77
fichier .cap par paquetage Java u Pas dinformations textuelles Utilisation didentifiants numriques Correspondance texte-numros dans un fichier externe u Taille par dfaut dun lment = 16 bits (au lieu de 32 bits) u Fichier organis en 11 composants (11 fichiers .cap) 10 obligatoires + 1 optionnel Possibilit dajouter des composants optionnels ( part)
78
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
de la VM doit vrifier lexcution que le code dune applet ne sort jamais de son contexte (1 contexte par applet et un contexte actif la fois) u Mcanismes de changement de contexte Objets points dentre et tableaux globaux du JCRE peuvent tre accds par les applets (e.g., APDU) Le JCRE peut accder nimporte quel objet Interactions entre applets via interfaces partageables Suppresion de la mthode System.share( Object ... )
81
Interfaces partageables
Applet A JCRE
getSIO( B, param )
extends O/N?
Applet B
getAppletSIO( A, param)
interface
Sharable x
Xi
implements
cast en Sharable
cast en Xi
x.foo()
x.foo()
rponse
changement de contexte
82
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
remplac par
n n
Exceptions dans java.lang sont dans un strict sousensemble des exceptions standards de java.lang Une applet peut tre instancie plusieurs fois en senregistrant chaque fois avec un AID diffrent : mthode Applet.register( byte[], short, short ) Classe AID plus gnrale avec constructeur et mthode equals() Paquetage javacardx.framework (fichiers 7816-4) retir Paquetages cryptographiques restructurs (export)
83
J C 2.1 : Conclusion
n n
de chargement dfini mais pas la faon dont on le charge ==> linteroprabilit de J C 2.1 sarrte juste avant la carte... (convertisseur OK, chargeur = ???) u Modle des objets temporaires encore insatisfaisant (lourd) u Firewall, changement de contexte et interfaces partageables sont lourds (possibilit de contournement ==> beaucoup de vrification la main) couteux (sauvegarde de contexte, vrification lexcution)
84
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Historique
u VOP
1.0 (Aot 1998) API Java complmentaire de J C 2.0 pour la gestion du cycle de vie des applets Dfinition de commandes APDUs pour linitialisation et la personnalisation des cartes / des applications u VOP 2.0 (Mi-99) Architecture de scurit pour carte multi-applicative (Java ou non) Dfinit quand et comment (i.e., avec quel niveau de scurit) initialiser, personnaliser une carte lmission ou ajouter, initialiser et personnaliser une nouvelle application dans une carte mise
85
Niveaux de scurit
Card Domain Card Issuer
Applets Provider
n n
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Objectifs
u Passage
des cartes ouvertes sur infrastructure existante u Gestion des niveaux de scurit u Gestion du cycle de vie des applications carte u Dfinition de mcanismes de scurit pour (tl-)chargement dapplications
n
Commentaires
u Standard
propritaire mais seul existant u Complmentaire Java Card pour la scurit du dploiement u Pas une solution pour linteroprabilit du dploiement
87
Premire version stable de la norme OCF (oct. 98) Framework standard daccs des cartes et des lecteurs depuis un environnement Java Drivers doivent tre implmenter et intgrer dans le framework par chaque fabricant
u Accessible
depuis la classe CardTerminal u Plusieurs possibilits Driver natif accessible depuis JNI Driver PC/SC Driver Java utilisant lAPI javax.comm
n
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
89
Objectifs
u Tenter
de dfinir un consensus pour une API daccs aux lecteurs et aux cartes rgi par un consortium autour dIBM u Approche oriente objet : extensibilit, rutilisabilit, etc.
n
Commentaires
u Standard
PC/SC) u Complmentaire Java Card pour le dveloppement des applications clientes u Problme dadaptation aux petits environnements (e.g., terminaux de paiement)
90
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Conclusion
n
Card 2.0 et 2.1, VOP 1.0 et 2.0, OCF 1.0 et 1.1 u Volont daffronter tous les aspects des applications cartes Manque encore de linteroprabilit Processus de fabrication, diffusion et maintenance pas encore maitriss
n n
: Consortium autour de Master Card pour systme dexploitation carte multi-applicatif u Windows Smart Card : Windows CE pour dvelopper des applications carte dans le monde Windows
91
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
applet Java Card peut-elle sexcuter sur toutes les Java Cards du march ? u Une application cliente Java Card peut-elle sexcuter avec diffrents matriels ? u Besoins : Diversification des sources cartes et des terminaux Prennit des dveloppements
n
le dveloppement rapide dapplications carte volues par des non spcialistes u But : de nouvelles applications pour de nouveaux marchs !
93
de lAPI Java Card Essentiellement pour traiter des APDUs u Conversion et installation dans la carte Format du Bytecode dfini mais procdure dinstallation dans la carte non dfini Portabilit des applets sarrte au chargement u Excution par le JCRE Slection dapplet dfini par Java Card Rception et transmission dAPDUs par lapplet dfinies par Java Card
94
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
dune API de communication carte permettant de transporter des APDUs Bientt une API Java standard (OCF) u Slection de lapplet par son AID Commande dfinie par Java Card u changes dAPDUs avec lapplet carte Codage dAPDUs de commande et dcodage dAPDUs de rponse conformes aux APDUs traits par lapplet
95
et installation des applets sont dfinies par Java Card 2.1, mais nombreuses options encore possibles u OCF dfinit une API Java daccs aux cartes, mais fournisseurs doivent la supporter
n
et applet communiquent par APDUs Structure de donnes pauvre (tableau doctets), peu explicite (pas de typage ), et difficile manipuler Oblige dfinir le contenu et la smantique des messages changs : dcodage et encodage dAPDUs par le client et lapplet
96
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
format des messages APDUs changs est utilis comme spcification commune u Travail sur un protocole plutt que sur des fonctionnalits u Ncessite une formation carte
n
dupliqu dans les programmes clients et applets Dans la carte : toutes les applets dcodent des APDUs u Code sensible Difficile programmer : prvoir tous les cas, pas doutils Source derreurs
97
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Les concepts
u Approche
client-serveur, objets rpartis et carte Les RPC u Invocation de mthodes dans la carte Protocole DMI u Mise en uvre dans GemXpresso
n
La pratique
u Concepts
de programmation u Dveloppement d'une applet (+ exemple) u Construire une application avec GemXpresso
99
Rappel
n
Terminal Commandes
Applications clientes
(APDUs)
Rponses
u Environnement
d'excution Java Card (JCRE) = support de l'excution d'applets carte grce l'API Java Card u Applets carte traitent des APDUs de commande u Application cliente envoie des APDUs de commande
100
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Dfinition de RPC
u Introduit
dans les applications rparties pour porter lchange de messages entre un client et un serveur au niveau de lappel de procdures Message de requte = appel de procdure par le client Message de rponse = valeur de retour de la procdure excute par le serveur u Protocole d'appel de procdures sur machine distante indpendant de la couche de communication Dfinit comment nommer une procdure distante Dfinit comment sont cods les paramtres et les valeurs de retour dans un format neutre
102
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Architecture RPC
103
des procdures serveurs appelables depuis un client via RPC = interfaces (contractuelles) des services
et dballage des messages RPC u Autant de souches diffrentes que de machines cibles
n
des souches clientes pour utiliser les services comme des services locaux u Utilisation des souches serveurs pour implmenter les appels aux services comme des appels locaux u Utilisation des bibliothques RPC pour liaison client-serveur et transmission/rception des messages RPC
104
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Principes
u Utilisation
de la notion d'interfaces objet pour dcrire les objets distants u Pr-compilateur pour gnrer les souches (proxys et squelettes) u Protocole d'invocation de mthodes
n
Mises en uvre
u CORBA
IDL, projections dans langages cibles, protocoles ORB et inter-ORB u Java Interfaces Java, rmic, protocole RMI dans JVM
105
Interfaces
Construire les applications avec la carte comme des applications rparties objets
u Applet Java
Card = objet serveur distant u Client invoque des mthodes de l'applet Terminal
Applications clientes Interfaces Proxys d'applets
Invocation de mthodes
(APDUs)
Rponses
106
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Invocation de mthodes de l'applet carte prises en charge par un protocole la RPC : Direct Method Invocation (DMI)
u APDUs
de commande et rponse pour la slection d'applet u APDUs de commande et rponse pour l'invocation de mthodes
n
Gnration des souches cliente et serveur pour l'emballage et le dballage des messages DMI
u Proxy pour
108
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Les messages-rponses DMI sont spcifis par des APDUs de commande et de rponse
u Compatibilit
avec format de messages ISO 7816-4 Peuvent tre transports par les APIs lecteur u Ncessite linterprtation de ces commandes par le masque de la carte (JCRE) Commandes non standard mais pourraient ltre... Pas interdit par Java Card
n
Message
u
Le 00
Interprtation
u Si
lapplet existe (AID rfrenc dans la carte) et accepte dtre slectionne (mthode Applet.select() renvoie true), alors les prochains APDUs de commande seront destins cette applet (lapplet courante est dslectionne) u Sinon, lapplet courante reste active
110
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Rponse
u Pas
de donnes renvoyes u 90 00 si la slection a russi u Sinon, code derreurs 6A 82 : applet non trouv 6F A0 : exception/erreur renvoye par la JCVM
111
Invocation dune mthode dapplet Java Card avec la signature de la mthode et ses paramtres
u Identifiant
de mthode (numro de 01 7F) u Types et valeurs des arguments Chaque type a un identifiant (signature) Les paramtres sont passs par valeurs u Type de la valeur de retour
n
Message
u
Le 00
112
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Interprtation
u Si
la mthode existe dans lapplet courante, alors elle est excute avec les paramtres fournis et le rsultat de lexcution (valeur de retour ou exception) est retourne u Sinon, un code derreur est retourne
n
Rponse
u
Exception
SW1 SW2 90 00
u Sinon,
code derreurs 6F 00 : mthode inconnue 61 03 : erreur renvoye par la JCVM en cours dexcution
113
GemXpresso
u Implmentation
u Types
transports par DMI (accepts dans les interfaces Java dapplets) (void), byte, boolean, short, et int Tableaux une dimension des types de base Exceptions dfinies par les spcifications Java Card
114
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
les langages Java/C++/C/VisualBasic u Utilise lAPI cliente du Gemplus SDK (Java) ou lAPI 4 de Gemplus (C++/C/VB) u A t tendue aux APIs OCF (Java) et PC/SC (C++/C/VB)
n
Souches serveurs
u Gres
directement par le JCRE de la carte GemXpresso u Fourniture linstallation de lapplet de la carte de la description de linterface au JCRE Dpt dinterfaces dans la carte Vrification et dcodage des messages invoke de DMI
115
Architecture GemXpresso
interface
description dinterface
DMI
116
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
et mot-cl transient u Destruction des objets locaux non assigns u Politique de scurit : paquetage public ou priv u Exceptions Java Card 2.1
n
de gestion des transactions u Partage dobjets non implment car a t compltement revu dans Java Card 2.1 u Chargement scuris par un mot de passe u Algorithmes cryptographiques non implments pour des raisons dexport
117
APIs com.gemplus.gemxpresso.library
u Interface IApplet
avec mthodes de
: Observer et Observable et
u Streams : CardByteArrayInputStream
CardByteArrayOutputStream
u Arithmetique
MIN_VALUE, MAX_VALUE
u Mathmatique
: Math avec uniquement abs, min et max u Manipulation de champs de bits : BitSet u Utilitaire : Util32 pour construire des int depuis des byte
118
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Spcifits DMI
u Invocation
paquetage Numro de mthode 00 pour le invoke de DMI Pas de paramtres u Invocation du constructeur de lapplet au chargement ==> Une applet peut avoir plusieurs constructeurs Numro de mthode FE 80 pour le invoke de DMI Paramtres du constructeur Enregistre automatiquement lapplet si pas dexceptions/derreurs
119
Les concepts
u Approche
client-serveur, objets rpartis et carte Les RPC u Invocation de mthodes dans la carte Protocole DMI u Mise en uvre dans GemXpresso
n
La pratique
u Concepts
de programmation u Dveloppement d'une applet (+ exemple) u Construire une application avec GemXpresso
120
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
121
Installation
u Java
Slection
u Mcanisme
identique pour Java Card et GemXpresso APDU de commande select de Java Card et DMI identiques Utilisation de deselect() et select()
122
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Communication
u Java
Card Classe qui hrite de javacard.framework.Applet APDUs traits par process(apdu) de lapplet u GemXpresso Classe qui implmente une interface et hrite de
javacard.framework.Applet
Si
commande APDU = invoke de DMI alors dcodage par le JCRE et invocation dune mthode de linterface de lapplet Sinon, mthode process(apdu) appele par le JCRE
124
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
des mthodes install() et process() identiques lapplet Java Card u Permet des terminaux travaillant avec lapplet Java Card (communiquant donc avec les APDUs traits par celle-ci) de continuer de travailler avec lapplet GemXpresso Java Card utile pour reprogrammer des applications existantes GemXpresso permet de dvelopper plus facilement de nouvelles applications
126
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
des classes du terminal avec JDK u Communication avec le serveur (applet carte) Utilise linterface de lapplet via le proxy gnr tablissement de la liaison : envoi dun APDU de selection avec lAID de lapplet (standardis)
de mthodes de lapplet par lutilisation du proxy u API de communication avec la carte API cliente du Gemplus SDK Paquetage com.gemplus.gcr.toolkit.gemxpresso
127
Invocation
com.gemplus.util
gemxpresso
pcos
com.gemplus.gcr.toolkit com.gemplus.gcr
JNI wjnigcr w32gcr40 JDirect
128
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Paquetage Paquetage
u
com.gemplus.gcr.toolkit
u Framework
com.gemplus.gcr.toolkit.gemxpresso
la carte GemXpresso Gre le protocole DMI : invokeConstructor(...) et invokeMethod(...) u Classes DmiOutputStream et DmiInputStream pour codage et dcodage des messages DMI u Classes ConnectionException, CommunicationException et CardError pour les erreurs de communication ou carte u Classe CardVMUnexpectedException pour une exception retourne par la JCVM
129
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Client Compteur
CardReader lecteur = new new Gcr410(SERIALPORT.G_COM1); GxCard carte = new GxCard(lecteur); try { // Connexion la carte via lecteur GCR410 reader.connect(); AnswerToReset atr = carte.connect(); // Communication avec lapplet via le proxy GxCabCompteur compteur = new GxCabCompteur(carte); compteur.select(); System.out.println(Montant du compteur = + compteur.decrementer( 100 ) ); /* etc */ // Fin de la connexion carte.dispose(); lecteur.dispose(); } catch ( UserException e1 ) { System.out.println(UserException : + e1.getReason()); } catch ( Exception e2 ) { System.out.println(Problme : + e2.getMessage()); }
132
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Conclusion GemXpresso
n
sur Java Card pour programmer la carte u Base sur RPC pour communication client-applet
n
Points positifs
u Environnement
ouvert u Pas de codes spcifiques la carte u Intgration dans les systmes dinformations
133
Sujets de recherche
Encore mieux intgrer la carte dans les applications rparties (des pistes)
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Amliorations
n
Java Card
u Normalisation
chargement u Politiques de scurit et de partage dobjets u Ramasse- miettes u APIs : String, etc.
n
DMI
u Normalisation
du concept u Passage dobjets par rfrence ou valeur u Appel de mthodes depuis la carte vers le client u Scurisation du protocole
135
et AIDs carte u Scurit et accs la carte ou carte participant au service de scurit u Transactions distribues (voir aprs) u etc.
n
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Permettre dintgrer les cartes dans les schmas transactionnels distribus (OTS)
class banque{ // Dans le serveur bancaire public void debit(int i) { solde = solde - i;
class Client { // Sur le terminal bancaire public void main(String args[]) { Control IDT; //beginTransaction IDT=TransacationFactory.create (); //Operations distribues banque.debit(100); pme .credit (100); //commitTransaction IDT.getTerminator().commit();
Proprits ACID
class pme { // Dans la carte PME public void credit(int i) { solde = solde + i;
137
modlisant une machine dfensive u En rtirant les test dynamiques pour les factoriser dans une phase initiale (par raffinements successifs) u En dsynchronisant la vrification de lexcution
n
Rsultats
u Spcification
138
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Le firewall est le mcanisme qui implmente la politique de scurit Objectif : prouver que son implmentation garantit laccs conforme la mmoire
u Gestion
Prouv 100%
139
Dans JC, absence de contrle pour les flux transitifs d'information Ncessit d'une politique de scurit globale
u contrle
des niveaux aux informations et aux utilisateurs u Vrification l'aide d'un "model checker" (SMV)
n
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Conclusion
O en sommes-nous ?
Langage Java pour programmer la carte Client-serveur bas niveau (change dAPDUs)
Terminal Commandes
Applications clientes
(APDUs)
Rponses
142
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Invocation de mthodes
(APDUs)
Rponses
143
Client
ISO 7816-4 (APDU) ISO 7816-7 (SCQL) Java Card (Java + DMI)
u u u
dans les applications (rparties) u Potentialits dapplications carte de plus en plus importantes
144
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Discussion
d'excution Java dans la carte u Serveur d'objets dans les applications rparties Objets personnels scuriss Objets distribus chaque porteur u Serveur scuris dans les applications rparties Donnes sensibles (cls cryptographiques) stockes et utilises (algorithmes cryptographiques) dans un support "sr"
Microcontrleur encart (scurit physique) Accs logique svrement contrl (scurit logique)
146
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
La construction d'applications carte utilise les mme techniques que celles des applications rparties
u Description
IDL des services carte u Gnration des souches clientes et serveurs u Protocole d'invocation de mthodes distantes au dessus du substrat de communication u Services horizontaux Scurit Transactions distribues Nommage, etc.
147
Livres carte. Pas vraiment de bons livres mais les plus rcents sont :
u Dreifus
H. et Monk J. T., Smart cards, Wiley, 1998. u Guthery S. B. et Jurgensen T. M., Smart Card Developers Kit, Macmillan, 1998.
http://ww.scdk.com
u Rankl W.
Java Card
u Site u Java
http://java.sun.com/products/javacard http://www.javacardforum.com/
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Articles et prsentations
u Articles
http://www.javaworld.com/javaworld/
Smart
jw-12-1997/jw-12-javadev.html
Understanding Java u Prsentations Java Java
jw-03-1998/jw-03-javadev.html
Java One 98
http://java.sun.com/javaone/javaone98/sessions/
T802/index.html
Applications T908/index.html
n
http://www.cyberflex.austin.et.slb.com/
u Odyssey :
http://www.cp8.bull.net/products/javacara.htm
u C@ppuccino
http://www.gdm.de/products/terminal/software/jav acap1.htm
u iButton : http://www.ibutton.com/
150
Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties
Framework (OCF)
Smartcard Development Kit (SDK) : Pas de version publique Livre avec le kit GemXpresso de Cardis 1996 et Cardis 1998
Recherche
u Actes
151