Title: Simulation d
1Simulation dApplications Java CardCarine
Courbis INRIA Sophia-Antipolis, Dyade/Bull, ENS
de Lyon et INSA de Lyon
Carte à puce multi-applications Java Card
Nveaux Développeurs ? besoin de nouveaux outils
pour mettre au point le comportement des Applets
- Quelques définitions
- Etat de lart
- Construction de notre environnement de simulation
- Discussion/Travaux futurs
- Conclusion
2Quelques Définitions
- APDU (Application Protocole Data Unit) ISO 7816-3
- Format standardisé des données échangées entre le
lecteur de carte et la carte - CAD (Card Acceptance Device lecteur de carte)
- Rôle Traduire choix de lutilisateur en APDU de
commande pour la carte et attendre l APDU de
réponse pour lafficher décodée - JCRE (Java Card Runtime Environment) machine
virtuelle classes - AID (Application Identifier)
- Applet ? Application
- (Unité de sélection, contexte, fonctionnalité et
de sécurité sur une carte Java Card)
APDU de Commande
APDU de Réponse
Obligatoire
cla
ins
p1
p2
lc
data
le
data
sw1
sw2
Falcultatif
3Etat de lart Travaux formels
- Preuve de la sûreté des types en Java
- 2 approches
- source
- ? sous-ens. Java séquentiels ? prouver
préservation des types Drossopoulou, Eisenbach,
Syme - Empilement de ? sous-ens Java pour sém. dynamique
Börger, Schultze - byte code
- Transitions détats dun sous-ens. des
instructions de la JVM Qian dans la mémoire qd.
exécution ? prouver bon fonctionnement - Systèmes à états finis pour vérif. de byte code
Java Card Posegga, Vogt - Procédure de vérif. de la sûreté du byte-code sur
un sous-ens. Rose
4Etat de lart Outils adaptés à Java Card
- Le checker Java Card de Sun
- Outils commerciaux
- GemXpresso Rapid Applet Development de Gemplus
- Cyberflex 2.0 Multi8K de Schlumberger
- Odyssey Lab de Bull/CP8
- Spécifiques Java Card uniquement sur le byte code
- notre environnement basé sur une sémantique
formelle du langage source
5La Sémantique Naturelle de Java
- Large sous-ensemble, spécifié par M. Russo
- Héritage, caractéristiques objets ? sém. Big-Step
- Multithreading ? sém. Small-Step
- 400 règles Typol exécutables dans système
Centaur - Centaur outil de génération d environnement de
langage
- syntaxe en Metal
- règles d affichage en Ppml
- règles sémantiques en Typol
6Définition Syntaxique de Java Card
- Suppressions
- char, long, double, float, synchronized,
volatile, transient - Ajout
- structure de résultats liste des APDUs transmis
- Modification
- Tableaux à 1 seule dimension
- Possible d avoir int i ou int i
- mais aussi int i
- un vérificateur statique
7Exemple de vérification statique Tableau
unidimensionnel
- set checkParam is
- judgement - javacard -gt Bool
- ArrayArrayParamRule //erreur 2 dim
- - parameter(_,arrayof(T),array(P))-gt false()
- do message("javacard", "checker",
"errorDimArray", "Error", subject, "") - ArrayParamRule // 1 dim
- - parameter(_,arrayof(T),Param) -gt false()
- provided diff(Param, array(_))
- SimpleParamRule
- - parameter(_, TypParam, _) -gt true()
- provided diff(TypParam, arrayof(_))
- end checkParam
Programme incorrect Règles Typol du checker
testant les paramètres
8Notre simulateur dapplications Java Card
Présentation
Notre Modèle
- Acteurs (User, CAD, Carte)
- Architecture
- Acteurs Threads
- Comme dans réalité
- Gestion evts asynchrones
- Applets Threads
- Futur multithreading
- Séparation contextes ? meilleure visualisation
User
CAD
APDU
APDU
PurseFr
JCRE
Applets
Smart Card
APDU de Commande
APDU de Réponse
Obligatoire
Non implémenté dans notre modèle
cla
ins
p1
p2
lc
data
le
data
sw1
sw2
Falcultatif
9Notre simulateur dapplications Java Card
Fonctionnement
PurseFr JCRE CAD User
Hypothèse aucune applet navait été
sélectionnée auparavant.
Maître/esclave Déroulement séquentiel ? un seul
Thread actif à la fois Modèle implémenté en Java
(?500 lignes)
?
?
accepte
?
?
?
?
?
?
?
t
? sendAction(PurseFr.AID, PurseFr.WITHDRAW,
100) ? sendActionToCard() APDU1 (Cla Ins
SELECT, P1 PurseFr.AID) ? select() ? APDU2
(Sw1 OK) ? sendActionToCard() APDU3 (Cla
PROCESS, Ins PurseFr.WITHDRAW, Data100) ?
process(APDU3) ? APDU4 (Data 900, Sw1 OK) ?
Affichage du compte-rendu de l action
10Modifications sémantiques
- Modification de lentrelacement des threads
- sém small-step ? avance jusquà mort ou
suspension du thread - Not_suspended_thread
- send_current(ObjL1, OThId1)
- exec_activity(ObjL1, ClVarL1, OThId1, ObjId1 -
Clr gt ObjL1_1, ClVarL1_1, ThStatus1_1) - ----------------
- ObjL1, ClVarL1, OThId1, ObjId1 - ThStatus1, Clr
-gt ObjL1_1, ClVarL1_1, ThStatus1_1 - provided not_eq(ThStatus1,
suspended(_)) - Construction de la structure contenant les APDUs
- DisplayCADApdu
- find_Apdu_attribute(identifier "commandApdu" -
ObjL1, AttrL1 -gt AttrL2) - ----------------
- (ObjL1, OThId1, object(_, identifier "CAD",
AttrL1, _, _, _, _), clr(_, _, _, _,
inst_lInst1.InstL1)) - provided not_eq(Inst1,
i_block(inst_l, _)) - do
- update_apduL(apdu(OThId1,
AttrL2) -gt ApduL) - emit_tree("apdu", ApduL)
11Résultats
12Discussion/Travaux Futurs (1/2)
- Le modèle
- Gestion des APIs dauthentification du PIN
(Personal Identifier Number) - A compléter (tableaux de bytes, nb hexa, APIs)
- Gestion des evts. asynchrones (coupure courant,
retrait de carte) - La sémantique
- De Java
- exceptions, tableau, nb hexa,
- op (décalages droite ou gauche, and, or, xor bit
à bit), packages
13Discussion/Travaux Futurs (2/2)
- La semantique (suite)
- De Java Card
- Spécifier comportement JCRE, CAD, Classe Applet
en Typol ? - ?taille prog ?performances gestion
transparente des threads - Spécifier les classes et APIs de Java Card (51
classes dont 18 dexception) - Liste dobjets transients (moment de maj),
transactions atomiques, partage des objets - Performances
- Prog assez gros (?500 lignes) exécuté en 7 mn sur
un DEC PWS 500 - Interface
- Interface interactive - Pb avoir un CAD
générique - Fê pour visualiser comportement JCRE et Obj File
14Conclusion
- Durant ce stage
- Etude langage, standards liés aux cartes à puce
- Modélisation de tous les acteurs
- Modification sém. formelle de Java
- Objectifs
- Compléter description formelle du langage
- Proposer de nouveaux outils
- Etude et Formalisation de propriétés liées à la
sécurité - Disposer dun env. complet de dév. et
vérification