quelques définitions etat de l’art construction de notre environnement de simulation

14

Click here to load reader

Upload: bernie

Post on 11-Jan-2016

31 views

Category:

Documents


10 download

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 Presentation

TRANSCRIPT

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

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

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

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

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

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]

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

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

Simulation d’Applications Java Card 11

Résultats

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

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

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

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

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

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