EP0700554B1 - Procede d'ecriture d'informations dans une memoire non-volatile - Google Patents

Procede d'ecriture d'informations dans une memoire non-volatile Download PDF

Info

Publication number
EP0700554B1
EP0700554B1 EP94917057A EP94917057A EP0700554B1 EP 0700554 B1 EP0700554 B1 EP 0700554B1 EP 94917057 A EP94917057 A EP 94917057A EP 94917057 A EP94917057 A EP 94917057A EP 0700554 B1 EP0700554 B1 EP 0700554B1
Authority
EP
European Patent Office
Prior art keywords
transactions
space
transaction
memory
record
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
EP94917057A
Other languages
German (de)
English (en)
Other versions
EP0700554A1 (fr
Inventor
Edouard Gordons
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Gemplus SA
Original Assignee
Gemplus Card International SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Gemplus Card International SA filed Critical Gemplus Card International SA
Publication of EP0700554A1 publication Critical patent/EP0700554A1/fr
Application granted granted Critical
Publication of EP0700554B1 publication Critical patent/EP0700554B1/fr
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system

Definitions

  • the invention relates to memory cards, and more particularly cards comprising a non-volatile memory the content of which is managed (writing, erasing, updating of records) by a microprocessor.
  • One of the aims of the present invention is to ensure better integrity and better consistency of the data recorded in the non-volatile memory of the card.
  • the data recorded in the non-volatile memory of the card are arranged in files according to known methods.
  • the file contains records, the records are placed at determined physical positions of the memory; a file allocation table determines the occupied memory locations.
  • the records can be chained, that is to say that each record has two parts: a datum and an address of the next record in the file.
  • the data is in principle consistent between them, and in any case we can check their consistency by examining the content of the file.
  • An object of the invention is to improve the operating security of smart cards, from the point of view of the integrity and consistency of the data written in the non-volatile memory of these cards.
  • the invention is particularly applicable in the case of records organized in chained files, each record containing both a data item and a following record address; record chaining information is placed in the transaction space during the operations of adding, updating, and deleting these records.
  • each record addition operation preferably comprises on the one hand the writing in the non-volatile memory file of a new datum with a new chaining, and on the other hand the writing in the transaction space with information on the addition and on the old chaining.
  • the recording erase operation comprises on the one hand the writing of a new chaining in the non-volatile memory and on the other hand the writing of deletion information and of information of old chaining in the transaction space. Updating a record involves adding a record and freeing up the space previously occupied by the recording, with corresponding modification of the chaining so that the new recording replaces the previous one in the chain.
  • the update then includes writing in the transaction space information on the old chaining, as well as update information.
  • the writing in the transaction space is preferably a writing of the type protected against untimely power interruptions, that is to say that it is preferably carried out with a preliminary step of saving what must be written, then the placement of a lock, the actual writing, and the removal of the lock.
  • the mechanisms for writing data in the card include means of protection against an abnormal interruption of supply during a write operation.
  • the general principle of such protection consists in placing a lock in the non-volatile memory, this lock being positioned in a determined logical state ("locked state") at the start of the execution of a write operation and being reset. in the initial state ("unlocked") at the end of the operation; on the other hand, information for saving the data being written is placed in the non-volatile memory before the lock is put in place.
  • the state of the lock is systematically examined; if it is found that it is in the locked state, it means that there has been an abnormal interruption and the backup information is used to complete the writing procedure. For example, before lock, the information to be written and the address to which it must be written have been written in a non-volatile memory area. It is only after the installation of the lock that the information is definitively written.
  • the microprocessor of the card which executes the sequences of adding, updating, and deleting file recordings when it receives corresponding instructions from its program memory, can receive an instruction for control of grouping of writing operations. In the absence of this grouping command, the instructions cannot be invalidated globally.
  • the instruction is designed so that its launch requires that a validation command or an invalidation command be subsequently launched after the execution of the N operations.
  • the grouping command can be a command launched before each group of operations which must be validated or invalidated overall; or it can be a systematic resident command, that is to say that any write, erase or update operation is executed only by group of N successive operations.
  • Execution of the grouping instruction begins by designating a non-volatile memory space which will be called the TS transaction space; in this space of the transactions will be saved necessary data in the event of invalidation of the operations, or possibly in the event of abnormal interruption of the feeding of the card during the succession of N operations. Then, the execution of the grouping command modifies the writing, updating, or erasing sequences with respect to the sequences executed in the absence of a grouping command. In other words, the launching of the grouping command causes the use of specific writing, erasing, or updating subroutines for the writing, updating or erasing operations which are launched subsequently.
  • the memory space can be a fixed area of non-volatile memory, but it is however preferable to provide that this area varies from one group of N operations to the next, to avoid too frequent use of the same memory area. nonvolatile. It can for example be provided that the transaction space is a space designated randomly or pseudo-randomly among the free spaces of the memory; or else this space varies according to a pre-established rule.
  • the mechanism for writing data in the transaction space is a mechanism protected against abnormal power interruptions during a write operation.
  • the mechanism can be a latch mechanism as described above.
  • the writing sequence executed is as follows: storage in the transaction space of the chaining corresponding to the state of the memory before the execution of the sequence adding record; then proper writing of the new record (data and chaining). Information about adding a record to a given address is also stored in the transaction space.
  • the update sequence executed is as follows: storage in the space of the transactions of the data and of the chaining corresponding to the state of the memory before updating; storing information on a record addition and information on a record deletion; then execution of the update (data and chaining).
  • the erasing sequence executed is as follows: the old chaining is stored in the transaction space and information on the location of the modified record; then we modify the chaining.
  • the transaction space can then be released.
  • the transaction space stores the old chaining, but the new records and chaining are already written to memory before validation. This is why it is necessary to prohibit any read operation in the memory until the validation command is not carried out, under penalty of risking reading information which is not yet valid.
  • validation takes place in two stages.
  • the first step consists in making the desired chaining and keeping the previous values (address / data pair).
  • the second step executed later, is the final validation of all operations; the memory locations that have become unused are then freed.
  • the commands for writing data in non-volatile memory would have performed substantially the same number of operations, that is to say: establishment of chaining then release of spaces memory occupied by records to be erased or updated. The time taken to write in the transaction space is therefore to be added to the order execution time (in the case of validation) to obtain the total execution time per order.
  • the state of the file is represented before the operation, after the operation, after validation, and after invalidation.
  • records have been represented with their numbers (example E10 for the tenth record), their address (example A10 for the address of the tenth record), their content comprising on the one hand a chaining value which is the address of the next recording and on the other hand a data (D10 for the tenth recording).
  • the content of the file allocation table (FAT) has also been shown at the location corresponding to each recording address; content "1" means that the location is occupied, content "0" on the contrary means that the location is free.
  • the initial state of the file is therefore restored by the invalidation action.

Abstract

L'invention concerne les cartes à mémoire non-volatiles dans lesquelles les mécanismes d'écriture sont commandés par un microprocesseur. Pour améliorer la cohérence des données enregistrées dans les fichiers de mémoire non-volatile, on propose selon l'invention de prévoir une possibilité de commande groupée de plusieurs opérations d'écriture (ajout, mise à jour ou suppression d'enregistrements). On exécute les opérations successives en enregistrant dansun espace de transaction non-volatile (TS) des données correspondant à l'état de la mémoire avant chaque opération (en particulier des anciens chaînages (A7/16) d'enregistrements chaînés). Puis, on effectue une commande de validation globale des N opérations, ou au contraire une commande d'invalidation globale, une validation ou invalidation des opérations individuelles n'étant pas autorisée.

Description

  • L'invention concerne les cartes à mémoire, et plus particulièrement les cartes comportant une mémoire non-volatile dont le contenu est géré (écriture, effacement, mise à jour d'enregistrements) par un microprocesseur.
  • Un des buts que se propose la présente invention est d'assurer une meilleure intégrité et une meilleure cohérence des données inscrites dans la mémoire non volatile de la carte.
  • Lorsqu'on développe des applications nouvelles sous forme de programmes mis en mémoire dans la carte et exécutés par le microprocesseur, il est important de faire en sorte que les données conservées dans la carte soient cohérentes et aient une signification incontestable par rapport à l'application. L'exemple le plus simple est celui des cartes servant de moyen de paiement : si une donnée inscrite dans la carte correspond à un montant de débit ou de crédit il est impératif qu'il n'y ait pas d'erreur sur cette donnée.
  • Les données enregistrées dans la mémoire non volatile de la carte sont disposées dans des fichiers selon des méthodes connues. Le fichier comporte des enregistrements, les enregistrements sont placés à des positions physiques déterminées de la mémoire; une table d'allocation de fichiers détermine les emplacements de mémoire occupés. Les enregistrements peuvent être chaînés, c'est-à-dire que chaque enregistrement comporte deux parties : une donnée et une adresse de l'enregistrement suivant du fichier. A l'intérieur d'un même fichier, les données sont en principe cohérentes entre elles, et en tout cas on peut en vérifier la cohérence en examinant le contenu du fichier.
  • Mais parfois, on doit en outre assurer une cohérence de données inscrites dans plusieurs fichiers différents. Cette cohérence n'est pas facile à assurer dans tous les cas de fonctionnement défectueux.
  • Un des risques de fonctionnement défectueux est par exemple l'arrachage de la carte hors du lecteur pendant une opération d'écriture. La donnée risque d'être perdue. De tels problèmes liés à des erreurs pouvant intervenir pendant la transmission d'informations ont été décrits dans les documents FR-A-2 612 316 et EP-A-0 319 799. On a déjà tenté de prévoir des procédures de sécurité (verrouillage de séquences critiques) pour éviter ce risque : on écrit en deux temps, et on ne valide l'écriture que si elle s'est déroulée correctement. Mais si l'arrachage se produit pendant l'écriture, on conserve en mémoire non-volatile le fait qu'une interruption anormale a eu lieu et on reconstitue la donnée perdue lors de la remise sous tension de la carte.
  • Cependant, cette procédure d'écriture, bien qu'elle soit plus sophistiquée qu'une procédure simple (et donc plus longue), ne permet pas d'assurer la cohérence des données inscrites dans deux fichiers différents. Un exemple simple peut être donné : un fichier de débit et un fichier de crédit sont présents et sont liés par le fait que toute augmentation d'un côté doit correspondre à une diminution égale de l'autre.
  • On comprend qu'il y a un risque qu'une interruption d'alimentation intempestive puisse détruire la cohérence des données inscrites dans les deux fichiers : par exemple, on a eu le temps d'inscrire correctement le débit d'un côté et pas le crédit de l'autre.
  • Par ailleurs, pour assurer la cohérence de données qui ne sont pas écrites par une seule opération, il peut être nécessaire de lier plusieurs opérations d'une manière ou d'une autre.
  • Un but de l'invention est d'améliorer la sécurité de fonctionnement des cartes à puces, du point de vue de l'intégrité et de la cohérence des données écrites dans la mémoire non volatile de ces cartes.
  • Selon l'invention, on propose un procédé d'écriture, mise à jour, et effacement d'informations dans une carte à mémoire non volatile, qui est caractérisé en ce qu'il comporte :
    • l'exécution d'une commande de groupage pour l'allocation d'un espace mémoire dit espace de transaction destiné à stocker des données temporaires de sauvegarde de N opérations successives d'ajout, mise à jour, et/ou effacement, N étant un nombre fini supérieur à 1,
    • puis l'exécution de ces opérations successives et le stockage simultané des données de sauvegarde correspondant à chaque opération dans l'espace de transaction,
    • puis soit une opération de validation globale des N opérations, soit une opération d'invalidation globale des N opérations, la commande de validation comportant une libération des espaces mémoires occupés auparavant par les enregistrements effacés ou mis à jour durant les N opérations, et la commande d'invalidation comportant principalement l'utilisation des données de sauvegarde pour reconstituer l'état de la mémoire antérieurement aux N opérations.
  • Ainsi, on va pouvoir s'assurer de la cohérence de données en liant indissolublement l'exécution de certaines opérations d'écriture de sorte que si ces opérations sont erronées on puisse les annuler globalement et non individuellement, alors que si elles sont justes on va les valider globalement et non individuellement.
  • L'invention propose donc également une carte à mémoire non-volatile à microprocesseur qui comporte :
    • des moyens pour que le microprocesseur reçoive et exécute une instruction de commande de groupage pour l'allocation d'un espace mémoire dit espace de transaction destiné à stocker des données temporaires de sauvegarde de N opérations successives d'ajout, mise à jour et/ou effacement d'enregistrement, N étant un nombre fini supérieur à 1,
    • des moyens pour exécuter les N opérations successives et pour stocker simultanément des données de sauvegarde correspondant à chaque opération dans l'espace de transaction,
    • des moyens pour valider globalement les N opérations et des moyens pour invalider globalement les N opérations, les moyens de validation permettant une libération des espaces mémoires occupés auparavant par les enregistrements effacés ou mis à jour durant les N opérations, et les moyens d'invalidation permettant principalement l'utilisation des données de sauvegarde pour reconstituer l'état de la mémoire antérieurement aux N opérations, et les moyens de validation et d'invalidation sont activés lorsque l'instruction de commande de groupage a été reçue préalablement à l'exécution des N opérations.
  • L'invention est particulièrement applicable dans le cas d'enregistrements organisés en fichiers chaînés, chaque enregistrement contenant à la fois une donnée et une adresse d'enregistrement suivant; les informations de chaînage d'enregistrements sont placés dans l'espace des transactions pendant les opérations d'ajout, mise à jour, et effacement de ces enregistrements.
  • Il est très avantageux que les informations de chaînage placées dans l'espace des transactions soient les anciens chaînages correspondant à la succession d'enregistrements avant ajout ou mise à jour. Dans ce cas, chaque opération d'ajout d'enregistrement comporte de préférence d'une part l'écriture dans le fichier de mémoire non volatile d'une nouvelle donnée avec un nouveau chaînage, et d'autre part l'écriture dans l'espace des transactions d'une information sur l'ajout et sur l'ancien chaînage. L'opération d'effacement d'enregistrement comporte d'une part l'écriture d'un nouveau chaînage dans la mémoire non volatile et d'autre part l'écriture d'une information de suppression et d'une information d'ancien chaînage dans l'espace des transactions. La mise à jour d'un enregistrement comporte l'ajout d'un enregistrement et la libération de l'espace précédemment occupé par 1' enregistrement, avec modification correspondante des chaînages pour que le nouvel enregistrement se substitue au précédent dans la chaîne. La mise à jour comporte alors l'écriture dans l'espace des transactions d'une information sur l'ancien chaînage, ainsi qu'une information de mise à jour.
  • L'écriture dans l'espace des transactions est de préférence une écriture de type protégée contre les interruptions intempestives d'alimentation, c'est-à-dire qu'elle s'effectue de préférence avec une étape préliminaire de sauvegarde de ce qui doit être écrit, puis la mise en place d'un verrou, l'écriture proprement dite, et l'enlèvement du verrou.
  • D'autres caractéristiques et avantages de l'invention 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 les étapes pouvant être exécutées lors d'un ajout d'enregistrement;
    • la figure 2 représente les étapes pouvant être exécutées lors de la suppression d'un enregistrement;
    • la figure 3 représente les étapes pouvant être exécutées lors d'une mise à jour d'enregistrement.
  • L'invention va maintenant être décrite plus précisément à propos d'un exemple simple dans lequel une commande de groupage d'opérations est associée à une commande de validation globale ou invalidation globale des opérations groupées.
  • L'exemple qui suit représente une succession d'opérations ainsi groupées.
    • a) écriture dans la mémoire non volatile de données D1 et D2 dans un fichier
    • b) sélection d'un autre fichier
    • c) écriture dans la mémoire non volatile de données D3, D4 et D5
    • d) sélection d'un autre fichier
    • e) mise à jour de la donnée D2
    • f) sélection d'un autre fichier
    • g) effacement de la donnée D1
    • puis, en principe validation de l'ensemble de ces opérations,
    • ou au contraire invalidation de l'ensemble, c'est-à-dire annulation de l'effacement de D1, de la mise à jour de D2, de l'écriture de D5, D4, et D3, et enfin de l'écriture de D2 et D1,
    • ou enfin possibilité d'interruption anormale des opérations ci-dessus, par exemple arrachement de la carte après l'étape e) de mise à jour de D2, avec nécessité de revenir à l'état de la mémoire non volatile qui existait avant l'étape a).
  • Pour réaliser cette dernière possibilité, il faut d'abord que les mécanismes d'écriture d'une donnée dans la carte comportent des moyens de protection contre une interruption anormale d'alimentation pendant une opération d'écriture. Le principe général d'une telle protection consiste à placer un verrou dans la mémoire non volatile, ce verrou étant positionné dans un état logique déterminé ("état verrouillé") au début de l'exécution d'une opération d'écriture et étant remis à l'état initial ("déverrouillé") à la fin de l'opération; d'autre part, des informations de sauvegarde de la donnée en cours d'écriture sont placées dans la mémoire non volatile avant la mise en place du verrou. Au moment de la remise sous tension on examine systématiquement l'état du verrou; si on constate qu'il est dans l'état verrouillé, c'est qu'il y a eu interruption anormale et les informations de sauvegarde sont utilisées pour terminer la procédure d'écriture. Par exemple, avant verrouillage, on a écrit dans une zone de la mémoire non volatile l'information à écrire et l'adresse à laquelle elle doit être écrite. Ce n'est qu'après la mise en place du verrou qu'on écrit définitivement l'information.
  • On supposera donc que les mécanismes d'écriture sont protégés par verrou pour tenir compte de ce que la carte peut être arrachée (ou l'alimentation interrompue pour une autre raison).
  • Selon l'invention on prévoit que le microprocesseur de la carte, qui exécute les séquences d'ajout, mise à jour, et effacement d'enregistrement de fichier lorsqu'il reçoit de sa mémoire de programme des instructions correspondantes, peut recevoir une instruction de commande de groupage d'opérations d'écriture. En l'absence de cette commande de groupage les instructions ne peuvent pas être invalidées globalement.
  • On peut prévoir que l'instruction de groupage est paramétrable pour permettre de choisir le nombre N d'opérations successives qui peuvent être validées ou invalidées globalement.
  • L'instruction est conçue de manière que son lancement impose qu'on lance ultérieurement une commande de validation ou une commande d'invalidation après l'exécution des N opérations.
  • La commande de groupage peut être une commande lancée avant chaque groupe d'opérations qui doivent être validées ou invalidées globalement; ou alors elle peut être une commande résidente systématique, c'est-à-dire que toute opération d'écriture, effacement ou mise à jour est exécutée uniquement par groupe de N opérations successives.
  • L'exécution de l'instruction de groupage commence par la désignation d'un espace de mémoire non volatile qu'on appellera espace des transactions TS; dans cet espace des transactions seront sauvegardées des données nécessaires en cas d'invalidation des opérations, ou éventuellement en cas d'interruption anormale de l'alimentation de la carte pendant la succession de N opérations. Ensuite, l'exécution de la commande de groupage modifie les séquences d'écriture, mise à jour, ou effacement par rapport aux séquences exécutées en l'absence de commande de groupage. En d'autre mots, le lancement de la commande de groupage provoque l'utilisation de sous-programmes spécifiques d'écriture, effacement, ou mise à jour pour les opérations d'écriture, mise à jour ou effacement qui sont lancées ultérieurement.
  • L'espace de mémoire peut être une zone fixe de la mémoire non volatile, mais il est cependant préférable de prévoir que cette zone varie d'un groupe de N opérations au suivant, pour éviter l'utilisation trop fréquente de la même zone de mémoire non volatile. On peut prévoir par exemple que l'espace de transactions est un espace désigné de manière aléatoire ou pseudo-aléatoire parmi les espaces libres de la mémoire; ou alors cet espace varie selon une règle pré-établie.
  • De préférence, le mécanisme d'écriture de données dans l'espace des transactions est un mécanisme protégé contre les interruptions anormales d'alimentation pendant une opération d'écriture. Le mécanisme peut être un mécanisme à verrou tel que décrit ci-dessus.
  • On suppose dans la suite que les enregistrements de la mémoire non volatile sont organisés en fichiers chaînés.
  • De préférence, pour toute opération d'ajout d'un nouvel enregistrement au fichier, qui comporte la désignation d'un nouvel espace mémoire utilisé et la création d'un chaînage, la séquence d'écriture exécutée est la suivante : stockage dans l'espace des transactions du chaînage correspondant à l'état de la mémoire avant l'exécution de la séquence d'ajout d'enregistrement; puis écriture proprement dite du nouvel enregistrement (donnée et chaînage). On stocke aussi dans l'espace des transactions une information sur l'ajout d'un enregistrement à une adresse donnée.
  • Pour toute opération de mise à jour d'enreqistrement, qui comporte la modification d'un chaînage avec désignation d'un nouvel espace mémoire et la libération d'un ancien espace mémoire, et l'enregistrement d'une donnée et d'un chaînage dans le nouvel espace, la séquence de mise à jour exécutée est la suivante : stockage dans l'espace des transactions de la donnée et du chaînage correspondant à l'état de la mémoire avant mise à jour; stockage d'une information sur un ajout d'enregistrement et d'une information sur une suppression d'enregistrement; puis exécution de la mise à jour (donnée et chaînage).
  • Pour toute opération d'effacement d'enregistrement, qui comporte la libération d'un emplacement de mémoire et la modification d'un chaînage, la séquence d'effacement exécutée est la suivante : on stocke dans l'espace des transactions l'ancien chaînage et une information sur l'emplacement de l'enregistrement modifié; puis on modifie le chaînage.
  • Après l'exécution d'une succession de N opérations différentes, trois cas peuvent se présenter :
    • on doit valider la succession d'opérations; l'espace des transactions est alors parcouru; on analyse son contenu et on déclare libres les emplacements de mémoire non volatile occupés par les enregistrements qui étaient à effacer ou à mettre à jour lors de la succession de N opérations. Cela consiste à mettre à zéro (si un bit "0" indique un emplacement libre et un bit "1" un emplacement occupé) un ou plusieurs bits correspondants d'une table d'allocation de fichier représentant l'occupation de la mémoire non volatile. Les chaînages et données de nouveaux enregistrement ajoutés lors d'opérations d'ajout ou de mise à jour sont déjà inscrits dans la mémoire.
    • ou alors on doit invalider la succession d'opérations, par exemple parce qu'une erreur manuelle a été commise ou pour toute autre raison; on parcourt encore l'espace des transactions, en remontant la chronologie des opérations effectuées; on analyse le contenu de cet espace, et on déclare libres (mise à zéro de bits dans la table d'allocation de fichier) les nouveaux emplacements de mémoire occupés par les enregistrements inscrits lors des opérations d'ajout et de mise à jour, et on restitue progressivement les anciens chaînages à partir de valeurs conservées pour chaque opération dans l'espace des transactions.
    • enfin, la dernière possibilité est le cas où une interruption anormale d'alimentation a eu lieu pendant la succession de N opérations. Tout d'abord la remise sous tension de la carte va permettre la détection d'un verrou à l'état verrouillé; on va rétablir les données qui ont pu être incorrectement enregistrées dans l'espace des transactions; puis on va procéder exactement comme dans le cas d'une invalidation, la succession d'opérations devant être globalement annulée si une interruption anormale a eu lieu.
  • Quel que soit l'opération exécutée (validation ou invalidation), l'espace des transactions peut alors être libéré.
  • En résumé, on utilise trois commandes spécifiques; la première notifie la création d'un espace des transaction en même temps qu'elle arme le processus d'indivisibilité de N opérations successives d'ajout, effacement, ou mise à jour; la deuxième permet la validation de la totalité des actions dont l'historique est conservé dans l'espace des transactions; et la troisième permet l'invalidation de toutes les actions dont l'historique est conservé dans l'espace des transactions.
  • Dans la technique préférentielle choisie, l'espace des transactions stocke les anciens chaînages, mais les nouveaux enregistrements et chaînages sont déjà inscrits dans la mémoire avant la validation. C'est pourquoi il faut interdire toute opération de lecture dans la mémoire tant que la commande de validation n'est pas effectuée, sous peine de risquer de lire des informations non encore valides.
  • Des techniques supplémentaires de protection contre différents défauts de fonctionnement peuvent être utilisées dans le cadre de l'invention. Par exemple, on peut se prémunir contre les écritures infructueuses dans la mémoire, dues à une dégradation de celle-ci : pour cela on déplace l'enregistrement incriminé lorsqu'il y a écriture infructueuse d'un chaînage.
  • On remarquera que l'espace de transactions, utilisé pour sauvegarder des données nécessaires à la reconstitution du contexte précédent de la mémoire, est de faible dimension; chaque opération d'écriture nécessite essentiellement la conservation d'une paire adresse/donnée. De plus cette paire peut être écrite et lue par un seul accès à la mémoire non volatile, ce qui limite le temps consommé par les procédures spéciales d'écriture utilisées selon l'invention.
  • Le choix d'écrire dans l'espace des transactions les anciens chaînages et données enregistrées, après avoir écrit dans la mémoire non volatile les nouvelles données, permet de minimiser le temps global nécessaire à l'écriture et à la validation. Le temps total serait plus grand si l'on stockait dans l'espace des transactions les données finales à écrire plutôt que les données anciennes.
  • En effet, la validation est en quelque sorte anticipée dans le cas préférentiel choisi ici : la validation s'effectue en deux étapes. Pour chaque commande, la première étape consiste à réaliser les chaînages souhaités et conserver les valeurs précédentes (paire adresse/donnée). La seconde étape, exécutée plus tard, est la validation finale de toutes les opérations; les emplacements mémoire devenus inutilisés sont alors libérés. Dans le cas où le mécanisme de validation n'est pas choisi, les commandes d'écriture de données en mémoire non volatile auraient effectué sensiblement le même nombre d'opérations, c'est-à-dire : établissement des chaînages puis libération des espaces mémoire occupés par des enregistrements à effacer ou mettre à jour. Le temps mis pour écrire dans l'espace des transactions est par conséquent à ajouter au temps d'exécution de la commande (dans le cas d'une validation) pour obtenir le temps total d'exécution par commande.
  • Exemple illustratif détaillé
  • Pour mieux faire comprendre les mécanismes mis en jeu dans le procédé selon l'invention, on a représenté aux figures 1, 2 et 3, respectivement des actions d'ajout, effacement et mise à jour d'enregistrement.
  • Sur chaque figure on a représenté l'état du fichier avant l'opération, après l'opération, après la validation, et après l'invalidation.
  • Sur les figures on a représenté des enregistrements avec leurs numéros (exemple E10 pour le dixième enregistrement), leur adresse (exemple A10 pour l'adresse du 10ème enregistrement), leur contenu comportant d'une part une valeur de chaînage qui est l'adresse de l'enregistrement suivant et d'autre part une donnée (D10 pour le dixième enregistrement). On a représenté également le contenu de la table d'allocation de fichier (FAT) à l'emplacement correspondant à chaque adresse d'enregistrement; un contenu "1" signifie que l'emplacement est occupé, un contenu "0" signifie au contraire que l'emplacement est libre.
  • Enfin, on a représenté l'espace des transactions TS avec les informations qu'il va contenir après chaque opération.
  • figure 1 : ajout d'enregistrement E11 après le dernier enregistrement E10 du fichier.
    • a) avant ajout, l'état du fichier est le suivant :
      Le chaînage inscrit dans E10 à l'adresse A10 est une indication de fin de fichier (EOF). L'emplacement A10 est alloué ("1" dans la table FAT); l'emplacement A11 est libre ("0" dans la table FAT).
    • b) après l'opération d'ajout : l'adresse A11 est allouée ("1" dans la table); le chaînage est modifié dans E10 (A11 est indiqué comme adresse d'enregistrement suivant); un chaînage (fin de fichier EOF) et une donnée (D11) sont inscrits à l'adresse A11 pour constituer l'enregistrement ajouté E11. Parallèlement on stocke dans l'espace des transactions les informations suivantes : enregistrement ajouté; ancien chaînage EOF dans l'enregistrement E10 à l'adresse A10.
    • c) opération de validation : il faut comprendre que la validation n'a lieu qu'après plusieurs opérations (ajouts, effacements, mise à jour), mais pour faire comprendre simplement le fonctionnement de l'invention on considère que la validation est immédiate (et de même si c'est une invalidation). On voit sur la figure 1, partie c) que la validation ne change rien à l'état du fichier ni de la table FAT par rapport à ce qu'ils sont immédiatement après l'opération d'ajout. On vérifie donc qu'on a bien réalisé une sorte de validation anticipée.
    • d) opération d'invalidation, au lieu d'une opération de validation : l'examen de l'espace des transactions fait apparaître un ajout d'enregistrement; on sait que l'enregistrement ajouté est l'enregistrement A11 qui contient une indication de fin de fichier EOF; le bit correspondant à l'adresse A11 est mis à zéro dans la table FAT, libérant l'emplacement A11; par ailleurs, l'ancien chaînage inscrit dans l'espace des transactions est restauré : l'indication de fin de fichier EOF est remise dans l'enregistrement à l'adresse A10.
  • L'état initial du fichier est donc restauré par l'action d'invalidation.
  • figure 2 : effacement d'un enregistrement E3 entre deux enregistrements E2 et E4.
    • a) avant effacement de E3, l'état du fichier est le suivant : adresses A2, A3, A4 occupées ("1" dans la table FAT pour chacune) respectivement par des enregistrements E2, E3, E4, chaînages inscrits dans les enregistrements : A3/A2 (A3 dans l'enregistrement E2 à l'adresse A2), A4/A3, et A5/A4; données D2, D3, D4 dans les enregistrements E2, E3, E4 respectivement.
    • b) après l'opération d'effacement (non encore validée) : les chaînages sont modifiés; A4 est indiqué comme adresse d'enregistrement suivant dans l'enregistrement E2. Parallèlement, l'espace des transactions enregistre les informations suivantes : opération de suppression, et ancien chaînage : A3/A2. La table d'allocation FAT n'est pas modifiée à ce stade.
    • c) validation : l'espace des transactions est parcouru et fait apparaître une opération d'effacement à l'adresse A3. Le bit correspondant à A3 est donc mis à zéro dans la table FAT pour libérer l'emplacement à l'adresse A3. Le fichier est modifié et tient compte de la suppression de l'enregistrement E3.
    • d) invalidation : l'espace des transactions est examiné et fait apparaître une suppression et un ancien chaînage A3/A2 qui indique que l'enregistrement effacé est A3. Cet ancien chaînage est restauré en replaçant l'adresse A3 dans l'enregistrement E2 situé à l'adresse A2. Aucune action n'est effectuée sur la table d'allocation de fichier qui n'avait pas été modifiée lors de la suppression d'enregistrement. Le fichier se retrouve dans l'état initial.
  • figure 3 : mise à jour d'enregistrement E7 entre deux enregistrements E6 et E8.
    • a) avant mise à jour, l'état du fichier est le suivant : enregistrement E6 à l'adresse A6, comprenant un chaînage vers l'adresse A7 et une donnée D6, avec "1" dans la table d'allocation puisque l'adresse est utilisée; enregistrement E7 à l'adresse A7, comportant un chaînage vers une adresse A8 et une donnée D7, et "1" dans la table FAT. Une adresse A12, disponible ("0" dans la table d'allocation), est également représentée.
    • b) la mise à jour consiste à utiliser l'adresse A12 pour y placer une donnée D'7 en remplacement de la donnée D7 et à modifier les chaînages pour que l'enregistrement E'7 à l'adresse A12 se substitue à l'enregistrement E7 à l'adresse A7 dans la suite des enregistrements chaînés. Après mise à jour, la table d'allocation de fichier comporte des "1" aux emplacements correspondants aux adresses A6, A7 et A12. L'enregistrement à l'adresse A6 comporte maintenant un chaînage vers l'adresse A12 (A12/A6) et non plus A7; l'enregistrement E'7 à l'adresse A12 comporte un chaînage vers l'adresse A8 pour qu'il se substitue complètement à l'enregistrement E7 dans la chaîne. L'espace des transactions a enregistré l'existence d'une mise à jour, avec un ancien chaînage A7/A6 (adresse A7 dans l'enregistrement à l'adresse A6).
    • c) opération de validation : l'espace des transactions fait apparaître une mise à jour, avec ancien chaînage A7/A6; ceci signifie qu'il faut supprimer l'enregistrement en A7, et cela impose de mettre à "0" le bit corespondant à A7 dans la table d'allocation, libérant ainsi l'espace de mémoire à cette adresse.
    • d) opération d'invalidation : l'espace des transactions fait apparaître une mise à jour avec ancien chaînage A7/A6; ceci implique qu'il faut examiner le contenu à l'adresse A6, y trouver l'adresse de chaînage qui y est inscrite (A12), et supprimer alors l'enregistrement à l'adresse A12 (E'7). Un bit "0" est donc mis dans la table d'allocation à la position correspondant à l'adresse A12. Parallèlement, l'ancien chaînage est restauré, c'est-à-dire que l'adresse A7 est replacée dans le contenu de l'enregistrement E6 à l'adresse A6. D'autre part, comme on n'a pas modifié le contenu A8+D7 à l'ancienne adresse A7, l'enregistrement E7 est intact. Le bit de la table d'allocation en A7 était par ailleurs resté à "1". On est bien revenu à l'état initial.
  • Les exemples ainsi détaillés montrent bien que chaque opération n'utilise qu'un très petit espace de mémoire TS; l'espace des transactions qui peut changer d'emplacement à chaque nouvelle série de N opérations est donc de taille réduite et la durée de séquences est limitée.
  • On notera qu'on n'a pas représenté sur les figures l'effacement des informations de l'espace des transactions après chaque opération de validation ou invalidation.

Claims (8)

  1. Procédé d'écriture, mise à jour, et effacement d'informations dans une carte à mémoire non volatile, caractérisé en ce qu'il comporte
    - l'exécution d'une commande de groupage pour l'allocation d'un espace mémoire dit espace de transaction destiné à stocker des données temporaires de sauvegarde de N opérations successives d'ajout, mise à jour, et/ou effacement, N étant un nombre fini supérieur à 1,
    - puis l'exécution de ces opérations successives et le stockage simultané des données de sauvegarde correspondant à chaque opération dans l'espace de transaction,
    - puis soit une opération de validation globale des N opérations, soit une opération d'invalidation globale des N opérations, la commande de validation comportant une libération des espaces mémoires occupés auparavant par les enregistrements effacés ou mis à jour durant les N opérations, et la commande d'invalidation comportant principalement l'utilisation des données de sauvegarde pour reconstituer l'état de la mémoire antérieurement aux N opérations.
  2. Procédé selon la revendication 1, caractérisé en ce que les enregistrements de la mémoire sont organisés en fichiers chaînés, les anciens chaînages étant stockés dans l'espace des transactions et les mises à jour et ajouts d'enregistrements étant exécutés lors de l'exécution des N opérations.
  3. Procédé selon l'une des revèndications 1 à 2, caractérisé en ce que les enregistrements dans la mémoire sont organisés en fichiers chaînés.
  4. Procédé selon la revendication 3, caractérisé en ce que chaque opération d'ajout d'enregistrement comporte l'écriture d'une nouvelle donnée et un nouveau chaînage dans la mémoire non volatile et l'écriture d'une information sur l'ancien chaînage dans- l'espace des transactions.
  5. Procédé selon l'une des revendications 3 et 4, caractérisé en ce que l'opération d'effacement d'enregistrement comporte l'écriture d'un nouveau chaînage dans la mémoire non volatile et l'écriture de l'ancien chaînage dans l'espace des transactions.
  6. Procédé selon l'une des revendications 3, 4, et 5, caractérisé en ce que la mise à jour d'un enregistrement comporte l'ajout d'un enregistrement et la libération de l'espace précédemment occupé par 1' enregistrement, avec modification correspondante des chaînages pour que le nouvel enregistrement se substitue au précédent dans la chaîne, la mise à jour comportant alors une mise en mémoire dans l'espace des transactions de l'ancien chaînage.
  7. Procédé selon l'une des revendications 1 à 6, caractérisé en ce que l'écriture dans l'espace des transactions est une écriture de type protégée contre les interruptions intempestives d'alimentation.
  8. Carte à mémoire non-volatile à microprocesseur qui comporte
    - des moyens pour que le microprocesseur reçoive et exécute une instruction de commande de groupage pour l'allocation d'un espace mémoire dit espace de transaction destiné à stocker des données temporaires de sauvegarde de N opérations successives d'ajout, mise à jour et/ou effacement d'enregistrement, N étant un nombre fini supérieur à 1,
    - des moyens pour exécuter les N opérations successives et pour stocker simultanément des données de sauvegarde correspondant à chaque opération dans l'espace de transaction,
    - des moyens pour valider globalement les N opérations et des moyens pour invalider globalement les N opérations, les moyens de validation permettant une libération des espaces mémoires occupés auparavant par les enregistrements effacés ou mis à jour durant les N opérations, et les moyens d'invalidation permettant principalement l'utilisation des données de sauvegarde pour reconstituer l'état de la mémoire antérieurement aux N opérations, et les moyens de validation et d'invalidation sont activés lorsque l'instruction de commande de groupage a été reçue préalablement à l'exécution des N opérations.
EP94917057A 1993-05-26 1994-05-25 Procede d'ecriture d'informations dans une memoire non-volatile Expired - Lifetime EP0700554B1 (fr)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR9306323 1993-05-26
FR9306323A FR2705803B1 (fr) 1993-05-26 1993-05-26 Procédé d'écriture d'informations dans une mémoire non-volatile.
PCT/FR1994/000618 WO1994028521A1 (fr) 1993-05-26 1994-05-25 Procede d'ecriture d'informations dans une memoire non-volatile

Publications (2)

Publication Number Publication Date
EP0700554A1 EP0700554A1 (fr) 1996-03-13
EP0700554B1 true EP0700554B1 (fr) 1997-10-08

Family

ID=9447483

Family Applications (1)

Application Number Title Priority Date Filing Date
EP94917057A Expired - Lifetime EP0700554B1 (fr) 1993-05-26 1994-05-25 Procede d'ecriture d'informations dans une memoire non-volatile

Country Status (6)

Country Link
US (1) US5850506A (fr)
EP (1) EP0700554B1 (fr)
DE (1) DE69406138T2 (fr)
ES (1) ES2108459T3 (fr)
FR (1) FR2705803B1 (fr)
WO (1) WO1994028521A1 (fr)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020048203A1 (en) * 2000-10-19 2002-04-25 Findling Patrick M. Extending total write cycles of non-volatile memory for rolling codes
US7363540B2 (en) 2002-10-22 2008-04-22 Microsoft Corporation Transaction-safe FAT file system improvements
US7174420B2 (en) * 2002-10-22 2007-02-06 Microsoft Corporation Transaction-safe FAT file system
US7873596B2 (en) 2006-05-23 2011-01-18 Microsoft Corporation Extending cluster allocations in an extensible file system
US9639554B2 (en) 2004-12-17 2017-05-02 Microsoft Technology Licensing, Llc Extensible file system
US8606830B2 (en) 2004-12-17 2013-12-10 Microsoft Corporation Contiguous file allocation in an extensible file system
US8321439B2 (en) 2004-12-17 2012-11-27 Microsoft Corporation Quick filename lookup using name hash
US7613738B2 (en) * 2007-01-16 2009-11-03 Microsoft Corporation FAT directory structure for use in transaction safe file system
US7747664B2 (en) * 2007-01-16 2010-06-29 Microsoft Corporation Storage system format for transaction safe file system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4459658A (en) * 1982-02-26 1984-07-10 Bell Telephone Laboratories Incorporated Technique for enabling operation of a computer system with a consistent state of a linked list data structure after a main memory failure
US4839792A (en) * 1986-06-20 1989-06-13 Kabushiki Kaisha Toshiba Portable electronic apparatus with a device for determining data validity
JP2514954B2 (ja) * 1987-03-13 1996-07-10 三菱電機株式会社 Icカ−ド
US4959836A (en) * 1987-12-09 1990-09-25 Siemens Transmission Systems, Inc. Register robustness improvement circuit and method
JP2837288B2 (ja) * 1990-09-17 1998-12-14 インターナショナル・ビジネス・マシーンズ・コーポレイション 連鎖分散データトランザクションシステムにおけるワーク単位識別子の管理方法

Also Published As

Publication number Publication date
WO1994028521A1 (fr) 1994-12-08
FR2705803B1 (fr) 1995-07-07
US5850506A (en) 1998-12-15
DE69406138T2 (de) 1998-02-12
EP0700554A1 (fr) 1996-03-13
ES2108459T3 (es) 1997-12-16
DE69406138D1 (de) 1997-11-13
FR2705803A1 (fr) 1994-12-02

Similar Documents

Publication Publication Date Title
EP1161725B1 (fr) Procede de surveillance du deroulement d'un programme
CA2337144C (fr) Procede de reception de fichiers lors d'un telechargement
FR2977694A1 (fr) Microprocesseur protege contre un debordement de pile
EP0700554B1 (fr) Procede d'ecriture d'informations dans une memoire non-volatile
EP0565389A1 (fr) Procédé de personnalisation d'une carte à puce
FR2880963A1 (fr) Points d'arrets logiciels destines a etre utilises avec des dispositifs a memoire
FR3055992A1 (fr) Gestion d'index dans une memoire flash
EP0630027A1 (fr) Procédé pour sécuriser les écritures de données sensibles dans la mémoire de stockage de données EEPROM d'une carte à mémoire, et carte à mémoire pour la mise en oeuvre de ce procédé
EP0769742B1 (fr) Composant électronique à mémoire non volatile effaçable électriquement
EP2453356A1 (fr) Procédé, programme d'ordinateur et dispositif de sécurisation de code intermédiaire de programmation pour son exécution par une machine virtuelle
EP2834741B1 (fr) Procédé de modification en mémoire d'un ensemble de données
EP3246820A1 (fr) Gestion du stockage dans une mémoire flash
FR2746526A1 (fr) Procede pour conserver une base de donnees a organisation temporelle et spatiale
EP0838053B1 (fr) Procede et dispositif permettant a un programme fige de pouvoir evoluer
FR2689662A1 (fr) Procédé de protection d'une carte à puce contre la perte d'information.
FR2701578A1 (fr) Procédé d'écriture dans une mémoire non volatile, notamment dans une carte à mémoire.
FR2814557A1 (fr) Protection contre l'exploitation abusive d'une instruction dans une memoire
EP3246819B1 (fr) Compteur en mémoire flash
EP2229648B1 (fr) Methode de transfert securise de donnees
FR2757978A1 (fr) Procede de securisation d'une donnee dans une memoire reinscriptible
WO2019102159A1 (fr) Système informatique, procédé d'accès à un fichier informatique et programme d'ordinateur correspondant
FR2503900A1 (fr) Dispositif de reprise pour installation de traitement de donnees
EP1573690B1 (fr) Procede securise de modification de donnees enregistrees dans une carte a memoire
EP1828938B1 (fr) Procede et systeme pour l'optimisation de la gestion de fichiers a enregistrements
FR3102868A1 (fr) Procédé pour exécuter une transaction

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 19951123

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): DE ES GB IT

17Q First examination report despatched

Effective date: 19960305

GRAG Despatch of communication of intention to grant

Free format text: ORIGINAL CODE: EPIDOS AGRA

GRAH Despatch of communication of intention to grant a patent

Free format text: ORIGINAL CODE: EPIDOS IGRA

GRAH Despatch of communication of intention to grant a patent

Free format text: ORIGINAL CODE: EPIDOS IGRA

GRAA (expected) grant

Free format text: ORIGINAL CODE: 0009210

AK Designated contracting states

Kind code of ref document: B1

Designated state(s): DE ES GB IT

ITF It: translation for a ep patent filed

Owner name: PORTA CHECCACCI E BOTTI S.R.L.

GBT Gb: translation of ep patent filed (gb section 77(6)(a)/1977)

Effective date: 19971010

REF Corresponds to:

Ref document number: 69406138

Country of ref document: DE

Date of ref document: 19971113

REG Reference to a national code

Ref country code: ES

Ref legal event code: FG2A

Ref document number: 2108459

Country of ref document: ES

Kind code of ref document: T3

PLBE No opposition filed within time limit

Free format text: ORIGINAL CODE: 0009261

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT

26N No opposition filed
REG Reference to a national code

Ref country code: GB

Ref legal event code: IF02

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: ES

Payment date: 20120508

Year of fee payment: 19

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: GB

Payment date: 20130424

Year of fee payment: 20

Ref country code: DE

Payment date: 20130423

Year of fee payment: 20

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: IT

Payment date: 20130423

Year of fee payment: 20

REG Reference to a national code

Ref country code: DE

Ref legal event code: R071

Ref document number: 69406138

Country of ref document: DE

REG Reference to a national code

Ref country code: DE

Ref legal event code: R071

Ref document number: 69406138

Country of ref document: DE

REG Reference to a national code

Ref country code: GB

Ref legal event code: PE20

Expiry date: 20140524

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: GB

Free format text: LAPSE BECAUSE OF EXPIRATION OF PROTECTION

Effective date: 20140524

REG Reference to a national code

Ref country code: ES

Ref legal event code: FD2A

Effective date: 20140807

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: DE

Free format text: LAPSE BECAUSE OF EXPIRATION OF PROTECTION

Effective date: 20140527

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: ES

Free format text: LAPSE BECAUSE OF EXPIRATION OF PROTECTION

Effective date: 20140526