Brevet FR2699704A1 — publié le 19940624

PROCEDE DE MISE A JOUR DE DONNEES SENSIBLES SUR UN SUPPORT DE MEMORISATION DE TYPE MEMOIRE EEPROM La présente invention concerne un procédé de mise à jour de données sensibles sur un support de mémorisation de type mémoire EEPROM. Le procédé s'applique notamment aux cartes à puces comprenant une ou plusieurs mémoires de type EEPROM dans laquelle on mémorise des données nécessitant des mises à jour fréquentes et qu'il est impératif de ne pas perdre. Il peut s'agir par exemple de données relatives à un compte client ou des données nécessaires au système d'exploitation dans le cas d'une carte à microprocesseur. Or les risques de perdre des données lorsque l'on utilise des mémoires de type EEPROM existent en particulier lors d'une écriture si surgit à ce moment là, une coupure de courant ou arrachement de la carte. En effet, la mise à jour d'une donnée dans ce type de mémoire consiste à écrire cette donnée après avoir procédé à une étape d'effacement de la donnée antérieure. Si une coupure de courant a lieu après l'effacement ou si la carte est arrachée à ce moment là il n'est alors plus possible de restituer la donnée antérieure. Pour éviter ce problème, la manière la plus sûre de ne pas perdre une donnée sensible a consisté à ce jour à copier trois fois cette même donnée en mémoire. On voit tout de suite qu'une telle solution est onéreuse en place mémoire. D'autre part, il s'avère que la gestion de trois écritures pour une même donnée est assez lourde et donc pénalisante. La présente invention permet de remédier à ces problèmes sans les inconvénients des techniques antérieures. La présente invention a plus précisément pour objet un procédé permettant de réaliser la mise à jour d'une donnée sensible sur un support de mémorisation de type mémoire EEPROM, sans risque de perdre cette donnée en cas de coupure d'alimentation ou en cas d'arrachement de la carte, lorsque le support de mémorisation est sur une carte à puce. Le procédé se caractérise principalement en ce qu'il comprend les étapes suivantes - mémoriser dans un emplacement de la mémoire la valeur courante d'une donnée et dans un autre emplacement de la mémoire sa valeur antérieure, - mémoriser en outre dans chacun de ces emplacements un drapeau indiquant dans un cas qu'il s'agit de la valeur courante d'une donnée et dans l'autre de sa valeur antérieure, - écrire une nouvelle donnée à l'emplacement de la valeur antérieure avec un drapeau indiquant qu'une mise à jour est en cours, - modifier le drapeau de la donnée de valeur courante pour indiquer que cette donnée devient la valeur antérieure, - modifier le drapeau de la nouvelle donnée pour indiquer que cette nouvelle donnée est la valeur courante. L'invention sera mieux comprise à la suite de la description qui est faite à titre illustratif et non limitatif et en regard des dessins sur lesquels - la figure 1, représente un organigramme représentant les étapes essentielles du procédé, - la figure 2, représente les différents mouvements dans les emplacements mémoire selon l'invention. Il est prévu selon le procédé de mémoriser une donnée sensible Da que l'on appellera dans la suite donnée courante de valeur Vx, dans un mot de plusieurs octets dans la mémoire. Ce mot comprend un ou plusieurs octets pour la donnée proprement dite et un octet d'identification de l'état de la donnée que l'on appellera dans la suite drapeau Fa. Il est également prévu selon le procédé de mémoriser la donnée antérieure Db de valeur y sous la forme d'un mot de plusieurs octets dans la mémoire. De la même façon que pour la donnée de valeur courante, cette donnée de valeur antérieure Vy est dans un mot de plusieurs octets, un ou plusieurs octets pour la donnée proprement dite et un octet d'identification de l'état de cette donnée que l'on appellera dans la suite drapeau Fb. Selon le procédé une donnée de valeur Vx et son drapeau Da sont mémorisés en un emplacement R1 et la valeur antérieure Vb de la donnée et son drapeau Db sont mémorisés en un emplacement R2 : Etape I sur la figure 1. La mise à jour de la valeur Vx, c'est à dire sa modification à l'emplacement R1 consiste ensuite à Etape Il - écrire à l'emplacement de cette valeur antérieure la nouvelle valeur Vz de la donnée et une valeur X déterminée comme drapeau, cette valeur signifiant que la mise à jour de la donnée est en cours, Etape III - modifier le drapeau Fa de la donnée de valeur Vx pour le faire passer d'une valeur A à une valeur B signifiant que la valeur Vx devient la valeur antérieure de la donnée que l'on désire enregistrer, Etape IV - modifier le drapeau de la donnée de valeur Vz pour le faire passer de la valeur X à la valeur A signifiant que la valeur Vz est la valeur courante de la donnée. L'étape Il consiste en pratique dans une mémoire EEPROM, à réaliser tout d'abord un effacement de la donnée et du drapeau. Cet effacement se fait en une seule fois pour tout le contenu de l'emplacement mémoire R2. De façon préférée la valeur des drapeaux Fa et Fb sont choisis de sorte que pour modifier le drapeau Fa à l'étape III, on ne procède à aucun effacement, de même que pour modifier le drapeau Fb à l'étape IV on ne réalise pas non plus d'effacement. Selon un exemple le drapeau indiquant qu'une donnée est la valeur courante est égal à OA en hexadécimal. Le drapeau indiquant qu'une donnée est la valeur antérieure à la donnée courante est égal à OB en hexadécimal. Le drapeau indiquant qu'une donnée est en cours de mise à jour est égal à 08 en hexadécimal. Ceci permet, lorsque l'on veut modifier le drapeau Fa à l'étape III de n'avoir qu'à rajouter un bit à 1 pour passer de la valeur OAh à OBh. Ceci permet également, lorsque l'on veut modifier le drapeau Fb à l'étape IV de n'avoir qu'à rajouter un bit à 1 pour passer de la valeur 08h à OAh. On pourra se reporter au schéma de la figure 2 pour mieux comprendre. Ce schéma montre une portion de mémoire M comprenant les emplacement Ri et R2, et permet d'illustrer les modifications du contenu de ces emplacements au cours d'une mise à jour d'une donnée selon le procédé qui vient d'être décrit. Les emplacement R1 et R2 correspondent chacun à la taille d'un mot de plusieurs octets, un ou plusieurs octets étant réservés à la donnée et un octet étant réservé à son drapeau. L'effacement de la donnée provoque l'effacement de tout le mot. Bien entendu, dans le cas d'une mémoire découpée en bloc, ces emplacements correspondent chacun à la taille d'un bloc. L'effacement de la donnée, provoque l'effacement de tout le bloc. Comme cela a été dit précédemment, le procédé qui vient d'être décrit permet d'éviter toute perte d'information en cas de coupure d'alimentation. Il permet en outre dans le cas ou il est appliqué à la mise à jour de données sensibles sur une carte à mémoire d'éviter toute perte d'information lors d'un arrachement de la carte. Ainsi, toute coupure d'alimentation électrique accidentelle ou intentionnelle intervenant au cours de la procédure de mise à jour laissera les deux emplacements mémoire dans des états identifiables comme indiqué ci dessous A/B : Etat normal A/X : Incident survenu pendant l'étape I A/O : Incident survenu entre l'étape I et la fin de l'étape Il A/8 : Incident survenu entre l'étape Il et la fin de l'étape III B/8 : Incident survenu entre l'étape III et la fin de l'étape IV. Aucune information n'est perdue et l'état de la donnée est connu par son drapeau. En effet, dans l'exemple qui vient d'être donné, le caractère écrit à gauche du trait oblique indique le drapeau correspondant à la valeur à récupérer après l'incident (valeur courante avant incident). REVENDICATIONS 1. Procédé de mise à jour de données sensibles sur un support de mémorisation de type mémoire EEPROM caractérisé en ce qu'il comprend les étapes suivantes - mémoriser dans un emplacement de la mémoire la valeur courante d'une donnée et dans un autre emplacement de la mémoire sa valeur antérieure, - mémoriser en outre dans chacun de ces emplacements un drapeau indiquant dans un cas qu'il s'agit de la valeur courante d'une donnée et dans l'autre, de sa valeur antérieure, - écrire une nouvelle donnée à l'emplacement de la valeur antérieure avec un drapeau indiquant qu'une v mise à jour est en cours, - modifier le drapeau de la donnée de valeur courante pour indiquer que cette donnée devient la valeur antérieure, - modifier le drapeau de la nouvelle donnée pour indiquer que cette nouvelle donnée est la valeur courante. 2. Procédé de mise à jour selon la revendication 1, caractérisé en ce que l'écriture d'une nouvelle valeur de donnée à l'emplacement de la valeur antérieure consiste à effacer cette valeur antérieure puis à écrire la nouvelle valeur. 3. Procédé de mise à jour selon la revendication 1, caractérisé en ce que les valeurs des drapeaux sont choisis de telle sorte que pour passer d'un drapeau (A) indiquant qu'il s'agit de la donnée de valeur courante au drapeau (B) indiquant qu'il s'agit de la donnée antérieure ou pour passer d'un drapeau (X) indiquant qu'il s'agit d'une donnée que l'on est en train de mettre à jour, au drapeau indiquant qu'il s'agit de la donnée courante, aucun effacement n'est nécessaire. 4. Procédé de mise à jour selon la revendication 3, caractérisé en ce que le passage d'un drapeau de valeur A à un drapeau de valeur B ou le passage d'un drapeau de valeur X à un drapeau de valeur A consiste à surimposer au moins un bit dans le drapeau. 5. Procédé de mise à jour selon l'une quelconque des revendications précédentes caractérisé en ce que la valeur du drapeau A est OA en hexadécimal, la valeur du drapeau B est OB en hexadécimal et la valeur du drapeau X est 08 en hexadécimal. 6. Procédé de mise à jour selon l'une quelconque des revendications caractérisé en ce que les deux emplacements réservés à l'écriture d'une donnée et de sa valeur antérieure permettent de mémoriser chacun un mot de plusieurs octets. 7. Procédé de mise à jour selon la revendication 6, caractérisé en ce que le mot mémorisé à l'un de ces emplacements comprend la donnée et son drapeau et en ce que l'effacement de la donnée provoque l'effacement de tout le mot. 8. Procédé de mise à jour selon l'une quelconque des revendications précédentes caractérisé en ce que les deux emplacements prévus pour l'écriture d'une donnée correspondent à des blocs mémoire, la mémoire étant une mémoire divisée en bloc, et en ce que alors l'effacement s'effectue par bloc.