Brevet FR2809847A1 — publié le 20011207

PROCEDE DE PERSONALISATION ELECTRIQUE DE CARTE A PUCE La presente invention concerne de manière générale les cartes à puce. Plus précisement, l'invention concerne un procédé de personnalisation electrique d'une carte a puce, et s'applique en particulier à la personnalisation cartes à puce de plate-forme ouverte. Une carte à puce est du type défini par les Recommandations ISO- 7816. La personnalisation d'une carte à puce peut typiquement être réalisée sous deux formes, ou bien par personnalisation physique ou bien par personnalisation électrique . La personnalisation physique consiste, à titre d'exemple, ou bien à inscrire sur le corps de la carte, typiquement par technique laser, les données d'identification de l'usager, un numéro d'identification bancaire, une date limite de validité de la carte bancaire, ou bien à imprimer sur le corps de la carte par technique offset ou jet d'encre un motif ou dessin particulier. La personnalisation électrique consiste, pour sa part, à mémoriser dans la puce de la carte des données particulières propres à un usager ou un groupe d'usagers donné telles que la valeur d'unités initiales pour une application de porte-monnaie électronique, un code secret propre à l'usager, etc... Une puce d'une carte à puce est un composant électronique comprenant au moins une zone de mémoire et une unité de traitement, ces zone de mémoire et une unité traitement formant partie des ressources matérielles de la puce. La puce mémorise avantageusement, en outre, un système d'exploitation. Ce système d'exploitation est défini comme un logiciel, ou une interface logicielle, d'accès aux et de gestion des ressources matérielle (mémoires, unité d'entrée/sortie, interruptions, etc....) de la puce. Les ressources physiques sont en quelque sorte traduites par le système d'exploitation sous la forme de ressources logiques , telles que des commandes élémentaires. Lorsqu'un programme applicatif déterminé est exécuté par la puce de la carte, le système d'exploitation est mis à contribution. Selon une première technique connue selon la technique antérieure, la personnalisation électrique est mise en oeuvre de la manière suivante. Comme montré dans la Figure 1, elle fait appel à deux étapes successives de chargement de l'application 1 dans carte à puce 3, puis de personnalisation 2 à proprement parté. Pour donner plus détails, la personnalisation est réalisée de la manière suivante - 1 - Un logiciel applicatif, par exemple de type porte-monnaie électronique, est développé dans langage donné, ce logiciel définira les fonctions élémentaires du porte-monnaie électronique (crédit, débit, accès sécurisé, etc...) . - 2 - Des données de personnalisation sont définies et créées. Cela comprend la préparation des données, leur formatage dans un format approprié. Ces données sont par exemple, la valeur initiale d'unités élémentaires ayant valeur financière du porte-monnaie électronique, un code secret, un nombre limite de saisi par l'usager code secret avant rejet de l'opération, etc... - 3 - Le logiciel personnalisation est également créé. II prend en compte le format des données personnalisation créées selon le point 2. Ce logiciel de personnalisation est destiné à opérer après son chargement dans une machine de personnalisation . Cette machine assure la mise en contact électrique de bornes de connexion de la puce et de bornes d'alimentation et de communication de la machine. - 4 - Une fois la carte correctement positionnée dans la machine, elle se trouve alimentée et ses bornes d'échanges de données sont mises en contact avec des bornes d'échanges de données de la machine. La carte est réinitialisée. Une étape d'authentification prend place entre la machine commandée par le logiciel de personnalisation et la carte à puce. Une session de d'échange de données est ensuite etablie entre la carte et la machine . La carte et la machine communique alors selon un protocole prédéterminée. Le logiciel de personnalisation télécharge alors le logiciel applicatif dans la carte. Puis, ce même logiciel de personnalisation télécharge les données de personnalisation propres à la carte en cours de personnalisation. L'inconvénient principal de cette solution selon la technique antérieure est de faire appel à deux étapes : une étape de téléchargement d'un logiciel applicatif identique pour toutes cartes, puis une étape de téléchargement de données personnalisées dans carte. Cela induit une durée relativement longue du procédé de personnalisation. En outre, deux étapes successives d'échange de données entre la carte et la machine étant nécessaires, il y'a un risque de téléchargement d'informations erronées. solution connue de la technique antérieure, illustrée schematiquement dans Figure 2, remédie à ce problème en prévoyant une seule etape d'échange de données entre la machine de personnalisation et la carte. Dans ce cas, les étapes suivantes sont prévues. - 1 - Un logiciel applicatif, est développée dans un langage donné, en donnant aux variables (exemple : x, y ,z) de données personnalisées des valeurs particulières identifiables (exemple : 10101010, 11111111, 00000000). - 2 - Ce logiciel applicatif est compilé. Il comprend alors, comme montré dans la Figure 2, un portion de logiciel en code objet et des chaînes de valeurs binaires, chaque chaîne correspondant à une valeur particulière identifiable dans le logiciel applicatif, - - Un traitement de personnalisation du logiciel applicatif compilé est alors en ceuvre. Ce traitement comprend la reconnaissance des chaînes de valeurs binaires particulières (exemple : 10101010, 111111 1, 00000000), puis pour chaque carte à personnaliser, le remplacement de ces chaîne de valeurs binaires particulières par les données de personnalisation propres à la carte en cours de personnalisation. 4 - La carte est réinitialisée. Une étape d'authentification prend place entre la machine commandée par un logiciel de téléchargement et la carte à puce. Une session d'échange de données est ensuite établie entre la carte et la machine . La carte et la machine communique alors selon un protocole prédéterminé. Le logiciel de téléchargement télécharge dans la carte le logiciel applicatif compilé a été préalablement personnalisé selon le point 3 précité. solution décrite ci-dessus présente l'inconvénient d'une longue mise au point pour 'assurer que les chaînes de valeurs binaires (10101010, 11111111, 00000000) seront parfaitement reconnues de façon non ambiguë dans le logiciel applicatif compilé, et garantir ainsi que les données de personnalisation les remplaçant seront bien inscrites à la position exacte qui leur est réservée dans le logiciel applicatif compilé. L'invention vise donc à remédier aux inconvénients précités en fournissant un procédé de personnalisation électrique carte à puce. Selon une première variante de l'invention relative à un programme applicatif compilable, le procédé de personnalisation électrique de cartes à puce, consistant à mémoriser des données personnalisées dans chaque puce de carte à puce, comprend l'étape suivante - écriture d'un programme applicatif en code source dans un langage évolué. II se caractérise en ce qu'il comprend étapes de - substitution de variables a personnaliser dans le programme applicatif en code source par des données de personnalisation propres à ladite chaque carte, en un programme applicatif en code source personnalisé ; - compilation du programme applicatif en code source personnalisé ; - chargement dans la carte ' puce du programme applicatif en code source personnalisé et préalablement compilé. Selon une seconde variante de l'invention relative à un programme applicatif interprétable, de type Javacard, le procédé de personnalisation électrique de cartes à puce, consiste à mémoriser des données personnalisées dans chaque puce de carte à puce. II comprend l'étape suivante - écriture d'un programme applicatif en code source dans un langage interprétable; Il se caractérise en ce qu'il comprend étapes de - reconnaissance de caractères particuliers dans le programme applicatif en code source; - substitution de variables à personnaliser dans le programme applicatif en code source par des données de personnalisation propres à ladite chaque carte, en un programme applicatif en code source personnalisé ; - chargement dans la carte à puce du programme applicatif en code source personnalisé. La reconnaissance de caractères particuliers étant réalisée selon l'invention dans le programme applicatif en code source, tous les inconvénients relatifs à la reconnaissance des chaînes de valeurs binaires particulières sont supprimés, la reconnaissance étant réalisée sur des caractères particuliers de type caractères ASCII. II en résulte alors une réduction extrêmement importante des risques d'erreurs et de mise au point, le nombre de caractères ASCII étant très supérieur au nombre de caractères binaires qui est lui limité à deux caractères (ou bien 0 ou bien 1 ). Ainsi, la reconnaissance de caractères particuliers étant réalisée selon l'invention dans le programme applicatif en code source, tous les inconvénients relatifs à la reconnaissance des chaînes de valeurs binaires particulières sont supprimés, la reconnaissance étant réalisée sur des caractères particuliers de type caractères ASCII. Il en résulte alors une réduction extrêmement importante des risques d'erreurs et de mise au point, le nombre de caractères ASCII étant tres supérieur au nombre de caractères binaires qui est limité en nombre à deux (ou bien 0 ou bien 1 ). Avantageusement, l'étape de substitution est précédée par étape de reconnaissance de caractères identifiant des zones délimitant lesdites variables dans le programme applicatif en code source. D'autres caractéristiques et avantages de la présente invention apparaîtront plus clairement à la lecture de la description qui suit, en référence aux dessins annexés correspondants dans lesquels - la Figure , déjà commentée, est une représentation schématique premier procédé personnalisation de carte à puce selon la technique anterieure ; - la Figure également déjà commentée, est une représentation schématique d'un premier procédé de personnalisation de carte à puce selon la technique antérieure ; - la Figure 3 est un bloc-diagramme schématique d'un procédé de personnalisation de carte à puce selon l'invention ; et - la Figure 4 montre un extrait d'un programme applicatif ainsi qu'un enregistrement élémentaire d'une base de données de personnalisation, pour expliquer la mise en oeuvre de la présente invention. En référence aux Figures 3 et 4, un procédé de personnalisation de cartes à puce selon l'invention met en oeuvre les étapes suivantes. Initialement, un programme applicatif en code source 40 est écrit dans un langage évolue. Ce langage évolué se caractérise par des instructions compactes assimilables par l'Homme. Il peut être un langage évolué à proprement parlé ou un langâge dit interprétable. Un extrait de langage évolué donné seulement à titre d'exemple est montré dans la partie gauche de la Figure 4. Ce langage évolué est traite par une unité de reconnaissance de caractères 41, cette unité de reconnaissance étant typiquement réalisée sous forme logicielle. Cette unité de reconnaissance 41 a pour fonction d'identifier des caractères particuliers, ici notés (voir Figure 4) dans le programme applicatif en code source 40. Comme cela est représentées par les zones grises de l'extrait de langage montré dans la partie gauche de la Figure 4, l'unité de reconnaissance identifie les zones délimitées par un caractère d'autre part, ces zones délimitant des définitions de variables dans le programme applicatif en code source 40. Une base de données identifiée par la référence 43 dans la Figure 3 mémorise les données de personnalisation. Cette base de données est typiquement construite, de manière connue par l'homme du métier, sur base de définitions de champs, tels que cela apparaît dans le cercle de la partie droite de la Figure 4. Un enregistrement de la base de données est illustré dans la partie droite de la Figure 4. Pour l'application visée à titre purement indicatif dans la présente description, cet enregistrement destiné à la personnalisation d'une carte à puce donnée 3 définit la valeur maximale de chargement du porte-monnaie électronique à 2000 unités de valeur, la valeur initiale de chargement du porte-monnaie électronique à 200 unités de valeur, et le nombre maximal d'essais par l'usager de saisi code secret à 2. Est ensuite prévue une étape de substitution 44 de variables à personnaliser dans le programme applicatif en code source 40 par des données de personnalisation propres à chaque carte, en un programme applicatif en code source personnalisé. Ainsi, programme applicatif en code source personnalisé est créé pour chaque carte 3. Ensuite selon la carte 3 mémorise ou pas un logiciel de type Machine Virtuelle de type JavaCard TM promu et licensié par SUN, ou Smart Card for WindowsTM licensiée par MICROSOFT Corp., une étape de compilation est requise ou Si la carte 3 mémorise un logiciel de type Machine Virtuelle le programme applicatif en code source personnalisé est directement interprétable par la carte 3. Il est dans ce cas chargé tel quel dans la carte. Dans le cas inverse, une étape de compilation 44 est nécessaire. Cette étape de compilation 44 consiste à transformer une instruction compacte écrite en langage évolué, exemple WRITE , en une série d'instructions en langage machine, toujours mêmes pour cette instruction, directement exécutable par l'unité de traitement la puce de la carte à puce. Par exemple, dans le cas de cette instruction WRITE , transformation par compilation aura pour objet de produire des instructions lesquelles l'unité de traitement devra, successivement, charger, dans un registre d'échange avec la mémoire, la valeur à écrire, sélectionner par son adresse cellule de la mémoire où cette valeur doit être écrite, provoquer l'écriture, incrémenter son compteur d'instructions pour admettre une instruction suivante du programme, etc.... REVENDICATIONS 1 - Procédé personnalisation électrique de cartes à puce, consistant à mémoriser données personnalisées dans chaque puce de carte à puce, comprenant l'etape suivante = écriture d'un programme applicatif en code source (40) dans langage évolué; caractérisé qu'il comprend les étapes de - substitution de variables à personnaliser dans le programme applicatif en code source par des données de personnalisation propres à ladite chaque carte, en un programme applicatif en code source personnalisé ; - compilation du programme applicatif en code source personnalisé ; - chargement dans la carte à puce du programme applicatif en code source personnalisé et préalablement compilé. 2 - Procédé personnalisation électrique de cartes à puce, consistant a mémoriser des données personnalisées dans chaque puce de carte à puce, comprenant l'étape suivante - écriture d'un programme applicatif en code source (40) dans un langage interprétable; caractérisé en ce qu'il comprend les étapes de - reconnaissance (41) de caractères particuliers dans le programme applicatif en code source (40) ; - substitution de variables à personnaliser dans le programme applicatif en code source par des données de personnalisation propres à ladite chaque carte, en un programme applicatif en code source personnalisé ; - chargement dans la carte à puce du programme applicatif en code source personnalisé. 3 - Procédé conforme à la revendication 1 ou 2, caractérisé en ce que l'étape substitution est précédée par une étape de reconnaissance de caractères identifiant des zones délimitant lesdites variables dans le programme applicatif code source (40).