1 / 14

Quelques définitions Etat de l’art Construction de notre environnement de simulation

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.

bernie
Download Presentation

Quelques définitions Etat de l’art Construction de notre environnement de simulation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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’art Construction de notre environnement de simulation Discussion/Travaux futurs Conclusion 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 APDU de Réponse Obligatoire cla ins p1 p2 lc data le data sw1 sw2 Falcultatif Simulation d’Applications Java Card

  3. Etat de l’art : 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 d’un 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] 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/CP8 Spécifiques Java Card uniquement sur le byte code notre environnement basé sur une sémantique formelle du langage source Programme Java Card Byte code (.class) Validation Java Card Javac Checker 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 Présentation textuelle de l’arbre Programme Java Type Checker (Typol) Résultats à interpréter pour l’utilisateur Pretty Printer (Ppml) Parseur (Metal) Interprète (Typol) Arbre de syntaxe abstraite • 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 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 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. Légende Un Thread Un objet simple FrequentFlyer Notre simulateur d’applications 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 Simulation d’Applications Java Card

  9. Notre simulateur d’applications Java Card: Fonctionnement PurseFr JCRE CAD User Hypothèse: aucune applet n’avait é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, Data=100)  process(APDU3)  APDU4 (Data = 900, Sw1 = OK)  Affichage du compte-rendu de l ’action Simulation d’Applications Java Card

  10. Modifications sémantiques • Modification de l’entrelacement 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 :> 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 APDUs DisplayCADApdu: 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 • 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 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 Simulation d’Applications Java Card

More Related