Vous êtes sur la page 1sur 76

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

cole dt IMAG, INRIA, LIFL - Autrans, aot 1999 Construction dapplications rparties

Construction dapplications avec la carte puce

Jean-Jacques Vandewalle
Gemplus Research Lab

Introduction

Quest-ce donc que ce cours ?

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

1Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Pourquoi la carte puce ?


n

La carte puce est un systme informatique


u Dispose

de processeur, mmoires, interface de communication

Une application avec la carte puce est une application rpartie


u Application

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

Rle de la carte puce de plus en plus important


u Commerce

(lectronique), fidlit, scurit (physique, logique), dossier portable, ...


3

Sujet du cours
n

La construction dapplications carte


u En

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

2Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Auditoire du cours
n

Concepteurs et dveloppeurs dapplications rparties


u Curieux

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

Concepteurs et dveloppeurs dapplications carte


u Curieux

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

Premire partie : Carte puce et Java


u De

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

Deuxime partie : GemXpresso


u Discussion

(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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

3Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

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

Expliciter ce quest une carte puce


u Comment

a fonctionne u Quest-ce quon en fait


n

Expliciter la plate-forme Java Card


u Plate- forme

Java applique la carte puce u Utilisation du langage Java et de lAPI Java Card
n

Expliciter comment construire des applications carte


u En

appliquant les techniques des systmes rpartis la Java Card

Ouvrir des pistes pour aller plus loin


8

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

4Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

De Roland Moreno la Java Card

tat de lart de la carte puce

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

5Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

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

1992-1999 : Dveloppement de la technologie carte


u Augmentation

des capacits matrielles u Systmes dexploitation de plus en plus ouverts u Systme Java Card
11

Diffrents types de cartes


n

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

Carte logique cble


u Mmoire

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

6Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Caractristiques des cartes puce


n

La normalisation
u Caractristiques

physiques u Protocoles de communication u Commandes applicatives


n

Le microcontrleur
u Technologie

M.A.M. et lements de scurit u Types de microprocesseurs u Types des mmoires


n

Les fonctionnalits
u Cycle

de vie de la carte u Fonctions applicatives de la carte


13

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

7Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Normalisation de la communication
n

ISO 7816-3 pour protocoles lecteur-carte


u Transmission

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

Normalisation du format des commandes


n

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

8Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

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

Microcontrleur pour carte (1/2)


n

Contraintes physiques ISO 7816-1 ==>


<= 25 mm2 u paisseur <= 0,3 mm.
u Surface

Fond sur la technologie M.A.M.


u Microprocesseur

+ 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

inacessible u Dtecteurs de conditions anormales


18

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

9Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Microcontrleur pour carte (2/2)


n

Types de microprocesseur
u 8-16-32

bits (+ coprocesseur cryptographique) u SGS-Thomson, Siemens, Motorola, Hitachi, NEC, etc.


n

Types des mmoires


u ROM

(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

Cycle de vie de la carte (1/2)


n

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

en EEPROM des donnes relatives chaque

porteur
20

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

10Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Cycle de vie de la carte (2/2)


n

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

invalidation logique, saturation de la mmoire, bris, perte, vol, etc.


21

Fonctionnalits des masques carte


n n

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

11Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Dveloppement dapplications carte


n

La carte
u Accessible

via un jeu de commandes fig grav lors de la fabrication du composant u Maintient des donnes pouvant voluer
n

Le lecteur et la communication avec la carte


u Ncessite

un lecteur de cartes (et donc un driver pour le piloter) u Messages changs dfinis par des APDUs de commande
n

Le terminal et lapplication cliente


u Communique

avec la carte via le driver du lecteur u Envoie des requtes APDUs conformes au jeu de commandes de la carte
23

Architecture dapplication carte


n

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

12Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

lments importants
n

Le code applicatif de la carte est grav en ROM au moment de la fabrication


u La

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

Pas de protocole standard de communication entre le systme hte et le lecteur


u Pas

dAPI standard daccs aux drivers des lecteurs u Drivers offrent uniquement une API de transport des APDUs
25

Difficults la construction dapplications


n

Si lapplication requiert de nouvelles fonctions carte


u Ncessite

le dveloppement dun nouveau masque (coteux)

Si les fonctionnalits de la carte doivent pouvoir voluer


u Ncessite

un masque qui accepte dexcuter des programmes en EEPROM (rare et pas standardis)

Intgration dans les systmes dinformations


u Pas

dinterface standard de communication avec les diffrents lecteurs (travaux en cours) u Communication via APDUs (trs bas niveau)
26

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

13Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Rsum de ltat de lart


n

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

Vers des cartes plus ouvertes (1/2)


n

Problmes rsoudre et/ou besoins satisfaire


u Permettre

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

14Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Vers des cartes plus ouvertes (2/2)


n

lments de solutions
u Java

Card Utiliser le langage Java pour programmer les cartes

Bnficie dun langage orient objet

Utiliser

la plate- forme Java pour charger et excuter des applications dynamiquement


Bnficie dune architecture scuritaire

u GemXpresso Utiliser

les concepts de la programmation dapplications rparties pour dvelopper des applications carte avec Java Card

Bnficie des concepts du client-serveur orient objet


29

La technologie Java Card

Comprendre Java Card

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

15Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Comprendre Java Card : sommaire


n

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

Quest-ce que Java Card ?


n

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

16Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Statut du standard Java Card (1/2)


n

10/96 : Spcification Java Card 1.0


u Pousse

par Schlumberger (produit CyberFlex) u Trs limite (4 pages) et proche de la carte


n

02/97 : Cration du Java Card Forum


u Regroupe

les fabricants de cartes et Sun pour tablir les spcifications + des utilisateurs pour promouvoir Java Card

10/97 : Spcification Java Card 2.0


u Sous-ensemble

du langage et de la machine virtuelle Java u Concepts de programmation et APIs


n

03/99 : Spcification Java Card 2.1


u Modifications

API (crypto, exceptions), normalisation BC...


33

Statut du standard Java Card (2/2)


n

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

17Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Sous-ensemble du langage Java


n

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

Dfinition dune application Java Card


u Applets

Java Card (javacard.framework.Applet) u la diffrence du JDK, pas de notions :


dapplets : java.applet.Applet dapplications : public static void main( String[] args )
35

Java Card par rapport Java (1/4)


n

Pas de chargement dynamique de classes


u Classes

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

Pas de ramasse-miettes (gc)


u Pas

de dsallocation explicite non plus ==> mmoire alloue peut ne pas tre rcupre u Pas de mthode finalize()
36

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

18Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Java Card par rapport Java (2/4)


n

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

Tableaux une dimension avec lements :


u Types

de base u Objets (les tableaux sont eux-mmes des objets)


37

Java Card par rapport Java (3/4)


n

Pas de threads
u Pas

de classe Thread, pas de mots-cls synchronized ni

volatile

Mcanisme dhritage identique Java


u Surcharge

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

19Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Java Card par rapport Java (4/4)


n

Mcanisme dexceptions support


u Peuvent

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

Mthodes natives (native)


u Supportes

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

Rsum Java Card p/r Java (1/2)


n

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

20Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Rsum Java Card p/r Java (2/2)


n n

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

Machine virtuelle JC : partie carte


n

Dfinition de la machine virtuelle Java


u Vrifieur

de Bytecode u Chargeur dynamique de classes u Interprteur de Bytecode


n

Dans la carte, la JCVM nimplmente que :


u Interprteur

de byte-code u Gestion des classes et objets u Isolation des applets Par paquetage

}
42

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

21Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Machine virtuelle JC : dcoupage


n

Pourquoi la JCVM ne contient pas le vrifieur ?


u Trop

lourd pour tre stock et/ou excut dans la carte

Pourquoi la JCVM ne contient pas le chargement dynamique de classes ?


u Pas

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

Architecture JCVM p/r la JVM


u Identique

mais dcoupe en une partie dans la carte et une partie hors carte (Java Card Converter)
43

Machine virtuelle JC : architecture

44

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

22Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Machine Virtuelle JC : partie hors-carte


n

Vrifieur de Bytecode
u Utilise

le vrifieur de Bytecode Java classique u Contrle le sous-ensemble Java Card (langage + API)
n

Convertisseur (early binding)


u Prparation

: 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

Modle mmoire Java Card


n

La JCVM est toujours active mme quand la carte est dconnecte


u Elle

est automatiquement remise en route la (re-)connexion

Les objets sont stocks de manire persistente


u Stockage

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

23Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Comprendre Java Card : sommaire


n

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

Concepts de programmation (1/2)


n

Approche traditionnelle

Terminal Commandes
Applications clientes
(APDUs)

Masque carte Donnes carte

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

24Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Concepts de programmation (2/2)


n

Approche Java Card

Terminal Commandes
Applications clientes
(APDUs)

JCRE (masque) API Java Card Applets Carte

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

Les APIs de programmation Java Card


n

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 fichiers conforme la

norme ISO 7816-4


u

: gestion de cls publiques et prives, gnrateur de nombres alatoires, fonction de chiffrement et de hashage...
javacardx.crypto
50

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

25Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Les APIs utilitaires de javacard.framework (1/2)


n

public final class JCSystem


u Mthodes

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

public class Util


u Mthodes

public final class AID


u Encapsule

des identifiants d'applications carte conformes la norme ISO 7816-5

51

Les API utilitaires de javacard.framework (2/2)


n

public class ISO


u Champs
u

statiques de constantes conformes aux normes ISO 7816-3 et 4


ISOException.throwIt(short reason)
Renvoie

la raison

public abstract class PIN


u Reprsentation

d'un code secret (tableau doctets) OwnerPIN : code secret pouvant tre mis jour

52

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

26Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Applet carte
n

Une applet carte est un programme serveur de la Java Card


u APDU

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

install(), select(), deselect(), et process()

53

Mthodes publiques d'une applet


n

Public static void install( APDU apdu )


u Appele

(une fois) par le JCRE quand l'applet est charge dans la carte u Doit senregistrer auprs du JCRE (mthode register())
n

public boolean select()


u Appele

par le JCRE quand un APDU de slection est reu et dsigne cette applet u Rend l'applet active
n

public void process( APDU apdu )


u Appele

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

public void deselect()


u Appele

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

27Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Gestion des APDUs par une applet (1/2)


n

L'unit de traitement de base d'une applet est un objet de type javacard.framework.APDU


u Transmis

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

Gestion des APDUs par une applet (2/2)


n

Lecture/criture dans le buffer d'APDU

56

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

28Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Rsum des caractristiques du JCRE


n n

Classes de l'API Java Card Machine virtuelle Java Card


u Interprteur

de Bytecode u Gestion des classes et des objets


n

Gestion des applets


u Installation,

enregistrement et initialisation u Slection et dslection u Transmission des APDUs u Rcupration des exceptions
n

Mthodes natives
u Entres/sorties,

transactions, cryptographie
57

Conception d'une applet Java Card


n

Rle d'une applet


u Maintenir

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

29Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Exemple Compteur : Conception


n

tat de l'applet :
u Maintient

une valeur entire positive ou nulle (pas d'objets)

Installation : cration de l'objet Applet


u Initialisation de

la valeur du compteur u Enregistrement auprs du JCRE


n

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

Exemple Compteur : APDUs


n

Rappels :

APDUs traits par l'applet :


u

int lire()
Commande

: AA 01 XX XX 00 04

Rponse : RV3 RV2 RV1 RV0 90 00 int incrementer( int ) Commande Rponse

: AA 02 XX XX 04 AM3 AM2 AM1 AM0 04

: RV3 RV2 RV1 RV0 90 00 int decrementer( int ) : idem mais INS=03
60

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

30Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Applet Compteur : Classe Applet


package compteur.carte.gemplus.fr ; import javacard.framework.* ; public class Compteur extends Applet { private int valeur; public Compteur() { valeur = 0; register(); } public static void install( APDU apdu ) { new Compteur(); } public void process( APDU apdu ) { byte[] buffer = apdu.getBuffer(); if ( buffer[ISO.OFFSET_CLA] != 0xAA ) ISOException.throwIt(ISO.SW_CLA_NOT_SUPPORTED); switch ( buffer[ISO.OFFSET_INS] ) { case 0x01: ... // Opration de lecture case 0x02: ... // Opration d'incrmentation case 0x03: ... // Opration de dcrmentation default: ISOException.throwIt(ISO.SW_INS_NOT_SUPPORTED); } } }
61

Applet Compteur : dcrmentation


case 0x03: // Opration de dcrmentation { // Rception des donnnes byte octetsLus = apdu.setIncomingAndReceive(); if ( octetsLus != 4 ) ISOException.throwIt(ISO.SW_WRONG_LENGTH); int montant = (buffer[ISO.OFFSET_CDATA]<<24) | (buffer[ISO.OFFSET_CDATA+1]<<16) | (buffer[ISO.OFFSET_CDATA+2]<<8) | buffer[ISO.OFFSET_CDATA+3]; // Traitement if ( montant<0 || valeur-montant<0 ) ISOException.throwIt((short)0x6910); valeur = valeur - montant; // Envoie de la rponse buffer[0] = (byte)(valeur>>24); buffer[1] = (byte)(valeur>>16); buffer[2] = (byte)(valeur>>8); buffer[3] = (byte)(valeur); apdu.setOutgoingAndSend((short)0, (short)4); return; }
62

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

31Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

32Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

33Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Construction dapplications Java Card


n

Une application carte =


u Code

dans la carte (application serveur = applet Java Card) u Code dans le terminal (application cliente)
n

Construction dune application Java Card


u Construction

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

Construction de lapplication serveur


n

Construction de lapplet Java Card


u Implmentation

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

Installation de lapplet Java Card


u Compilation,

conversion et chargement scuris de lapplet dans les cartes (Java Card IDE) u Appel la mthode install() des applets (non standardis)
68

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

34Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Construction de lapplication cliente (1/2)


n

Construction de lapplication terminal


u Implmentation

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

dAPI standard de communication avec la carte

69

Construction de lapplication cliente (2/2)

70

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

35Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

API de communication avec la carte


n

Open Card Framework (OCF) : API Java


u

: 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

API Cliente du Gemplus SDK


n

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

(et sous-classes) pour les erreurs de


72

communication

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

36Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Client Compteur : liaison carte


package compteur.client.gemplus.fr ; import com.gemplus.gcr.* ; /* Application terminal */ Ifd lecteur = new IfdSerial(IFDTYPE.GCR410, SERIALPORT.G_COM1, 9600); Icc carte = new Icc() ; try { // Connexion la carte via lecteur GCR410 short canal = reader.openChannel(); SessionParameters atr = carte.openSession(canal); // change dAPDUs (APDU de selection de lapplet Compteur) ApduCommand commande = new ApduCommand( /* paramtres */ ); ApduResponse reponse = carte.exchangeApdu(commande); /* etc */ // Fin de la connexion carte.closeSession(); lecteur.closeChannel(canal); } catch ( GcrException e ) { // Rcupration de lerreur System.out.println(Problme : + e.getMessage()); }
73

Client Compteur : dcrmentation


// Commande = AA 03 XX XX 04 AM3 AM2 AM1 AM0 04 // Reponse = RV3 RV2 RV1 RV0 90 00 ou 69 10

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

37Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Conclusion Java Card


n

Mthodologie de dveloppement dapplets cartes


u Base

sur Java pour programmer la carte u Base sur APDUs pour communication client-applet
n

Points positifs
u Carte

ouverte u Langage Java u API standard


n

Nouveauts arrivent...
75

Nouveauts

Java Card 2.1, VOP 2.0, OCF 1.1 et Systmes concurrents

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

38Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Java Card 2.1 : Gnralits


n

Nouvelle norme Java Card


u Format

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

J C 2.1 : Format de fichier .cap (1/3)


n

Format normalis !!!


u Plus

pour linteroprabilit u Mais manque la faon de le charger !!!


n

Fichier .cap identique .class sauf :


u 1seul

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

39Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

J C 2.1 : Format de fichier .cap (2/3)


<1:header> magic + numros de version <2:directory> liste des autres composants avec taille <3:applet> liste des applets avec leur AID et un pointeur vers leur mthode install() <4:refedpackages> liste des paquetages rfrencs dans ce paquetage (paquetages devant donc tre prsents dans la carte avant de charger celui-ci) <5:constantpool> table des rfrences aux classes, mthodes et champs dans le code des mthodes <6:class> table des classes et interfaces <7:method> code des mthodes des classes
79

J C 2.1 : Format de fichier .cap (3/3)


<8:staticfield> valeurs initiales de tous les champs statiques du paquetage <9:reflocations> liste des rfrences relatives dans le code des mthodes transformer au chargement dans la carte en rfrences absolues <10:export> liste des lments de ce paquetage que les autres paquetages peuvent rfrencer directement (mthodes et champs statiques public ou protected dans classes publiques) <11:descriptor> information de typage (signatures) si ce paquetage est accessible par dautres paquetages
80

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

40Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

J C 2.1 : Nouveaux modles (1/2)


n

Objets temporaires: mthode Firewall entre applets


u Limplantation

System.makeTransient( Object... ) remplace par JCSystem.makeTransient{Boolean, Byte, Short, Object}Array()

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

J C 2.1 : Nouveaux modles (2/2)


n

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()

changement de contexte getPreviousContextAID() B

x.foo()

rponse
changement de contexte
82

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

41Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

J C 2.1 : Autres principales nouveauts


n

Applet.install( APDU apdu ) Applet.install( byte[] b )

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

volution intressante par rapport 2.0 Mais peut mieux faire...


u Fichier

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

42Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

VOP 2.0 : Visa Open Platform


n

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

VOP 2.0 : Architecture


n

Niveaux de scurit
Card Domain Card Issuer

Security Security Security Security Domain Domain Domain Domain

Applets Provider

Applet Applet Applet Applet Applet Applet

n n

Cycle de vie des applications Mcanismes cryptographiques


86

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

43Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

VOP 2.0 : Conclusion


n

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

OCF 1.1 : Open Card Framework


n n n

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

Chaque carte est reprsente par une classe


CardService
88

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

44Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

OCF 1.1 : Architecture

89

OCF 1.1 : Conclusion


n

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

ouvert qui commence susciter de lintrt (vs

PC/SC) u Complmentaire Java Card pour le dveloppement des applications clientes u Problme dadaptation aux petits environnements (e.g., terminaux de paiement)
90

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

45Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Conclusion
n

Intrts grandissant autour de Java et carte


u Java

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

Premires relles applications pour l an 2000 ? Attention la concurrence :


u MultOS

: 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

Discussion : les problmes des dveloppeurs

Les limites de Java Card

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

46Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Deux types de problmes


n

Portabilit des applications


u Une

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

Procd de construction des applications


u Permettre

le dveloppement rapide dapplications carte volues par des non spcialistes u But : de nouvelles applications pour de nouveaux marchs !
93

Rsum construction dapplications (1/2)


n

Dveloppement de lapplet carte


u Utilisation

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

47Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Rsum construction dapplications (2/2)


n

Dveloppement de lapplication cliente


u Utilisation

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

Deux types de problmes (suite et fin)


n

Portabilit des applications


u Conversion

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

Procd de construction des applications


u Client

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

48Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Problmes pour la construction


n

La spcification des changes entre client et applet correspond un protocole


u Le

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

Lapplet et le client implmentent un protocole


u Code

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

Les techniques des applications rparties appliques la carte


Construire les applications carte mieux et plus facilement

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

49Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Applications rparties carte : sommaire


n

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

Approche Java Card

Terminal Commandes
Applications clientes
(APDUs)

JCRE (masque) API Java Card Applets Carte

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

50Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Modle client-serveur de Java Card

Codage/dcodage des messages un niveau proche du protocole de communication (APDUs)...


101

Client-serveur et Remote Procedure Call


n

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

51Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Architecture RPC

103

Construction d'applications avec RPC


n

Dfinir les interactions entre clients et serveurs


u Liste

des procdures serveurs appelables depuis un client via RPC = interfaces (contractuelles) des services

Produire les souches clientes et serveurs


u Emballage

et dballage des messages RPC u Autant de souches diffrentes que de machines cibles
n

Dvelopper les applications clientes et serveurs


u Utilisation

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

52Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

RPC et systmes objets rpartis


n

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

RPC et carte : approche


n

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

JCRE (masque) API Java Card Interfaces Applets Carte

106

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

53Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

RPC et carte : mcanismes


n

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

le client (Card Applet Bridge) u Description d'interface pour le JCRE


n

Description des interfaces d'applets


u Interface

Java avec restrictions


107

RPC et carte : architecture

108

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

54Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Protocole DMI : gnralits


n

Protocole applicatif dchange de messages pour :


u La

slection de services carte (select()) u Linvocation de mthodes du service slectionn (invoke() )


n

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

Non limit Java Card


109

Protocole DMI : select (1/2)


n

Slection dune applet Java Card par son AID


u Compatibilit

ISO 7816-5 et Java Card u AID sur 16 octets


n

Message
u

CLA INS P1 P2 Lc DataIn A8 A4 04 XX 10 applet AID

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

55Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Protocole DMI : select (2/2)


n

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

Protocole DMI : invoke (1/2)


n

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

CLA INS P1 P2 Lc DataIn A8 36 #meth TypeRet ?? Valeur params

Le 00

112

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

56Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Protocole DMI : invoke (2/2)


n

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

DataOut Valeur Retour ou

Exception

SW1 SW2 90 00

u Sinon,

code derreurs 6F 00 : mthode inconnue 61 03 : erreur renvoye par la JCVM en cours dexcution
113

Mise en uvre dans GemXpresso (1/2)


n

GemXpresso
u Implmentation

de Java Card 2.0 (32 bits, 8/512/32) u Ajout du mcanisme DMI


n

Applet Java Card doit aussi implmenter une interface


u

class MonApplet extends Applet implements MonInterface

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

57Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Mise en uvre dans GemXpresso (2/2)


n

Gnration de proxies clients


u Dans

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

proxy client dpt dinterfaces

DMI
116

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

58Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Autres caractristiques GemXpresso (1/3)


n

En plus par rapport Java Card 2.0


u Type int

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

En moins par rapport Java Card 2.0


u Pas

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

Autres caractristiques GemXpresso (2/3)


n

APIs com.gemplus.gemxpresso.library
u Interface IApplet

avec mthodes de

javacard.framework.Applet interface MonInterface extends IApplet


u Notification

: Observer et Observable et

u Streams : CardByteArrayInputStream

CardByteArrayOutputStream
u Arithmetique

: Byte, Short, Int avec uniquement

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

59Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Autres caractristiques GemXpresso (3/3)


n

Spcifits DMI
u Invocation

du clinit des classes au chargement dun

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

Applications rparties carte : sommaire


n

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

60Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Conception dune applet GemXpresso


n

Compatible avec Java Card


u Mode

Java Card seul possible u Mode GemXpresso = sur-ensemble Java Card

121

Applet carte GemXpresso et JCRE (1/2)


n

Installation
u Java

Card Appel install(apdu) u GemXpresso Appel un constructeur de lapplet ou Appel install(apdu)


n

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

61Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Applet carte GemXpresso et JCRE (2/2)


n

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

Si process() non redfinie, ne fait rien et renvoie 90 00


123

Applet Compteur : interface ICompteur


package nouveauCompteur.carte.gemplus.fr ; import javacard.framework.* ; public interface ICompteur { public static final short VALEUR_NEGATIVE = 1; public int lire(); public int incrementer( int montant ) throws UserException; public int decrementer( int montant ) throws UserException; }

124

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

62Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Applet Compteur : classe Compteur


package nouveauCompteur.carte.gemplus.fr ; import javacard.framework.* ; public class Compteur extends Applet implements Icompteur { private int valeur; public Compteur() { valeur = 0; } public int lire() { return value; } public int incrementer(int montant) throws UserException { if (montant<0) throw new UserException(VALEUR_NEGATIVE); valeur += montant; return valeur; } public int decrementer(int montant) throws UserException { if (montant<0 || valeur-montant<0) throw new UserException(VALEUR_NEGATIVE); valeur -= montant; return valeur; } }
125

Applet Compteur : extensions


n

Ajout dun autre constructeur


public Compteur( int valeur ) { this.valeur = valeur; }

Compatibilit avec applet Compteur Java Card


u Ajout

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

63Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Construction de lapplication cliente


n

Construction de lapplication terminal


u Implmentation

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)

Mthode select() du proxy

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

API cliente du Gemplus SDK


Appli Appli Appli Appli Appli
PROXY

com.gemplus.util

gemxpresso

pcos

com.gemplus.gcr.toolkit com.gemplus.gcr
JNI wjnigcr w32gcr40 JDirect

128

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

64Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

API Cliente du Gemplus SDK


n

Paquetage Paquetage
u

com.gemplus.gcr.toolkit

u Framework

pour les applications clientes de cartes (extends Icc)

com.gemplus.gcr.toolkit.gemxpresso

class GxCard extends JavaCard


Reprsente

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

Client Compteur : proxy (entte)


import nouveauCompteur.carte.gemplus.fr.ICompteur; import com.gemplus.gcr.toolkit.gemxpresso.*; public class GxCabCompteur extends GxCab implements ICompteur { public static final GxAID GXAID = GxAID.create(...); public GxAID __getAID() { return GXAID; } public GxCabXCompteur( GxCard carte ) { super(carte); } // Installation de lapplet public void Compteur() { this.gemXpresso.invokeConstructor(-2, // #contructeur null); // Valeur des paramtres } // Autres constructeurs // Mthodes }
130

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

65Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Client Compteur : proxy (mthode)


public int decrementer( int montant ) throws UserException { try { // Construit les paramtres DMI DmiOutputStream __dmiParameters = new DmiOutputStream() ; __dmiParameters.write( montant ) ; // Invoque la mthode byte[] __b = this.gemXpresso.invokeMethod(3, // #Mthode DMITYPE.INT, // Type de la valeur de retour __dmiParameters.toByteArray()); // Valeur paramtres __dmiParameters.close() ; // Retourne la valeur de retour DmiInputStream __dmiRV = new DmiInputStream( __b ) ; return __dmiRV.readInt() ; } // Propage seulement les exceptions dclares et sous-types catch ( CardVMUnexpectedException __exc ) { if (__exc.getCardVMException() instanceof UserException) throw (UserException)__exc.getCardVMException() ; // Les autres exceptions restent encapsules throw __exc ; } }
131

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

66Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Conclusion GemXpresso
n

Mthodologie de dveloppement dapplications carte


u Base

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)

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

67Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Amliorations
n

Java Card
u Normalisation

format de Bytecode et procdure de

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

Intgration dans les systmes


n

Voir la carte comme...


u Un

serveur RMI ou CORBA ou DCOM

Services des applications rparties et carte


u Nommage

et AIDs carte u Scurit et accs la carte ou carte participant au service de scurit u Transactions distribues (voir aprs) u etc.
n

Mthodes formelles pour certification des applets carte


u3

travaux (avec la mthode B) prsents ci-aprs


136

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

68Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Transactions avec des cartes


n

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

Vrification de l'interprteur JC (1/3)


n

Garantir que l interprteur est conforme aux spcifications JC


u En

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

du vrifieur (statique) u Implmentation partielle de linterprteur

138

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

69Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Spcification du Firewall (2/3)


n n

Le firewall est le mcanisme qui implmente la politique de scurit Objectif : prouver que son implmentation garantit laccs conforme la mmoire
u Gestion

des contextes u Gestion des objets u Interprtation correcte du bytecode


n n

Ncessite la modlisation d'autres lments


u JCRE,

Interprteur, Pile Java, Objets

Prouv 100%
139

Vrification politique de scurit (3/3)


n n

Dans JC, absence de contrle pour les flux transitifs d'information Ncessit d'une politique de scurit globale
u contrle

de flux et de consommation de ressources

Pour une configuration donne, analyse statique du flux d'information


u Associer

des niveaux aux informations et aux utilisateurs u Vrification l'aide d'un "model checker" (SMV)
n

Prototype dvelopp avec l'ONERA pour serveurs d'applets


140

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

70Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Conclusion

O en sommes-nous ?

Rsum : applications avec Java Card


n n

Langage Java pour programmer la carte Client-serveur bas niveau (change dAPDUs)

Terminal Commandes
Applications clientes
(APDUs)

JCRE (masque) API Java Card Applets Carte

Rponses

142

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

71Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Rsum : applications avec GemXpresso


n

Techniques des applications rparties pour carte


u Protocole

dinvocation de mthodes u Mthodologie de dveloppement client-serveur Terminal


Applications clientes Interfaces Proxys d'applets

Invocation de mthodes
(APDUs)

Rponses

JCRE (masque) API Java Card Interfaces Applets Carte

143

Tendances de la carte puce


Carte
u u u

Client
ISO 7816-4 (APDU) ISO 7816-7 (SCQL) Java Card (Java + DMI)
u u u

Orient protocole SQL, ODBC, JDBC RMI, CORBA, DCOM

Carte puce = lment informatique comme les autres


u Programmable u Intgrable

dans les applications (rparties) u Potentialits dapplications carte de plus en plus importantes
144

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

72Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Discussion

Des ides pour dbattre

Cartes puce et applications rparties


n

La carte devient un lment comme les autres des systmes d'informations


u Environnement

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

73Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Cartes puce et applications rparties


n

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

Pour obtenir plus dinformations (1/4)


n

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.

et Effing W., Smart Card Handbook, Wiley, 1997.

Java Card
u Site u Java

Sun : Card Forum :


148

http://java.sun.com/products/javacard http://www.javacardforum.com/

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

74Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Pour obtenir plus dinformations (2/4)


n

Articles et prsentations
u Articles

dans JavaWorld Cards: A Primer Card 2.0

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/

Card Technology: The Java Card Platform and APIs

T802/index.html

Technology: Using Smart Cards with Java Technology T800/index.html


149

Pour obtenir plus dinformations (3/4)


Gemplus: Developing

Smart Card-based Java

Applications T908/index.html
n

Produits Java Card


u GemXpresso : http://www.gemplus.com/gemxpresso/ u CyberFlex :

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

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

75Construction dapplications avec la carte puce

Construction d'applications avec la carte pucecole dt IMAG, INRIA, LIFL Constructions dapplications rparties

Aot 1999Autrans, du 23 au 28 aot 1999 Vendredi 27, 9h00-12h00

Pour obtenir plus dinformations (4/4)


n

API daccs aux cartes puce


u Open Card u PC/SC

Framework (OCF)

http://www.opencard.org/ http://www.smartcardsys.com/ http://www.microsoft.com/smartcard/


u Gemplus

Smartcard Development Kit (SDK) : Pas de version publique Livre avec le kit GemXpresso de Cardis 1996 et Cardis 1998

Recherche
u Actes

151

Copyright Vandewalle, 1999J.-Jacques Vandewalle, Gemplus Research Lab

76Construction dapplications avec la carte puce