Brevet FR2700040A1 — publié le 19940701

CARTE A PUCE AVEC DONNEES ET PROGRAMMES PROTEGES CONTRE LE VIEILLISSEMENT L'invention concerne les cartes à puces, et tout spécialement celles qui comportent des données stockées en mémoires non volatiles électriquement programmables et effaçables (mémoires EEPROM). Les cartes à puces comportent de plus en plus ce type de mémoire, pour contenir soit des données de personnalisation de la carte (code confidentiel, données d'identification de l'application autorisée ou de l'utilisateur autorisé, etc), soit des données variables au cours de l'utilisation de la carte (crédit d'unités de pré- paiement, porte-monnaie, transactions, etc), soit encore des programmes exécutables par un microprocesseur placé sur la même puce de circuit intégré, ces programmes étant stockés en mémoire non volatiles de manière à ne pas être figés au moment de la fabrication. Ces mémoires EEPROM sont prévues à côté d'autres types de mémoire, vive (RAM) ou morte (ROM). Par exemple, une utilisation fréquente des mémoires EEPROM est la suivante: un microprocesseur fonctionne pour l'essentiel avec des programmes stockés en mémoire morte (ROM), mais certains programmes, appelés filtres et placés en mémoire EEPROM, permettent de modifier les possibilités des programmes stockés en mémoire morte, ou permettent plus généralement de modifier l'application de la carte Ces programmes sont placés dans une mémoire électriquement programmable de façon qu'on puisse les écrire dans la carte par programmation électrique après la fabrication, en fonction des besoins de l'application ou de l'utilisateur. On s'est aperçu cependant que les cartes ainsi constituées risquaient de ne pas donner entièrement satisfaction du point de vue de la durée de vie. L'invention propose principalement de placer dans la carte un programme supplémentaire de rafraîchissement du contenu de certaines zones de ces mémoires EEPROM, plus particulièrement celles qui contiennent des infor- mations permanentes (données ou programmes), afin d'éliminer les risques d'altération des données ou programmes en cours de vie Le programme de rafraîchis- sement est placé de préférence en mémoire morte (ROM), mais il peut aussi être placé en mémoire EEPROM L'in- vention s'applique surtout dans le cas des cartes à puce à microprocesseur, et dans ce cas c'est le microproces- seur qui exécute un programme de rafraîchissement contenu dans une mémoire exécutable En l'absence de microprocesseur il faudrait un séquenceur câblé pour exécuter un programme de rafraîchissement. L'invention propose donc une carte à puce compor- tant au moins une mémoire EEPROM contenant au moins une zone de données permanentes, c'est-à-dire non suscep- tibles d'être modifiées à chaque utilisation de la carte, caractérisée en ce qu'elle comporte des moyens de rafraîchissement automatique de tout ou partie du contenu de cette zone. Si la carte comporte un microprocesseur, les moyens de rafraîchissement sont constitués par une série d'instructions exécutables par le microprocesseur, ces instructions étant placées en mémoire morte ou au moins partiellement en mémoire EEPROM. Le programme de rafraîchissement comporte alors de préférence une boucle itérative avec lecture du contenu d'un mot, puis écriture de ce mot avec le contenu lu, sans effacement préalable du mot, puis incrémentation d'une adresse de mémoire pour lire un mot suivant, ceci depuis le début jusqu'à la fin d'une partie de la zone ou de la zone de mémoire à rafraîchir. La procédure de rafraîchissement peut être déclen- chée par des conditions de branchement au programme de rafraîchissement qui sont, soit certaines dates, soit un certain nombre d'utilisations de la carte, soit systéma- tiquement à chaque mise sous tension. Il est prévu, selon le cas, que la carte comporte des moyens pour déclencher une procédure de rafraîchis- sement lorsque la carte est utilisée au delà d'un délai prédéterminé, après sa première mise en service ou après un rafraîchissement précédent Ou bien, il peut être prévu que la carte comporte des moyens pour déclencher une procédure de rafraîchissement lorsque la carte a été utilisée un nombre prédéterminé de fois après sa pre- mière mise en service ou après un rafraîchissement précédent, ou bien, il peut être prévu que la carte comporte des moyens pour déclencher une procédure de rafraîchissement à chaque mise sous tension de la carte mais sur une partie seulement de la zone à rafraîchir, l'adresse de début de cette partie étant obtenue aléa- toirement. D'autres caractéristiques et avantages de l'in- vention apparaîtront à la lecture de la description détaillée qui suit et qui est faite en référence aux dessins annexés dans lesquels: la figure 1 représente une puce de carte à puce à microprocesseur; la figure 2 représente sous forme symbolique le contenu d'une mémoire EEPROM de la carte; la figure 3 représente un exemple d'organigramme des étapes de mise en oeuvre de l'invention. la figure 4 représente un autre exemple d'organi- gramme des étapes de mise en oeuvre de l'invention. La puce représentée à la figure 1 est très clas- sique Elle comporte un microprocesseur MP, une mémoire vive de travail (RAM), une mémoire morte de programmes (ROM), et une mémoire non volatile effaçable et pro- grammable électriquement (EEPROM), contenant des données et/ou des programmes Le microprocesseur et les mémoires sont reliés entre eux par des bus de données et d'adres- ses, permettant également de communiquer avec l'exté- rieur de la puce par l'intermédiaire de plots de contacts P et éventuellement de circuits d'interface d'entrée/sortie IES. La mémoire EEPROM peut contenir aussi bien des données permanentes que des données variables Par l'expression "données variables", on entend des données susceptibles de varier au cours des utilisations succes- sives de la carte, les données ou programmes permanents restant au contraire en principe inchangés d'une utili- sation à l'autre Par exemple, les données permanentes sont des codes d'identification de la carte, des codes d'identification de l'application dans laquelle elle peut fonctionner, et éventuellement des codes d'identi- fication ou d'authentification des utilisateurs auto- risés Ces données sont le plus souvent inscrites dans la carte à puce au moment de la personnalisation de la carte, c'est-à-dire après fabrication et test de la carte C'est pourquoi elles sont inscrites en mémoire électriquement programmable Les données variables sont celles qui sont inscrites dans la carte lors de l'uti- lisation de celle-ci, qui doivent être conservées de manière non volatile jusqu'à la prochaine utilisation, et qui peuvent ensuite être modifiées au cours de cette nouvelle utilisation Par exemple, ce sont les crédits disponibles dans le cas de cartes bancaires ou de cartes à prépaiement, ou le solde d'un porte-monnaie électro- nique. Par ailleurs, les informations inscrites dans certaines zones de la mémoire EEPROM peuvent être des programmes d'instructions exécutables par le micropro- cesseur La plupart des programmes d'instructions sont contenus en principe dans la mémoire morte ROM, mais certains programmes peuvent être en mémoire EEPROM ce sont des programmes ou des portions de programmes, ou encore des paramètres de modification de programmes de mémoire morte, qui sont spécifiques d'une application particulière parmi plusieurs applications possibles, ou encore d'un utilisateur ou groupe d'utilisateurs parti- culiers parmi d'autres utilisateurs possibles Ces programmes ne sont donc inscrits dans la carte qu'au moment de la personnalisation, donc en principe après fabrication et test de la carte Ils sont en principe permanents, sauf repersonnalisation de la carte. La figure 2 représente une configuration possible de la mémoire EEPROM, avec une première zone Zl contenant des données permanentes (identification, authentification, etc), une deuxième zone Z 2 contenant des programmes ou portions de programmes exécutables par le microprocesseur, une troisième zone Z 3 contenant des données variables non volatiles engendrées au cours de l'utilisation et devant être conservées jusqu'à l'utili- sation suivante, et enfin éventuellement d'autres zones de mémoire EEPROM désignées par Z 4 On considérera que la première zone commence à une adresse de mémoire ADO (adresse générée par le microprocesseur), qu'elle se termine à une adresse AD 1, que la deuxième zone commence à l'adresse immédiatement suivante et qu'elle se termine à une adresse AD 2. Les zones Zl et Z 2 sont considérées dans cet exemple comme des zones contenant des informations de type "permanentes" et dont le contenu est crucial pour le fonctionnement de la carte Ce sont des zones que l'on va rafraîchir périodiquement pour éviter toute altération de leur contenu par suite du vieillissement inévitable de la mémoire EEPROM La zone Z 3 et la zone Z 4 ne seront pas rafraîchies. Le rafraîchissement du contenu des zones Zl et Z 2 est déclenché à partir de conditions de branchement CB au programme de rafraîchissement qui est un sous-pro- gramme du programme principal Les conditions de bran- chement peuvent comprendre un test portant, par exemple sur une date de rafraîchissement prédéterminée, ou sur un nombre d'utilisations maximal de la carte C'est-à- dire qu'on considérera dans ce cas, par exemple qu'il est nécessaire de rafraîchir les zones Zl et Z 2 tous les ans, ou au bout de cent ou mille utilisations de la carte. Ce test peut par exemple être effectué systémati- quement à chaque nouvelle mise sous tension de la carte à puce Il constitue alors une étape préliminaire de la mise en route de la carte. Si le test est un test de date, le rafraîchissement peut être effectué systématiquement à certaines dates prédéterminées Même si la carte ne contient pas elle même une date interne, le lecteur dans lequel elle est insérée possédera en général cette date; le microproces- seur pourra comparer cette date avec les dates prédéter- minées; il testera par ailleurs l'état d'un bit drapeau indiquant si un rafraîchissement a été fait ou n'a pas encore été fait depuis la date critique S'il a été fait, le programme principal d'utilisation de la carte se poursuit; sinon, un sous programme de rafraîchisse- ment est exécuté avant retour au programme principal. Si le test porte sur le nombre d'utilisations de la carte, on doit prévoir des moyens pour enregistrer, par exemple dans la zone Z 4 de la mémoire EEPROM, un nombre N d'utilisations, incrémenté d'une unité à chaque nouvelle mise sous tension de la carte L'incrémentation de ce nombre constitue alors un des programmes initiaux (en mémoire morte) de la mise en route de la carte à chaque utilisation. La figure 3 schématise l'invention sous forme d'une organigramme d'un programme qui peut être exécuté par le microprocesseur Ce programme est stocké en principe dans la mémoire morte ROM Toutefois, on peut aussi envisager qu'il soit stocké en partie dans la mémoire EEPROM elle- même, par exemple dans la zone Z 4 Cette dernière hypothèse sera utilisée lorsqu'on désire que le programme de rafraîchissement soit vendu optionnellement et non obligatoirement avec la carte à puce. Sur la figure 3, on a représenté un organigramme de fonctionnement, qui suppose que le rafraîchissement est effectué au bout d'un nombre NO d'utilisations de la carte après le précédent rafraîchissement. Le programme principal en mémoire morte ROM se déroule et passe par une séquence d'incrémentation du nombre N d'utilisations de la carte; le nombre incré- menté est stocké dans la mémoire Z 4; puis une séquence de comparaison de N avec le nombre prédéterminé NO est effectué Si N est inférieur à NO, le programme princi- pal continue Sinon, un branchement à un sous-programme de rafraîchissement R est effectué. Le sous-programme R comporte d'abord une étape d'initialisation d'un compteur d'adresse du microproces- seur pour positionner le compteur sur l'adresse ADO de début des zones Zl, Z 2 à rafraîchir Puis, une boucle de programme est effectuée tant qu'on n'a pas atteint la dernière adresse AD 2 des zones de mémoire EEPROM à rafraîchir. La boucle comporte une étape de lecture d'un mot de mémoire à l'adresse pointée par le compteur d'adresse, puis une étape d'écriture de ce mot avec le contenu qu'on vient de lire L'écriture est effectuée de préfé- rence sans effacement préalable, pour aller plus vite, alors qu'habituellement l'écriture d'un mot dans une mémoire EEPROM passe d'abord par l'effacement du mot. L'écriture sans effacement est possible puisqu'on réécrit le même mot. Ensuite, on prévoit une étape de test du compteur d'adresse Si on a atteint l'adresse AD 2, on sort de la boucle; sinon, on incrémente l'adresse d'une unité et on retourne à l'étape de lecture, en vue de lire le mot suivant. La sortie de la boucle, lorsque le mot de la dernière adresse AD 2 a été réécrit, peut comporter une remise à zéro du nombre N d'utilisations de la carte, mémorisé dans la zone Z 4; puis on retourne au programme principal. Selon un autre exemple de réalisation, il peut être prévu un rafraîchissement systématique d'une partie de la zone mémoire à rafraîchir et cela à chaque mise sous tension de la carte par exemple En effet, on prévoit dans ce cas, un générateur aléatoire G, qui va fournir sur commande du processeur MP, à la mise sous tension, une adresse aléatoire A Dx de l'espace adressable de la zone à rafraîchir On peut se reporter au schéma de la figure 4 pour mieux comprendre. Les conditions de branchement CB comportent alors, selon l'exemple, une lecture systématique du compteur d'adresse du microprocesseur à chaque mise sous tension. Le programme principal en mémoire morte ROM se déroule et passe alors par la séquence de lecture de l'adresse aléatoire A Dx générée par le générateur G Un branchement à un sous-programme de rafraîchissement R est effectué. Le sous-programme R comporte d'abord l'étape d'initialisation du compteur d'adresse du microproces- seur pour positionner le compteur sur l'adresse A Dx de début de la partie A à rafraîchir. Puis la boucle de programme R est effectuée tant qu'on n'a pas atteint la dernière adresse A Dx+k de cette partie A La valeur k a été au préalable mémorisée. Cette valeur est choisie en principe une fois pour toutes et fixe la taille des parties rafraîchies de la zone à rafraîchir Le triage aléatoire d'une adresse par le générateur permet de rafraîchir toute la zone au bout d'une durée convenable. REVENDICATIONS 1 Carte à puce comportant au moins une mémoire EEPROM contenant au moins une zone de données perma- nentes (Zi, Z 2), c'est-à-dire non susceptibles d'être modifiées à chaque utilisation de la carte, caractérisée en ce qu'elle comporte des moyens de rafraîchissement automatique du contenu de cette zone. 2 Carte à puce selon la revendication 1, compor- tant un microprocesseur avec une mémoire morte, carac- térisée en ce que les moyens de rafraîchissement sont constitués par une série d'instructions exécutables par le microprocesseur. 3 Carte à puce selon la revendication 2, carac- térisée en ce que la série d'instructions est placée dans la mémoire morte. 4 Carte à puce selon la revendication 2, carac- térisée en ce que la série d'instructions est placée au moins en partie dans la mémoire EEPROM. Carte à puce selon l'une des revendications précédentes, caractérisée en ce que le programme comporte une boucle itérative avec lecture du contenu d'un mot, puis écriture de ce mot avec le contenu lu, sans effacement préalable du mot, puis incrémentation d'une adresse de mémoire pour lire un mot suivant, ceci depuis le début jusqu'à la fin de la zone de mémoire à rafraîchir. 6 Carte à puce selon l'une des revendications précédentes, caractérisée en ce qu'elle comporte des moyens pour déclencher une procédure de rafraîchissement lorsque la carte est utilisée au delà d'une date prédé- terminée après sa première mise en service ou après un rafraîchissement précédent. 7 Carte à puce selon l'une des revendications 1 il à 5, caractérisée en ce qu'elle comporte des moyens pour déclencher une procédure de rafraîchissement lorsque la carte a été utilisée un nombre prédéterminé de fois après sa première mise en service ou après un rafrai- chissement précédent. 8 Carte à puce selon l'une quelconque des revendications 1 à 5, caractérisée en ce qu'elle comporte des moyens pour déclencher une procédure de rafraîchissement à chaque mise sous tension de la carte, d'une partie de la zone mémoire à rafraîchir. 9 Carte à puce selon la revendication 8, carac- térisée en ce que les moyens pour déclencher la procé- dure de rafraîchissement comprennent un générateur aléatoire, générant une adresse aléatoire comprise dans l'espace d'adressage de la zone à rafraîchir. Carte à puce selon la revendication 9, carac- térisée en ce que l'adresse générée est l'adresse de début de la partie à rafraîchir, l'adresse de fin AD(x+k) de la partie étant obtenue par incrémentation de l'adresse de début A Dx d'un nombre prédéterminé k.