Brevet FR2776788A1 — publié le 19991001

*. PROCEDE DE COMMUTATION D'APPLICATIONS SUR UNE CARTE A PUCE MULTI-APPLICATIVE L'invention concerne les cartes à microcircuits électroniques, dites cartes à puce électronique, qui sont connectées à des dispositifs électroniques pour permettre à ces derniers de réaliser des fonctions particulières correspondant à une application. Elle concerne, plus particulièrement, les cartes à puce électronique qui sont prévues pour enregistrer plusieurs applications et pour lesquelles l'invention propose un procédé et un dispositif de commutation pour configurer une carte multi-applicative de manière que la carte soit reconnue par des terminaux, chaque terminal étant dédié à une application spécifique. Il est connu d'utiliser une carte à puce électronique qui, connectée à un dispositif électronique tel qu'un téléphone mobile que l'on appellera terminal, permet à ce terminal de réaliser des fonctions correspondant à une application telle qu'une liaison téléphonique avec prépaiement. Jusqu'à ce jour, d'une part, une carte à puce électronique ne contient qu'une seule application et, d'autre part, un terminal est dédié à une application de sorte que ce dernier ne peut communiquer qu'avec une carte à puce électronique contenant l'application à laquelle il est dédié. Or, par suite du développement de la capacité mémoire des puces électroniques, il est maintenant possible d'enregistrer plusieurs applications sur une même carte à puce électronique, ce qui pose le problème pour le terminal de reconnaître la carte qui contient l'application pour laquelle il est dédié. L'invention a donc pour but de mettre en oeuvre, dans une carte à puce électronique contenant plusieurs applications, un procédé de commutation pour permettre au terminal auquel est connectée la carte à puce de reconnaître la carte qui contient l'application à laquelle il est dédié. L'invention concerne donc un procédé de commutation d'applications sur une carte à puce multi-applicative susceptible d'être connectée à différents terminaux dédiés chacun à une application particulière, chaque terminal étant apte à transmettre à la carte à puce multi- applicative une commande de remise à zéro et à ne reconnaître que le message dit ATR (ATR étant un acronyme anglo-saxon pour "Answer To Reset") transmis par la carte à puce correspondant à son application, caractérisé en ce qu'il comprend les étapes suivantes consistant à: (a) créer dans la carte à puce une table de configuration à accès par index pour enregistrer le message ATR de chaque application contenue dans la carte à puce dans au moins une case ou colonne de la table de configuration, (b) lire le contenu de la case de la table de configuration qui est sélectionnée par l'index en réponse à une commande de remise à zéro transmise par le terminal, (c) transmettre au terminal le message ATR lu lors de l'étape précédente (b), (d) augmenter d'une unité l'index d'accès à la table de configuration modulo n, n étant le nombre de cases ou colonnes de la table de configuration, et (e) retour à l'étape (b). Dans une variante préférée de réalisation, chaque case de la table de configuration enregistre une adresse du message ATR dans une mémoire séparée. Dans une variante de la précédente, la table de configuration enregistre, dans une première case, l'adresse de l'octet de type de communication appelé octet TS qui constitue le premier octet du message ATR et, dans une deuxième case, l'adresse des autres octets du message ATR. Dans une autre variante encore, l'octet de type de communication TS n'est pas contenu dans une mémoire séparée mais est fourni par un générateur. L'invention concerne également une carte à puce multi- applicative comprenant essentiellement une mémoire dans laquelle sont enregistrées les applications, caractérisée en ce qu'elle comprend, en outre, une table de configuration à accès par index pour enregistrer le message dit ATR de chaque application contenue dans la carte à puce dans au moins une case ou colonne de la table. Dans une forme préférée de réalisation, la table de configuration ne contient, pour chaque application, que les adresses dans la mémoire du premier octet TS du message ATR et des autres octets du message ATR. Dans une variante, la mémoire contenant le premier octet TS est remplacée par un générateur de l'octet TS. D'autres caractéristiques et avantages de la présente invention apparaîtront à la lecture de la description suivante d'un exemple particulier de réalisation, ladite description étant faite en relation avec le dessin joint dans lequel: - la figure 1 est une table de configuration qui doit être mise en place dans la carte à puce électronique pour mettre en oeuvre le procédé selon l'invention, et - la figure 2 est un diagramme montrant les opérations à effectuer pour commuter d'application dans la table de configuration. Avant de décrire l'invention, il est d'abord rappelé qu'un terminal 20 (figure 1) a besoin de certaines informations pour communiquer avec une carte à puce 18. En outre, pour établir une communication, le terminal doit tout d'abord mettre sous tension Vcc la carte à puce et "réveiller" celle-ci en émettant un signal RAZ sur la voie remise à zéro de la carte à puce. Dans le cas o la remise à zéro de la carte est déclenchée après la mise sous tension de celle-ci, on parle de remise à zéro à froid. Si la remise à zéro est déclenchée après une remise à zéro précédente sans que la carte à puce ait été mise hors tension, on parle de remise à zéro à chaud. A la suite d'une remise à zéro à froid ou à chaud, la carte à puce informe le terminal sur ses possibilités en matière de communication telles que le protocole utilisé, la vitesse de communication à utiliser, l'intervalle de temps entre octets consécutifs. Elle peut également émettre des octets qui sont spécifiques à l'application qu'elle contient pour qu'un terminal, dédié à la même application, puisse reconnaitre dès la mise sous tension que la carte à puce est propre ou impropre à l'exploitation par le terminal. La trame d'octets émise par la carte à puce lors d'une remise à zéro de celle-ci s'appelle une réponse à remise à zéro dite message ATR et la façon dont doit être structurée une telle réponse est normalisée. Dans l'état actuel de la technique, une réponse à une remise à zéro est habituellement unique pour une carte à puce même si plusieurs applications cohabitent au sein de la même carte. Cependant, certaines cartes à puce sont capables d'émettre deux réponses distinctes à une remise à zéro RAZ selon qu'il s'agit d'une remise à zéro à froid ou à chaud. Mais il n'est pas envisageable d'utiliser la même réponse (ou deux réponses) à la remise à zéro car la plupart des terminaux ont besoin, pour démarrer une application de disposer des informations de la réponse en accord avec leur application dédiée. Selon l'invention, on associe à chaque application contenue dans une carte à puce multi-applicative, une réponse spécifique à une remise à zéro RAZ qui est enregistrée dans une case d'une table 10 dite de configuration disposée dans la carte 18 et on passe d'une case de la table à la suivante par une commutation circulaire, chaque commutation étant obtenue par une remise à zéro de la carte. Ainsi, à chaque commutation, le terminal reçoit une réponse à une remise à zéro d'une application et ceci tant qu'il n'a pas reçu la réponse qui correspond à son application. Une structure de la table de configuration 10 est représentée sur la figure 1. Chaque case 120, 121, 122, 123,.. 12n de la ligne 12 contient une référence à une adresse de la mémoire 22 de la carte 18 o sont enregistrées tout ou partie des données de la réponse ATR à une remise à zéro d'une application particulière. Ces adresses correspondent à une partie 26 de la mémoire 22. De préférence et selon l'invention, ces données de la réponse sont partielles et ne concernent pas le premier octet du message ATR dont la référence est enregistrée dans une case correspondante 140, 141, 142,..., 14n de la ligne 14 de la table 10. Ce premier octet, appelé TS dans la norme ISO 7816-3, indique la convention utilisée pour communiquer avec le terminal, c'est-à- dire la communication directe ou indirecte. Ces octets TS peuvent être enregistrés dans une partie de la mémoire 22 mais ils sont de préférence obtenus par des générateurs 24 séparés de la mémoire 22. Au lieu de contenir des références d'accès à une mémoire contenant les octets de la réponse à remise à zéro ATR, les cases 120 à 12n et 141 à 14n pourraient contenir les octets eux-mêmes. Cependant, une telle manière de faire aboutirait à une table qui utiliserait un espace mémoire important. Par ailleurs, il serait possible aussi de combiner les couples de cases (120, 140),(121, 141), (122, 142),... (12n, 14n) pour envoyer une réponse complète contenant le premier octet mais dans le fonctionnement de la carte à puce, il est important que ce premier octet soit émis très rapidement, soit dans un délai compris entre 400 et 40.000 cycles du terminal, tandis que les octets suivants peuvent être émis dans un délai inter- octets qui doit être inférieur à 9.600 fois 40.000 cycles du terminal. Ce délai supplémentaire permet d'accéder aux autres octets sans contrainte de temps particulier. Aux deux cases d'une colonne est associée une troisième case, 160 pour la première colonne et 16n pour la nième colonne, o est enregistré un code de validité, à deux chiffres par exemple, qui indique l'état de la validité de la colonne en fonction du type de remise à zéro. Ainsi, - le code 01 correspond à une colonne ou entrée valide lors d'une remise à zéro à froid uniquement, - le code 10 correspond à une colonne ou entrée valide lors d'une remise à zéro à chaud uniquement, - le code 11 correspond à une colonne ou entrée valide que la remise à zéro soit à froid ou à chaud, et - le code 00 correspond à une colonne ou entrée toujours invalide. Il est à noter que chaque application contenue dans la carte à puce comporte une ou plusieurs entrées car elle peut être sélectionnée par une remise à zéro à froid, à chaud ou indifféremment à froid ou à chaud. La table 10 est adressée par indexation circulaire à l'aide d'un index 28 qui peut prendre les positions 0, 1, 2, 3,..., n au fur et à mesure de l'indexation. La position de l'index nul désigne la réponse par défaut à une remise à zéro de la carte. Cette réponse peut ou ne peut pas être associée à une application et il est recommandé que la table de configuration comporte au moins un enregistrement valide dédié à cette réponse. Les différentes étapes du procédé de commutation d'application seront décrites à l'aide du diagramme de la figure 2. A la mise en place de la carte à puce multi-applicative 18 dans le terminal 20, ce dernier met la carte sous tension Vcc, ce qui initialise une remise à zéro RAZ dite à froid (étape 30). Si l'index 28 de la table est "pointé" sur une colonne dans laquelle la case 16 contient le code de validité 01 ou 11, cette colonne est sélectionnée car l'entrée est valide: c'est le résultat positif du test de validité de l'étape 32. L'étape suivante 34 consiste en l'envoi du premier octet TS vers le terminal, premier octet qui est déterminé par le contenu de la case 14 et qui est fourni par l'un des générateurs 24. L'étape 36 consiste à lire la case 12 pour obtenir la référence du reste du code ATR dans la partie 26 de la mémoire 22 de la carte. Dès que cette référence est connue, le mécanisme d'indexation est avancé d'une unité pour pointer la colonne suivante de la table (étape 38). L'étape suivante 40 consiste en l'envoi du reste des données ATR. Au cas o les données ATR ne seraient pas reconnues par le terminal comme correspondant à son application dédiée, il enverra à la carte, selon son organisation, soit une remise à zéro à chaud, soit une indication de déconnecter la carte et la reconnecter pour obtenir une remise à zéro à froid. Ainsi, la carte revient à l'état 30. Dans le cas o le test de validité 32 est négatif, le mécanisme d'indexation est avancé d'une unité pour pointer la colonne suivante de la table 10. Par ce procédé, si la carte à puce contient l'application à laquelle le terminal est dédié, ce dernier la reconnaîtra par l'intermédiaire de la table. La table 10 peut être configurée de différentes manières pour s'adapter à des cas particuliers. Ainsi, lorsqu'une application d'une carte à puce multi- applicative nécessite une probabilité plus grande d'être sélectionnée, plusieurs entrées ou enregistrements de la table correspondront à cette application de sorte que la configuration de la carte dédiée à l'application sera désignée comme configuration courante plus fréquemment que les autres. Certaines applications nécessitent deux réponses, à des remises à zéro consécutives, à cet effet, deux entrées ou colonnes adjacentes de la table de configuration contiendront, la première, les informations correspondant à une remise à zéro à froid et la deuxième les informations correspondant à une remise à zéro à chaud. Dans un autre cas particulier, il peut être intéressant de privilégier une application en maintenant dans l'état la configuration courante. Pour cela, la valeur précédente de l'index pourra être restaurée lorsque le terminal aura reconnu l'envoi du message ATR (après l'étape 40). Ainsi, à la prochaine remise à zéro de la carte, la dernière configuration utilisée sera à nouveau la configuration courante. Dans le cas o certains terminaux utilisent une commande de sélection d'application, l'index sera initialisé pour désigner l'entrée dans la table de configuration correspondant à cette application. La table de configuration peut être réalisée dans une partie dédiée de la mémoire 22 de la carte ou dans une extension de la structure d'enregistrement des applications elles-mêmes. La description qui vient d'être faite de l'invention permet de définir les étapes d'un procédé de commutation d'applications sur une carte à puce multi- applicative susceptible d'être connectée à différents terminaux dédiés chacun à une application particulière, chaque terminal étant apte à transmettre à la carte à puce multi-applicative une commande de remise à zéro RAZ et à ne reconnaître que le message ATR transmis par la carte à puce correspondant à son application, caractérisé en ce qu'il comprend les étapes suivantes consistant à: (a) créer dans la carte à puce une table de configuration à accès par index pour enregistrer le message (ATR) de chaque application contenue dans la carte à puce dans au moins une case ou colonne de la table de configuration, (b) lire le contenu de la case de la table de configuration qui est sélectionnée par l'index en réponse à une commande de remise à zéro RAZ transmise par le terminal, (c) transmettre au terminal le message ATR lu lors de l'étape précédente (b), (d) augmenter d'une unité l'index d'accès à la table de configuration modulo n, n étant le nombre n de cases ou colonnes de la table de configuration, et (e) retour à l'étape (b). Dans une première variante de réalisation, le message ATR est enregistré dans une mémoire séparée de la table de configuration et la case de la table de configuration contient l'adresse du message ATR dans la mémoire séparée. Dans une variante préférée de réalisation, le message ATR est scindé en deux parties, l'une correspondant au premier octet TS indique le type de communication direct ou indirect, l'autre correspondant aux autres octets du message ATR, chaque partie est enregistrée dans une mémoire séparée de la table de configuration, et l'adresse de chaque partie de message ATR est enregistrée dans une case de la table de configuration. Le message ATR peut être scindé en plus de deux parties, par exemple en autant d'octets qu'il contient. Dans une autre variante préférée de l'invention, chaque case de la table de configuration contient un code indiquant le type de remise à zéro auquel correspond le message ATR, le contenu de la case n'étant lu que si la commande de remise à zéro transmise par le terminal correspond au type visé par le code. Dans les variantes préférées de réalisation, les étapes (b) et (c) consistent dans les étapes intermédiaires suivantes consistant à: (b1) lire la valeur permettant de coder la convention de communication à utiliser, (b2) décoder le type de conventions de communication à utiliser pour communiquer avec le terminal, (c1) transmettre le premier octet TS au terminal, (b3) lire l'adresse des autres octets du message ATR, (b4) lire les autres octets du message ATR à l'adresse lue par l'étape (b3), (c2) transmettre les autres octets du message ATR au terminal. Dans une telle succession d'étapes, l'étape (d) est réalisée entre les étapes (b3) et (b4). Les étapes (b1) et (b2) peuvent être remplacées par les étapes suivantes consistant à: (b,1) lire la valeur permettant de coder la convention de communication, (b'2) décoder le type de convention de communication à utiliser pour communiquer avec le terminal. REVENDICATIONS 1. Procédé de commutation d'applications sur une carte à puce multiapplicative (18) susceptible d'être connectée à différents terminaux (20) dédiés chacun à une application particulière, chaque terminal (20) étant apte à transmettre à la carte à puce multi- applicative une commande de remise à zéro (RAZ) et à ne reconnaître que le message (ATR) transmis par la carte à puce correspondant à son application, caractérisé en ce qu'il comprend les étapes suivantes consistant à: (a) créer dans la carte à puce une table de configuration (10) à accès par index pour enregistrer le message (ATR) de chaque application contenue dans la carte à puce dans au moins une case (12, 14) ou colonne de la table de configuration, (b) lire le contenu de la case (12, 14) de la table de configuration (10) qui est sélectionnée par l'index en réponse à une commande de remise à zéro (RAZ) transmise par le terminal (20), (c) transmettre au terminal le message (ATR) lu lors de l'étape précédente (b), (d) augmenter d'une unité l'index d'accès à la table de configuration (10) modulo n, n étant le nombre de cases ou colonnes de la table de configuration, et (e) retour à l'étape (b). 2. Procédé selon la revendication 1, caractérisé en ce que: - le message (ATR) est enregistré dans une mémoire séparée (26) de la table de configuration, et - la case de la table de configuration contient l'adresse du message (ATR) dans la mémoire séparée (26). 3. Procédé selon la revendication 2, caractérisé en ce que: - le message (ATR) est scindé en deux parties au moins, l'une correspondant au premier octet (TS) indique le type de communication direct ou indirect, l'autre correspondant aux autres octets du message (ATR), chaque partie étant enregistrée dans une mémoire séparée (24, 26) de la table de configuration, et - l'adresse de chaque partie de message (ATR) est enregistrée dans une case (12, 14) de la table de configuration. 4. Procédé selon la revendication 3, caractérisé en ce que le premier octet (TS) est fourni par un générateur (24) en fonction d'une valeur, qui permet de coder la convention de communication à utiliser, contenue dans la table de configuration. 5. Procédé selon la revendication 1, 2, 3 ou 4, caractérisé en ce que chaque case de la table de configuration contient un code indiquant le type de remise à zéro auquel correspond le message (ATR), ledit message n'étant transmis que si la commande de remise à zéro fournie par le terminal correspond au type visé par le code. 6. Procédé selon la revendication 3, 4 ou 5, caractérisé en ce que les étapes (b) et (c) consistent dans les étapes intermédiaires suivantes consistant à: (b1) lire l'adresse du premier octet (TS) du message (ATR), (b2) lire la valeur de l'octet (TS) à l'adresse lue par l'étape (b1), (c1) transmettre le premier octet (TS) au terminal, (b3) lire l'adresse des autres octets du message (ATR), (b4) lire les autres octets du message (ATR) à l'adresse lue par l'étape (b3), (c2) transmettre les autres octets du message (ATR) au terminal. 7. Procédé selon la revendication 6, caractérisé en ce que les étapes (b1) et (b2) sont remplacées par les étapes suivantes consistant à: (b,1) lire la valeur permettant de coder la convention de communication, (b'2) décoder le type de convention de communication à utiliser pour communiquer avec le terminal. 8. Procédé selon la revendication 6 ou 7, caractérisé en ce que l'étape (d) est réalisée entre les étapes (b3) et (b4)- 9. Procédé selon l'une quelconque des revendications précédentes 5 à 8, caractérisé en ce que, dans l'étape (a), le message (ATR) correspondant à une même application est enregistrée dans au moins deux cases ou colonnes correspondant chacune au même type de remise à zéro. 10. Procédé selon l'une quelconque des revendications précédentes 5 à 8, caractérisé en ce que, dans l'étape (a), le message (ATR) correspondant à une même application est enregistré chacun dans une case ou colonne correspondant chacune à un type de remise à zéro. 11. Procédé selon la revendication 10, caractérisé en ce que la première case ou colonne dans l'ordre d'indexation circulaire correspond à une remise à zéro à froid tandis que la deuxième case ou colonne correspond à une remise à zéro à chaud. 12. Carte à puce multi-applicative (18) pour terminaux dédiés comprenant essentiellement une mémoire (22) dans laquelle sont enregistrées une pluralité d'applications, caractérisée en ce qu'elle comprend, en outre: une table de configuration (10) à accès par index pour enregistrer au moins un message pour chaque application dans au moins une case ou colonne de la table, et - des moyens (28) pour lire, par indexation circulaire, les colonnes de la table et transmettre leur contenu au terminal dédié auquel la carte à puce est connectée. 13. Carte à puce selon la revendication 12, caractérisée en ce que le message enregistré dans la table de configuration est le message (ATR) à transmettre pour l'application correspondante. 14. Carte à puce selon la revendication 12, caractérisée en ce que le message enregistré dans la table de configuration est l'adresse, dans la mémoire, du message (ATR) et en ce qu'une partie de la mémoire (22) est dédiée (24, 26) à l'enregistrement des messages (ATR).