Dan Bismuth Tutrices : Marie-Lise Flottes - Joanne Acland

Slides:



Advertisements
Présentations similaires
Bratec Martin ..
Advertisements

NOTIFICATION ÉLECTRONIQUE
Fragilité : une notion fragile ?
SEMINAIRE DU 10 AVRIL 2010 programmation du futur Hôtel de Ville
Phono-sémantique différentielle des monosyllabes italiens
MAGGIO 1967 BOLOGNA - CERVIA ANOMALIES DU SOMMEIL CHEZ L'HOMME
droit + pub = ? vincent gautrais professeur agrégé – avocat
Transcription de la présentation:

Dan Bismuth Tutrices : Marie-Lise Flottes - Joanne Acland JAVACARD Dan Bismuth Tutrices : Marie-Lise Flottes - Joanne Acland

Sujet Développement des connaissances systèmes sur le langage JavaCard pour une application carte à puce. Étude du cas concret de l’applet « Porte monnaie électronique ». (Implémentation et Analyse) Principe d’installation et d’exécution d’une applet. Mécanismes d’interactions logiciel – matériel. Allocations des ressources mémoires.

SOMMAIRE Architecture et langage JavaCard JCRE JCVM API Le protocole de communication Interactions avec le Hardware Procédure d’installation Conclusion

Java/JavaCard Pourquoi le JavaCard dans les cartes à puces ? Langage de haut niveau orienté objet Write Once, Run Anywhere Plate-forme multi applicatives Partage de données entre applications  Sécurité des données  

Java/JavaCard JCRE Architecture d’une JavaCard ? JAVACARD Card Exécutive Applet 1 Applet 2 JCRE Standard class libraries (API) Virtual machine (Interpréteur) Native méthode

Virtual machine (Interpréteur) JCRE JAVACARD Native méthode Virtual machine (Interpréteur) Card Exécutive Standard class libraries (API) Applet 1 Applet 2 Le JCRE peut être vu comme OS de la carte. Regroupe la JVM, API et les méthodes natives Firewall protection: autorisation et isolation des applets Gestion des objets persistants et temporaires Écriture atomique Décrit les méthodes indispensables: Install, Register, …

Virtual machine (Interpréteur) JAVACARD Native méthode Virtual machine (Interpréteur) Card Exécutive Standard class libraries (API) Applet 1 Applet 2 JCRE Listes des méthodes indispensables Install(): créer une instance de la sous classe Applet Register(): Enregistre l’instance de l’applet avec le JCRE et assigne un AID Select(): Activation de l’applet par le JCRE Deselect(): Désactivation de l’applet Process(): Traite les commandes APDUs

Virtual machine (Interpréteur) JCVM JAVACARD Native méthode Virtual machine (Interpréteur) Card Exécutive Standard class libraries (API) Applet 1 Applet 2 Architecture d’une JCVM ? JCVM Off-Card On-Card Compilateur Interpréteur .class CAP La virtual machine est totalement dépendante de la plateforme puisqu’elle permet l’interprétation par le processeur des bytecodes.

Virtual machine (Interpréteur) API JAVACARD Native méthode Virtual machine (Interpréteur) Card Exécutive Standard class libraries (API) Applet 1 Applet 2 Détails des différents packages importés. Java.lang : contient la classe fondamentale à la création d’applet Object et les classes d’exceptions. Javacard.framework : contient les classes nécessaires au développement d’applets (ex: Pin, Aid, APDU …) Javacard.security : contient toutes les classes de sécurité. Javacardx.crypto: contient les classes de cryptographie.

Protocole de Communication Réponse Commande CLA INS P1 P2 Lc Data Le Data Sw1 Sw2 Applet 2 AID2 JCRE Applet 1 AID1 CAD Lecteur de carte JavaCard java.framework.APDU

Exemple APDU Création d’un compte avec l’applet Wallet ? CLA INS P1 P2 Lc Data Le Data Sw1 Sw2 0x80 0xB8 0x00 0x00 0x11 0x0a 0xa0 0x00 0x00 0x00 0x62 0x00 0x01 0x0d 0x06 0x01 0x05 0x01 0x02 0x03 0x04 0x05 0x7F; 0x0a : Taille en byte de l’AID de l’applet Wallet 0xa0 0x00 0x00 0x00 0x62 0x00 0x01 0x0d 0x06 0x01: AID Wallet 0x05 : Taille en byte du code PIN 0x01 0x02 0x03 0x04 0x05 : code PIN

Interaction avec le hardware Stockage des informations Tous les packages API (classes), la virtual machine et les applets sont en ROM Toutes les données de « personnalisations » sont en EEPROM (solde, PIN …). Toutes les données temporaires (variables de calculs, d’exécutions, …) sont en RAM. Chargement d’applets et de données possible en EEPROM (très rare car le temps d’accès à l’EEPROM est très long) Ces informations sont d’ordre général, car le lien avec le hardware est dépendant de la JCVM.

Procédure installation Exemple : Wallet Cahier des charges Configuration Wallet SOLDE_MAX = 0x01F4 TRANSACTION_MAX = 0x64 NB_ESSAIS = 0x05 TAILLE_MAX_PIN = 0x08 Configuration applet AID package : 0xa0 0x00 0x00 0x00 0x62 0x00 0x01 0x0d 0x06 AID applet : 0xa0 0x00 0x00 0x00 0x62 0x00 0x01 0x0d 0x06 0x01 Classe de l’applet : CLA = 0xB0 Fonction : VERIFIE_PIN = 0x20 CREDIT = 0x30 DEBIT = 0x40 SOLDE = 0x50 Status Word SW_CODE_ERRONE=0x9110 SW_VERIFICATION_PIN_REQUISE=0x9120 SW_MONTANT_TRANSACTION_INVALIDE=0x9130 SW_MONTANT_TRANSACTION_DEPASSE=0x9140 SW_SOLDE_NEGATIF=0x9150; .jca .java

Conclusion Bilan - Quelques domaines à approfondir Mise à jour des packages possibles (Ajout de nouvelles fonctionnalités après fabrication de la carte) ? Implémentation des bytecodes au niveau architecture (chemin de donnée du bytecode «invokevirtual»). Fonctionnement de la lecture et écriture des instructions et des données pour pouvoir développer une plateforme optimale. Pour une probabilité de continuation, toutes les informations concernant le projet sont accessibles sur le CD.