Upload
guarin-antoine
View
110
Download
1
Embed Size (px)
Citation preview
1
JAVACARD
Dan Bismuth
Tutrices : Marie-Lise Flottes - Joanne Acland
2 Sujet
É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.
Développement des connaissances systèmes sur le langage JavaCard pour une application carte à puce.
3SOMMAIRE
Architecture et langage JavaCard JCRE JCVM API Le protocole de communication Interactions avec le Hardware Procédure d’installation Conclusion
4
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
Pourquoi le JavaCard dans les cartes à puces ?
Java/JavaCard
5
JAV
AC
AR
D Native méthode
Virtual machine (Interpréteur)
CardExécutive
Standard class libraries(API)
Applet 1 Applet 2JCRE
Java/JavaCard
Architecture d’une JavaCard ?
6
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, …
JAV
AC
AR
D
Native méthode
Virtual machine (Interpréteur)
CardExécutive
Standard class libraries (API)
Applet 1 Applet 2
Le JCRE peut être vu comme OS de la carte.
JCRE
7 JCRE
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
Listes des méthodes indispensables
JAV
AC
AR
D
Native méthode
Virtual machine (Interpréteur)
CardExécutive
Standard class libraries (API)
Applet 1 Applet 2
8 JCVM
La virtual machine est totalement dépendante de la plateforme puisqu’elle permet l’interprétation par le processeur des bytecodes.
JAV
AC
AR
D
Native méthode
Virtual machine (Interpréteur)
CardExécutive
Standard class libraries (API)
Applet 1 Applet 2
Architecture d’une JCVM ?
Compilateur
CAP
Interpréteur
.classJCVM
Off-Card On-Card
9 API
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.
JAV
AC
AR
D
Native méthode
Virtual machine (Interpréteur)
CardExécutive
Standard class libraries (API)
Applet 1 Applet 2
Détails des différents packages importés.
10 Protocole de Communication
Applet 2AID2
JCRE
Applet 1AID1
CLA INS P1 P2 Lc Data Le Data Sw1 Sw2
Commande Réponse
CADLecteur de carte
JavaCardjava.framework.APDU
11 Exemple APDU
CLA INS P1 P2 Lc Data Le Data Sw1 Sw2
Création d’un compte avec l’applet Wallet ?
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
12 Interaction avec le hardware
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)
Stockage des informations
Ces informations sont d’ordre général, car le lien avec le hardware est dépendant de la JCVM.
13
Configuration Wallet– SOLDE_MAX = 0x01F4– TRANSACTION_MAX = 0x64– NB_ESSAIS = 0x05– TAILLE_MAX_PIN = 0x08
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;
Cahier des charges
Fonction : – VERIFIE_PIN = 0x20 – CREDIT = 0x30– DEBIT = 0x40– SOLDE = 0x50
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
.jca .java
Procédure installation Exemple : Wallet
14 Conclusion
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.
Bilan - Quelques domaines à approfondir
Pour une probabilité de continuation, toutes les informations concernant le projet sont accessibles sur le CD.