FR 2929440 A1 20091002 FR 0852113 A 20080331 B8727 - 07-RO-414 1 STOCKAGE D'UN COMPTEUR EN MÉMOIRE NON VOLATILE Domaine La présente invention concerne de façon générale les circuits électroniques et, plus particulièrement, le comptage d'événements dont le résultat est stocké dans un élément de mémorisation non-volatile reprogrammable d'un circuit électronique. Exposé de l'art antérieur Les mémoires non-volatiles reprogrammables (par exemple, les mémoires EEPROM) ont une durée de vie limitée en nombre d'écritures. Plus précisément, chaque cellule d'un élément de mémorisation de type EEPROM n'est pas susceptible d'être mise à jour de façon infinie, et ne peut supporter qu'un nombre fini d'écritures. Une mémoire non-volatile est généralement caractérisée en durée de vie par le nombre d'écritures qu'elle peut supporter. Aujourd'hui, la durée de vie d'une mémoire EEPROM est d'environ 500 000 cycles d'écriture. Dans de nombreuses applications, on souhaite pouvoir stocker de façon non-volatile la valeur d'un compteur d'un événement surveillé ou subi par le circuit électronique. Or, cette valeur peut excéder le nombre d'écritures que peut accepter la mémoire non-volatile. Chaque incrémentation du compteur se traduit par une écriture, ce qui pose problème. B8727 - 07-RO-414 2 Pour compter un nombre d'événements supérieur au nombre maximum de cycles d'écriture que peut accepter une mémoire non-volatile, on utilise habituellement plusieurs zones pour ce stockage, de façon à ce que chaque zone ne soit pas mise à jour un trop grand nombre de fois. Outre une gestion d'un index de la zone contenant la valeur courante, cela requiert de réserver, pour le compteur, un espace mémoire nettement supérieur au nombre de bits du compteur. Par exemple, pour stocker un compteur susceptible de compter jusqu'à 44 millions d'événements avec une mémoire non-volatile ayant une durée de vie de 500 000 cycles, 88 zones de stockage de 3 octets chacune sont requises. Résumé Il serait souhaitable de pouvoir réduire la zone nécessaire au stockage d'un compteur d'événements dont le compte excède la durée de vie en terme de nombre d'écritures d'une mémoire non-volatile. Il serait également souhaitable de ne pas nuire à la fiabilité de la valeur stockée. Pour atteindre tout ou partie de ces objets ainsi que d'autres, il est prévu un procédé de mise à jour d'une information représentative de la valeur d'un compteur dans une mémoire non-volatile reprogrammable, dans lequel à chaque apparition d'un événement requérant l'incrément, respectivement le décrément, de la valeur du compteur : un premier nombre est sélectionné aléatoirement dans une première plage de valeurs entre une première valeur et une deuxième valeur ; ce premier nombre est comparé à un deuxième nombre compris dans la première plage de valeurs ; et ladite information est mise à jour, uniquement en cas d'identité entre les premier et deuxième nombres. Selon un mode de réalisation, la plage de valeurs est choisie en fonction d'un nombre maximal de cycles d'écriture que peut accepter la mémoire. B8727 - 07-RO-414 3 Selon un mode de réalisation, ladite information représentative est la valeur du compteur. Selon un mode de réalisation, la mise à jour correspond à incrémenter, respectivement décrémenter, la valeur du 5 compteur. Selon un mode de réalisation, l'incrément, respectivement décrément, est égal à la deuxième valeur ou à cette deuxième valeur majorée de l'unité. Selon un mode de mise en oeuvre, le deuxième nombre 10 est sélectionné aléatoirement. Selon un mode de réalisation, le deuxième nombre est sélectionné aléatoirement à chaque incrément, respectivement décrément. Selon un mode de réalisation, le deuxième nombre est 15 zéro. Selon un mode de réalisation, la plage de valeurs dépend de la valeur courante de l'information représentative de la valeur du compteur. Il est également prévu un circuit électronique adapté 20 à la mise en oeuvre du procédé, comportant au moins une mémoire non-volatile dont au moins une zone est réservée au stockage d'une valeur représentative d'une valeur de comptage. Selon un mode de réalisation, plusieurs zones mémoires sont affectées à la valeur de comptage, le stockage dans l'une 25 de ces zones étant sélectionné aléatoirement à chaque écriture. Il est également prévu un module d'accès sécurisé incluant un compteur d'événements dans un élément de mémorisation non-volatile reprogrammable, dans lequel le compteur est mis à jour conformément au procédé. 30 Brève description des dessins Ces objets, caractéristiques et avantages, ainsi que d'autres seront exposés en détail dans la description suivante de modes de mise en oeuvre et de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi 35 lesquelles : B8727 - 07-RO-414 4 la figure 1 représente schématiquement une carte à puce du type auquel s'applique à titre d'exemple la présente invention ; la figure 2 représente schématiquement un récepteur de 5 signaux radiodiffusés du type auquel s'applique à titre d'exemple la présente invention ; la figure 3 est un schéma bloc d'un circuit électronique du type auquel s'applique à titre d'exemple la présente invention ; 10 la figure 4 représente un détail du circuit de la figure 3 ; la figure 5 est un organigramme simplifié d'un mode de mise en oeuvre d'un procédé de mise à jour de la valeur d'un compteur dans une zone de mémorisation non-volatile ; 15 la figure 6 illustre une variante de l'organigramme de la figure 5 ; la figure 7 illustre une autre variante de l'organigramme de la figure 5 ; la figure 8 représente une zone de stockage en mémoire 20 non-volatile selon un autre mode de réalisation ; la figure 9 est un organigramme simplifié d'un mode de mise en oeuvre du procédé de mise à jour appliqué au mode de réalisation de la figure 8 ; et la figure 10 est un schéma bloc illustrant une 25 variante de mise en oeuvre. 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é, seuls les étapes et éléments qui sont utiles à la compréhension de 30 l'invention ont été représentés et seront décrits. En parti- culier, la détection de l'événement compté n'a pas été détaillée, l'invention étant compatible avec tout comptage usuel d'événe- ments. La destination du compteur d'événements n'a pas non plus été détaillée, l'invention étant là encore compatible avec toute 35 destination usuelle. En outre, bien que l'on fasse référence à B8727 - 07-RO-414 une incrémentation d'un compteur, tout ce qui est décrit par la suite se transpose à un décomptage. L'invention sera décrite en relation avec l'enregistrement en mémoire non volatile de la valeur du compteur elle- 5 même. Elle s'applique toutefois plus généralement à l'enregistrement d'une information représentative du compte, par exemple, le résultat d'un chiffrement de la valeur du compteur ou l'application d'une fonction quelconque à cette valeur, pourvu que des problèmes similaires se posent, c'est-à-dire que le nombre de mise à jour du résultat de cette fonction excède la durée de vie de la mémoire en terme de nombre d'écritures. La figure 1 représente schématiquement une carte à puce 1. Une telle carte comporte un ou plusieurs circuits électroniques 3 portés par un support 11 généralement en matière plastique. Le ou les circuits 3 sont susceptibles de communiquer avec un terminal ou lecteur par l'intermédiaire de contacts 12 ou à l'aide d'éléments de communication sans contact (non représentés). Le circuit électronique 3 contient au moins un élément de mémorisation non-volatile susceptible de stocker la valeur d'un compteur. La figure 2 représente schématiquement une installation 2 de réception de signaux radiodiffusés captés, par exemple, par une antenne 21 de réception de signaux émis par un satellite (non représenté). L'équipement comporte un décodeur 22 dont au moins un circuit électronique 3, par exemple porté par une carte électronique 23, comporte au moins un élément de mémorisation non-volatile de stockage de la valeur d'un compteur. Le décodeur 22 est associé à un écran 24 (par exemple un téléviseur) d'affichage des émissions captées. La figure 3 est un schéma bloc d'un mode de réalisation d'un circuit électronique 3. Un tel circuit 3 comporte une unité de traitement 31 (par exemple une unité centrale de traitement) susceptible de communiquer par l'intermédiaire d'un ou plusieurs bus 32 d'adresses, de données et de commandes avec d'autres éléments parmi lesquels au moins une mémoire non- B8727 - 07-RO-414 6 volatile reprogrammable 4 (NVM), par exemple une EEPROM ou une mémoire flash. Le circuit 3 comporte également dans cet exemple une mémoire volatile 5 (VM), par exemple, de type RAM ou des registres, ainsi qu'un ou plusieurs circuits 34 (FCT) exécutant d'autres fonctions (par exemple, des calculs cryptographiques). Les différents circuits sont susceptibles de communiquer avec l'extérieur par l'intermédiaire d'une interface 35 (I/O) reliée au bus 32. Plus généralement, le circuit 3 comporte au moins une mémoire non-volatile reprogrammable susceptible d'être mise à jour sous commande interne ou externe. Une unité de traitement intégrée au même circuit n'est donc pas indispensable. Le traitement peut être effectué à l'extérieur du circuit et la demande de mise à jour transmise de l'extérieur. La figure 4 représente un détail du circuit 3 de la figure 3. La mémoire non-volatile 4 comporte au moins une zone 41 de stockage de la valeur COUNT d'un compteur d'événements EVENT. Dans cet exemple, la détection d'un événement est rapportée à l'unité de traitement 31 qui provoque l'écriture de la nouvelle valeur dans la zone 41. Le compteur 41 est destiné à stocker une valeur dont le maximum excède le nombre maximum d'écritures que peut supporter la mémoire non-volatile 4. Dans cet exemple où la valeur COUNT est directement stockée, le compteur est un compteur monotone (croissant ou décroissant). Dans le cas où le stockage concerne une fonction de la valeur (par exemple après chiffrement), le comptage n'est pas nécessairement monotone. Un exemple d'application concerne le comptage d'événe- ments dans un processus de détection d'une tentative de piratage d'un circuit électronique. Ce comptage d'événements sert à vérifier que le circuit n'est pas utilisé au-delà d'un seuil déterminé. En particulier, dans la plupart des processus d'attaques, un grand nombre d'accès au circuit est provoqué dans des phases d'analyse statistique pour pirater les quantités secrètes qu'il B8727 - 07-RO-414 7 contient. L'utilisation du compteur d'événements peut alors permettre de détecter une tentative de fraude. Un autre exemple d'application concerne le comptage d'un nombre de cartes à puce initialisées par un module sécurisé lors de la personnalisation des cartes à puce. Il s'agit, par exemple, de la personnalisation de la carte à puce à l'aide d'un module sécurisé (TPM ou Trusted Platform Module). Un autre exemple d'application concerne le comptage des écritures dans la mémoire non volatile elle-même. Cela peut servir d'indicateur de vieillissement, par exemple, d'une carte à des fins de remplacement avant déficience fonctionnelle. Dans toutes ces applications, il est important que le résultat du compteur soit fiable indépendamment de l'alimentation du circuit électronique. C'est pourquoi sa valeur est généralement stockée en mémoire non-volatile. Se pose alors le problème de la durée de vie de la mémoire en nombre d'écritures. La figure 5 est un organigramme simplifié illustrant un mode de mise en oeuvre d'un procédé d'écriture de la valeur COUNT du compteur dans la zone mémoire 41 de la figure 4. A la détection de l'apparition de l'événement surveillé (bloc 51, EVENT), l'unité de traitement 31 provoque le tirage d'un nombre aléatoire r (bloc 53, r = RNG[0, k-1]) compris entre 0 et une valeur k-1. Puis, l'unité 31 compare le nombre r à zéro (bloc 55, r = 0 ?). Si le nombre r est différent de zéro (sortie N du bloc 55), aucune mise à jour de la valeur du compteur n'est effectuée (IDLE) et l'unité 31 attend la détection de l'événement suivant. Par contre, à chaque fois que le nombre aléatoire r est nul (sortie Y du bloc 55), l'unité 31 provoque l'incrément, dans la zone 41, de la valeur du compteur du nombre k (bloc 57, COUNT = COUNT + k). En pratique, cet incrément passe par une lecture (et stockage dans une mémoire temporaire par exemple de type registre) de la valeur courante de la zone 41, l'ajout du nombre k à cette valeur et l'écriture de la nouvelle valeur (des bits modifiés) dans la zone 41. B8727 - 07-RO-414 8 Ainsi, la valeur contenue dans l'élément de mémorisation 41 n'est écrite statistiquement que tous les k événements et représente la valeur du compteur à k près. On tire profit du fait que, dans la plupart des cas où l'on souhaite compter des grands nombres, il importe plus de détecter un ordre de grandeur que le nombre à une unité près. Le nombre k est choisi en fonction du nombre de cycles maximum d'écriture qu'est susceptible de supporter la mémoire et de la valeur maximale attendue du compteur. En reprenant l'exemple précédent de 44 millions d'événements possibles avec une mémoire d'une durée de vie de 500 000 cycles, le nombre k devra être supérieur à 88, par exemple de l'ordre de 100. La figure 6 illustre une variante du procédé de la figure 5. L'étape 57 d'écriture dans la zone 41 est remplacée par une étape d'incrémentation d'une unité (bloc 57', COUNT = COUNT + 1). Par la suite, lorsque le résultat NB du compteur est exploité, l'unité de traitement 31 multiplie (bloc 61, NB = COUNT*k) la valeur lue dans la zone 41 par le nombre k qui représente une constante. La figure 7 illustre une autre variante du procédé de la figure 5. L'étape de comparaison n'est pas effectuée par rapport à la valeur zéro, mais par rapport à un nombre "a" compris entre 0 et k-1 (bloc 55', r=a ?). Le cas échéant, ce nombre "a" peut également être tiré de façon aléatoire avant chaque comparaison. Sur des grands nombres, on respecte statistiquement une écriture en mémoire non volatile tous les k événements. Le cas échéant, le nombre k est paramétrable en fonction du compteur concerné. Une étape d'initialisation du compteur comporte alors l'écriture, dans une zone de la mémoire non volatile, du paramètre k pour le compteur associé. La figure 8 illustre une zone 41 en mémoire non-volatile NVM selon un autre mode de réalisation. B8727 - 07-RO-414 9 Trois zones Al, A2 et A3, respectivement de n1, n2 et n3 bits sont définies dans l'élément 41. Par exemple, chaque zone représente un octet. Ce découpage a pour but d'affiner le résultat du comptage selon la plage de valeurs dans laquelle il se trouve. La précision du résultat dépend alors de la valeur stockée. On tire ici profit du fait que, dans certaines applications, la marge d'erreur acceptable dépend da la valeur elle-même. Par exemple, on peut souhaiter une précision à l'unité près pour des petits nombres, puis à partir d'un seuil se contenter d'une précision moindre, et ainsi de suite. Cela revient à fixer des valeurs de k différentes selon la plage de valeurs dans laquelle se trouve le compteur au moment de son incrémentation. En d'autres termes, la probabilité d'écriture du compteur dépend de sa valeur. La figure 9 est un organigramme simplifié d'un mode de mise en oeuvre du procédé de stockage dans un élément de mémorisation du type représenté en figure 8. A la détection d'un événement (bloc 51, EVENT), 20 l'unité de traitement compare la valeur contenue dans la zone 41 par rapport à la valeur 2n1 (bloc 91, COUNT 10 plage allant de 0 à k3-1 (bloc 93', r' = RNG[0, k3-1]). Puis, un test (bloc 95', r=k2 ?) est effectué sur une valeur comprise entre k2 et k3-1, par exemple k2. Enfin, une étape (bloc 97', COUNT = COUNT+k3) d'incrément de la valeur en mémoire non vola- tile est mise en oeuvre avec la valeur k3. On voit que la granularité du comptage est d'autant plus élevée que le compte est important (k1=1 B8727 - 07-RO-414 11 Des modes de réalisation particuliers de la présente invention ont été décrits. Diverses variantes et modifications apparaîtront à l'homme de l'art. En particulier, le choix du ou des incréments k dépend de l'application. De plus, les dif- férentes variantes décrites sont bien entendu combinables. REVENDICATIONS1. Procédé de mise à jour d'une information (COUNT) représentative de la valeur d'un compteur (41) dans une mémoire non-volatile reprograituttable, caractérisé en ce qu'à chaque apparition d'un événement (EVENT) requérant l'incrément, respec- tivement le décrément, de la valeur du compteur : un premier nombre (r ; r , r') est sélectionné aléatoirement dans une première plage de valeurs entre une (r ; r ; r, r') compris dans ladite information d'identité entre les premier et deuxième nombres. 2. Procédé selon la revendication 1, dans lequel la 15 plage de valeurs (0, k-1 ; 0, k2-1 ; 0, k3-1) est choisie en maximal de cycles d'écriture que peut dans lequel (COUNT) du la revendication 3, dans lequel la incrémenter, respectivement décrémenter, la valeur (COUNT) du compteur (41). 5. Procédé selon la revendication 4, dans lequel 25 l'incrément (k ; k ; k2, k3), respectivement décrément, est égal à la deuxième valeur ou à cette deuxième valeur majorée de l'unité. 6. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel le deuxième nombre (r ; r, r') est sélectionné 30 aléatoirement. 7. Procédé selon la revendication 6, dans lequel le deuxième nombre (r ; r, r') est sélectionné aléatoirement à chaque incrément, respectivement décrément. première valeur (0 ; 0 ; 0 , k2) et une deuxième valeur k-1 ; k2-1, k3-1) ; ce premier nombre est comparé à un deuxième la première plage de valeurs est mise à jour, uniquement (k-1 ; nombre ; et en cas 20 mise fonction d'un nombre accepter la mémoire. 3. Procédé selon la revendication 1 ou 2, ladite information représentative est la valeur compteur (41). 4. Procédé selon à jour correspond àB8727 - 07-RO-414 13 8. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel le deuxième nombre (r ; r, r') est zéro. 9. Procédé selon l'une quelconque des revendications 1 à 8, dans lequel la plage de valeurs (0, k2-1 ; 0, k3-1) dépend de la valeur courante de l'information représentative de la valeur du compteur. 10. Circuit électronique (3) comportant au moins une mémoire non-volatile (4) dont au moins une zone est réservée au stockage d'une valeur représentative d'une valeur de comptage, caractérisé en ce qu'il comporte des moyens pour la mise en oeuvre du procédé selon l'une quelconque des revendications 1 à 9. 11. Circuit selon la revendication 10, dans lequel plusieurs zones mémoires sont affectées à la valeur de comptage, le stockage dans l'une de ces zones étant sélectionné aléatoirement à chaque écriture. 12. Module d'accès sécurisé incluant un compteur d'événements dans un élément de mémorisation non-volatile reprogrammable, caractérisé en ce que ce compteur est mis à jour conformément au procédé selon l'une quelconque des revendications 1 à 9.