Title: St
1Carte à puce et Java
- Stéphane AMATO
- Julien CHABANON
- Novembre 2001
2Sommaire
- Historique
- Partie I Carte à puce
- Partie II JavaCard
- Conclusion
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Sommaire
3Historique (1/6)
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Historique
4Historique (2/6)
- 1974 - Roland Moreno crée la carte à puce à
circuit intégré
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Historique
5Historique (3/6)
- 1980 - La carte à puce comme un nouveau moyen de
paiement
- 1983 - La carte à puce dans le secteur sanitaire
et social
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Historique
6Historique (4/6)
- 1986 2 millions de cartes vendues par an
- 1991 6 millions de cartes vendues par mois
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Historique
7Historique (5/6)
- Novembre 1996 - Schlumberger simplifie la
programmation des SmartCards ? Spécification
JavaCard 1.0
- Février 1997 - Bull, Sun et Gemplus se joignent
à Schlumberger pour fonder le JavaCard forum
- Novembre 1997 - Sun présente les spécifications
de JavaCard 2.0
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Historique
8Historique (6/6)
- Mars 1999 - La version 2.1 des spécifications de
la JavaCard sort - The JavaCard 2.1 API Specification
- The JavaCard 2.1 Runtime Environment
Specification - The JavaCard 2.1 Virtual Machine Specification
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Historique
9Carte à puce
- Les différents types de cartes
- Le système informatique
- La normalisation
- Cycle de vie dune carte
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - JavaCard
10Types de cartes (1/3)
- Carte à mémoire
- Mémoire simple (sans processeur) accessible en
lecture sans protection, mais lécriture peut
être rendue impossible - Programmation impossible
- Carte porte-jetons pour applications de
prépaiement (carte téléphonique)
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Type de carte
11Types de cartes (2/3)
- Carte à logique câblée
- Mémoire accessible via des circuits
préprogrammés et figés pour une application
particulière - Carte sécuritaire pouvant effectuer des
calculs figés (accès à un local )
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Type de carte
12Types de cartes (3/3)
- Carte à puce ou SmartCard
- Microcontrôleur encarté (processeur mémoires)
- Carte programmable pouvant effectuer tout
type de traitements
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Type de carte
13Carte à puce
- Les différents types de cartes
- Le système informatique
- La normalisation
- Cycle de vie dune carte
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - JavaCard
14Système informatique (1/2)
- Processeur, mémoire, interface de communications
- Un véritable ordinateur mais
- Communiquant environ 300 fois moins vite
(de 3,58 à 4,92 MHz) - Possédant 200 000 fois moins de mémoire
(64 Ko de ROM)
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Système informatique
15Système informatique (2/2)
- Une application carte une carte un
terminal - Traitement conjoint des données présentes sur la
carte ET sur le terminal - ? Communication entre la carte et le terminal
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Système informatique
16Carte à puce
- Les différents types de cartes
- Le système informatique
- La normalisation
- Cycle de vie dune carte
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - JavaCard
17Normalisation (1/7)
- ISO 7816
- Format carte de crédit
- Définition des contraintes
physiques supportables (chaleur, humidité...)
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Normalisation
18Normalisation (2/7)
- La puce
- Seule interface de communication avec
lextérieur - Lecteur de cartes CAD (Card Acceptance Device)
- Surface ? 25 mm²
- Épaisseur ? 0,3 mm
- Composée de 8 contacts métalliques
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Normalisation
19Normalisation (3/7)
- Protocoles de communication
- ISO 7816-3
- Protocoles de communication asynchrones et
half-duplex
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Normalisation
20Normalisation (4/7)
- Format de commandes
- Protocole APDU Application Protocol Data Unit
- Communication entre le lecteur de cartes (CAD)
et la SmartCard - Message de commande du lecteur vers la carte ou
... - ... message de réponse de la carte au lecteur
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Normalisation
21Normalisation (5/7)
- Commandes applicatives
- ISO 7816-4 Manipulation des données au travers
dune structure hiérarchique de fichiers - ISO 7816-5 Identification des applications
- ISO 7816-6 Éléments de données référencées
(accès direct) - ISO 1816-7 Manipulation des données au travers
dun schéma relationnel - ETSI GSM 11.11 Commandes des cartes S.I.M.
- E.M.V. Commandes de paiement
- ...
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Normalisation
22Normalisation (6/7)
- Le microcontrôleur (1/2)
- Technologie M.A.M.
- Substrat de silicium (0,35 à 0,7 microns)
contenant microprocesseur bus mémoires - Mémoire non volatile reprogrammable
- Sécurité
- Composant inaccessible (seule la puce lest)
- Détecteurs de conditions anormales
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Normalisation
23Normalisation (7/7)
- Le microcontrôleur (2/2)
- Types de microprocesseurs utilisés
- 8, 16 ou 32 bits coprocesseur cryptographique
- Hitachi, Motorola, NEC, SGS-Thomson, Siemens...
- Types de mémoires
- ROM jusquà 64 Ko (mémoire non volatile en
lecture seule) - RAM jusqu'à 2 Ko (mémoire volatile)
- Flash EEPROM jusqu'à 32 Ko (mémoire non
volatile réinscriptible)
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Normalisation
24Carte à puce
- Les différents types de cartes
- Le système informatique
- La normalisation
- Cycle de vie dune carte
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - JavaCard
25Cycle de vie (1/2)
- Fabrication
- ROM inscription dun programme définissant les
fonctions de base de la carte - Initialisation
- EEPROM (Electrical Erasable Programmable ROM)
inscription des données communes à lapplication - Personnalisation
- EEPROM inscription des données personnelles de
lutilisateur
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Cycle de vie
26Cycle de vie (2/2)
- Utilisation
- Envoi dAPDU de commandes à la carte via le
lecteur (CAD) - Traitement des commandes effectué par le masque
de la carte Sinon renvoi dun code derreur - Mort
- Invalidation logique (volontaire ou lors dune
tentative dintrusion), saturation mémoire, vol,
perte, bris ...
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Cycle de vie
27Résumé
- La carte à puce est un véritable serveur
embarqué - Elle gère des données personnelles et les
sécurise - Cependant
- Le code applicatif est figé en ROM
- Pas de protocole standard de communication entre
le lecteur et son hôte - Communications de bas niveaux (APDUs) ?
nécessite des compétences spécifiques
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Résumé
28JavaCard
- Présentation
- Architecture
- Les outils commerciaux adaptés à la JavaCard
- Quelques applications
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - JavaCard
29Présentation (1/3)
- JavaCard un sous-ensemble du langage Java
- Une applet est une application JavaCard
- Possibilité de charger dynamiquement une
nouvelle applet - JavaCard lié aux spécificités des SmartCard
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Présentation
30Présentation (2/3)
Supportés Non supportés
Boolean, byte, short, int Object Tableau à une dimension Méthodes virtuelles Allocation dynamique Paquetages Exceptions Interface Méthodes natives Float, double, long Char, String Tableau à n dimensions Class et ClassLoader Ramasse-miettes SecurityManager Threads
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Présentation
31Présentation (3/3)
- API java.lang de JavaCard réduite à
- Object public Object ()
- public boolean equals (Object obj)
- Throwable public Throwable ()
- -- Exception
- -- RuntimeException
- -- Arthmetic Exception
- -- ClassCastException
- -- NullPointerException
- -- SecurityException
- -- ArrayStoreException
- -- NegativeArraySizeException
- -- IdexOutOfBoundsException
- -- ArrayIndexOutOfBoundsException
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Présentation
32Machine virtuelle
- Implémentation en deux parties
- La partie on-card (SmartCard)
- La partie off-card (JavaCard)
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - JCVM
33Librairies standard
- JavaCard.lang
- JavaCard.framework
- JavaCard.security
- JavaCardx.crypto
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Les standards Class
Librairies
34JCRE
- JCRE JavaCard Runtime Environment
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - JCRE
35Compiler en Java (1/3)
- Obtention dun code JavaCard
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Compiler en Java
36Compiler en Java (2/3)
... Method public static int fact(int) gtgt
max_stack2, max_locals3 ltlt 0 iconst_1 1
istore_2 2 iconst_1 3 istore_1 4 goto 14 7
iload_2 8 iload_1 9 imul 10 istore_2 11 iinc_1
by 1 14 iload_1 15 iload_0 16 if_icmplt 7 19
iload_2 20 ireturn ...
... public static int fact(int n) int i,j
j1 for(i1iltni) ji return
j ...
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Compiler en Java
37Compiler en Java (3/3)
- Récapitulatif des opérations
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Compiler en Java
38JavaCard
- Présentation
- Architecture
- Les outils commerciaux adaptés à la JavaCard
- Quelques applications
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - JavaCard
39Architecture (1/8)
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Architecture
40Architecture (2/8)
- Méthodes natives
- Fonctions de bas niveaux gérant
- Les E/S
- La mémoire
- Le coprocesseur cryptographique
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Architecture
41Architecture (3/8)
- Machine virtuelle Java
- Exécute le bytecode (obtenu après compilation et
édition de liens) - Offre le support du langage
- Gère le partage des données entre applications
- Implantée au dessus du circuit intégré (OS
méthodes natives) - ? Indépendance totale par rapport à la
plate-forme de la carte
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Architecture
42Architecture (4/8)
- Librairies standard
- Ensemble dAPIs
- Cache les détails de linfrastructure
- Interface facile à manipuler
- Définition des conventions utilisées par les
applets pour accéder aux méthodes natives
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Architecture
43Architecture (5/8)
- Applets
- Programmes écrits en JavaCard puis compilés
- Exécution en réponse à des demandes du terminal
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Architecture
44Architecture (6/8)
- Installation dune applet
- Réalisé lors de la fabrication de la carte ou de
sa mise à jour à partir dun terminal - Chargement lapplet en mémoire (ROM ou EEPROM)
- Appel automatique de la méthode install () par
le JCRE phase de connaissance - Applet définitivement connue par le JCRE
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Architecture
45Architecture (7/8)
- Sélection, activation et désactivation dune
applet - Une Applet est inactive tant quelle nest pas
sélectionnée pour être exécutée - Identification dune Applet par une clé unique
- Sélection réalisée par le terminal
- Suspension de lexécution de lApplet active
deselect() - Activation de lApplet sélectionnée select()
- Le JCRE redirige tous les APDUs de commande vers
cette Applet
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Architecture
46Architecture (8/8)
- Communication avec les applets
- Le JCRE appelle process() lorsquil reçoit un
APDU de commande pour cette applet
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Architecture
47JavaCard
- Présentation
- Architecture
- Les outils commerciaux adaptés à la JavaCard
- Quelques applications
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - JavaCard
48Outils commerciaux
- Odissey-Lab de Bull
- GemXpresso Rapid Applet Development (RAD) de
Gemplus - Cyberflex 2.0 Multi8K de Schlumberger
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Les outils commerciaux
49Odissey-Lab de Bull
- Conforme aux spécifications JavaCard API 2.0
- Sa JVM est lune des plus performantes du marché
selon Bull - A été conçu pour les besoins des plate-formes
ouvertes - Est adaptée à de nouveaux mécanismes de sécurité
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Odissey-Lab de Bull
50GemXpresso RAD de Gemplus
- Plate-forme de développement basée sur les
spécifications de JavaCard 2.0 et sur un
processeur RISC 32 bits - Supporte les API JavaCard 2.0 pour 8 ou 32 bits
- Accélère le développement et les tests
- Simulateur pour tester les programmes
directement sur une station de travail
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - GemXpresso RAD de Gemplus
51Cyberflex de Schlumberger
- Conforme aux spécifications de JavaCard 2.0
- Pas denvironnement de développement car très
facile de lintégrer dans un environnement de
développement Java existant - Simulateur qui vérifie le code
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Cyberflex de Schlumberger
52JavaCard
- Présentation
- Architecture
- Les outils commerciaux adaptés à la JavaCard
- Quelques applications
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - JavaCard
53Applications (1/2)
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Applications
54Applications (2/2)
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - Applications
55Conclusion
Stéphane AMATO / Julien CHABANON
Novembre 2001
Cartes à puce et Java - JavaCard