Simulation d’Applications Java Card
This presentation is the property of its rightful owner.
Sponsored Links
1 / 14

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


  • 54 Views
  • Uploaded on
  • Presentation posted in: General

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.

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Quelques d finitions etat de l art construction de notre environnement de simulation

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


Quelques d finitions

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


Etat de l art travaux formels

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


Etat de l art outils adapt s java card

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


La s mantique naturelle de java

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


D finition syntaxique de java card

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


Exemple de v rification statique tableau unidimensionnel

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


Notre simulateur d applications java card pr sentation

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


Notre simulateur d applications java card fonctionnement

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


Modifications s mantiques

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


R sultats

Résultats

Simulation d’Applications Java Card


Discussion travaux futurs 1 2

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


Discussion travaux futurs 2 2

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


Conclusion

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


  • Login