UNIVERSITÉ MOHAMED V

Département de Mathématique et Informatique Faculté de Sciences Rabat-Agdal

Pour l’obtention d’une Licence d'Études Fondamentales -Sciences Mathématiques et Informatique

Sous le thème :

Les cartes à puce sous la technologie Java card
Réalisé par :
Ibrahim Madi MOHAMED Mezzour TARIQ

Les membres du Jury Mr El Mamoun SOUIDI Professeur de l'Enseignement Supérieur faculté de Science Rabat (Encadrant) Mr Said EL HAJJI Professeur de l'Enseignement Supérieur faculté de Science Rabat Mlle G. ORHANOU Professeur de l'Enseignement Supérieur faculté de Science Rabat

2008-2009

1

Nous tenons à remercier tout d'abord notre encadrant qui nous a accompagné de près durant tout ce travail Mr E.M Souidi pour sa disponibilité, sa confiance qu'il a su nous accorder, sa patience qu'il a su exercer à notre égard et les précieux conseils qui nous a prodigués tout au long de ce modeste projet. Nous adressons également nos remerciements aux membres de jury qui nous ont honoré en acceptant de lire et corrigé notre projet. Enfin, je profite cette occasion pour présenter mes vifs remerciements à mes parents, sans eux je ne serai plus ici aujourd’hui. Je pense en particulier à mon père et ma mère, qui n’ont ménagé aucun effort pour que je puisse être ici à ce moment. Ma tante Hassanati M’kouboi qui m’a offert mon premier ordinateur, mon petit frère Youssouf qui m’a beaucoup aidé sur mes études et à mon inoubliable amie Mlle BIRRATI Halidi, qui m’a encouragé, soutenu et beaucoup conseils. En fin, je désire également exprimer mes vifs remerciements à tout ceux qui ont contribué de près ou de loin à la réalisation de ce travail.

2

C’est poétique :

“ Je suis très émue de vous dire que j’ai bien compris l’autre jour que vous avez toujours une envie folle de me faire danser. Je garde un souvenir de votre baiser et je voudrais que ce soit là une preuve que je puisse être aimée par vous. Je suis prête à vous montrer mon affection toute désintéressée et sans calcul. Si vous voulez me voir ainsi dévoiler, sans aucun artifice, mon âme toute nue, daignez donc me faire une visite et nous causerons en ami et en chemin. Je vous prouverai que je suis la femme sincère, capable de vous offrir l’affection la plus profonde et la plus étroite amitié, en un mot, la meilleure amie que vous puissiez rêver. Puisque votre âme est libre alors que l’abandon où je vis est bien long, bien dur et bien souvent pénible ; ami très cher, j’ai le cœur gros ; accourez vite et venez me le faire oublier. A l’amour je veux me soumettre.” Ce à quoi, Alfred de Musset brillant stéganographe répondit : “ Quand je vous jure, hélas, un éternel hommage. Voulez-vous qu’un instant je change de langage. Que ne puis-je avec vous, goûter le vrai bonheur. Je vous aime, ô ma belle, et ma plume en délire couche sur le papier ce que je n’ose dire avec soin de mes vers, lisez le premier mot vous saurez quel remède apporter à mes maux.” George Sand répondit évidemment : “ Cette grande faveur que votre ardeur réclame, nuit peut-être à l’honneur mais répond à ma flamme”

3

Le thème du projet est sur les carte a puce avec la technologie Java Card. Cette technologie consiste au Développement et à la mise en place d'applet sur des cartes à Puces intelligentes, les "Smart Cards ". Ces applets sont développées avec une sous partie du langage Java. Vous trouverez tout d'abord un état de l'art de la technologie ainsi qu'une présentation de tous les aspects qui sont nécessaires pour comprendre et développer des applications pour cette technologie. Ensuite on va développer un tutorial décrivant les cartes à puce, expliquera également la technologie Java Card ainsi que la sécurité de la carte à puce. Enfin la dernière partie traitera d'un exemple d'application pour comprendre concrètement les étapes de réalisation d'une application java card dans une carte à puce. C'est une occasion pour nous de se familiariser d'environnement tel que Eclipse Netbeans, Java Card et Latex avec beaucoup

The project subject is on te smart card with Java Card technology. This technology is the development and implementation applet on smart card chips, the "Smart Cards". These applets are developed with a sub part of the Java language. You first find the state of the art smart card and the technology as well as a presentation of all aspects that are necessary to understand and develop applications with this technology. Then we will develop a tutorial describing the smart card will also explain the Java Card technology and the security of the smart card. The last part deals with a sample application to understand the practical steps for the realization of an application in a Java Card smart card. For as, it's a occasion to see lot of environment : Eclipse Netbeans, Java Card et Latex

4

Introduction.
La carte à puce peut être perçu comme un support électronique de haute technologie permettant d’intégrer des applications des applications d’intégrité et de confidentialité dans des systèmes d’information. La carte à puce est inventée part Roland Moreno en 1974, mais c’est une idée allemande. Son succès remarquable, le doit plus sur le domaine de télécarte. La carte à puce jouit des avantages considérables tout d’abord par sa taille qui lui permet d’affronter les tests de torsion sans être détériorée. Puis par le fait que tout est rassemblé au même endroit. Part sa conception, la carte à puce apparaît comme élément hautement sécurisé d’un système pouvant garder et protéger des secrets. La carte à puce propose des nouvelles fonctionnalités tout en gardant ses qualités qui on fait sa réputation, un objet portable, personnalisé et sécurisé. Elle est devenue une plate forme d’exécution à part entière. Les cartes multi applicatives capable d’abriter plusieurs applications font leur apparution. Ces cartes deviennent un support générique permettant d’embarquer plusieurs applications potentiellement communicantes, en fournissant une fournissant une plate forme d’exécution d’application utilisant des technologies objet à l’intérieur de la carte. Avec plus d’un milliard d’unités fabriquées par an, la carte à puce est un outil important de nos jours. On les rencontre plus particulièrement dans les domaines suivants : Monétique : Carte bancaire, porte monnaie. Identification : Carte d’identité nationale (ex : Comores), E-passeport (Comores). Enseignement : Carte d’étudiant. Téléphonie mobile : Carte SIM. Secteur médical : Carte Vitale (en France), carte SIS (en Belgique). Titre de transport : Passe Navigo (à Paris), Oyster (à Londres). Sécurité informatique (authentification forte et signature électronique). Dans ce cas la carte contient un crypto-processeur pour la génération des clés et le stockage de la clé privée.

5

Actuellement on est à version 'Bo'.  Création de la carte à mémoire et system (Schulemberger). au pire sa destruction. Son utilisation nécessite un équipement spécialisé qui sont les lecteurs de la carte cette lecture peut s’effectuer avec ou sans contact avec la puce. 1. 6 .Arimuva au japon dépose un brevet sur la carte à puce. Le bref historique ciaprès est celui qui semble néanmoins le plus universellement admis. • • • • En 1968 : Deux Allemand J. En 1978 : Dépôt du brevet SPOM pour la détermination d’une architecture nécessaire au fonctionnement auto programmable à la puce. • En 1979 :  La sortie de la première carte intelligente munie d’une mémoire et d’un microprocesseur (Motorola). Ce circuit intégré peut se limiter à des circuits de mémoire non volatile ou bien comporter un microprocesseur capable de traiter cette information. Presque plus de trois décennies que le premier prototype de carte à puce a été conçu et pourtant elle est toujours aussi méconnue car volontairement entourée par ses fabricants de beaucoup de secrets. • • • • En 1983 : Premier carte téléphonique à mémoire. En 1997 : Apparition du premier java carde. En 1984-87 : Normalisation sous la référence ISO 7816. Même la paternité de son invention est de discussion et ainsi suivant le pays son inventeur change.Grotrupp introduise un circuit intégré dans la carte plastique.Dethloff et H. Une technologie qui permet au microprocesseur de modifier son comportement s’il y a une alerte. Une carte à puce est un carte plastique dotée d’au moins un circuit intégré ou "puce" capable de contenir de l’information.La Carte à puce. Chronologie et historique de la carte à puce. En 1970 : K.I. le père de la carte à puce dépose 47 brevets dans 11 pays. En 1974/78: Roland Moreno. En 1984 : Adoption de la "carte bleu" (Sur un prototype Bull-CP8).

Ce type de carte communique via un microcontact relié à la puce (microchip) par des fils d’or. Les types des cartes à puce. les cartes à mémoire et les cartes à Table 2. Cet assemblage se nomme micromodule. Les cartes avec contact et les cartes sans contact. Table 2. Les cartes à contact doivent être insérées dans un appareil et dans un sens particulier (Exemple : les cartes bancaires). Les cartes avec contact.Laboratoire Cédric 7 .1.1 _ ceci résume les différentes types de carte à puce 2.2 _ Le micromodule1 1 Source : Rapport de stage –I4 Globalisation des résultats dans les mesures de performance sur les plateformes Java Card ESIEE .2. On distingue microprocesseur. On distingue deux grandes familles de type de carte.

Exemple : la carte téléphonique qui contient un compteur d’unité. 2. les seules possibilité sont le Lecture/ Ecriture en mémoire. Les contactes et l’interface électrique ne sont pas normalisé.1. Ces puces possèdent également un coprocesseur cryptographique qui réalise les opérations de chiffrement et déchiffrement de manière câblée améliorant ainsi grandement les performances. Ce coprocesseur cryptographique est associé à un générateur de nombres aléatoires RNG (Random Number Generator). Les cartes à mémoire simple et les cartes à mémoire à logique câblée. La plus part de leur caractéristiques sont communes. ce qui fait que son coût est très faible. • Sur les cartes à mémoire simple. Leur faiblesse sur la standardisation dans ce domaine rend compliquer l’identification lors de l’insertion dans un lecteur. Essaye différent protocole jusqu’à obtenir une réponse. ce dernier fait l’objet d’un brevet SPOM intégré dans une seule puce de silicium. Les cartes à mémoire ne peuvent pas être réutilisées et sont donc jetés à la fin de leur utilisation. pas de processeur donc pas de système d’exploitation. a. b. Ce dernier travaille par essaie/ erreur. Leurs fonctionnalités sont limitées.1. Une fois connectée à son lecteur. c’est un véritable ordinateur démuni d’un clavier et d’écran. Les cartes à microprocesseur. Les cartes à mémoire. Les données déjà présentes sont traitées par des fonctions simples programmées sur la puce. l’accès peut être restreint avec un PIN. 8 . Elles réunissent sur un circuit intégré de la mémoire non volatile permettant de stocker quelques centaines de bits ainsi qu’un peu de logique pour effectuer les opérations de Lecture/ Ecriture et exécuter les algorithmes d’authentification rudimentaire. le circuit ayant un nombre limité de fonction qui ne peut être reprogrammés. Elle contient une puce. On distingue deux sortes de carte à mémoire. un numéro de série et une donnée secrète permettant d’authentifier la carte. La carte à mémoire n’a qu’une la mémoire et l’interface d’Entrée/ Sortie.2. • Les cartes à mémoire à logique câblé. Elle fonctionne sous le contrôle d’un système d’exploitation inclus dans la puce. et constitue un micro-calculateur.

les routines du microprocesseur et de donnée permanentes. • L’EEPROM (Electrical Erasable Programmable Read Only Memory) : Comme le ROM. En fait c’est l’équivalent du disque dur (H. que ces cartes posent aussi quelques problèmes. EEPROM et RAM. Par ailleurs. Les cartes à puce comporte trois sorte de mémoire : ROM. ces cartes sont beaucoup plus chères que les cartes à contact. Aucune alimentation n’est nécessaire pour conserver les données. La différence et que l’on peut modifier les données stocké en mémoire. D’autre technologie de mémoire sont également en train d’apparaître sur les cartes à puce comme la mémoire Flash.D. il est utilisé pour stocker les programmes fixes de la carte. elles n’ont pas besoin d’être placées dans une machine. Bien sûr. 2. L’énergie peut être fourni par une batterie interne ou captée par l’antenne.Le microprocesseur présent sur les cartes à puce et le plus souvent un microprocesseur 8-16-32 bits. la distance de communication entre la borne de lecture et la carte est limitée (environ 10 cm). Un autre problème est que la carte est souvent en mouvement rapide dans l’espace d’échange et que le temps pour réaliser la transaction est de l’ordre de 200 ms ce qui limite la taille des données à échange. Elles sont surtout utilisées pour les applications où l’insertion et le retrait dans un lecteur ne sont pas pratiques. il peut conserver les données quand la mémoire n’est plus alimentée. 9 . • Le ROM (Read Only Memory) : Mémoire persistante. Ces cartes sont donc très populaires dans des situations nécessitant des transactions rapides (Exemple : carte pour satellite). Son contenu n’est pas préservé à l’arrêt de l’alimentation. Certaines cartes permettent de multiplier même la vitesse d’horloge par 2-4-8 atteignant une vitesse d’horloge de 40 Mhz. On ne peut ainsi ni les modifier. Elles communiquent avec l’extérieur grâce à une antenne interne reliée au micro-chip.2. Les cartes sans contacte. Les cartes sans contacte. ni les supprimer. Par exemple. Celle-ci est en effet plus efficace en espace et en temps que le EEPROM. • La RAM (Random Access Memory) : Mémoire volatile. elle est utilisée comme espace temporaire pour modifier et stoker les données. Elles transmettent alors leurs données à un appareil par onde électromagnétique.D du PC) pour les cartes à puce.

dont deux est régie par une autre norme ISO. Celui de la carte bancaire et celle de SIM.Dans la suite de ce travail. Elle spécifie les dimensions physiques (extérieur) des contacts de la puce. résisté aux détérioration de sa surface et protéger le puce lors de manipulation du stockage lors d’utilisation normale. La résistance : Les cartes dois être opaque au rayon UV et X. L’ISO 7816-2 : Elle définit les aspects électriques et la situation des contacts sur la carte. qui est le 7816-12. GND : Masse électrique de la carte. • • • • • • VCC : Tension d’alimentation positive de la carte fournie par le lecteur. on traitera spécifiquement des cartes à contact. VPP : Tension de programmation de la carte fournie par le lecteur. même si la plupart des concepts sont transportables directement aux cartes sans contact. sa tenson est zéro. 10 . L’ISO 7816-1 : Elle définit les caractères physiques des cartes à puce • • La géométrie : Même si on connaît en général deux formats de la carte à puce. Elle ne doit pas être endommagée par un champ magnétique statique. RST : C’est le Reset initialise le microprocesseur et rétablissement de l’alimentation. 3. utilisé pour l’USB. La tension varie entre 3-5 voltes. Elle distingue huit différents contacts. Caractéristique physique des cartes à puce. cette option n’est plus utilisé actuellement. Le plus important standard définissant les caractéristiques des cartes à puce qui fonctionne avec un contact électrique est le ISO 7816. Un seul sens de communication n’est autorisé à un moment donné. I/O : utilisé pour le transfère des données et des commandes entre la carte et le lecteur en mode semi-duplexe. On note 4/15 normes pour les cartes à puce. CLK : Horloge fourni à la carte par le lecteur.

Ils sont suivis par l’identifiant optionnel PIX (Proprietary Application Identifier eXtension) d’une longueur allant 11 . L’ISO 7816-5 : Cette norme définit le système de numérotation et les procédures d’enregistrement et d’attribution des identifiants des applications (AID. la fréquence d’horloge et la vitesse de communication. ou Application IDentifier). tels que le voltage.Table 2. par lesquels les cartes à puce communiquent avec le lecteur.Dimension et contact de la carte à puce L’ISO 7816-3 : Cette norme définit l’interface électrique et les protocoles de transmission : • Les protocoles de transmission (TPDU. La réponse à un reset (ATR. Fréquence d’horloge 1 -5 Mhz. et la vitesse des communications < 115200 bauds: L’ISO 7816-4 : Cette norme vise à assurer l’interopérabilité des échanges. T=14 : réservé pour les protocoles propriétaires. Transmission Protocol Data Unit) : T=0 : protocole orienté octet. Ils sont représentés par des tableaux d’octets de taille allant de cinq à seize. le terminal ayant toujours l’initiative de communication. Les échanges s’effectuent en mode clientserveur. Les cinq premiers octets représentent le numéro d’enregistrement du fournisseur d’application (RID. Registered Application Provider IDentifier en anglais) qui est attribué par la Copenhagen Telephone Company Ltd. Un unique AID est associé à chaque application et à certains fichiers sur la carte.3 . T1 : protocole orienté paquet. • • La sélection d’un type de protocole. ou Answer To Reset en anglais) qui correspond aux données envoyées par la carte immédiatement après la mise sous tension. • Les signaux électriques. Elle définit les messages APDU (Application Protocol Data Units).

sa langue. 12 . L’ISO 7816-6 : Cette norme spécifie des éléments de données inter-industrie pour les échanges. tels que le numéro du porteur de carte. L’ISO 7816-7 : Cette norme définit les commandes inter-industrie pour langage d’interrogation de carte structurée (SCQL). mais le PIX doit être différent. sa photo. etc. la date d’expiration.jusqu’à 11 octets. L’identifiant RID est le même pour le paquetage et l'applet.

Cette spécification Java Card s’agit d’une adaptation du langage qui était déjà disponible pour les ordinateurs et qui tient compte des spécificités de la carte. 16 K EEPROM et 24 K de ROM.Java Card. qui permet de développer des applications de façon plus aisée. telle qu’elle est vendue par Sun microsystems. La spécification java Card a été introduite pour plusieurs raison. Schlumberger devint alors la première entreprise à acquérir une licence en proposant un draft de quatre pages. Historique. Un groupe d’ingénieurs cherche à simplifier la programmation des cartes à puce tout en préservant la sécurité. Le plus grand défit de la technologie Java Card est d’intégrer les composantes java sur la carte à puce tout en gardant assez d’espace pour les applications. • En Novembre 1996 : c’est la spécification Java Card 1.II. Une Java Card est donc une carte à puce sur laquelle il est possible de charger et d’exécuter des programmes Java. orienté objet. Le langage de programmation Java apparaît comme la solution. 13 . La technologie Java Card permet aux cartes à puce et à d’autres périphériques à mémoire limitée de faire fonctionner des applications écrites en langage Java. définit une plate-forme sécurisée pour cartes à puce.0. Sa mémoire est au minimum d’ordre 1 k de RAM. la séparation des application du système d’exploitation du système d’exploitation en fin offrir aux programmeurs d’applications. appelés applets. notamment la limitation du nombre de produit différent à développer pour la satisfaction des besoins de tous les secteurs. portable et multi-application qui intègre beaucoup des avantages du langage Java. Tout d’abord c’est un langage de haut niveau. De manière synthétique. on peut dire que la technologie Java Card. 1. Rappelons que à nos jours la carte à puce représente l’une des petites plates-formes informatiques. La portabilité de leur code entre les différentes cartes disponibles.

Elle se compose en fait de trois spécifications :  la Java Card 2.• En Février 1997.  la Java Card 2.1 est la définition explicite de la machine virtuelle de la Java Card (JCVM : Java Card Virtual Machine) et du format des applets. . Sun microsystems présente les spécifications Java Card 2. Le but de ce consortium industriel est d’identifier et de résoudre les problèmes de la technologie Java Card en proposant des spécifications à Java Soft. Il a également pour objectif de promouvoir des APIs Java Card afin de permettre son adoption par l’industrie de la carte à puce. Bull et Gemplus se joignent à Schlumberger pour co-fonder le Java Card Forum. Sun et des utilisateurs. Elle ajoute aussi des considérations 14 . ce sont près de quarante entreprises qui ont acquis la licence d’exploitation de la technologie Java Card : • En Juin 2002.1 des spécifications Java Card.1 API Spécification. permettant ainsi une vraie interopérabilité. Sun microsystems publie la version 2.0. il y a eu quelques modifications des APIs notamment au niveau de la cryptographie et des exceptions. L’environnement d’exécution des applets a également été standardisé. • En Octobre 2000.2 des spécifications dont les principales nouveautés sont la prise en charge des canaux logiques et de l’appel de méthode à distance RMI [133]. Il n’y a encore rien sur le format des applets téléchargeables.1. Dans cette nouvelle version.1 Virtual Machine Specification. • En Novembre 1997.0 qui consistent en un sous-ensemble du langage et de la machine virtuelle Java.1 des spécifications. le Java Card Forum regroupe les fabricants de cartes. • En Mars 1999 sort la version 2.  la Java Card 2. Mais la contribution la plus significative de la version 2. • En Mai 2000. Aujourd’hui.1 Runtime Environment Specification. de petites corrections et clarifications de la version précédente ont abouti à la version 2. Elles définissent des concepts de programmation et des APIs très différentes de celles de la version 1.

• Et Octobre 2003. La sécurité est également au rendez-vous. Les avantages de la technologie Java Card pour les développeurs d’applications des cartes à puce sont pour l’essentiel les mêmes que ceux que Java a pu apporter par rapport aux langages de programmation classiques. de l’os et des éventuelles spécifications du fabricant de la carte. On peut citer : • • • • • La programmation orientée objet offerte par Java (contre l’assembleur auparavant). Une plate-forme ouverte qui définit des APIs et un environnement d’exécution standardisé. il est encore possible de télécharger des applets. Il y a ensuite l’utilisation d’une machine virtuelle permettant aux applications embarquées de rester complètement indépendant du hardware. Une plate-forme qui encapsule la complexité sous-jacente et les détails du système des cartes à puce. la publication de la version 2. une fois la carte fournie à son propriétaire. La capacité de l’espace mémoire d’une carte à puce est très faible. La possibilité d’utiliser les environnements de développement existants pour Java. Ainsi. La plate-forme Java Card ne peut être qu’une partie du langage Java qui a été allégé considérablement et réduit au strict minimum pour effectuer ses propres applications.2.sur la façon d’installer et d’effacer des applications sur la carte et quelques nouveaux algorithmes cryptographiques. Les applications de la Java Card peuvent donc être continuellement mises à jour sans avoir besoin de changer de carte. 2.1 [169. 171] corrige l’API de la version précédente et apporte quelques clarifications mais aucune nouveauté. Java Card a été créé pour s’adapter à ces contraintes et construire une carte Java tout en conservant suffisamment de place pour embarquer des applications. 170. Les Java Cards étaient parmi les premières technologies de cartes à pouvoir héberger sur une même carte des applications provenant de fournisseurs et de domaines d’utilisation totalement différents. 15 . La technologie Java Card.

Clonage d’objet. La machine virtuelle Java Card. aussi volatile que non volatile en font une denrée rare qu’il ne faut surtout pas gaspiller. La première implantée sur la carte et contient l’interpréteur de byte code. float. des applets et d’autres caractéristiques • La spécification de l’API : Elle décrit l’ensemble des paquetages et des classes Java nécessaires à la programmation des cartes à puce mais aussi quelques extensions optionnelles. . alors que l’autre partie hors carte (situé à l’ordinateur) vérifie le code et effectue des transformations sur ce code (convertisseur).Package. . .Ramasse-miettes et finalisation.Certain type de base : long.1. double. byte. méthode virtuelle.Multi-tâches. Quelque soit l’implémentation de utilisée.. Caractéristiques optionnelles . conséquence la machine virtuelle Java Card se scindera en deux partie. Le peu de mémoire disponible. surcharge. . .Fonctionnalité supportée du langage Java Fonctionnalité non supportée du langage Java .Chargement dynamique de classe.Tableau à plusieurs dimensions. . .Héritage.Certains types de base : booléen.Security manager. . • La spécification de la Java Card Virtuel Machine (JCVM) : Elle définit un sousensemble du langage de programmation Java et la définition de la machine virtuelle nécessaire pour les applications sur cartes à puce • La spécification du Java Carde Runtime Environment (JCRE) : Elle décrit précisément le comportement de l’exécution de la Java Card. comme la gestion de la mémoire. interfaces et exception du langage Java. . Cette 16 . short.création dynamique d’objet.Le mot clé int et le support des entiers sur 32 bits sont optionnels.Sérialisation d’objet.Caractère et chaîne de caractère. classes.Tableaux à une dimension. . 2. Table 3. .1 _ Le tableau suivant résume les fonctionnalités supportées et non supportée de Java. On distinguera aussi trois spécifications principales dans Java Card. elle doit au minimum implémenté ses trois spécifications. . .

Elle ne contient non plus les chargements dynamiques de classe car pas d’accès à l’endroit où sont stockés les fichiers de classe depuis la carte.1. Elle prétraite tous les fichiers .1. il permet au applet d’être indépendantes du matériel (hardware). Le JCVM partie sur l’ordinateur.1 _ Ceci résume l'architecture retenue par Java Card.CAP produits par le compilateur à partir du code source. a. en consacrant uniquement à l’exécution des applications. Sécurisé le temps d’exécution. Elle ne contient pas le vérifieur car trop gourmand pour être stocké et /ou exécuté dans la carte. Cette partie contient l’interpréteur. Contrôle de l’allocation mémoire et de la création des objets. 2. Le convertisseur exécute des tâches qui sont normalement exécutées par la JVM au moment du chargement des classes : 17 . Il exécute en particulier les tâches suivantes. le convertisseur et le signeur. Le fichier CAP est ensuite chargé sur la carte à puce et exécuté par l’interpréteur durant le processus de conversion. • • • Exécution des instructions du byte code et des applets. Ces fichiers .b. Le JCVM partie sur carte. Cette partie comporte le vérifieur.Class contenu dans le package et les convertis en fichier .CAP (converted Applet).séparation de la machine virtuelle permet de gagner de la place en mémoire. Mais aussi pas de vérifieur dans la carte permettant de vérifier dynamiquement la validation de classe chargée. Figure 3. 2.

Par exemple le fichier CAP charge dynamiquement les classes d’applet après la conception de la carte.2.1.CAP est un fichier exportation du package converti si le package à importé de class d’autre package. les extensions industrielle spécifique et les classes système.CAP puis charge ces fichiers d’exportation de ces packages pour produire un fichier . la communication avec le réseau. En plus les fichiers d’exportation ne sont chargés pas chargé sur la carte et ne sont donc pas utilisable directement par l’ordinateur. c. stocke et crée des structures de données de la machine virtuelle pour représenter les classes. Mais un fichier CAP pour Applet convertie. La technologie Java apporte deux nouveaux formats binaires de fichier qui permet de faciliter l’installation et prévoir un format plus simple a exécuté pour une plate forme en manque de ressource. Le JCRE et son modèle de fonctionnement. des méthodes et des champs en une forme plus compacte supportée par Java Card. le JCRE renferme la structure des classes d’application Java carde (APIs). contrairement au fichier CAP prévu pour une exécution immédiate et repose sur une phase d’édition de liens simplifiée. En effet ce n’est pas le fichier class qui est chargé sur la carte.• • • • • Vérifie la formation des Images de Java classe. Dans la machine virtuelle Java (Interpréteur de byte code). c’est un support de exécution d’Applet carte grâce à l’API Java Card. La conversion des références symbolique de classe. Les modifications du fichier Class. Le JCRE sépare 18 . Il ne contient en effet que des informations sur les APIs publiques des classes et des signatures des méthodes et des champs. l’exécution d’Applet). 2. Vérifie les violations du sous langage Java Initialisation des variables statiques. Le fichier Class n’est pas exécutable directement. En fin alloue. Il gère les ressources da la carte (leur sécurité. mais produit et consommé par le convertisseur à des fins de vérification. il doit subir une phase importante d’édition des liens. Le JCRE. 2. Le convertisseur peut aussi prendre aussi prendre un ou plusieurs fichier d’exportation différent du fichier .

Quand une commande arrive le JCRE sélectionne soit un Applet à exécuté comme indique dans la 2 Source : Rapport de stage –I4 Globalisation des résultats dans les mesures de performance sur les plateformes Java Card ESIEE . Le JCRE entre dans une boucle en attente d’un ordre APDU du serveur. La seconde modifiable : constituée des Applets chargée dans la carte. Figure 3. En conséquence la seule connaissance de l’interface du JCRE doit suffire pour permettre de développer des Applets.1 _ Structure de Java Card2 À l’introduction de la carte dans la machine (CAD. Chaque APDU contient soit un ordre du serveur à l’Applet.habituellement les applets de la propriété de la technologie des cartes à puce des vendeurs.Card Accetance Device). soit une requête de l’Applet au serveur après l’initialisation du JCRE. le JCRE opère comme une carte à puce en établissant une communication APDU (Application protocol data unit) d’Entré/sortie avec un serveur. La conception de programmation Java Card du point de vue global peu être représentée comme un système comportant deux zones différentes.Laboratoire Cédric 19 . La première est figée : il renferme le JCRE et le système d’exploitation ainsi que d’extension éventuellement fournies par le fournisseur de la carte. Celui-ci envoie des ordres APDUs à la Java Card pour l’intermédiaire d’une communication utilisant les points de contacts d’entrée sorti. L’application se situe exclusivement dans la zone modifiable.

lang.rmi et javacard.a. et quelques classes d’exceptions reliées à la machine virtuelle. Jusqu’à la version 2. java. 20 .1.security) et un paquetage d’extension (javacardx.3.crypto). la package java.commande soit envoie directement la commande à une applet déjà sélectionnée.lang. Sur le plate forme Java Card. Les classes dans ces APIs sont compactes et succinctes. Une fois la commande exécutée. Beaucoup de classes de la plate-forme Java ne sont pas nécessaires et donc pas disponibles sur la plate-forme Java Card. L’API Java Card. Les classes supportées sont Object. javacard.lang est un sous-ensemble du package java équivalent java. Le procédé se répète à l’identique à l’identique quand une nouvelle commande arrive. Le package java.lang.3.service. Mais depuis la version 2. Elles contiennent également des classes spécialement conçues pour supporter le standard ISO 7816 des smart cardes. L’Applet sélectionnée prend alors le contrôle et exécute la commande APDU. Les classes d’exceptions fournies permettent également d’assurer une sémantique cohérente lorsqu’une erreur apparaît à cause d’une violation du langage de programmation Java par exemple.2 trois autres paquetages ont été ajoutés pour supporter JCRMI : java. l’Applet envoie une réponse à l’application hôte et redonne le contrôle au JCRE. Elles incluent des classes adaptées à la plate-forme java fournissant un support sur le langage et des services de cryptographie.framework.framework et javacard. 2. Les APIs Java Card consistent en un ensemble de classes spécialisées dans la programmation d’applications de smart card conformément à la norme ISO 7816.1 des spécifications Java Card les APIs ne comprenaient qu’un noyau de trois paquetages (java. la machine virtuelle Java et celle Java Card lanceront toutes les deux NullPointerException quand on voudra accéder à une référence null. 2.io. Throwable. La classe Object est définie comme la classe racine de la hiérarchie des classes sur la plate-forme Java Card.

2. Son implémentation est basée sur le package Java du même nom java. puisque la classe System du paquetage java. Le paquetage javacard. La classe Java Card Object par exemple ne définit qu’un constructeur par défaut et la méthode equals. Les deux autres classes restantes sont AID pour faire des opérations sur les AIDs et Util qui propose des méthodes souvent utilisées dans la programmation en Java Card. Signature.lang de la plate-forme Java n’est naturellement pas supportée. Le package javacard. Il définit notamment la classe KeyBuilder pour fabriquer des clés cryptographiques de différents types et des interfaces pour les manipuler. la plate-forme Java Card propose dans le paquetage javacard. 2.security de la plate-forme Java. Enfin.3.3.security. Sa structure. C’est aussi dans ce paquetage que se trouve l’interface MultiSelectable qui indique si l’applet accepte les canaux logiques et la multi-sélection. Il met principalement à disposition du programmeur les classes abstraites RandomData. la classe APDU nécessaire pour gérer les communications des applets avec l’extérieur.Mais aussi beaucoup de méthodes java ne sont toutefois pas disponibles dans ces classes. Le package javacard.framework la classe JCSystem afin d’accéder aux services du JCRE.framework. Depuis Java Card 2. Le package javacard. ce paquetage fournit d’autres classes comme la classe OwnerPIN qui propose une implantation de référence du mécanisme de PIN.security fournit une architecture aux fonctions cryptographiques supportées sur la plate-forme Java Card. Plus important. il définit la classe de base Applet fournit la structure sous-tendant le modèle d’exécution de l’applet en interaction avec le JCRE pour toute la durée de vie de l’applet.framework apporte les classes et les interfaces essentielles pour programmer des applets Java Card. Cette classe permet notamment de gérer les mécanismes de transaction et de partage d’objets au travers du pare-feu en association avec l’interface Shareable mais aussi de créer des objets transients et d’appeler le mécanisme de ramasse-miettes si celui-ci est présent. Il fournit également une autre classe importante dans ce package.c.b.2. MessageDigest. et Checksum pour générer respectivement 21 .

Java Card n’impose pas aux vendeurs d’implanter tous les algorithmes cryptographiques. En effet. Le paquetage javacardx. 2. Celle-ci n’est présente que pour les besoins de JCRMI qui en hérite au travers de la classe RemoteException du paquetage java.d. Ce paquetage est un sous-ensemble strict de celui de la plate-forme Java.des nombres aléatoires. ni même un ensemble minimal.3. Il définit également l’exception CryptoException pour la gestion des différentes erreurs. dans le domaine de la cryptographie. 2.rmi Dans la dernière version (2. On peut ainsi se retrouver avec des Java Cards aux possibilités bien différentes dans les domaines cryptographiques.2) de la spécification Java Card a été introduit une version simplifiée des appels de méthode à distance de Java (ou RMI pour Remote Method Invocation) permettant de dispenser le programmeur de la gestion des APDU.crypto.crypto est un paquetage d’extension.3. Le paquetage java. des empreintes et des sommes de contrôle.rmi. Java Card permet : • De séparer les applications pour carte à puce de leur environnement d’exécution. des signatures. le protocole RMI est toujours transporté dans des APDU.3.io. autorisant la diffusion de cartes à puce génériques et d’applets portables. En résumé. 2. Ce paquetage définit l’interface Remote qui identifie les interfaces dont les méthodes peuvent être appelées par des applications clientes du CAD.f. Le package javacardx. Le paquetage java. Il ne propose qu’une exception IOException pour indiquer un problème de communication survenu. Il contient les classes cryptographiques et les interfaces dont les spécifications sont régulées par les Etats-Unis.e. 22 . Cependant. Il définit également l’exception RemoteException qui pourra être lancée pour indiquer qu’une exception s’est produite lors de l’exécution d’un appel de méthode à distance. Il définit une classe abstraite de base Cipher qui supporte les fonctions de chiffrement et de déchiffrement pour les différents algorithmes implantés sur la carte.

Le paquetage javacard. afin de permettre à un programme Java fonctionnant côté poste client d’appeler des méthodes sur les objets distants d’une applet Java Card.). 2. le paquetage fournit les classes CardRemoteObject et RMIService.3.g. Ces classes contiennent donc les fonctionnalités minimales exigées pour permettre l’invocation de méthodes à distance pour la plate-forme Java Card (JCRMI). SecurityService est utilisé pour définir des services qui fournissent des méthodes pour connaître le niveau de sécurité actuelle (e. la fonctionnalité de base d’un service. Le paquetage contient également l’interface Service que doivent implanter tous les services. Il fournit aussi une classe d’agrégation. RemoteService et SecurityService pour l’implantation de services aux fonctionnalités plus spécifiques. La présence de plusieurs applications sur une même carte pouvant être sélectionnées successivement. La classe BasicService fournit une implantation par défaut des méthodes définies dans l’interface Service et par conséquent. De structurer des applications librement en gérant des objets persistants. Par ailleurs. sans forcément passer par un système de fichier. 23 . intégrité des données entrantes. • • RemoteService est utilisé pour définir des services qui permettent à des processus distants d’accéder aux services présents sur la Java Card.framework. Tous les services seront donc des sous-classes de BasicService. confidentialité. Il existe aussi deux sous-interfaces de Services. etc. Cette interface propose toutes les méthodes nécessaires pour traiter les commandes APDUs.service.• • • Le chargement d’application dynamiquement durant la vie de la carte. Ce paquetage fournit un ensemble de classes et d’interfaces qui permettent à une applet Java Card d’être conçue comme le regroupement de plusieurs services. et pour router les commandes APDUs vers les services enregistrés.g. appelée Dispatcher qui propose des méthodes pour ajouter et retirer des services de sa base interne.

false ou null). Celui-ci isole 24 . une méthode privée ne peut pas être invoquée à l’extérieur de sa classe. Par exemple. historiquement il n’était pas possible d’embarquer de vérifieur à cause des faibles capacités mémoire des cartes à puce. méthodes et champs est strictement contrôlé. 3. il nous conviendrait de faire un bref récapitulation sur les bases de la sécurité du mère langage Java. Ainsi on ne peut pas convertir des entiers en pointeurs.2.1.3. les spécifications Java Card ont introduit un mécanisme orthogonal : le pare-feu…. Il existe plusieurs types de mécanismes sécuritaires fournis par Java Card : Ceux qui sont intégrés au langage java et ceux qui sont rajoutés pour pallier l’absence de vérifieur embarqué. C’est pourquoi. En effet. Pour le mécanisme rajouter pour pallier l’absence de vérifieur embarqué on note : • Objets persistants et temporaires : Les objets sont stockés par défaut dans la mémoire persistante. Quand la carte est retirée ou quand l’applet sélectionnée est libérée ces objets reprennent leur valeur par défaut (zero.Sécurité supplémentaire des Java Cards. La sécurité Java Card. Les variables doivent être initialisées avant d’être utilisées. 3. Pour des raisons de sécurité et de performance la plateforme Java Card autorise également des données temporaires comme des clés de session à être stockées dans des objets temporaires de la mémoire RAM. Le langage Java Card étant un sous ensemble du langage Java. Or. • Le langage Java n’a pas de pointeur arithmétique. • Pare-feu d’applets : La sécurité et l’intégrité du système JCRE réside dans le fait que les Java Cards sont protégées par le pare-feu d’applet. Le niveau d’accès de toutes les classes. • • • Le langage Java est fortement typé. Sécurité du langage. sur un ordinateur classique les sécurités intégrées au langage et le typage fort sont normalement assurées par la machine virtuelle en association avec le vérifieur de bytecodes.

Les applets et le JCRE peuvent partager des données à travers des tableaux globaux. Ensuite une applet a accès aux ressources du JCRE `a travers les points d’entrée des objets. • Partage D’objets : Voici la façon dont les objets sont partagés dans le système Java Card : Le JCRE est un utilisateur privilégié qui a un accès total aux applets et aux objets crées par celle-ci. 25 . Les applets ne peuvent pas se voir entre elles à moins d’être définies dans le même package. Enfin les applets peuvent partager des objets qui implémentent des interfaces partagées.l’applet en séparant son espace de celui du système.

III. Dans ce domaine de la sécurité. elles assurent aussi un certain niveau de sécurité au travers de la multitude de tests de caractérisation effectués. Et comme dans toutes les guerres. elle jouit encore de la réputation d’être le périphérique le plus sécurisé au monde. 1. Les encarteurs utilisent des technologies d’impression sophistiquées lors de la fabrication du corps de carte. Les protections que apporte la carte à puce. La sécurité d’une carte à puce est une merveille de technologie basée sur les techniques les plus abouties en matière de sécurité.1. Les constructeurs jouent aussi sur le design du microcontact pour rendre la puce plus fragile à l’extraction. Cet ensemble de techniques de défense. 1. Les normes ISO 7816 sont principalement fonctionnelles. Ces différentes protections visent à faire échouer les attaques chimiques d’extraction du micromodule. même si certains acteurs du monde de la carte (e. est une première barrière assez difficile à franchir pour le non-initié. Souvent le corps de carte comprend aussi un hologramme et il possède un embossage des informations relatives au porteur. On pensera tout particulièrement à l’ISO 7816-1 qui porte sur : 26 . Toutefois. les fabricants de produits des Technologies de l’Information et les attaquants se livrent une véritable guerre. La sécurité d’une carte réside dans son apparence. Au niveau physique. Le but des fabricants est de pousser l’attaquant à endommager la puce lors de l’ouverture. Le matériau constituant le corps de carte peut aussi être de différentes natures selon le niveau de résistance souhaité. Si aujourd’hui son niveau de sécurité est si élevé et si reconnu c’est grâce à une multitude de caractéristiques sécuritaires que nous allons détailler ci-après. bien que contournables par des spécialistes de la micro-électronique et des matériaux.g. le secteur bancaire) par une mauvaise intégration et une mauvaise utilisation de la carte à puce dans un système global ont pu mettre à mal son crédit. la rendant ainsi inutilisable. on assiste à une escalade des protections. La sécurité de la carte à puce. Il peut y avoir différentes couches d’impression à diverses profondeurs dans le plastique du corps de carte.

les constructeurs se sont mis à intégrer des mémoires de type PROM (mémoire persistante) qui permettaient de corriger les problèmes en ajoutant du code aux bonnes adresses mémoire. la résistance mécanique des cartes et des contacts (au pliage. 27 . les fondeurs sont mis à intégrer des détecteurs sur la carte afin de déterminer son utilisation dans un environnement hostile. des détecteurs de tension et de fréquence. passer outre ces dispositifs de protection et avoir un accès direct à la puce. lui. à la torsion) . Certaines attaques nécessitent un accès direct à la puce. avec le développement de puces de plus en plus complexes.2. En effet. 1. Tous ces mécanismes même s’ils ne sont pas garants de l’inviolabilité de la puce. un attaquant qualifié pourra. l’exposition de la carte à des champs magnétiques . C’est la base de la pyramide sécuritaire que constitue une carte à puce. Aussi. le profil de surface des contacts . des détecteurs de température. la résistance électrique des contacts . les systèmes d’exploitation devenaient de plus en plus conséquents et donc sujets à de plus en plus de bugs. À l’inverse. l’interférence électromagnétique entre les pistes magnétiques éventuelles de la carte et de ses circuits intégrés . la dissipation thermique du circuit intégré.• • • • • • • • la protection contre les ultraviolets et les rayons X. l’attaquant ne disposant pas des compétences et du matériel nécessaires à la désactivation de ces détecteurs devrait voir ses attaques échouer. Dès lors. Puis. Les constructeurs de puces ont donc rivalisé d’ingéniosité pour assurer un haut degré de sécurité. Au niveau matériel. ont pour but de rendre le travail d’un attaquant plus difficile. Une des premières sécurités a été d’introduire un numéro de série unique pour chaque pièce. alors c’est tout l’édifice qui s’écroule. S’il peut être pris en défaut. l’exposition de la carte à une décharge d’électricité statique . Par exemple. on peut trouver sur une carte des détecteurs de lumière ou d’autres rayonnements.

en les chiffrant par exemple. mais aussi l’enfouissement des bus sensibles dans les différents niveaux de métallisation. Sur certaines puces le système d’exploitation peut aussi changer les fréquences de travail pour perturber les observations de l’attaquant mais il peut également assurer qu’une suite d’opérations va s’effectuer en un nombre de cycles constant indépendamment des données traitées afin que l’observateur ne puisse déterminer ces données. Ce dernier point signifie que des octets situés à des adresses mémoires consécutives ne sont pas forcément situés à des positions consécutives sur le circuit.3.Parmi les autres dispositifs de protection qu’on trouve sur une carte il y a le chiffrement des données sur les bus et dans les mémoires. Pour résumer. Le système implante souvent une politique très stricte de contrôle d’accès aux données. la redondance de certaines fonctionnalités matérielles et la dissémination de l’information. C’est encore lui qui sécurise les entrées/sorties. Le système d’exploitation assure aussi l’intégrité des données via des mécanismes de checksum sur toute ou partie de la mémoire mais aussi via des mécanismes de transaction et d’atomicité des opérations. la pose de leurres (i. pistes reliées à aucune autre). 1. ainsi qu’un vrai générateur de nombres aléatoires pour tirer les aléas nécessaires dans quasiment tous les algorithmes cryptographiques. tous les grands développeurs d’applications ou de systèmes d’exploitations pour carte à puce disposent de guides sécuritaires de programmation. Le troisième niveau de sécurité des cartes à puce est réalisé par le logiciel et plus particulièrement par le système d’exploitation. L’accès à des données nécessite la vérification de règles qui dépendent des opérations à réaliser. Ainsi. Au niveau logiciel. Deux autres mécanismes sécuritaires fondamentaux sur la carte sont le coprocesseur cryptographique qui accélère les calculs cryptographiques et rend leur observation beaucoup plus difficile. La sécurité apportée par le logiciel est aussi la conséquence de l’application de techniques de programmation sécurisée. le système d’exploitation est essentiel pour assurer la sécurité des applications qui feront appel à ses services. 28 . Il peut également implanter des mécanismes de migration du code et des données dans les mémoires afin d’empêcher un attaquant de les localiser.e.

1. Les émissions électromagnétiques. et qui décrivent les règles de bonne programmation (e. Ces attaques sont très simples. Celle-ci consiste tout simplement à observer d’une façon intelligente le fonctionnement du circuit électronique. voire même en avance. Elles portent sur la connaissance de la tension et la fréquence d’alimentation mais aussi de la température. Les attaques non-invasives. Exemple : les fraudeurs testent souvent le générateur de nombre aléatoire à différentes températures afin de voir s’ils ne peuvent pas modifier son entropie pour obtenir un générateur prédictible. les risques liés aux attaques non-invasives sont généralement considérés comme réels.g. 2.).à l’état de l’art des attaques.1. • • • Le temps d’exécution. Les attaques par canaux cachés. L’idée principale. nous distinguons les attaques basées sur l'observation de l'environnement de la carte de celles basées sur sa perturbation. Ainsi. 2. les attaques non-invasives ne nécessitent pas de «détruire» la carte à microprocesseur cible. 2. On note plusieurs types de canaux cachés. Les attaques hors conditions opérationnelles. etc. De ce fait. La consommation en courant. mais peu efficace en raison des détecteurs de conditions anormales installés sur la puce. 29 . En opposition avec les attaques invasives. description des informations nécessaires pour restaurer les états une transaction échouée.b. Les attaques classiques. certaines attaques non-invasives peuvent être réalisées à l’insu et au détriment du porteur de la carte. Les attaques sur la fréquence d’alimentation peuvent servir à un attaquant de mieux comprendre les opérations faites dans la puce en les combinant avec des procédés d’observation de canaux cachés. c’est de manipuler la puce en dehors de fonctionnement normal.a. Parmi les attaques non-invasives. décrémentation du compteur d’essais du PIN avant de faire la comparaison. 2.1.

X.d. Ces utilisations peuvent mettre la carte ou l’application dans un état non prévu par les spécifications. 2.2.1. Les techniques sont semblables à celle utiliser pour effacer la mémoire PROM avec les rayon Ultra Violet. que cela soit par la face avant ou arrière de la puce.e. Ces attaques ne sont plus performantes. Ce type d’attaque consiste à l’exposition de la puce à un rayonnement afin de modifier l’exécution des applications embarquées. Les causes de ces vulnérabilités sont souvent des bugs du programmeur de l’application ou du système d’exploitation. Souvent très efficace. En plus la carte se retrouve souvent dans un état inexploitable.1. 2. Une fois la puce nue. et lumière blanche….c. On pourra faire de glitches positifs ou négatif ou à l’aide de laser envoyer des impulsions lumineuses de courte durée et de différentes natures sur la puce nue. le fraudeur peut donc l’exposer avec le rayonnement voulu. IR.1. à perturber de manière très brève l’environnement. Plusieurs types peuvent être utiliser telle que les rayon UV. le temps d’exposition est très long pour causer une erreur. Ce sont les attaques causées par une mauvaise utilisation du produit (souvent involontaire) de la part de l’utilisateur. Ces attaques nécessitent ce qu’on appelle « Ouverture ». Cette ouverture nécessite l’utilisation de procéder physico-chimique (Extraction à chaud en utilisant des acides) pour retirer la plastique sans altérer le circuit. 30 . Il ne faut essayer différent type de perturbation et parfois même les combiner pour obtenir des bons résultats. cette attaque consiste durant une exécution. Les attaques erreurs. Les attaques par rayonnement. L’injection de faute est réalisée sur plusieurs exécutions des mêmes programmes à différents moments dans le temps afin de couvrir la zone intéressante et cela en faisant varier la durée d’exposition de la puce à la perturbation. Bien sûr qu’il existe également des détections pour ces rayonnements mais peut être désactivé par les fraudeurs. Les attaques par injection de fautes. (UV).

2. Elles nécessitent un équipement rare et coûteux. mais aussi un niveau de connaissance et compétence très élever On distingue trois types d’attaque. • • Collecte des informations sur la carte pour mieux préparer des attaques matérielles et logicielles. La modification de circuit.3. d’y creuser des cavités et mène capable de déposer de la matière (Isolante ou conducteur) à sa surface. 31 . Il est possible en utilisant les analyses physiques de reconstruire toute la circuiterie de la puce. Attaquer la machine et le pare-feu. Celle-ci permet d’étudier la carte et de lui faire réaliser des opérations.2. Elle consiste à faire une rétro-conception de la puce afin d’en connaître tous les secrets et donc de pouvoir mieux l’attaquer voir même la cloner. Grâce à la possibilité de charger des applications contenant du code malicieux. Il suppose l’utilisation d’équipement comme FIB (Focus Ion Beam). Les attaques invasives.2. 2. un outil permettant à la fois d’observer un circuit comme un microscope électronique à balayage.2. Elle ne peut utiliser que le service présent sur la carte ce qui réduit le champ d’investigation pour le fraudeur.a.b. Les attaques invasives impliquent des modification au niveau du câblage de la puce on doit avoir accès aux composants élémentaires et aux bus internes du microprocesseur afin de lire/écrire/effacer des données ou même de modifier sa structure.2. particulières permettant de l’attaquer plus facilement. 2. Le micro électronicien se sert de cet outil. pour modifier à loisir la schématique d’un circuit. Les attaques internes. les cartes à puce multi-applications ouvertes sont la possibilité de créer des attaques • D’identification les services présent sur la carte et déduire le comportement probable d’une applet officielle (un applet officielle est une applet installé par un organisme officiel). ce qui permet de recenser les points sensibles pour pouvoir espionner les informations. Le rétro-conception matériel.

suivi de données de longueur LEN en terminant par SW1 et SW2 (0x90 0x00 lorsque la commande s’est déroulée avec succès). Ainsi. La carte communiquait avec le terminal via des commandes/réponses APDU traitées directement par le masque de la carte. la carte répond en envoyant le code instruction INS. La réponse APDU sert à accuser réception la commande APDU envoyée par le terminal. le fonctionnement de la carte à puce se faisait ainsi.4 _ L'approche traditionnelle de la programmation de la carte à puce Avec l'approche Java Card.5 _ La programmation de la carte à puce telle qu'il est conçu avec Java Card La communication entre l’hôte et la carte est half-duplex. Ce dernier lit. Traditionnellement. La communication entre la carte et le terminal. Elle exécute l’instruction spécifiée dans la commande et retourne une réponse APDU. Un APDU contient une commande ou une réponse. Ainsi la carte joue un rôle passif et attend une commande APDU à partir de l’hôte.IV. le traitement est différent : Table 2. Elle se fait à l’aide de paquets appelés APDU (Application Protocol Data Units) en respectant le protocole de l’ISO 7816-4. Table 2. écrit et met à jour les données contenues dans l'EEPROM. seuls les champs SW1 et SW2 seront envoyés au terminal avec les codes d’erreur suivants : 32 . En cas d’échec.

Ensuite ce sont ces compagnies qui complètent l’AID avec le PIX de leur choix. les APDUs 2.Le Cycle de vie d’une carte à puce. sont spécifique du programme client. à chaque applet est assigné un AID. Le cycle de vie de la carte à puce comprend cinq phases. Dans la technologie Java Card. A l’arrivée. Un AID est une séquence d’octets compris entre 5 et 11 octets : National Registerd Application Provider Proprietary Application Identifier Extention 5 octets Table 2. La description d’une AID. on distingue : • Fabrication : Inscription d'un programme en mémoire ROM définissant les fonctionnalités de base commandes • • • Initialisation : Inscription en EEPROM/NVM des données de l'application Personnalisation : Inscription en EEPROM/NVM des données relatives à chaque porteur Utilisation : Envoi de commande APDUs à la carte. de même chaque paquetage java identifie par un AID. 1.0x6E 0x00 0x6D 0x00 0x6B 0x00 0x67 0x00 0x98 0x04 0x98 0x08 0x98 0x40 CLA error INS error P1. Chacun d’entre eux est ainsi numérotés avec un unique identifiant : l’AID (Application Identifier). chaque application a donc un AID unique : [RID.PIX]. Chaque compagnie a donc un RID unique. Ceci est la convention définie par la norme ISO7816. Les applets situés sur une Java Card communiquent avec l’application cliente grâce aux échanges de requêtes et de réponse. P2 error LEN error Bad PIN Unauthorized Access Card blocked Quand aux applets présents dans une Java Card.6 _ Format d'un AID 0-11 octets Le RID est fournit aux compagnies par l’ISO. Le Traitement de ces commandes par la carte sont : de la carte : "masque" figé traitant quelques 33 .

La description d’un APDU. Les applets situés sur une Java Card communiquent avec l’application cliente grâce aux échanges de requête et de réponse. Ces fonctionnalités sont définies dans le code de l’applet par le développeur. les APDUs Table 2.7 _ Format d’une commande ADPU Table 2. Une applet Java Card est une application qui. bris. vol etc. puis renvoi d’un APDU de réponse  Si la commande est inconnue. 34 .8 _ Format d'une réponse ADPU 4. Si commande est reconnu : Traitement en interne de la commande lecture/écriture de donnée en EEPROM. perte. on a un renvoi d’un code d’erreur • Mort : Invalidation logique. 3. elle se contente de stocker la donnée qu’elle reçoit pour la retourner au terminal. soit on une saturation de la mémoire. permettra à cette dernière d’accéder à une ou plusieurs fonctionnalités supplémentaires. Les étapes de développement La conception d’une applet Java Card passe généralement par les 4 étapes suivantes : • La spécification des fonctions de l'applet : Echo est une applet simple. une fois correctement chargée sur la plateforme.

est assurée par La JCVM. elle est toujours disponible. Elle est sélectionnée à partir de son identifiant unique. et elle doit hériter de la classe javacard. Une fois le code de l’applet proprement chargé sur la carte et lié aux autres paquetages se 35 . Chaque applet s’exécute dans un espace qui lui est propre. La conception des programmes de l'applet : Dans la technologie Java Card. De même.9 _ Diagramme d'états d'un applet 4 Lorsque celui-ci reçoit des commandes APDU à partir du lecteur. à chaque paquetage Java est assigné un AID.Applet et implémenter les méthodes suivantes qui interagissent avec le JCRE : Select/deselect : Pour activer ou désactiver une applet. Une fois l’applet est installée dans la carte. • • 4. la définition de l'interface applet / terminal : Un applet Java Card doit étendre la classe javacard. Elle définit les méthodes courantes que doit utiliser une applet pour interagir avec le JCRE.framework. chaque applet est identifiée et sélectionnée par un identificateur (AID). l’AID. Cette propriété JCRE.framework. Install /uninstall : Pour installer ou supprimer une applet sur la carte Process : Pour traiter les commandes APDU et envoyer une réponse APDU Register : Pour enregistrer l’applet auprès de JCRE. Cette convention de nommage est conforme à la spécification de la carte à puce définie dans l’ISO7816.1. L'applet carte est un programme serveur de la Java Card. De même. Grâce au « firewall ».Applet Cette classe est une superclasse des applets résident sur la carte. chaque applet est identifiée et sélectionnée par un identificateur (AID). L'Applet carte. à chaque paquetage Java est assigné un AID. Cette sélection se fait grâce à une commande APDU au travers d’un terminal.• L’assignation des AIDs : Dans la technologie Java Card. un applet peu accéder à d’autres services offerts par d’autre applet ou le Table 2. Cette convention de nommage est conforme à la spécification de la carte à puce définie dans l’ISO7816.

l’applet répond au CAD en envoyant une réponse APDU qui informe le CAD du résultat du traitement de la commande APDU. Lorsque le JCRE reçoit une commande SELECT APDU. Définition des méthodes obligatoirement implémenter. le JCRE fait suivre toutes les commandes APDU (y compris la commande SELECT) à la méthode process() de l’applet. a. l’applet interprète chaque commande APDU et exécute la tâche spécifiée par la commande. les paramètres de la méthode peuvent être utiliser pour instancier les objets avec des paramètres particuliers .1. Ce vecteur contient les paramètres d’installation pour l’initialisation et la personnalisation de l’instance d’applet. et enregistrée au sein du JCRE grâce à la méthode register(). Pour chaque commande APDU. install (APDU apdu) : Va allouer la mémoire pour les objets. Une fois l’applet sélectionnée. doit retourner un booléen. 4. on devra appeler cette méthode dans le corps d’Install select () : Servira à préciser ce qui arrive lors de la sélection d’applet. l’applet devient inactive jusqu’à sa prochaine sélection / délétion. cette méthode sera donc le centre névralgique de l’application 36 .trouvant sur la carte. Celui ci doit être true si l’on doit considérer l’exécution de la méthode comme un succès proccess(APDU apdu) : Va gérer les commandes APDUs envoyées à la carte après la sélection. Une applet Java Card reste inactive jusqu’à ce qu’elle soit explicitement sélectionnée. La méthode install() prend un vecteur d’octets comme paramètre.cette méthode ne devrait être utiliser qu’une seule fois au moment de l’installation d’applet dans la carte register() : Permet d’enregistrer l’instance de l’objet et applet auprès de l’environnement d’exécution javacard. Dans la méthode process(). la vie de l’applet commence lorsqu’une instance de l’applet est créée. Ce dialogue commande-réponse continue jusqu’à ce qu’une nouvelle applet soit sélectionnée ou bien que la carte soit retiré du CAD. afin d’éviter les allocation intempestives dans le code. Les méthodes select() et deselect() permettent la sélection ou la désélection d'une applet. Lorsqu’elle est désélectionnée. il consulte sa table interne pour trouver l’applet dont l’AID correspond à celui spécifié dans la commande. via la méthode install().

L’applet peut vérifier les octets entête pour déterminer la structure de la commande et l’instruction spécifiée par la commande.APDU qui est transmis par le JCRE à la réception d'un APDU de commande par la carte (en provenance du terminal). P1. En général. INS.10 _ Diagramme de séquence indiquant la gestion d'APDU Lorsque le JCRE reçoit une commande APDU. L’objet APDU comporte un tableau d’octets contenant le message APDU. si la commande possède des données optionnelles. l’applet effectue les étapes suivantes: Étape 1. il encapsule la commande dans un objet APDU qu’il passe à la méthode process() de l’applet courante. Extraire le buffer APDU: L’applet invoque la méthode getBuffer() afin d’obtenir une référence au buffer APDU.deselect() : Sera lancer lors de sélection d’une autre AID. et P3. La gestion des APDUs par une applet. 37 . L’applet traite une commande APDU en invoquant des méthodes sur cet objet APDU. L'unité de base pour le traitement d'une applet est un objet de type javacard. on pourra on profiter pour mettre à jour les compteurs par exemple. seuls les 5 premiers octets sont disponibles dans le buffer.framework. P2.1. qui contient le message. Il s’agit dans l’ordre des octets CLA. 4. L’octet P3 désigne l’octet Lc. La lecture et l'écriture dans le buffer d'APDU se déroulent comme le montre le diagramme de séquence ci dessous: Table 2.b. Lorsque l’applet reçoit l’objet APDU.

la classe APDU fournit une méthode appropriée : setOutgoingAndSend(). L’applet peut transférer les données vers le buffer APDU et appeler la méthode sendBytes() pour envoyer les données. Recevoir des données: Si la commande APDU contient des données optionnelles. Néanmoins cette méthode ne peut être invoquée qu’une seule fois. l’applet doit diriger l’objet APDU vers la réception de données entrantes en invoquant la méthode setIncomingAndReceive(). Si le buffer APDU ne peut contenir toutes les données. Si les données sont stockées dans un buffer interne.Étape 2. setOutgoingLength() et sendBytes() (le buffer APDU sera donc utilisé). l’applet peut retourner des données à l’application sous forme de réponses APDU. Le mot d’état est spécifié dans le 38 . Renvoyer le mot d’état (status word): Après un succès de la méthode process(). Étape 4. le JCRE envoie automatiquement 0x9000 pour indiquer un traitement normal. Le dernier octet de l’entête (Lc) indique la longueur des données entrantes. l’applet peut lever l’exception ISOException en appelant la méthode statique ISOException. et aucune méthode d’envoi ne peut être appelée après. La méthode sendBytes() peut être appelée plusieurs fois si le buffer APDU ne peut pas contenir toutes les données retournées. ou bien le copier vers un buffer interne. L’applet doit d’abord faire appel à la méthode setOutgoing() pour obtenir la longueur de la réponse (Le).throwIt(shortreason). Si les données de la réponse sont courtes. A n’importe quel point. Renvoyer des données: Après avoir traité une commande APDU. l’applet appelle la méthode setOutgoingLength() pour informer le CAD de la longueur réelle des données de la réponse. Le est spécifié dans la commande APDU associée à la réponse APDU. Dans les deux cas. elle doit faire appel de manière répétitive à la méthode receiveBytes() afin de lire les données additionnelles à partir du buffer APDU. Les données sont lues dans le buffer APDU en suivant l’ordre des 5 octets d’entête. l’applet peut traiter les données en fragments. Ensuite. si l’applet détecte une erreur. Étape 3. Cette méthode est une combinaison des méthodes setOutgoing(). l’applet invoque la méthode sendByteLong() pour envoyer les données à partir du buffer.

elle sera attrapée par le JCRE. Il n'existe pas d’API standard de communication avec la carte. qui extraira le code et l’enverra comme mot d’état.paramètre reason. L'application cliente se trouve sur le terminal qui dialogue avec la carte. Le diagramme de séquence ci dessous indique les communications entre l'application cliente avec la carte : Il n'existe pas d’API standard de communication avec la carte. on peut utiliser une des API fournit pas différents constructeurs. on peut utiliser une des API fournit pas différents constructeurs. Cependant une API est en cours de standardisation. c'est à dire : le codage et l'envoi d’APDUs de commande conformes à ceux traités par l’applet la réception et décodage des APDUs de réponse retournés par l’applet. Le diagramme de séquence ci dessous indique les communications entre l'application cliente avec la carte : Table 2.2. Cependant une API est en cours de standardisation. Elle implémente les classes du terminal (avec JDK) et communique avec le serveur (applet carte). L'application Cliente (Application terminal).11 _ Diagramme de séquence indique la communication entre L'application Cliente et le serveur 39 . 4. Si l’exception ISOException n’est pas gérée par l’applet. pour cela elle s'occupe de:  L'établissement de la liaison : envoi d’un APDU de sélection avec l’AID de l’applet (standardisé)  L’invocation de services de l’applet.

Comme nous l’avons vu précédemment. Dans notre cas. modules …. par exemple : l’entré de l’université. une partie de cette application sera logé sur la carte. Application : « Gestion des Etudiants » Les cartes à puce sont aujourd’hui considérées comme des ressources sûres du fait de leur structure interne et des validations qu’elles subissent tout au long de leur cycle de vie. Etudiant sélectionne son applet 2. Il est donc possible de les utiliser comme élément de base pour sécuriser différents types d’environnement : accès physiques à des locaux. Etudiant acquiert des informations : Etudiant acquiert son adresse Etudiant acquiert son filière Etudiant acquiert son nom 3. système embarqué. Chaque étudiant une carte personnelle muni des Informations suivantes. ce sont les applets et l’autre partie hors carte.Identification des acteurs et les diagrammes.V. Etudiant change son code PIN 40 . adresse. nous allons procéder à une réalisation pratique à base de la technologique de carte à puce. Notre application consistera à la gestion des étudiants. ce sont les terminales et un chargeur qui sert à installer des applets avec des informations (Code PIN. nom de l’étudiant.) nécessaire à la carte. etc. 1. Le code PIN Nom de l’étudiant L’adresse de l’étudiant Filière de l’étudiant Un étudiant utilise cette carte pour s’identifier dans ses activités. Cas d’utilisations 1. transactions bancaires.

3 diagramme de séquence d’identification 41 .Figure 6.3 : diagramme du cas d’utilisation Les diagrammes de séquence pour les cas d’utilisation Dans cette partie on va traiter quelques diagrammes de séquence pour les différents cas d’utilisation Figure 6.

après 3 fois échoués de l'identification.3_ diagramme de séquence pour avoir les informations sur l’étudiant 2. Paquet AID étudiant Applet AID etudiant.1 Sélection applet Commande APDU : 0X00 0 X A4 0 X04 0 X00 0x09 LC 9 Octets AID Données Entête Sélection 42 . Le but principal de cet applet pour l'étudiant : Identifier son compte. L'applet de l'étudiant permet de réaliser des activités de l'étudiant. Attribuer AID pour l’ applet et son paquet. la carte va bloque ce applet. a string contient 5 caractères.Figure 6.EtudiantApplet 0xf2 0x34 0x12 0x34 0x56 0x00 0x10 0x00 0x01 Pour l’instant on va traiter les différentes commandes et réponse APDUs sur notre application 0xf2 0x34 0x12 0x34 0x56 0x00 0x10 0x00 0x00 2.La partie dans la carte. La carte utilise un algorithme de sécurité qui exige une code PIN.

Réponse APDU : • • Si la sélection est succès : Si le fichier n'existe pas : 0X90 0x6A 0 X00 0 X82 2.3. Login est succès : 0X90 0 X00 0X63 0 X00 La carte est bloquée pour des raisons sécurité : La vérification échoue : 0X63 0 X00 2.2 Login Commande APDU de l'Applet étudiant : 0XB0 CLA Donnée LC-3 octets LC PIN entré 0 X 20 INS 0 X00 P1 0 X00 P2 3 Octets Date Réponse APDU.Le nom de l'étudiant Commande APDU : 0XB0 CLA 20 Octet 0 X 32 INS 0 X00 P1 0 X00 0 X00 LC octets P2 0x00 LC Réponse APDU : 0x90 Nom d’étudiant SW 43 .a .3 Acquérir l'adresse les informations 2.

2. P2 sont fautes : L'utilisateur ne vérifie pas : 0X09 0X6B 0X63 0 X00 0 X00 0 X01 44 . d.Changer de code PIN SW Commande APDU : 0XB0 CLA 0 X 31 INS 0 X00 P1 0 X00 P2 LC LC octets Nouveau PIN Réponse APDU : • • • Le chargement est succès : P1.3.3.L'adresse de l'étudiant Commande APDU : 0XB0 CLA 0 X 32 INS 0 X00 P1 0 X00 0 X00 LC octets P2 LC Réponse APDU : 40 Octet 0x90 0x00 Adresse d’étudiant SW 2.b .c. la filière de l'étudiant Commande APDU : 0XB0 CLA 0 X 32 INS 0 X00 P1 0 X00 0 X00 LC octets P2 0x90 0x00 LC Réponse APDU : 5 Octet Classe d’étudiant 2.3.

Tout d'abord il faut importer toutes les classes nécessaires qui définissent l'applet Java card pour qu'il fonctionne selon la norme ISO 7816. Ce sont les classes APDU. Applet et ISO7816. Utile comporte des méthodes permettant d'effectuer de diverses opérations utiles.1 L'applet étudiant. Cette méthode crée donc un applet GestionEtudiant " new GestionEtudiant " et l'enregistre auprès du JCRE avec la méthode " register ". Enfin pour gérer les exceptions on importe la classe ISOException. Ces paramètres Sont ensuite utilisés pour l'enregistrement auprès du JCRE. Cet exemple permet de comprendre le fonctionnement du code d'une applet Java Card. Cette méthode prend en paramètre une série d'octets qui sont les paramètres de l'applet. Méthode d'installation de l'applet dans la carte. 45 . Enfin la classe.3 L'Implémentation Dans cette partie on va implémenter les différents méthodes de notre application pour ça on va traiter deux parties la première dans la carte (applet) et une hors carte (application cliente) 3.

La méthode process gère les commandes APDU reçues depuis l'application cliente. elle vérifie si la commande en question n'est pas une sélection de l'applet . sinon elle continue son traitement Si le champ INS prend une autre valeur que celle autorisée dans la déclaration des constantes. Important: Vous pouvez consulter le code de l'application en détaille sur le cd accompagne du rapport 3.1 car ce plugin est compatible avec des cartes cyberflex Apres on va sélectionner une applet en tapons son AID 46 .2 La partie hors carte Pour l'application hors carte on peut faire une simulation en utilisant le plugin javacard manager avec netbeans6. on renvoie une exception de type " valeur INS non supportée ". Avant toute chose.

Pour simuler les échanges APDUs on peut utiliser APDUManager Windows 47 .

et avoir des connaissances sur le sujet sera sûrement un atout si l'occasion se présente. mais on a également pu enrichir nos connaissances sur Java en général.Conclusion Ce projet est une très bonne expérience. Les Javacards seront de plus en plus développées et améliorées. qui nous apportera certainement un plus dans le monde professionnel. Nous avons découvert un sujet original. Nous avons pu nous rendre compte que cette technologie possède beaucoup d'attraits pour les personnes souhaitant développer des applications et sécurisées pour univers professionnel. bien que déjà très implantée dans le marché. On garde néanmoins une très bonne expérience de ce projet. a un grand avenir devant elle. nous aurions beaucoup aimé avoir plus de temps pour comprendre et développer des applications plus complexes. qui traitent notamment de la sécurité. 48 . Cette technologie a l'avantage d'être simple d'utilisation et possède une grande stabilité ainsi qu'une forte opacité du contenu face à l'environnement extérieur. Tout au long de nos recherches sur cette technologie. un aspect important de cette technologie. nous avons pu non seulement comprendre le fonctionnement de ces applications embarquées. C'est en étudiant cette technologie qu'on a pu comprendre la véritable utilité de la machine virtuelle Java. Durant ce projet nous avons dû faire face à diverses contraintes qui nous ont retardés dans la phase de développement de l'application. une technologie très intéressante.

P. P. June.48.Juin 2005 [4] Jean-Louis LANET. 2002. P. Protection par capacité cachée sur carte à puce Java Card. [6] Louis Guillou. Actes du Septième Colloque sur l'Histoire de l'Informatique et des Transmissions.96. ASSELOOS Erwann. Micro Edition.1 .27. E-GATE. P.R. Sun Microsystems.126-154. BERROGAIN Nicolas. [3] Sebastien Varrette. 25. Ensem 2007-08.sun. FORGET Sébastien. Étude et réalisation d'un environnement d'expérimentation et de modélisation pour la technologie Java CardTM. Les Java Cards. [10] RMI Client Application Programming Interface. Version : 0. Application à la sécurité.F.280.2003. 78 [11] kit de devellopement : http://java.com/javacard/devkit/index. Informatiques Juin – Août 1999. Université de Nice Sophia Antipolis. DAHAN Jean François. Histoire de la carte à puce du point de vue d'un cryptologique.Bibliographie [1] Damien SAUVERON. Sécurisation des Transmissions dans un réseau sans fil par la carte à puce. [7] Ernest TSASSONG.2 Java 2 Platform. 2004.36 [9] Carine COURBIS. Thèse présentée à l'Université de Bordeaux I.Laboratoire Cédric. Stéphane Martin. Simulation d'Applications Java Card : Conception et Réalisation d'Outils d'Aide à la programmation.P.89 [5] Sébastien Chassande-Barrioz. YU Janweï. Rapport de stage –I4 Globalisation des résultats dans les mesures de performance sur les plateformes Java Card ESIEE . P. P. [8] LANNETTE Romain. P. SASMITA Rio. -2006.jsp 49 . Université Joseph Fourier U. Java Card 2. Support de cours : Carte à puce. [2] AMIOT Olivier. Tutorial : Installer un lecteur de cartes à puce USB sous Linux. DESS Télécom. INRIA de Sophia-Antipolis Juillet 1998. P.

Dernière mise à jour : 30/04/2008 50 .netbeans. [15] PLUGIN JCOP http://tinyurl.com/tutoriels/java/introjavacard/m.java. Date de publication : 30/04/2008 . [16] Introduction à la programmation de Javacard sous Windows.[12] pluging jcde1.com/vum9K.0 : http://sourceforge.jsp ?pluginid=10935.com/en/download/manual.developpez. [13]plugin javacard manager:http://plugins. http://julienb.org/PluginPortal/faces/PluginDetailPage.net/projects/eclipse-jcde/.jsp. [14] jre : http://www.

...............d................................................. HISTORIQUE...........................2..............................................................................................................................................................2..................................................1.....................1.................... Les cartes sans contacte.................e................................................................................................................................34 4...............17 2...........................30 2........ LA SÉCURITÉ DE LA CARTE À PUCE..35 4.......................31 2.....................................1......................................................... LA DESCRIPTION D’UN APDU...............3.....................................................io................................................................................................................ c..............................................b................16 2................b......32 1................c.................................................... .............................................................................22 2.......................................................................1......3..................................................................................3..LA CARTE À PUCE.....crypto............................................................e....13 2..................... .. Le rétro-conception matériel..................7 2..............22 2...............................18 2............................................................................1................................................................36 4....................................................1.... L'Applet carte..................................................3................................................................................................................................................................................................................................................. LA COMMUNICATION ENTRE LA CARTE ET LE TERMINAL. Les attaques par canaux cachés...............................................................24 3.........1.................24 III........... Le paquetage java.. Le package java......................Table de matière : INTRODUCTION.1.......................................29 2......1........................................security............................................. Les attaques par injection de fautes.........................................................1....... Les attaques invasives...................................29 2..............................13 1...... LES TYPES DES CARTES À PUCE..... Le package javacard...............26 1.................................... Les modifications du fichier Class...23 3..........................................26 1.............................................. LA DESCRIPTION D’UNE AID............. Le JCRE et son modèle de fonctionnement.......................................................22 2..............8 2......................................27 1........................... Les cartes à mémoire.........................................................2........... L'application Cliente (Application terminal).. a.............service..... Le package javacard............................... Au niveau logiciel...............................b.......................... Le JCVM partie sur carte.....................................................29 2........ a...................................20 2...................................................... b............Sécurité supplémentaire des Java Cards.. Le JCVM partie sur l’ordinateur.... Le package javacardx......................................1......9 3.............................................................................................................................15 2..........................b....3......................31 2.................................................................................................................. Les attaques hors conditions opérationnelles.....................................6 1....1.........................33 3.... a............................................................................3..........................................................................framework......... CARACTÉRISTIQUE PHYSIQUE DES CARTES À PUCE.............................................1...........................3....................................................37 4.....g.......................................................................................................................... Au niveau physique........................................................................................a......20 2.................................................1............................................................................17 2................................................................................................3............................a..............JAVA CARD................................................................24 3.............................................................................................................................................33 2.........6 2........................................................................34 4...........................................................................................8 2....... Les cartes avec contact.............................................2... LA SÉCURITÉ JAVA CARD.................... La gestion des APDUs par une applet.......a......2........................................... CHRONOLOGIE ET HISTORIQUE DE LA CARTE À PUCE.......................................................................... Les attaques non-invasives...29 2.................. Les attaques internes................................... Les attaques erreurs.......... LES PROTECTIONS QUE APPORTE LA CARTE À PUCE.............................................................................5 I....................................... Les attaques par rayonnement...2.............................................30 2................... La modification de circuit.......................................................................................................................................c......................framework.........................31 IV.......... Le paquetage javacard...................21 2........................................LE CYCLE DE VIE D’UNE CARTE À PUCE......................... La machine virtuelle Java Card..............................31 2......................................................2..................f............18 2.............1................30 2...............lang..21 2.. L’API Java Card.................................................... Définition des méthodes obligatoirement implémenter....rmi..............................1..........................................................................................2.........................3........................................1............. LES ATTAQUES CLASSIQUES..............................d.......................................................................................3...........................b..........................................................................................................1...............................................................................................39 51 ......................................................... LES ÉTAPES DE DÉVELOPPEMENT............................................................................... Au niveau matériel............................................................. Sécurité du langage............................................. Le paquetage java....7 2..26 1........ Les cartes à microprocesseur........................... LA TECHNOLOGIE JAVA CARD.........................................................................................................................................................................28 2........................................10 II.................................

.........................................................................................a .................................................................V..............................c............2 La partie hors carte..............................2 Login...................................................................3..........3...................................................................................................3.....................................................................3 Acquérir l'adresse les informations........................44 3 L'IMPLÉMENTATION...........b ...............................L'adresse de l'étudiant.........................................3..........................................................43 2.........40 1............40 2............................................................................42 2................................................................Le nom de l'étudiant ..........................................................42 2................1 L'applet étudiant.......................43 2.............. APPLICATION : « GESTION DES ETUDIANTS »..................................................44 2..............................................................................................................................................................46 CONCLUSION......................................LA PARTIE DANS LA CARTE............................................................................................................... la filière de l'étudiant...........................................45 3..................................................IDENTIFICATION DES ACTEURS ET LES DIAGRAMMES...........................................................................................................................43 2....................1 Sélection applet......................45 3....................................................................Changer de code PIN................................................................44 2....................................................................................................................49 52 ................. d....48 BIBLIOGRAPHIE.................................................................................................................................................................

Sign up to vote on this title
UsefulNot useful