FR 3067831 A1 20181221 FR 1755351 A 20170614 B15991 - 17-ZV2-0059 1 GESTION D'ATOMICITE DANS UNE MEMOIRE EEPROM Domaine La présente description concerne de façon générale les circuits électroniques et, plus particulièrement, les circuits exploitant une mémoire non volatile réinscriptible. La présente description vise plus particulièrement la gestion d'atomicité dans une mémoire EEPROM. Exposé de l'art antérieur Les mémoires EEPROM sont utilisées, notamment dans des microcontrôleurs, pour stocker de façon non volatile des 10 informations. Dans certaines applications, on souhaite s'assurer que les transactions réalisées respectent un critère d'atomicité. L'atomicité d'une transaction correspond à s'assurer que des données stockées en mémoire présentent bien un état exploitable 15 et intègre. Cela revient à s'assurer que des données en mémoire non volatile présentent un état stable (1"état avant la transaction ou l'état après la transaction concernée). La gestion de l'atomicité des transactions est particulièrement utilisée dans des applications où une 20 interruption de l'alimentation du circuit ou l'apparition d'une perturbation accidentelle ou volontaire peut engendrer le stockage de données dans un état les rendant soit inexploitables par la B15991 - 17-ZV2-0059 2 suite, soit vulnérables du point de vue de la confidentialité ou de leur intégrité. Par exemple, dans le domaine des cartes à microcircuit, on souhaite s'assurer qu'en cas d'arrachement (tearing) volontaire ou accidentel d'une carte du lecteur dans 5 laquelle elle se trouve, les informations contenues dans une mémoire non volatile de la carte soient fiables. Dans un circuit intégrant un module de sécurité, l'équivalent de l'arrachement correspond à une coupure de l'alimentation du circuit. Résumé Il existe un besoin d'améliorer la gestion de l'atomicité dans une mémoire EEPROM. Un mode de réalisation pallie tout ou partie des inconvénients des techniques connues. Ainsi, un mode de réalisation prévoit un procédé de 15 vérification du caractère atomique d'une opération de mise à jour d'une donnée dans une mémoire EEPROM, comportant, lors d'une opération d'écriture de la donnée les étapes suivantes : initialiser au moins un premier drapeau à une première valeur et stocker cette valeur en mémoire EEPROM ; 20 effacer la donnée en mémoire EEPROM ; écrire une valeur de la donnée en mémoire EEPROM ; et écrire au moins une deuxième valeur du premier drapeau dans la mémoire EEPROM. Selon un mode de réalisation, lors d'une opération de 25 lecture de la donnée, la valeur de la donnée n'est retournée que si la valeur du premier drapeau correspond à la deuxième valeur. Selon un mode de réalisation, lors d'une opération de lecture de la donnée, on effectue les opérations suivantes : comparer la valeur du premier drapeau à la deuxième 30 valeur ; et si les valeurs sont égales, retourner la valeur de la donnée ; ou si les valeurs sont différentes, retourner une erreur. B15991 - 17-ZV2-0059 3 Selon un mode de réalisation, si la valeur du premier drapeau ne correspond pas à la deuxième valeur, la donnée est effacée en mémoire EEPROM. Selon un mode de réalisation, si la valeur du premier 5 drapeau ne correspond pas à la deuxième valeur, la valeur d'au moins le premier drapeau est mise à jour avec la première valeur en mémoire EEPROM. Selon un mode de réalisation, la première valeur correspond à un effacement. 10 Selon un mode de réalisation, si la valeur du premier drapeau correspond à la deuxième valeur, la valeur du drapeau est mise à jour avec cette deuxième valeur en mémoire EEPROM. Selon un mode de réalisation, le procédé comporte un premier drapeau et un deuxième drapeau mis à jour et lus 15 successivement. Selon un mode de réalisation, si la valeur du deuxième drapeau ne correspond pas à la deuxième valeur, les valeurs des premier et deuxième drapeaux sont mises à jour avec leur deuxième valeur respective en mémoire EEPROM. 20 Un mode de réalisation concerne un circuit électronique comportant une mémoire EEPROM, et un processeur adapté à la mise en oeuvre du procédé de vérification du caractère atomique d'une opération de mise à jour d'une donnée dans la mémoire EEPROM. Brève description des dessins 25 Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 est une représentation très schématique et 30 sous forme de blocs d'un exemple de circuit électronique du type auquel s'appliquent des modes de réalisation qui vont être décrits ; la figure 2 représente, de façon schématique et sous forme de blocs, les étapes de mise à jour d'une donnée en mettant B15991 - 17-ZV2-0059 4 en oeuvre un mode de réalisation d'un procédé de gestion d'atomicité ; la figure 3 représente, de façon schématique et sous forme de blocs, les étapes d'un mode de réalisation d'un procédé 5 de lecture d'une donnée écrite en mettant le procédé de gestion d'atomicité de la figure 2 ; la figure 4 représente, de façon schématique et sous forme de blocs, les étapes de mise à jour d'une donnée en mettant en oeuvre un autre mode de réalisation d'un procédé de gestion 10 d'atomicité ; et la figure 5 représente, de façon schématique et sous forme de blocs, les étapes d'un autre mode de réalisation d'un procédé de lecture d'une donnée écrite en mettant le procédé de gestion d'atomicité de la figure 4. Description détaillée De mêmes éléments ont été désignés par de mêmes références aux différentes figures. Par souci de clarté, seules les étapes et éléments utiles à la compréhension des modes de réalisation qui vont être décrits ont été représentés et seront détaillés. En particulier, la destination des informations traitées par le mécanisme d'atomicité n'a pas été détaillée, les modes de réalisation décrits étant compatibles avec les applications usuelles requérant un traitement d'atomicité. La figure 1 représente, de façon très schématique et sous forme de blocs, un mode de réalisation d'un circuit électronique 1 du type auquel d'appliquent, à titre d'exemple, les modes de réalisation qui vont être décrits. Le circuit 1 comporte : une unité de traitement 11 (PU), par exemple une machine d'états, un microprocesseur, un circuit logique programmable, etc. ; une ou plusieurs zones 12 (RAM) de stockage volatil, par exemple de type mémoire vive ou registres, pour stocker B15991 - 17-ZV2-0059 5 temporairement des informations (instructions, adresses, données) pendant les traitements ; une ou plusieurs zones de stockage non volatil, dont au moins une mémoire 13 de type mémoire effaçable et programmable 5 électriquement (EEPROM) pour stocker des informations de façon durable et en particulier quand le circuit n'est pas alimenté ; un ou plusieurs bus 14 de données, d'adresses et/ou de commandes entre les différents éléments internes au circuit 1 ; et 10 une interface d'entrée-sortie 15 (I/O) de communication, par exemple de type bus série, avec l'extérieur du circuit 1. Le cas échéant, le circuit 1 intègre également un circuit 16 de communication sans contact (CLF - ContactLess Front-end), de type communication en champ proche (Near Field 15 Communication - NFC). Par ailleurs, le circuit 1 peut intégrer d'autres fonctions, symbolisées par un bloc 17 (FCT), selon l'application, par exemple, un crypto-processeur, d'autres interfaces, d'autres mémoires, etc. 20 Afin de garantir l'atomicité des transactions, le stockage en mémoire EEPROM d'une donnée ne doit être considéré comme valide qu'une fois que la transaction est terminée et que les données sont dites stables. En pratique, les procédés de gestion d'atomicité activent un indicateur de traitement d'une 25 donnée lorsque celle-ci est extraite de la mémoire non volatile, puis organisent le stockage de la donnée mise à jour une fois le traitement terminé, l'indicateur de traitement changeant alors d'état. L'atomicité peut concerner une quantité plus ou moins importante de données selon la nature de la transaction. 30 Le caractère atomique des transactions est particu- lièrement important dans le cas de transactions de type bancaire (paiement par exemple) où il est nécessaire de s'assurer que l'information stockée dans la mémoire EEPROM, par exemple le solde d'un porte-monnaie électronique ou d'une autorisation d'achat, ou B15991 - 17-ZV2-0059 6 l'identifiant validant une transaction, est stockée de façon fiable. Généralement pour garantir l'atomicité d'une transaction, on utilise des espaces de stockage temporaire 5 (Buffer) d'atomicité qui sont mis à jour en mémoire non volatile avec les informations initiales, puis finales, pour transfert dans la mémoire non volatile principale. La gestion de l'atomicité des transactions dans un circuit équipé d'une mémoire EEPROM s'effectue généralement sur 10 deux états, c'est-à-dire que les algorithmes de vérification d'atomicité sont capables de restituer une donnée de la mémoire dans un état stable, correspondant à l'état initial ou à l'état final. Toutefois, la mise en oeuvre de ces sécurités requiert une place importante en mémoire et des algorithmes complexes de 15 récupération qui ne sont pas toujours justifiés. De plus, dans le cas d'une mémoire EEPROM, les multiples écritures d'une donnée nuisent à l'endurance de la mémoire et à la consommation. Les modes de réalisation qui sont décrits ci-dessous prévoient un algorithme d'atomicité à trois états, c'est-à-dire 20 capable d'indiquer si la donnée lue est : - dans un état stable, c'est-à-dire : o dans l'état initial, c'est-à-dire qu'elle n'a pas été affectée par l'opération au cours de laquelle a eu lieu la coupure et qu'elle est 25 donc dans un état stable ; ou o dans l'état final, c'est-à-dire que la donnée a été modifiée par l'opération sans qu'il y ait coupure ou avant qu'une coupure ait lieu et qu'elle est donc également dans un état stable ; 30 ou - dans un état indéterminé ou « perdu », c'est-à-dire que la donnée ne peut être restituée dans un état correspondant à l'état initial ou à l'état final. Le fait de prévoir un état indéterminé ou « non fiable » permet de simplifier les contraintes en termes de durée B15991 - 17-ZV2-0059 7 d'exécution des processus et de réduire le nombre de mises à jour requises de la mémoire. Cet aspect est particulièrement important dans le cas d'une mémoire EEPROM dont l'endurance (la durée de vie) et la 5 consommation sont fortement dépendantes du nombre d'écritures. Ce problème ne se pose pas nécessairement pour d'autres types de mémoires qui consomment moins dans les opérations d'écritures (une mémoire de type EEPROM nécessite une tension d'écriture de plus de dix volts) ou dont l'endurance est moins critique. 10 Selon les modes de réalisation décrits, on prévoit un drapeau ou témoin d'atomicité d'un ou plusieurs bits (par exemple un octet) dont la taille est indépendante de la taille des données à protéger. Ainsi, on n'a pas besoin de dupliquer les opérations, ni la taille de l'espace mémoire, ni de dupliquer la donnée avant 15 sa mise à jour par l'opération dont on souhaite surveiller le caractère atomique. La figure 2 représente, de façon schématique et sous forme de blocs, les étapes de mise à jour d'une donnée en mettant en oeuvre un mode de réalisation d'un procédé de gestion 20 d'atomicité. Selon ce mode de réalisation, la gestion de l'atomicité requiert un mot (par exemple d'un bit ou d'un octet) servant de drapeau, ou témoin, d'atomicité qui doit être stocké en mémoire non volatile. 25 Les étapes qui sont décrites ci-dessous ne concernent que la mise à jour en mémoire EEPROM qui constitue la phase sensible du point de vue de l'atomicité. En effet, toute manipulation de la donnée avant ou après cette écriture de mise à jour utilise la valeur de celle-ci stockée dans des registres ou 30 en mémoire volatile et, en cas de coupure d'alimentation, la donnée en mémoire non volatile reste fiable car cette coupure n'intervient pas lors de l'opération en mémoire non volatile. A chaque mise à jour (bloc 21, UPDATE d) d'une donnée dont la valeur D est stockée en mémoire EEPROM, on commence (bloc 35 22, f REVENDICATIONS1. Procédé de vérification du caractère atomique d'une opération de mise à jour d'une donnée (d) dans une mémoire EEPROM, comportant, lors d'une opération d'écriture de la donnée les étapes suivantes : initialiser au moins un premier drapeau (f ; fi) à une première valeur (0) et stocker cette valeur en mémoire EEPROM ; effacer la donnée en mémoire EEPROM ; écrire une valeur de la donnée en mémoire EEPROM ; et écrire au moins une deuxième valeur (M ; M1) du premier 10 drapeau dans la mémoire EEPROM. 2. Procédé selon la revendication 1, dans lequel, lors d'une opération de lecture de la donnée (d), la valeur de la donnée n'est retournée que si la valeur du premier drapeau (f ; fi) correspond à la deuxième valeur. 15 3. Procédé selon la revendication 2, comportant, lors d'une opération de lecture de la donnée (d), les opérations suivantes : comparer la valeur du premier drapeau (f ; fi) à la deuxième valeur (M, M1) ; et 20 si les valeurs sont égales, retourner la valeur de la donnée ; ou si les valeurs sont différentes, retourner une erreur. 4. Procédé selon l'une quelconque des revendications 1 à 3, dans lequel, si la valeur du premier drapeau (f ; fi) ne 25 correspond pas à la deuxième valeur, la donnée (d) est effacée en mémoire EEPROM. 5. Procédé selon l'une quelconque des revendications 1 à 4, dans lequel si la valeur du premier drapeau (f ; fi) ne correspond pas à la deuxième valeur, la valeur d'au moins le 30 premier drapeau est mise à jour avec la première valeur (0) en mémoire EEPROM. 6. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel la première valeur (0) correspond à un effacement. B15991 - 17-ZV2-0059 15 7. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel si la valeur du premier drapeau (f) correspond à la deuxième valeur (M), la valeur du drapeau est mise à jour avec cette deuxième valeur en mémoire EEPROM. 5 8. Procédé selon l'une quelconque des revendications 1 à 6, comportant un premier drapeau (f1) et un deuxième drapeau (f2) mis à jour et lus successivement. 9. Procédé selon la revendication 8, dans lequel si la valeur du deuxième drapeau (f2) ne correspond pas à la deuxième 10 valeur (M2), les valeurs des premier et deuxième drapeaux sont mises à jour avec leur deuxième valeur respective en mémoire EEPROM. 10. Circuit électronique comportant une mémoire EEPROM (13), et un processeur (11) adapté à la mise en oeuvre du 15 procédé selon l'une quelconque des revendications 1 à 9.