FR 2812116 A1 20020125 FR 0009488 A 20000719 Procédé et dispositif d'inscription sécurisée de données dans une mémoire réinscriptible. La présente invention concerne l'inscription sécurisée de données dans une mémoire réinscriptible. Elle trouve une application générale en micro-électronique et plus particulièrement dans le domaine des cartes à mémoire électronique, notamment les cartes à contact et/ou sans contact ainsi que les cartes à logique câblée et/ou à microprocesseur. En pratique, la mémoire électronique utilisée sur les cartes sont du type flash EPROM, ou bien EEPROM, pour "Electrically Erasable Programmable Read Only Memory", c'està-dire non volatile et électriquement effaçable, donc réinscriptible. Généralement, la mise en oeuvre des transactions avec des cartes à mémoire, notamment avec des cartes sans contact, doit être très rapide. De plus, ces transactions doivent être protégées contre la perte éventuelle de données, appelée encore corruption de données, qui est susceptible d'interve- nir par exemple lors d'une interruption d'alimentation accidentelle de l'alimentation électrique en cours d'inscrip- tion. On connaît déjà des procédés d'inscription de données dans une mémoire réinscriptible qui offrent un certain degré de sécurité en cas de corruption de données. Toutefois, ces procédés nécessitent généralement plusieurs opérations d'inscription dans la mémoire, ce qui multiplie le temps d'écriture par 2 ou 3 et multiplie d'autant le risque de corruption en mémoire. La présente invention apporte justement une solution à ce problème. Elle porte sur un procédé d'inscription sécurisée de données dans une mémoire réinscriptible. Selon une définition générale de l'invention, le procédé comprend les étapes suivantes: a) définir une mémoire comprenant un fichier cyclique possédant m enregistrements organisés en boucle, avec m entier allant de 1 à n+l, chaque enregistrement comprenant au moins un rang, un indicateur d'intégrité ayant un état mauvais ou bon, et une valeur de données, les enregistrements de rang 1 à n étant accessibles à l'utilisateur tandis que l'enregistrement de rang n+1, l'indicateur d'intégrité et le rang de chaque enregistrement étant cachés à l'utilisateur; b) en présence de données à inscrire dans la mémoire ainsi définie, sélectionner le fichier cyclique; c) rechercher l'enregistrement courant ayant le rang le plus élevé m = n+l, et vérifier l'état de l'indicateur d'inté- grité dudit enregistrement ainsi recherché; d) en cas d'indicateur d'intégrité mauvais, écrire la donnée à inscrire dans l'enregistrement courant de rang m = n+1, et en cas de succès, incrémenter d'une unité le rang de l'enre- gistrement courant m = n+1+1 = 1 qui devient alors caché, laissant accessibles à l'utilisateur les enregistrements de rang 2 à n+1 tandis qu'en cas d'échec, n'apporter aucune modification au rang de l'enregistrement courant m = n+1 qui reste caché, les autres enregistrements de rang 1 à n étant accessibles à l'utilisateur; et e) en cas d'indicateur d'intégrité bon, écrire la donnée à inscrire dans l'enregistrement de rang suivant m = n+1+1 = 1, et en cas de succès, incrémenter d'une unité le rang de l'enregistrement courant m = 1+1 = 2 qui devient alors caché, laissant accessibles les enregistrements de rang 3 à n+2 tandis qu'en cas d'échec, n'apporter aucune modification au rang de l'enregistrement courant m = n+2 qui demeure caché, laissant les enregistrements de rang 2 à n+1 accessibles à l'utilisateur. Le procédé selon l'invention a l'avantage de permettre l'inscription de nouvelles données en mémoire en une seule opération tout en conservant la garantie d'intégrité sur les données écrites dans un fichier cyclique. En pratique, le procédé comprend une étape de personnalisa- tion de la mémoire qui consiste, en présence d'une longueur d'enregistrement de x octets, à créer des enregistrements de longueur x+3 octets supplémentaires, lesdits octets supplé- mentaires étant cachés à l'utilisateur et affectés à l'indi- cateur d'intégrité et au rang de l'enregistrement, le procédé d'inscription étant forcé à n'accepter que des enregistre- ments dont la taille est inférieure ou égale à la taille modulo d'une page de mémoire. Une telle étape de personnalisation permet selon l'invention d'assurer que toutes les opérations d'effacement et d'écri- ture s'effectuent dans une seule page de la mémoire réins- criptible. La présente invention a également pour objet un dispositif d'inscription sécurisée de données dans une mémoire réins- criptible apte à mettre en oeuvre le procédé selon l'inven- tion. En pratique, le dispositif selon l'invention est logé dans un composant micro-électronique à mémoire réinscriptible. D'autres caractéristiques et avantages de l'invention apparaîtront à la lumière de la description détaillée ci- après et des dessins dans lesquels: - la figure 1 représente schématiquement un fichier cyclique de l'art antérieur; - la figure 2 représente la structure d'un fichier cyclique selon l'invention; - la figure 3 représente la structure d'un enregistrement selon l'invention; et - la figure 4 est un organigramme illustrant les étapes du procédé d'inscription sécurisée de données dans une mémoire réinscriptible selon l'invention. En référence à la figure 1, on a représenté une mémoire M non volatile, effaçable électriquement, du type EEPROM ou flash EPROM, gérée par un gestionnaire (non représenté) qui peut être sous la forme d'un microprocesseur avec programme. En pratique, la mémoire M et le microprocesseur constituant le gestionnaire de mémoire sont portés par un même composant électronique, appelé pastille semi-conductrice, ou puce. De manière connue, la mémoire M est destinée à stocker des informations structurées en entités logiques gérées par ledit gestionnaire de mémoire. En pratique, la mémoire M est segmentée en éléments d'un octet, par exemple pour la lecture des informations, et en pages pour l'effacement desdites informations, l'écriture pouvant également être effectuée par page. Le gestionnaire de mémoire est apte, au moyen d'un programme approprié, à organiser, c'est-à-dire synchroniser, en pages, lesdites entités logiques d'un ou plusieurs type de données. Une telle synchronisation est par exemple décrite dans la demande de brevet EP 0 769 742. A titre d'exemple, la mémoire M de la figure 1 de l'état de la technique est synchronisée pour un en-tête Hi d'un fichier cyclique comprenant n enregistrements organisés en boucle avec n entiers allant de 1 à n. Le fichier cyclique est composé d'un en-tête Hi comprenant des données utilisées exclusivement par le gestionnaire de mémoire et d'un ensemble d'enregistrements organisés de manière logique en boucle. Les enregistrements sont de longueur fixe. En écriture protégée, c'est-à-dire lorsque l'intégrité de l'écriture des données est garantie, l'opération d'écriture se fait à chaque fois à l'aide d'au moins trois opérations d'écriture, une première liée à une écriture dans la zone mémoire de sauvegarde, une écriture dans la zone devant recevoir les données et une écriture dans la zone mémoire de sauvegarde pour l'effacer. Ce procédé d'écriture protégée selon l'état de la technique est utilisé pour éviter de perdre des données, notamment lors d'un arrachage volontaire ou non volontaire d'une carte. Toutefois, un tel procédé multiplie le temps d'écriture et multiplie d'autant le risque de corruption en mémoire. La présente invention remédie à cet inconvénient. Elle est basée sur une technique d'écriture d'un fichier cyclique tel que décrit en référence à la figure 1 avec une opération d'écriture en une seule fois permettant de modifier un enregistrement de manière sécurisée en une seule action d'écriture tout en conservant la protection contre le retrait (arrachage de la carte). L'état de la technique est enrichi ici grâce notamment à l'utilisation de données et d'enregis- trements cachés dans le fichier cyclique que l'on décrira plus en détail ci-après. En référence à la figure 2, il est prévu de définir un fichier cyclique comprenant selon l'invention m enregistre- ments organisés en boucle, avec m entier allant de 1 à n+l, chaque enregistrement comprenant un rang, un indicateur d'intégrité d'écriture et une valeur de données. Selon l'invention, les enregistrements 1 à n sont accessibles à l'utilisateur et l'enregistrement n+l, le rang et l'indica- teur d'intégrité de chaque enregistrement sont cachés à l'utilisateur et sont donc uniquement accessibles au système interne, c'est-à-dire au gestionnaire de mémoire. En d'autres termes, on a ajouté à la mémoire de l'art antérieur décrite en référence à la figure 1, un enregistre- ment de rang n+1 qui est caché à l'utilisateur et on a établi un procédé d'inscription sécurisée que l'on décrira plus en détail ci-après. En référence à la figure 4, le procédé d'inscription sécurisé de données dans une mémoire réinscriptible comprend les étapes suivantes. Selon l'étape 2, on prévoit une mémoire M formant un fichier cyclique possédant m enregistrements organisés en boucle, avec m entier allant de 1 à n+1. Chaque enregistrement comprend au moins un rang, un indicateur d'intégrité ayant un état mauvais ou bon et une valeur de données. Les enregis- trements de rang 1 à n sont accessibles à l'utilisateur tandis que l'enregistrement de rang n+l, le rang et l'indica- teur d'intégrité de chaque changement sont cachés à l'utili- sateur. Conformément à l'étape 4, en présence de données à inscrire dans la mémoire ainsi définie, il est prévu de sélectionner le fichier cyclique. Selon l'étape 6, on recherche l'enregistrement courant ayant le rang le plus élevé m = n+1, et on vérifie l'état de son indicateur d'intégrité (étape 8). En cas d'indicateur d'intégrité mauvais (étape 10), on essaye d'écrire la donnée à inscrire dans l'enregistrement courant de rang m = n+1. On vérifie l'intégrité de l'écriture (étape 12). En cas de succès (étape 12), on incrémente d'une unité le rang de l'enregistrement courant m = n+l+l = 1. Cet enregis- trement courant devient caché. Les enregistrements 2 à n+l sont accessibles. En cas d'échec (étape 16), on n'apporte aucune modification au rang de l'enregistrement courant m = n+l, cet enregistre- ment courant reste caché. En cas d'indicateur d'intégrité bon (étape 18), on essaye d'écrire la donnée à inscrire dans l'enregistrement de rang suivant, ici m = n+l+l = 1. On vérifie l'intégrité de l'écriture (étape 20). En cas de succès (étape 22), on incrémente d'une unité le rang de l'enregistrement courant m = 1+1 = 2 qui devient caché. Les enregistrements de rang 3 à n+2 sont accessibles. En cas d'échec (étape 24), on n'apporte aucune modification au rang de l'enregistrement courant m = n+2. Cet enregistre- ment courant de rang m = n+2 demeure caché, laissant les enregistrements de rang 2 à n+l accessibles à l'utilisateur. Il y a lieu de remarquer que le besoin utilisateur d'avoir n enregistrements est toujours satisfait. Il ne s'aperçoit pas du changement de numérotation, puisque selon des moyens connus, le système opératoire fait une correspondance entre la numérotation réelle des enregistrements et la numérotation apparente à l'utilisateur, selon que tel ou tel enregistre- ment doit rester caché ou non aux yeux de l'utilisateur. En pratique, notamment dans le cas d'une application porte- monnaie électronique, la vérification de l'état de l'indica- teur d'intégrité conformément à l'étape 8 consiste à vérifier l'enregistrement directement précédent (n) et ainsi de suite jusqu'au prochain enregistrement valide. On récupère alors la donnée (par exemple dans le cas d'une application porte- monnaie électronique, la balance dudit porte-monnaie) de l'enregistrement valide que l'on va utiliser avec les données reçues de l'extérieur pour calculer la nouvelle balance à mettre à jour dans l'enregistrement n+l. En pratique, l'écriture de la donnée (étapes 12 et 20) consiste à écrire dans l'enregistrement de rang choisi selon le procédé les données reçues et préalablement sauvegardées en mémoire de travail, le rang d'enregistrement étant incrémenté. En résumé, lorsque le personnalisateur de la carte crée un fichier, par exemple de n enregistrements, le système opératoire selon l'invention crée en conséquence n+1 enregis- trements. L'en-tête du fichier H1 est avantageusement complété par une zone perdue ZP, en référence à la figure 2, qui est placée après l'entête Hi afin que le premier enregistrement commence sur une frontière de page de mémoire M. Ainsi, une seule écriture est nécessaire lors de la mise à jour d'un enregistrement. En référence à la figure 3, la structure d'un enregistrement selon l'invention comprend x octets affectés aux données, deux octets affectés à l'indicateur d'intégrité, par exemple de type CRC, et un octet affecté au rang de l'enregistrement. Selon l'invention, les trois octets supplémentaires affectés à l'indicateur d'intégrité et au rang de l'enregistrement sont cachés à l'utilisateur, c'est-à-dire seulement accessi- bles au système opératoire de la mémoire. Selon l'invention, le procédé d'inscription est forcé à n'accepter que des enregistrements dont la taille x+3 octets est inférieure ou égale à la taille modulo d'une page de mémoire. une telle étape de personnalisation permet selon l'invention d'assurer que toutes les opérations d'effacement et d'écri- ture s'effectuent dans une seule page de la mémoire réins- criptible. En d'autres termes, lorsque le personnalisateur veut créer une longueur d'enregistrement de x octets, le système opératoire crée un enregistrement de x+3 octets. Les trois octets ajoutés sont destinés à l'indicateur d'intégrité et au rang d'enregistrement. Ces trois octets ajoutés sont cachés pour l'utilisateur car utilisés uniquement pour la sécurité interne au système d'exploitation. Dans l'exemple mentionné ci-avant, l'utilisateur est égale- ment le personnalisateur. En variante, lorsque l'utilisateur n'est pas le personnalisateur de la carte, l'utilisateur peut uniquement modifier le contenu des enregistrements sans pouvoir en créer. Une commande de création de fichier cyclique "create file" est susceptible d'être mise en place, à la charge du person- nalisateur de la carte qui crée le fichier afin de s'assurer que les conditions frontière de page sont respectées. Dans ces conditions, il est prévu que la taille de chaque enregis- trement est égale à la taille modula de la page. Il est à remarquer que la commande "create file" peut être forcée par le système opératoire afin de n'accepter que des longueurs d'enregistrement de 13, 29 ou 61 octets apparents, ce qui correspond à 16, 32 ou 64 octets réels pour le fichier cyclique. (Cet exemple suppose que la taille d'une page mémoire est de 64 octets). Si la taille d'une page mémoire est de 32 octets, alors la valeur 61 est invalide. En pratique, lorsque l'utilisateur crée un enregistrement dont la longueur est inférieure à 13 octets, l'enregistrement est personnalisé à une longueur égale à 16 octets. De même, en présence d'un enregistrement dont la longueur est infé- rieure à 29 octets, la longueur de l'enregistrement est initialisée à 32. Il en est de même pour des longueurs inférieures à 61, qui sont alors initialisées à 64 octets. En pratique, l'initialisation ou "padding" est caché pour l'utilisateur. Ces personnalisations permettent d'assurer que toutes les écritures en mémoire EEPROM s'effectuent dans une seule page. Grâce à l'invention, le temps d'accès en écriture sur des fichiers lors d'une transaction rapide, par exemple à l'aide d'une carte sans contact, est optimisé, tout en conservant la sécurité de l'écriture. De plus, la zone de sauvegarde mémoire étant cyclique, l'autre avantage de la présente invention réside dans la réduction de l'usure de la mémoire EPROM. Revendications 1. Procédé d'inscription sécurisée dans une mémoire réinscriptible, caractérisé en ce qu'il comprend les étapes suivantes: a) définir une mémoire comprenant un fichier cyclique possédant m enregistrements organisés en boucle, avec m entier allant de 1 à n+1, chaque enregistrement comprenant au moins un rang, un indicateur d'intégrité ayant un état mauvais ou bon, et une valeur de données, les enregistrements de rang 1 à n étant accessibles tandis que l'enregistrement de rang n+l, l'indicateur d'intégrité et le rang de chaque enregistrement étant cachés à l'utilisateur; b) en présence de données à inscrire dans la mémoire ainsi définie, sélectionner le fichier cyclique; c) rechercher l'enregistrement courant ayant le rang le plus élevé m = n+1, et vérifier l'état de son indicateur d'inté- grité; d) en cas d'indicateur d'intégrité mauvais, écrire la donnée à inscrire dans l'enregistrement courant de rang m = n+1, et en cas de succès, incrémenter d'une unité le rang de l'enre- gistrement courant m = n+1+1 = 1 qui devient caché, laissant accessibles les enregistrements de rang 2 à n+1 tandis qu'en cas d'échec, n'apporter aucune modification au rang de l'enregistrement courant m = n+l qui reste caché, les autres enregistrements de rang 1 à n restant accessibles à l'utili- sateur; et e) en cas d'indicateur d'intégrité bon, écrire la donnée à inscrire dans l'enregistrement de rang suivant m=n+l+l=l, et en cas de succès, incrémenter d'une unité le rang de l'enre- gistrement m = 1+1 = 2 qui devient caché, laissant accessi- bles les enregistrements de rang 3 à n+2 tandis qu'en cas d'échec, n'apporter aucune modification au rang de l'enregis- trement courant m = n+2 qui demeure caché, laissant les enregistrements de rang 2 à n+1 accessibles à l'utilisateur. 2. Procédé selon la revendication 1, caractérisé en ce qu'il comprend une étape de personnalisation de la mémoire qui consiste, en présence d'une longueur d'enregistrement de x octets, à créer des enregistrements de taille x+3 octets supplémentaires, les octets supplémentaires étant cachés et affectés à l'indicateur d'intégrité et au rang de l'enre- gistrement, le procédé d'inscription étant forcé à n'accepter que des enregistrements dont la taille x+3 est inférieure ou égale à la taille modulo d'une page de mémoire. 3. Dispositif d'inscription sécurisée de données dans une mémoire réinscriptible, caractérisé en ce que la mémoire (M) comprend un fichier cyclique possédant m enregistrements, avec m entier allant de 1 à n+1, chaque enregistrement comprenant au moins un rang, un indicateur d'intégrité ayant un état mauvais ou bon et une valeur de données, les enregis- trements de rang 1 à n étant accessibles tandis que l'enre- gistrement de rang n+l, l'indicateur d'intégrité et le rang de chaque enregistrement étant cachés à l'utilisateur. 4. Dispositif selon la revendication 3, caractérisé en ce qu'il comprend: - des moyens de traitement aptes à rechercher l'enregistre- ment courant ayant le rang le plus élevé m = n+l, et à vérifier l'état de son indicateur d'intégrité; - des premiers moyens d'inscription aptes, en cas d'indica- teur d'intégrité mauvais, à écrire la donnée à inscrire dans l'enregistrement courant de rang m = n+l, et en cas de succès, à incrémenter d'une unité le rang de l'enregistrement courant m = n+1+1 = 1 qui devient caché, laissant accessibles les enregistrements 2 à n+l, tandis qu'en cas d'échec, lesdits premiers moyens d'inscription étant aptes à n'appor- ter aucune modification au rang de l'enregistrement courant m = n+1 qui reste caché, les autres enregistrements de rang 1 à n restant accessibles à l'utilisateur; et - des seconds moyens d'inscription aptes, en cas d'indicateur d'intégrité bon, à écrire la donnée à inscrire dans l'enregistrement de rang suivant m = n+1+1 = 1, et en cas de succès à incrémenter d'une unité le rang de l'enregistrement courant m = 1+1 = 2 qui devient caché, laissant accessibles les enregistrements de rang 3 à n+ 2, tandis qu'en cas d'échec, lesdits seconds moyens d'inscription étant aptes à n'apporter aucune modification au rang de l'enregistrement courant m = n+2 qui demeure caché, laissant les enregistrements 2 à n+1 accessibles. 5. Dispositif selon la revendication 3 ou la revendication 4, caractérisé en ce qu'il est logé dans un composant micro- électronique à mémoire réinscriptible.