FR 2838536 A1 20031017 FR 0204705 A 20020416 ! 1 2838536 La présente invention concerne les systèmes dans lesquels une partie des enregistrements de données mémorisés dans la carte est modifice lors d'une transaction effectuce avec un lecteur de la carte et concerne plus particulièrement un procédé de modification des données d'une carte à mémoire lors d'une transaction avec un lecteur. Les cartes à mémoire encore appelées cartes à puce sont de plus en plus utilisoes comme support de donnces associées aux titulaires des cartes. Parmi ces cartes, les cartes sans contact pour lesquelles l'échange d'informations se fait par couplage électromagnétique à distance entre une antenne logée dans la carte et un lecteur associé ont été développés comme moyens d'accès à des zones d'accès contrôlé, moyen d' identification de personnes ou encore porte-monnaie électroniques. La mémoire contenant les données dans une carte à puce est généralement une mémoire non volatile, effacable et ré- inscriptible et de prétérence du type EEPROM. Ce type de mémoire est divisée en une pluralité d' emplacements contenant des enregistrements de données d'une longueur détermince par exemple 32 octets. Lors d'une transaction, plusieurs enregistrements contenus dans la mémoire de la carte doivent généralement être modifiés pour être adaptés aux nouvelles conditions résultant de la transaction. Malheureusement, la mémoire, et en particulier lorsqu'il s'agit d'une mémoire EEPROM, nocessite un temps d'effacement/écriture relativement long (par exemple ms), pendant lequel une coupure d'alimentation éventuelle fait courir le risque de perdre les donnces contenues dans l'enregistrement. En outre, les différentes opérations de la transaction pendant lesquelles plusieurs enregistrements de données sont modifiés fonctionnent en mode tout ou rien. Pour des raisons de sécurité de la transaction, il est en effet indispensable 2 2838536 de recommencer toute la transaction si une coupure d'alimentation vient à se produire durant le cours de la transaction, sous peine de perdre irrémédiablement des données sensibles (par exemple le solUe créditeur d'un porte-monnaie électronique) s'il n'est pas possible de repartir du début de la transaction. De manière à apporter une réponse au problème énoncé ci- dessus on a songé à mémoriser l'enregistrement de donnces dans une mémoire tampon avant de procéder à sa modification. Lorsque toutes les modifications ont été apportées aux enregistrements à modifier, les anciens enregistrements sont effacés de la mémoire tampon. Malheureusement, cette méthode nécessite pour chaque enregistrement une opération de sauvegarde dans la zone tampon, une opération d' effacement de l' enregistrement à modifier, une opération de ré-écriture et une opération d' effacement de l'enregistrement ancien dans la zone tampon, soit 4 opérations par enregistrement. Lorsque la transaction comporte beaucoup d'opérations, par exemple 8 opérations comme ce peut être le cas, la transaction peut prendre un temps important incompatible avec le temps mis par le geste du titulaire de la carte présentant celle-ci au lecteur. En outre, cette méthode présente l'inconvénient majeur que les enregistrements de la zone de données se trouvent touj ours aux mêmes emplacements et que la zone tampon occupe une place fixe dans la mémoire, ceci augmente le " stress " de la mémoire et limite le nombre de transactions pouvant être effectuces dans la mesure o le nombre d'opérations pour chaque emplacement est limité à une valeur donnée garantie par le fabricant de silicium. C'est pourquoi le but de l'invention est de réaliser un procédé de modification de données d'une carte à mémoire lors d'une transaction qui permette la synchronisation en mode tout ou rien des modifications à effectuer au cours de la 3 2838536 transaction, ceci pendant une courte période de temps compatible avec le temps d'accès limité à la carte durant la transaction, tout en évitant l'utilisation d'une partie de la mémoire comme mémoire tampon pour la sauvegarde des donnces et donc en évitant le " stress " mémoire dû à l'écriture des donnces touj ours dans les mêmes zones de mémoire. L' invention concerne donc un procédé de modification des donnéss dans un système de transaction par carte comprenant une carte à mémoire et un lecteur apte à lire la carte lorsque celle-ci se trouve dans une position déterminée par rapport au lecteur. La carte comprend une première mémoire (RAM) et une seconde mémoire non volatile, effagable et ré-inscriptible (EEPROM), cette dernière comportant des emplacements occupés par des enregistrements de donnces en relation avec les transactions effectuées par la carte, chaque transaction entraînant la modification d' au moins un des emplacements de données ou l'ajout d'un nouvel enregistrement. Le procédé selon l' invention comprend les étapes suivantes: a) pour un enregistrement de donnces à modifier ou un enregistrement à ajouter, lire dans un précédent registre de contrôle se trouvant à un premier emplacement déterminé de la seconde mémoire l'adresse d'un emplacement libre de la seconde mémoire, b) écrire le nouvel enregistrement modifié ou ajouté dans l' emplacement libre, c) répéter les étapes a) et b) pour chacun des nouveaux enregistrements à modifier ou à ajouter, d) écrire dans un deuxième emplacement déterminé de la seconde mémoire un nouveau registre de contrôle contenant les adresses des emplacements libres de la seconde mémoire à utiliser dans la prochaine transaction. Les buts, objets et caractéristiques de l' invention apparaîtront plus clairement à la lecture de la description 4 2838536 qui suit faite en référence à la figure unique représentant un organigramme du procédé selon l'invention. Dans la description qui suit, on a supposé que la carte à puce utilisoe pour la transaction comporte une mémoire EEPROM divisée en secteurs identiques, par exemple de 32 octets. Une caractéristique essentielle de l' invention est l'utilisation d'un registre de contrôle occupant un des secteurs de la mémoire. Ce registre de contrôle contient des donnces destinées à être utilisces pour effectuer la transaction parmi lesquelles l'identification des secteurs libres de la mémoire pouvant être utilisés pour y enregistrer des nouvelles données. Le registre de contrôle contient en particulier les champs suivants: - FlagOpen: indique si une transaction est ouverte ou non, - OldSect: indique les numéros des secteurs avant leur modification, - PrevReg: indique le numéro de secteur o se trouvait le registre de contrôle précédent. - NextReg: indique le numéro de secteur o sera écrit le registre de contrôle suivant, - FlagClose: indique si la transaction est clôLurée ou non, - NewSect: indique les numéros des secteurs libres pour de nouvelles modifications, En supposant qu'une transaction soit effectuce, le procédé selon l'invention se déroule selon l'organigramme illustré sur la figure 1. Il y a tout d'abord une étape d'initialisation (étape l0) consistant à initialiser 4 variables dans la mémoire RAM de la carte: - Adresse registre de contrôle: numéro du secteur dans lequel se trouve le registre de contrôle, - NbUpdates: variable incrémentée après chaque modification d'un enregistrement ou aj out d'un nouvel enregistrement. - TransactionLevel: bit indiquant que la transaction est en cours, 2838536 - OldSecteur: indique les numéros de secteurs o sont enregistrées des données au cours de la transaction. La deuxième étape est l'étape d'ouverture de la transaction (étape 12) au cours de laquelle le bit TransactionLevel de la mémoire RAM est passé de 0 à 1 et le champ FlagOpen du registre de contrôle qui était à 0 est établi à la valeur hexadécimale A5. A 1' étape suivante, on détermine si il y a un enregistrement à modifier ou à ajouter dans un emplacement de la mémoire (étape 14). Si c'est le cas, le numéro de l'ancien secteur est écrit en mémoire RAM (étape 16), l'adresse du secteur dans lequel doit être écrit le nouvel enregistrement est lu dans le registre de contrôle (étape 17), le nouvel enregistrement est écrit dans un secteur identifié par un numéro lu dans le registre de contrôle (étape 18), et on effectue les modifications des données de contrôle en mémoire RAM (étape 20). Le procédé rebouale alors pour déterminer s'il y a encore un enregistrement à modifier ou à aj outer (étape 14). A noter que, lorsqu'il s'agit de l'ajout d'un enregistrement et non pas d'une modification, il n'y a pas mémorisation d'un numéro de secteur en mémoire RAM puisque ce secteur n'existe pas, mais mémorisation d'un numéro virtuel 0. Lorsqu'il n'y a plus d'enregistrement à écrire en mémoire, un nouveau registre de contrôle contenant des nouvelles données est écrit dans un secteur libre dont le numéro est fourni par l'ancien registre de contrôle (étape 18), l'ancien registre de contrôle est effacé (étape 20), les anciens secteurs contenant des enregistrements qui ont donné lieu à modification sont effacés (étape 22) et les variables de contrôle de la mémoire RAM sont remises à zéro (étape 24). De façon à illustrer le procédé de l' invention, on peut considérer l'exemple suivant dans lequel la mémoire EEPROM se présente de la façon suivante avant la transaction: 6 2838536 i Secteur Contenu 1 eregistrement # 1 2 enregistrement # 2 3 enregistrement # 3 4 enregistrement # 4 registre de contrle 6 libre, nouveau regitre de conL6le 7 libre, candidaL modification # 1 8 libre, candidat modificaLion # 2 9 libre, candidat modification # 3 libre, candidaL modificaLion # 4 11 libre, candidat modification # 5 12 libre, candidat modification # 6 13 libre, candidat modification # 14 libre, candidat modification # 8 Le registre de contrale qui se trouve dans le secteur 5 comporte les donnes ci-deous: - FlagOpen: 00 - OldSecL: 0, 0, 0, 0, 0, 0, 0, 0, 0 - PrevReg: 0 - NeLReg: 6 - FlagClose: AS - NewSecL: 7, 8, 9, 10, 11, 12, 13, 14 En suosanL que la LransacLion soiL compose deG quaLre changemenLG conG6cuLi[s: - modificaLion de l'enregisLremenL 2 modificaLion de l'enregisLremenL 3 - ajouL de l'enregisLremenL 5 - seconde modificaLion de l'enregisLremenL 2 AprAs 1'ALape d'iniLialisaLion, les ALapes du procdA sonL les suivanLes: 7 2838536 - Ouverture de la transaction: écriture du champ FlagOpen à A5 en héxadécimal dans le registre actuel et initialisation des variables: NbUpdates = 0 TransactionLevel = 1 01dSect[8] = {0,0,0,0,0,0,0,0,0} Modification de l'enregistrement #2: mémoriser l'ancien secteur #2 en RAM, écrire le nouvel enregistrement dans le secteur #7, les variables RAM sont: NbUpdates = 1 TransactionLevel = 1 01dSect[8] = {2,0,0,0,0,0,0,0,0} - Modification de l'enregistrement #3: mémoriser l'ancien secteur #3 en RAM, écrire le nouvel enregistrement au secteur #8. Les variables RAM sont: NbUpdates = 2 TransactionLevel = 1 01dSect[8] = {2,3,0,0,0,0,0,0,0} - Ajout de l'enregistrement #5: mémoriser l'ancien secteur #0 en RAM (0 signifie l'ancien secteur absent), écrire le nouvel enregistrement au secteur #9. Les variables RAM sont, NbUpdates = 3 TransactionLevel = 1 01dSect[8] = {2,3,0,0,0,0,0,0,0} - Modification de l'enregistrement #2: mémoriser l'ancien secteur #7 en RAM, écrire le nouvel enregistrement au secteur #10. Les variables RAM sont, NbUpdates = 4 TransactionLevel = 1 01dSect[8] = {2,3,0,7,0,0,0,0,0} - ClôLure de la transaction: décrémenter TransactionLevel écrire le nouveau registre au secteur #6 avec FlagClose = 0 8 2838536 effacer l'ancien registre de contrôle effacer les anciens secteurs #2, #3, #7 écrire FlagClose à $A5 initialiser: À NbUpdates = 0 À TransactionLevel = 0 À 01dSect[8] = {x,x,x,x,x,x,x,x,x} La mémoire EEPROM se présente de la manière suivante après la transaction: Secteur Contenu après la tansaction 1 enregistrement # 1 2 libre 3 libre 4 enregistrement # 4 libre, ancien registre de contrôle 6 registre de contrôle 7 libre 8 enregistrement # 3 9 enregistrement # 5 enregistrement # 2 11 libre, nouveau registre de contrôle 12 libre, candidat modification # 1 13 libre, candidat modification # 2 14 libre, candidat modification # 3 libre, candidat modification # 4 16 libre, candidat modification # 5 libre, candidat modification # 6 9 2838536 Le nouveau registre de contrôle contient les donnces suivantes: FlagOpen: 00 - OldSect: 2, 3, 0, 7, 0, 0, 0, 0 - PrevReg: 5 - NextReg: 11 - FlagClose: A5 - NewSect: 12, 13, 14, 15, 16, 17 On voit donc que le nouveau registre de contrôle contient l' identification des secteurs anciens dont les valeurs ont été fournies par la mémoire RAM, l' identification du secteur o se trouvait l'ancien registre de contrôle, l' identification du secteur o devra être mis le prochain registre de contrôle, les numéros des secteurs libres o devront être écrites les prochaines modifications, et l' indication (FlagClose) que la transaction a été clôturce. Si une coupure d'alimentation se produit durant les modifications apportées à la mémoire EEPROM, le contenu de la mémoire RAM est perdu, mais l'état des données permet de repartir à zéro en effectuant à nouveau toute la transaction sans crainte d'avoir perdu une donnce sensible. En effet, il suffit d' effacer tous les secteurs qui ont été susceptibles d'être écrits à l'aide de nouvelles données, soit en effaçant tous les secteurs notés " libres " dans le registre de contrôle, soit en effaçant seulement ceux qui ont été écrits après avoir scruté leur contenu pour vérifier s'ils ont été écrits (sinon, ils contiennent des zéros). On remarquera que si la coupure d'alimentation a lieu pendant la clôLure de la transaction, le fait d'avoir mis la valeur 0 dans le champ FlagClose du nouveau registre de contrôle permet de savoir que la transaction n'est pas clôturée et qu'il faut considérer le contenu des anciens secteurs qui ne sont effacés qu'à l' avant dernière opération, 2838536 la dernière opération étant l'écriture de FlagClose indiquant la clôLure de la transaction. Le procédé selon l' invention économise des cycles si on le compare au procédé faisant appel à la sauvegarde dans une mémoire tampon. En effet, dans le procédé classique, il faut 4 opérations EEPROM pour chaque modification de données: écriture dans la zone de mémoire tampon, effacement de l'emplacement futur, écriture des nouvelles données à cet emplacement et effacement de l'emplacement de la zone de mémoire tampon. Il faut y aj outer la gestion de la mémoire tampon et la gestion des informations relatives aux données à stocker. Par contre, le procédé selon l' invention ne nécessite que 2 opérations EEPROM pour chaque modification, à savoir une écriture des nouvelles donnces dans un nouveau secteur et l' effacement de l'ancien secteur, ainsi que 4 opérations générales à savoir, l'écriture de FlagOpen dans le registre de contrôle au début, l' effacement de l'ancien registre de contrôle, l'écriture du nouveau registre de contrôle et l'écriture de FlagClose dans le registre de contrôle. Ainsi, pour N modifications, on peut établir le tableau de comparaison suivant donnant le nombre d'opérations EEPROM dans le procédé classique et dans le procédé selon l' invention, ..... alnel que le galn reallse. Nombre d'opérations EEPROM N Gain Classique Invention 4N + 2 2N + 4 2 l0 8 4 18 12 6 22 14 8 11 2838536 Si une operation d'écriture ou d'effacement dans la mémoire EEPROM dure Ems, le gain réalisé avec un nombre minimal de 4 opérations est de 30mns. i2 2838536 REVEND I CAT I ONS 1. Procédé de modification des données dans un système de transaction par carte comprenant une carte à mémoire et un lecteur apte à lire ladite carte lorsque celle-ci se trouve dans une position détermince par rapport au lecteur, ladite carte comprenant une première mémoire vive et une seconde mémoire non volatile, effacable et ré-inscriptible, cette dernière comportant des emplacements occupés par des enregistrements de donnéss en relation avec les transactions effectuées par ladite carte, chaque transaction entraînant la modification d'au moins un desdits emplacements de données ou l'ajout d'un nouvel enregistrement, ledit procédé étant caractérisé par les étapes suivantes: a. pour un enregistrement de donnces à modifier ou un enregistrement à ajouter, lire (17) dans un précédent registre de contrôle se trouvant à un premier emplacement déterminé de ladite seconde mémoire l' adresse d' un emplacement libre de ladite seconde mémoire, b. écrire (18) le nouvel enregistrement modifié ou ajouté dans ledit emplacement libre, 2s c. répéter les étapes a) et b) pour chacun des nouveaux enregistrements à modifier ou à aj outer, et d. écrire (22) dans un deuxième emplacement déterminé de ladite seconde mémoire un nouveau registre de contrôle contenant les adresses des emplacements libres de ladite seconde mémoire à utiliser dans la prochaine transaction. 2. Procédé selon la revendication 1, comprenant en outre l'étape suivante effectuce préalablement à l'étape a), 13 2838536 i) écrire (16) le numéro de l'emplacement dans lequel se trouve l'enregistrement à modifier ou à ajouter dans ladite première mémoire vive. 3. Procédé selon la revendication 2, dans lequel ledit numéro d' emplacement écrit dans ladite première mémoire vive est un numéro virtuel lorsque l'opération à effectuer concerne un enregistrement à aj outer. 4. Procédé selon la revendication 1, 2 ou 3, dans lequel deux variables sont enregistrées en mémoire à l'initialisation de la transaction, une première variable (NbUpdates) étant mise à zéro de manière à être incrémentée à chaque opération de modification ou d'ajout d'un enregistrement et une deuxième variable (TransactionLevel) étant mise à zéro de manière à être modifiée de O à 1 lorsque la transaction est en cours. 5. Procédé selon l'une des revendications 1 à 4, dans lequel les emplacements contenant les enregistrements qui ont été modifiés ou ajoutés sont effacés (26) à la clôLure de la transaction. 6. Procédé selon la revendication 5, dans lequel ledit premier emplacement déterminé contenant le précédent registre de contrôle est effacé à la clôture de la transaction (24). 7. Procédé selon la revendication 6, dans lequel les numéros desdits emplacements contenant les enregistrements qui ont été modifiés ou ajoutés sont écrits dans ledit nouveau registre de contrôle à partir de ladite première mémoire vive à la clôLure de la transaction. 14 2838536 8. Procédé selon la revendication 7, dans lequel lesdites variables de ladite première mémoire vive sont remises à zéro à la clôture de la transaction (28). 9. Procédé selon la revendication 8 dans lequel un champ (FlagClose) dudit nouveau registre de contrôle est mis à zéro avant que ledit précédent registre de contrôle et lesdits enregistrements qui ont été modifiés ou ajoutés ne soient effacés et mis à une autre valeur (A5) après que ces opérations ont été effectuées. 10. Système comprenant des moyens adaptés pour mettre en uvre