0% ont trouvé ce document utile (0 vote)
11 vues55 pages

Java Card

Transféré par

eveshanonn
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
11 vues55 pages

Java Card

Transféré par

eveshanonn
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd

Carte à puce et Java

Stéphane AMATO
Julien CHABANON

Novembre 2001
Sommaire

Historique

Partie I : Carte à puce

Partie II : JavaCard

Conclusion
Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Sommaire Novembre 2001
Historique (1/6)

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Historique Novembre 2001
Historique (2/6)

1974 - Roland Moreno crée la carte à


puce à circuit intégré

1979 - Création de Bull CP8

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Historique Novembre 2001
Historique (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 Cartes à puce et Java - Historique Novembre 2001
Historique (4/6)

1984 - La télécarte

1986 : 2 millions de cartes vendues par


an
1991 : 6 millions de cartes vendues par
mois
Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Historique Novembre 2001
Historique (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 Cartes à puce et Java - Historique Novembre 2001
Historique (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 Cartes à puce et Java - Historique Novembre 2001
Carte à puce

Les différents types de cartes

Le système informatique

La normalisation

Cycle de vie d’une carte

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - JavaCard Novembre 2001
Types 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 Cartes à puce et Java - Type de carte Novembre 2001
Types 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 Cartes à puce et Java - Type de carte Novembre 2001
Types 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 Cartes à puce et Java - Type de carte Novembre 2001
Carte à puce

Les différents types de cartes

Le système informatique

La normalisation

Cycle de vie d’une carte

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - JavaCard Novembre 2001
Systè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 Cartes à puce et Java - Système informatique Novembre 2001
Systè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 Cartes à puce et Java - Système informatique Novembre 2001
Carte à puce

Les différents types de cartes

Le système informatique

La normalisation

Cycle de vie d’une carte

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - JavaCard Novembre 2001
Normalisation (1/7)

ISO 7816 0,76


mm

Format carte de crédit 54 mm

Définition des
contraintes physiques 85 mm

supportables (chaleur,
humidité...)

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Normalisation Novembre 2001
Normalisation (2/7)
La puce
Seule interface de communication
avec l’exté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 Cartes à puce et Java - Normalisation Novembre 2001
Normalisation (3/7)

Protocoles de communication

ISO 7816-3
Protocoles de communication asynchrones
et half-duplex

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Normalisation Novembre 2001
Normalisation (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 Cartes à puce et Java - Normalisation Novembre 2001
Normalisation (5/7)

Commandes applicatives
ISO 7816-4 : Manipulation des données au
travers d’une 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 d’un schéma relationnel
ETSI GSM 11.11 : Commandes des cartes
S.I.M.
E.M.V. : Commandes de paiement
...
Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Normalisation Novembre 2001
Normalisation (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 l’est)
Détecteurs de conditions anormales

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Normalisation Novembre 2001
Normalisation (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 Cartes à puce et Java - Normalisation Novembre 2001
Carte à puce

Les différents types de cartes

Le système informatique

La normalisation

Cycle de vie d’une carte

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - JavaCard Novembre 2001
Cycle de vie (1/2)

Fabrication
ROM : inscription d’un programme définissant les
fonctions de base de la carte

Initialisation
EEPROM (Electrical Erasable Programmable ROM) :
inscription des données communes à l’application

Personnalisation
EEPROM : inscription des données personnelles de
l’utilisateur

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Cycle de vie Novembre 2001
Cycle de vie (2/2)

Utilisation
Envoi d’APDU de commandes à la carte via
le lecteur (CAD)
Traitement des commandes effectué par le
masque de la carte Sinon renvoi d’un code
d’erreur

Mort
Invalidation logique (volontaire ou lors
d’une tentative d’intrusion), saturation
mémoire, vol, perte, bris ...

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Cycle de vie Novembre 2001
Ré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 Cartes à puce et Java - Résumé Novembre 2001
JavaCard

Présentation

Architecture

Les outils commerciaux adaptés à la


JavaCard

Quelques applications

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - JavaCard Novembre 2001
Pré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 Cartes à puce et Java - Présentation Novembre 2001
Présentation (2/3)

Supportés Non supportés

Boolean, byte, short, Float, double, long


int Char, String
Object Tableau à n
Tableau à une dimensions
dimension Class et ClassLoader
Méthodes virtuelles Ramasse-miettes
Allocation dynamique SecurityManager
Paquetages Threads
Exceptions
Interface
Méthodes natives
Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Présentation Novembre 2001
Pré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 Cartes à puce et Java - Présentation Novembre 2001
Machine virtuelle
Implémentation en deux parties :
La partie on-card (SmartCard)
La partie off-card (JavaCard)

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - JCVM Novembre 2001
Librairies standard

JavaCard.lang

JavaCard.framework

JavaCard.security

JavaCardx.crypto

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Les standards Class Librairies Novembre 2001
JCRE
JCRE = JavaCard Runtime Environment

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - JCRE Novembre 2001
Compiler en Java (1/3)
Obtention d’un code JavaCard

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Compiler en Java Novembre 2001
Compiler en Java (2/3)
...
...
Method public static int fact(int)
public static int fact(int n) >> max_stack=2, max_locals=3 <<
{ 0 iconst_1
int i,j; 1 istore_2
j=1; 2 iconst_1
for(i=1;i<n;i++) 3 istore_1
j*=i; 4 goto 14
return j; 7 iload_2
} 8 iload_1
... 9 imul
10 istore_2
11 iinc_1 by 1
14 iload_1
Bytecode désassemblé
15 iload_0
16 if_icmplt 7
19 iload_2
20 ireturn
...

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Compiler en Java Novembre 2001
Compiler en Java (3/3)

Récapitulatif des opérations

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Compiler en Java Novembre 2001
JavaCard

Présentation

Architecture

Les outils commerciaux adaptés à la


JavaCard

Quelques applications

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - JavaCard Novembre 2001
Architecture (1/8)

Card Executive Applet 1 Applet N

Charge et sélectionne les applications Programme Programme

Communique avec le monde


extérieur
Librairies standard (API)
Gère le cycle de vie de la carte
Interface cachant l’infrastructure de la carte

Machine Virtuelle Java (interpréteur)

Exécute les applets, garantit la sécurité et gère le partage des données

Méthodes Natives

Donne accès aux ressources physiques telles que la mémoire, les E/S, le coprocesseur cryptographique

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Architecture Novembre 2001
Architecture (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 Cartes à puce et Java - Architecture Novembre 2001
Architecture (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 Cartes à puce et Java - Architecture Novembre 2001
Architecture (4/8)

Librairies standard

Ensemble d’APIs
Cache les détails de l’infrastructure
Interface facile à manipuler
Définition des conventions utilisées par
les applets pour accéder aux méthodes
natives

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Architecture Novembre 2001
Architecture (5/8)

Applets

Programmes écrits en JavaCard puis


compilés
Exécution en réponse à des
demandes du terminal

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Architecture Novembre 2001
Architecture (6/8)

Installation d’une applet

Réalisé lors de la fabrication de la carte ou


de sa mise à jour à partir d’un terminal
Chargement l’applet 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 Cartes à puce et Java - Architecture Novembre 2001
Architecture (7/8)
Sélection, activation et
désactivation d’une applet
Une Applet est inactive tant qu’elle n’est pas
sélectionnée pour être exécutée
Identification d’une Applet par une clé unique
Sélection réalisée par le terminal
Suspension de l’exécution de l’Applet active :
deselect()
Activation de l’Applet sélectionnée : select()
Le JCRE redirige tous les APDUs de
commande vers cette Applet
Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Architecture Novembre 2001
Architecture (8/8)

Communication avec les


applets

Le JCRE appelle process() lorsqu’il


reçoit un APDU de commande pour
cette applet

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Architecture Novembre 2001
JavaCard

Présentation

Architecture

Les outils commerciaux adaptés à la


JavaCard

Quelques applications

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - JavaCard Novembre 2001
Outils commerciaux

Odissey-Lab de Bull

GemXpresso Rapid Applet Development (RAD) de


Gemplus

Cyberflex 2.0 Multi8K de Schlumberger

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Les outils commerciaux Novembre 2001
Odissey-Lab de Bull

Conforme aux spécifications JavaCard


API 2.0
Sa JVM est l’une 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 Cartes à puce et Java - Odissey-Lab de Bull Novembre 2001
GemXpresso 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 Cartes à puce et Java - GemXpresso RAD de Gemplus Novembre 2001
Cyberflex de
Schlumberger

Conforme aux spécifications de JavaCard 2.0


Pas d’environnement de développement car
très facile de l’intégrer dans un environnement
de développement Java existant
Simulateur qui vérifie le code

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Cyberflex de Schlumberger Novembre 2001
JavaCard

Présentation

Architecture

Les outils commerciaux adaptés à la


JavaCard

Quelques applications

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - JavaCard Novembre 2001
Applications (1/2)

Télévision

Santé

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Applications Novembre 2001
Applications (2/2)

Carte d’étudiant

Fidélité

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - Applications Novembre 2001
Conclusion

• Carte à puce vs JavaCard

Stéphane AMATO / Julien CHABANON Cartes à puce et Java - JavaCard Novembre 2001

Vous aimerez peut-être aussi