Carte à puce
 
 
 
 
Javacard
 
 
 

architecture

Architecture générale d'une JavaCard :

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 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 édition des liens et compilation.

Plusieurs applications pouvant exister sur une même JavaCard, la JVM se charge du partage des données. Certaines données peuvent être communes à toutes les applications hébergées mais une donnée privée à une application particulière ne pourra être accédée par aucune autre application. La JVM offre de plus le support du langage et masque les spécificités liées à la technologie de la carte puisqu'elle est située au dessus du système d'exploitation et des méthodes natives.

On possède ainsi une interface de programmation commune à tous les constructeurs et donc une indépendance totale par rapport à la plate-forme de la carte.

Standard Class Librairies

Les Standard Class Librairies sont un ensemble d'APIs (Application Programming Interface). Elles masquent les détails de l'architecture afin d'offrir une interface facile à manipuler permettant d'accéder aux méthodes natives ainsi qu'au JCRE (Java Card Runtime Environment).

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 leur 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 est été 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 pour toute et est réalisé 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 redirigeant toutes.

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.

 

< présentation