Projet de veille technologique la carte à puce est aujourd'hui un support très répandu pour stocker des informations. Ces exemples les plus courants sont les cartes bancaires, les cartes téléphoniques et les cartes SIM contenues dans les GSM. Il s'agit en fait d'une simple carte de plastique dans laquelle est intégrée une puce électronique. Il en existe différents types dont la smartcard et plus particulièrement la javacard. Toutes les cartes à puces possèdent des ressources très limitées disponibles pour l’exécution d’applications. Aujourd’hui, le moyen le plus sûr pour assurer un niveau de sécurité satisfaisant reste la carte à puce. Cependant, le développement d’applications pour carte à puce a toujours été difficile et réservé à des experts. Il a donc fallut développer un langage qui soit à la fois fiable, robuste, peu gourmand en ressources et bien sûr simple. C’est en 1996 que Sun Microsystems Inc propose une solution après des essais menés par Schlumberger : le JavaCard. Le JavaCard est un système de programmation de cartes à puces basé sur une version allégée du langage Java. 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro Plan Cartes à puces JavaCard Coté terminal (OpenCard) JavaCard en pratique I Historique – généralité II Technologie de SUN III framework de développement opencard et les standard qui gravitent autour IV Les outils et une demo 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Généralités sur les cartes à puces Historique 1974, cartes à mémoire Innovatron 1977, carte à microprocesseur Bull CP8 1980, carte bancaire 1983, carte santé 1984, carte à micromodules France Telecom 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Généralités sur les cartes à puces Réalisations industrielles majeures Carte Bleue SESAM Carte Vitale Porte monnaie électronique Téléphonie mobile 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Généralités sur les cartes à puces Types de cartes (1/2) Carte à mémoire Mémoire simple (sans processeur). Carte “porte-jeton” . Carte à logique cablée Mémoire accessible via des circuits préprogrammés et figés . Carte “sécuritaire” . 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Généralités sur les cartes à puces Types de cartes (2/2) SmartCard Microcontrôleur encarté (processeur + mémoires). Carte “programmable” pouvant effectuer tout type de traitements. Interface électronique par contacts ou via signaux RF. 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Généralités sur les cartes à puces Architecture d'une Smartcard 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro Les Avantages Langage de haut niveau Write Once Run Anywhere Plateforme multi applicative Partage de données entre applications Sécurité des données Souplesse 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro Java Vs JavaCard Une sous Classe du langage Java Pas de chargement de classe dynamique. Pas de threads / synchronisation. Pas de Clone. Pas de méthodes Natives. Pas de String. Peu de types. Une sous Classe de la VM Java Un bytecode limité. Nommage différent. (pas de string) Pas de GC / pas de finalize. 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Javacard : comment ça marche? L’architecture. (JCRE) Les Natives methods. L’interpréteur. Les standard class libraries. 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Mécanismes de mise en Oeuvre. .java Compilateur Java Librairies de développement Fichiers Class .class Exports Convertiseur, verifieur, signeur de bytecode On-card Loader API Interprète O.S. Java Card Files .cap 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro Création d’une applet Bibliothèque de base javacard.Framework Hérite de javacard.Framework.Applet Implémente Install Process Select deselect 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Installation des applets Pourquoi installer des applets ? L’installation Chargement sur la carte Création d’une instance. Une JavaCard à l’origine contient le JCRE et tout le système du constructeur de la carte. Le JCRE est « écrit » dans la ROM de la carte : c’est le masque de la carte. Il est donc inviolable. Le code des applets est stocké sur la carte généralement en EEPROM. INSTALL L’installation d’une applet se fait alors que le JCRE tourne. Cela se passe en deux phases. 1. chargement du code de l’applet (cap file) sur la carte 2. création d’une instance de l’applet Pour installer l’applet, l'installeur prend le fichier .cap et télécharge le contenu du fichier sur la carte. L'installeur écrit le contenu dans l’EEPROM et fait les liens entre les classes dans le fichier .cap et les classes résidant sur la carte. Il crée et initialise les données qui seront utilisées par le JCRE en interne pour se servir de l’applet. Si l’applet nécessiste plusieurs package, chaque fichier .cap correspondant à un package sera chargé sur la carte. L’edition de lien se fait statiquement à l’installation et donc pour faire l’edition de lien on a besoin de toutes les dépendances. 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Coté sécurité : L’applet Firewall Les applications JavaCard peuvent provenir de fabricants différents, et ne doivent pas pouvoir comuniquer entre elles. Ces applications sont appelées des applets identifiés uniquement par leur AID (Application Identifier) isolées entre elles par un applet firewall. Celui ci partage le système d'objet javacard en espaces d'ojets protégé et séparé appelés contexts. Le firewall est la barriere entre les contextes. Qd un applet est instancié, la JCRE lui assign un context, mais aussi un groupe de contexte dans lequel peut se trouver plusieur applets. les applets dans un meme groupe peuvent se voir. Le firewall isole egalement le context du JCRE 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
RPC et systèmes à objets répartis L’approche : construire les applications avec la carte comme des applications réparties Principes : Notion d’interface objet pour décrire les objets distants Pré-compilateur pour générer les couches (skell stub) Le principe Java RMI est retenu. 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
RPC et systèmes à objets répartis Applet JavaCard = objet serveur distant 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro Les Terminaux. Appareil permettant l'accès à distance à un système informatique. Rôle terminal 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro La norme ISO 7816 Norme décomposée en sous parties: Partie 1: caractéristiques physique Partie 2: les contacts Partie 3: caractéristiques électrique & protocole de communication Partie 4: format de paquets (APDU) 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro Le standard PC/SC Pourquoi? Standardiser l’interface entre PC et le lecteur. Exploitation des cartes multi applicatives Création d’un groupe de travail (PC/SC workgroup) Standard: Repose sur la norme ISO 7816 Offre une interface entre le driver de carte et la programmation 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro Opencard Framework orienté objet pour l’utilisation des smart card. Pourquoi? Standardiser les accès aux cartes à puce Les atouts d’Opencard. Développeurs Fabricants Opencard VS PC/SC Opencard complémente PC/SC PC/SC reste d’actualité 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Architecture Opencard 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Javacard en pratique Le Java development Kit Un JDK de SUN spécialement pour Javacard Environnement de simulation Support pour la cryptographie Adressage étendu Support du RMI Outils Respectant les spécifications Javacard 2.2.1, et les nouvelles fonctionnalités Plateformes Support JDK 1.4.1 Version Linux existante 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Javacard en pratique Documentation du développeur Javacard sur le site de Sun Java Card 2.1.1 Vitual Machine Specification Java Card 2.1.1 Runtime Environment Specification Java Card 2.1.1 Application Programming Interface Opencard sur le site d'OpenCard ou GemPlus OpenCard 1.2 Application Programming Interface OpenCard 1.2 Programmer's Guide 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro DEMO 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro Conclusion (1/3) Cartes à puces de plus en plus répandues Utilisation de plus en plus facile plus de C ou d'assembleur -> langage évolué, objet 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro Conclusion (2/3) Javacard propose un SDK complet, aux outils performant et fortement documenté. Opencard propose un framework pour standardiser les échanges avec les terminaux. 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro Conclusion (3/3) Alternative à Javacard : JITS Mélange de l'OS et de la JVM pour plus de légèreté et de flexibilité. API est plus complète que l'API de javacard. 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro
Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro Des questions ? 10 janvier 2005 Xavier Perrin – Emile Gourlay – Julien Janier – Emmanuel De Castro