Carte à puce
 
 
 
 
Javacard
 
 
 

présentation

Les contraintes imposées par les SmartCard (la taille de la JVM et du système de runtime ne devant pas dépasser 16 ko) ont contraint à définir un système demandant le moins de ressource mémoire possible. Ceci s'est réalisé en n'implémentant qu'un sous-ensemble du langage Java et en découpant la machine virtuelle en deux parties.

Les applications JavaCard sont appelées des applets identifiés uniquement par leur AID (Application Identifier) isolées entre elles par des applets firewall. Plusieurs applets pourront cohabiter sur une carte même si elles appartiennent à des fabricants différents. Les applets d'une carte sont gérées par le JCRE. Les minima requis pour faire tourner un programme JavaCard sont 24 ko de ROM, 16 ko d'EEPROM et 1 ko de RAM.

JavaCard, bien qu'il ne soit qu'un sous-ensemble du langage Java, possède des mécanismes spéciaux liés aux spécificités des SmartCard. Ainsi il a deux types d'objets : les objets temporaires (stockés en RAM qui prendront leurs valeurs lors du retrait de la carte, d'une coupure de courant, de la désélection de l'applet ou après chaque transaction) et les objets persistants stockés en EEPROM. JavaCard permet de garantir l'atomicité des transactions. Il permet aussi de partager des objets entre applets sous certaines conditions. Les lignes de sécurité sont implémentées par la machine virtuelle.

Le gros avantage de JavaCard est la possibilité de charger dynamiquement, n'importe quand, une nouvelle applet sur la carte. Cela signifie que le code des applets pourra être remis à jour.

La machine virtuelle

La partie off-card est appelée JavaCardConvert, elle est responsable des chargements des classes, de la résolution des références, contrôle la violation de langage JavaCard, réalise les initialisations des variables statiques, optimise le bytecode, alloue l'espace mémoire et créer les structures de données pour représenter les classes.

La partie on-card est appelée l'interpréteur, elle a pour tâches de fournir le support d'exécution du modèle Java qui autorise une indépendance au matériel (le type de SmartCard) du code de l'applet, exécute les instructions du bytecode, contrôle les allocations de mémoire et les créations d'objets, s'occupe de la sécurité.

L'interface entre les deux moitiés de la machine virtuelle JavaCard est une applet "convertie", qui est générée par le off-card JCVM durant le processus de développement et utilisée par le on-card JCVM pendant l'exécution. Le fichier CAP est le format standard de fichier pour la comptabilité binaire de la plate-forme JavaCard. Un fichier CAP contient une représentation binaire exécutable des classes d'un paquetage Java.

Le JCRE

Le JCRE est la partie réalisant le lien entre la machine virtuelle est les ressources physiques. Le JCRE est responsable de la gestion des ressources de la carte, de la communication réseau, de l'exécution des applets, du système d'exploitation de la carte et de la sécurité des applets.

Le cycle de vie du JCRE est le même que le cycle de vie de la SmartCard. Lorsqu'il n'y a pas de tension électrique, la machine virtuelle est suspendue, l'état du JCRE et des objets créés sur la carte est préservée. À la prochaine remise sous tension, le JCRE relance l'exécution de la machine virtuelle en chargeant les données depuis la mémoire morte. Durant la phase de Reset (où la tension est enlevée), si une transaction n'a pas été terminée, le JCRE réalise tous les nettoyages nécessaire pour garder le JCRE dans un état constant (connu).

 

 

< transition