quelques définitions etat de l’art construction de notre environnement de simulation
DESCRIPTION
Simulation d’Applications Java Card Carine Courbis INRIA Sophia-Antipolis, Dyade/Bull, ENS de Lyon et INSA de Lyon. Quelques définitions Etat de l’art Construction de notre environnement de simulation Discussion/Travaux futurs Conclusion. - PowerPoint PPT PresentationTRANSCRIPT
Simulation d’Applications Java Card 1
Simulation d’Applications Java CardCarine Courbis
INRIA Sophia-Antipolis, Dyade/Bull, ENS de Lyon et INSA de Lyon
Quelques définitions
Etat de l’artConstruction de notre environnement de simulationDiscussion/Travaux futursConclusion
Carte à puce multi-applications + Java Card = Nveaux Développeurs besoin de nouveaux outils pour mettre au point le comportement des Applets
Simulation d’Applications Java Card 2
Quelques 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 l’utilisateur en APDU de commande pour la carte et
attendre l ’APDU de réponse pour l’afficher 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
cla ins p1 p2 lc data le
APDU de Réponse
data sw1 sw2
Obligatoire
Falcultatif
Simulation d’Applications Java Card 3
Etat de l’art : Travaux formels
Preuve de la sûreté des types en Java2 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 codeTransitions d’états d’un sous-ens. des instructions de la JVM [Qian]
dans la mémoire qd. exécution prouver bon fonctionnementSystè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]
Simulation d’Applications Java Card 4
Etat de l’art: 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/CP8Spécifiques Java Card uniquement sur le byte codenotre environnement basé sur une sémantique formelle
du langage source
Programme Java Card
Javac CheckerByte code(.class)
Validation Java Card
Simulation d’Applications Java Card 5
La 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
ProgrammeJava
Arbre de syntaxe abstraite
Présentation textuelle de l’arbre
Parseur(Metal)
Pretty Printer(Ppml)
Interprète(Typol)
Résultats à interpréter
pour l’utilisateur
Type Checker
(Typol)
• syntaxe en Metal
• règles d ’affichage en Ppml
• règles sémantiques en Typol
Simulation d’Applications Java Card 6
Définition Syntaxique de Java Card
• Suppressions char, long, double, float, synchronized, volatile, transient
• Ajoutstructure de résultats = liste des APDUs transmis
• ModificationTableaux à 1 seule dimensionPossible d ’avoir int[] i ou int i[]
mais aussi int[] i[]un vérificateur statique
Simulation d’Applications Java Card 7
Exemple de vérification statique :Tableau unidimensionnel
set checkParam is
judgement |- javacard -> Bool;
ArrayArrayParamRule: //erreur 2 dim
|- parameter(_,arrayof(T),array(P))-> false();
do message("javacard", "checker", "errorDimArray", "Error", subject, "");
ArrayParamRule: // 1 dim
|- parameter(_,arrayof(T),Param) -> false();
provided diff(Param, array(_));
SimpleParamRule:
|- parameter(_, TypParam, _) -> true() ;
provided diff(TypParam, arrayof(_));
end checkParam;
Programme incorrect +
Règles Typol du checker testant les paramètres
Simulation d’Applications Java Card 8
Notre simulateur d’applications Java Card: Présentation
• Acteurs (User, CAD, Carte)
• Architecture– Acteurs = Threads
• Comme dans réalité
• Gestion evts asynchrones
– Applets = Threads• Futur = multithreading
• Séparation contextes meilleure visualisation
Smart Card
CAD
User
JCREPurseFr
FrequentFlyer
Applets
APDU
APDU
APDU de Commande
cla ins p1 p2 lc data le
APDU de Réponse
data sw1 sw2
Obligatoire
FalcultatifNon implémentédans notre modèle
Un Thread
Un objet simple
Légende
Notre Modèle
Simulation d’Applications Java Card 9
Notre simulateur d’applications Java Card: Fonctionnement
PurseFr
JCRE
CAD
User
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, Data=100)
process(APDU3) APDU4 (Data = 900, Sw1 = OK)
Affichage du compte-rendu de l ’action
accepte
Maître/esclave
Déroulement séquentiel un seul Thread actif à la fois
Modèle implémenté en Java (500 lignes)
Hypothèse:
aucune applet n’avait été sélectionnée auparavant.
Simulation d’Applications Java Card 10
Modifications sémantiques
• Modification de l’entrelacement des threadssém small-step avance jusqu’à mort ou suspension du thread
Not_suspended_thread: send_current(ObjL1, OThId1) & exec_activity(ObjL1, ClVarL1, OThId1, ObjId1 |- Clr :> ObjL1_1, ClVarL1_1, ThStatus1_1) ---------------- ObjL1, ClVarL1, OThId1, ObjId1 |- ThStatus1, Clr -> ObjL1_1, ClVarL1_1, ThStatus1_1; provided not_eq(ThStatus1, suspended(_));
• Construction de la structure contenant les APDUsDisplayCADApdu:
find_Apdu_attribute(identifier "commandApdu" |- ObjL1, AttrL1 -> AttrL2)
----------------
(ObjL1, OThId1, object(_, identifier "CAD", AttrL1, _, _, _, _), clr(_, _, _, _, inst_l[Inst1.InstL1])) ;
provided not_eq(Inst1, i_block(inst_l[], _));
do
update_apduL(apdu(OThId1, AttrL2) -> ApduL) &
emit_tree("apdu", ApduL);
Simulation d’Applications Java Card 11
Résultats
Simulation d’Applications Java Card 12
Discussion/Travaux Futurs (1/2)
• Le modèle– Gestion des APIs d’authentification 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
Simulation d’Applications Java Card 13
Discussion/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 d’exception)
Liste d’objets transients (moment de maj), transactions atomiques, partage des objets
• PerformancesProg assez gros (500 lignes) exécuté en 7 mn sur un DEC PWS 500
• InterfaceInterface interactive - Pb: avoir un CAD génériqueFê pour visualiser comportement JCRE et Obj File
Simulation d’Applications Java Card 14
Conclusion
• 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 d’un env. complet de dév. et vérification