Projet de Veille Technologique

Documents pareils
La carte à puce. Jean-Philippe Babau

La technologie Java Card TM

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Annexe : La Programmation Informatique

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Vulgarisation Java EE Java EE, c est quoi?

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Java pour le Web. Cours Java - F. Michel

Le Framework.Net. Introduction. Pourquoi.Net?

MOTEUR DE WORKFLOW Mise en oeuvre d'openwfe Version septembre 2006

Projet gestion d'objets dupliqués

Initiation à JAVA et à la programmation objet.

Télécom Nancy Année

Remote Method Invocation (RMI)

Systeme d'exploitation

Héritage presque multiple en Java (1/2)

RMI le langage Java XII-1 JMF

TP1 : Initiation à Java et Eclipse

Chapitre I Notions de base et outils de travail

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Vérification formelle de la plate-forme Java Card

CAHIER DES CHARGES D IMPLANTATION

Guide de déploiement

Cours 1: Java et les objets

Refonte front-office / back-office - Architecture & Conception -

Configurer ma Livebox Pro pour utiliser un serveur VPN

Plan du cours. Historique du langage Nouveautés de Java 7

Les avantages de la virtualisation sont multiples. On peut citer:

java : Langage et Environnement

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

contact@nqicorp.com - Web :

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

Retrospect 7.7 Addendum au Guide d'utilisation

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Chapitre 2. Classes et objets

INITIATION AU LANGAGE JAVA

Introduction MOSS 2007

Qu'est-ce que le BPM?

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Évaluation et implémentation des langages

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

Secure Hotswapping : Un réel problème pour cartes à puce.

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Programmation Orientée Objet

PROJET : ETNIC ESB JANUS. Guide technique : WS-Notification - Clustering. BULL Services et Solutions

Compte Rendu d intégration d application

Infrastructure RDS 2012

RENDRE VOS APPLICATIONS JAVA PLUS EFFICACES Ce qu'il faut savoir

DÉVELOPPEMENT INFONUAGIQUE - meilleures pratiques

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Oracle Fusion Middleware Concepts Guide 11g Release 1 (11.1.1) Figure 1-1 Architecture Middleware

CONFIGURER ET DÉPLOYER UN CLOUD PRIVÉ AVEC SYSTEM CENTER 2012

HelpAndManual_unregistered_evaluation_copy GESTIONNAIRE D'ALARMES CENTRALISE OPTIM'ALARM. Manuel d'utilisation

Applet pour visualiser les variables «automate» notifiées

Introduction à Eclipse

Installation et prise en main

Généralités sur le Langage Java et éléments syntaxiques.

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Windows 8 Installation et configuration

CA Desktop Migration Manager

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

AIDE ENTREPRISE SIS-ePP Plateforme de dématérialisation des marchés publics

as Architecture des Systèmes d Information

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

FileMaker 13. Guide ODBC et JDBC

Logiciel Enterprise Guide Version 1.3 Windows

ABACUS vi Version Internet (release 2010)

Le service FTP. M.BOUABID, Page 1 sur 5

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Guide de l'utilisateur

Architectures web/bases de données

LES ACCES DISTANTS ET SECURISES. Installation et utilisation du client. Cisco AnyConnect VPN Client. pour Windows

Tutorial pour une application simple

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

VM Card. Manuel des paramètres des fonctions étendues pour le Web. Manuel utilisateur

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Mise en œuvre d un poste virtuel

Éditions QAD On Demand est disponible en trois éditions standard : QAD On Demand is delivered in three standard editions:

2010 Ing. Punzenberger COPA-DATA GmbH. Tous droits réservés.

WINDOWS NT 2000: Travaux Pratiques. -Boîtier partage d'imprimante- Michel Cabaré Janvier 2002 ver 1.0

Informations sur la sécurité

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Patrons de Conception (Design Patterns)

SIP A. Aoun - La Visioconférence SIP - 1

Manuel d'installation

SITE WEB E-COMMERCE ET VENTE A DISTANCE

Programmation de services en téléphonie sur IP

Guide de déploiement d'applications FormPublisher

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS

Armelin ASIMANE. Services RDS. de Windows Server 2012 R2. Remote Desktop Services : Installation et administration

Windows serveur 2008 installer hyperv

Guide de démarrage rapide Express

CA ARCserve Central Host-Based VM Backup

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Transcription:

Projet de Veille Technologique Programmation carte à puce - JavaCard Ing. MZOUGHI Ines (i.mzoughi@gmail.com) Dr. MAHMOUDI Ramzi (mahmoudr@esiee.fr)

TEST Sommaire Programmation JavaCard Les prérequis... 3 I. Introduction :... 3 II. Architecture JavaCard :... 3 III. Le langage Java Card... 6 III.1 Les concepts de programmation :... 6 III.2 L'Applet carte :... 7 III.3 L'application Cliente (Application terminal)... 8 III.4 Construction d'une application Java Card :... 9 IV. Conclusion :... 9 2

Programmation JavaCard Les prérequis I. Introduction : Java Card une technologie qui permet aux cartes à puce et à d'autres périphériques à mémoire limitée de faire fonctionner des applications écrites en langage Java. C'est une carte à puce qui peut charger et exécuter des programmes écrits en Java. Contrairement aux cartes à puce traditionnelles, les programmes exécutés par la carte ne sont pas forcément fournis par l'émetteur de carte. Pour résumer, la technologie Java Card définit une plateforme sécurisée pour cartes à puce, portable et multi-application qui incorpore beaucoup tous les avantages du langage Java. II. Architecture JavaCard : L architecture de JavaCard est illustrée par la figure suivante : Figure 1. Architecture générale JavaCard (Source : javaworld.com) 3

L'architecture JavaCard est composée de plusieurs couches : Méthodes natives : Les méthodes natives (native methods) sont des méthodes de bas niveaux effectuant les opérations d'entrées/sorties, de gestion de la mémoire et de gestion du coprocesseur cryptographique. Machine virtuelle Java : La machine virtuelle Java (JVM ou Java Virtual Machine) est chargée d'exécuter le bytecode obtenu après l édition des liens et la compilation. On retrouve donc la machine virtuelle java (JVM) au dessus du système d'exploitation. L' «interpreter» est le cœur de l'architecture JavaCard sur la carte. C'est le moteur d'exécution des Applets ou Cardlets. Il exécute les programmes en convertissant le code précompilé en appel aux méthodes natives. Comme pour les ordinateurs, chaque carte d'architecture devra avoir sa propre machine virtuelle. La machine virtuelle JavaCard est identique à celle de Java mais est découpée en deux parties : une sur la carte, l'autre hors carte ("Java Card Converter"). Il est donc nécessaire de pré-compiler les applications avant de les charger sur la carte Standard Class Librairies : Les Standard Class Libraries ou encore le Javacard Framework (principalement le package javacard.framework) est un ensemble d'api. L'API contient l'ensemble des classes (les outils de bases) pour créer une Applet telles que : APDU (Application Protocol Data Unit), qui est le format de communication entre la carte et le monde extérieur. Applet, c'est de cette classe que doivent étendre toutes les Applets. AID (Application Identifier), c'est un identifiant qui est associé à une Applet. Les Exceptions, qui permettent d'envoyer des Status Word d erreur. Remarque : Cet ensemble (Native Methods, Interpreter et les Standard Class Libraries) est appelé JCRE (Java Card Runtime Environment). Il est contenu dans le masque des JavaCard et est donc inamovible. 4

Applets : Les applets sont les applications hébergées par la JavaCard. Elles ont été écrites en langage JavaCard puis compilées avant d'être stockées sur la carte. Elles s'exécutent, chacune son tour, en réponse à une demande du lecteur de carte. Installation d'une applet : L'installation d'une applet est réalisée lors de la fabrication de la carte ou lors de sa mise à jour à partir d'un terminal (lecteur de cartes) sécurisé. L'applet est alors soit chargée en ROM (étape de fabrication), soit chargée en EEPROM (étape de mise à jour). Après que l'applet soit chargée, le JCRE va effectuer une phase de reconnaissance en appelant automatiquement la méthode publique install (). Cet appel est réalisé une fois, avant que l'applet ne soit instanciée. L'applet est alors enregistrée auprès du JCRE par le biais de la méthode publique register (). Ce dernier connait donc définitivement l'applet et pourra y faire appel lorsque le lecteur de cartes le lui demandera. Sélection, activation et désactivation d'une applet : Une applet, identifiée par une clé unique, est inactive tant qu'elle n'a pas été sélectionnée pour être exécutée. La sélection de l'applet devant s'exécuter est réalisée par le terminal. Celui-ci envoie un APDU DE COMMANDE contentant l'identifiant de l'applet visée. Le JCRE suspend alors l'exécution de l'applet active à l'aide de la méthode publique deselect () et active l'applet sélectionnée grâce à la méthode publique select (). L'applet est alors prête à recevoir des APDU de commande, le JCRE les lui redirige. Communication avec les applets : Toute applet possède une méthode publique nommée process (). Cette méthode est appelée par le JCRE lorsqu'il reçoit un APDU DE COMMANDE pour l'applet. 5

III. Le langage Java Card Afin d optimiser la technologie Java Card pour les environnements à mémoire limitée, seulement un certain nombre de caractéristiques bien choisies de java ont été spécifiées. Dans le tableau suivant seules les caractéristiques supportées et non supportées importantes ont été inclues : Tab. 1 Caractéristiques Java supportées et non supportées par Java Card III.1 Les concepts de programmation : Une approche traditionnelle du fonctionnement de la carte à puce, d une manière générale, est représentée par la figure ci-dessous : La carte communique avec le terminal via des commandes/réponses APDU traitées directement par le masque de la carte. Ce dernier lit, écrit et met à jour les données contenues dans l'eeprom. L'approche JavaCard est différente : 6

L'application cliente envoie toujours des commandes APDU mais ce sont les applets Java présentes sur la carte qui les traitent. Les applets quand à elles sont exécutées par le JCRE (Java Card Runtime Environment) via l'api JavaCard. Ceci permet donc d'adapter la carte aux applications clientes en lui chargeant l'applet correspondante. III.2 L'Applet carte : L'applet carte est un programme serveur de la JavaCard, une applet est sélectionné par le terminal par un APDU de sélection. Cette sélection est faite en fonction de l'id de l'applet qui doit être unique (représenté par la classe AID signifiant Applet ID). Une applet a les propriétés suivantes : Une fois qu'elle est installée dans la carte, elle est toujours disponible L'applet doit hériter obligatoirement de la classe javacard.framework.applet Elle doit implémenter les méthodes qui interagissent avec le JCRE : - public void install( APDU apdu ) o Appelée (une fois) par le JCRE quand l'applet est chargée dans la carte o Doit s'enregistrer auprès du JCRE (méthode register( )) - public boolean select( ) o Appelée par le JCRE quand un APDU de sélection est reçu et désigne cette applet o Rend l'applet active - public void process (APDU apdu) o Appelée par le JCRE quand un APDU de commande est reçu pour cette applet (doit être active) - public void deselect ( ) o Appelée par le JCRE pour désélectionner l'applet courante Comment une applet gère les APDU? L'unité de traitement de base d'une applet est un objet de type javacard.framework.apdu qui est transmis par le JCRE à la réception d'un APDU de commande par la carte (en provenance du terminal). La méthode process ( ) de l'applet courant est alors appelée. La lecture et l'écriture dans le buffer d'apdu se déroule comme le montre le diagramme de séquence ci dessous : 7

Finalement, le rôle d'une applet est d'une part de maintenir son propre état, gérer ses champs, créer des objets et les référencer pour travailler. D'autre part elle répond à des commandes APDUs (méthode process( )) avec des réponses APDUs. Pour concevoir une applet on doit effectuer les étapes suivantes : Créer les objets de base à l'installation, initialiser les champs o Implémentation de la méthode install ( ) Définir les APDUs traités par la méthode process ( ) o o Implémentation d'un analyseur de commandes Utilisation des champs et objets de l'applet Définir les traitements à la sélection et à la désélection (méthodes select ( ) et deselect( )). III.3 L'application Cliente (Application terminal) L'application cliente se trouve sur le terminal qui dialogue avec la carte : Elle implémente les classes du terminal (avec JDK) Elle communique avec le serveur (applet carte), pour cela elle s'occupe de : 8

o l'établissement de la liaison : envoi d un APDU de sélection avec l AID de l applet (standardisé). o l'invocation de services de l applet, 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 : III.4 Construction d'une application Java Card : Une application carte s'effectue en trois étapes : Ecriture du code dans la carte (application serveur = applet Java Card) : Il implémente les services. Installation de l'applet dans les cartes : Ceci permet d'initialiser les services. Le code dans le terminal (application cliente) : Il invoque les services implémentés dans l'applet. IV. Conclusion : Au fil du temps, la carte à puce a subit des évolutions majeures et qui lui ont permis de gagner la confiance des utilisateurs. L apparition de JavaCard est une étape marquante de cette évolution. 9