FR3103925A1 - Procédé de modification d'une valeur de compteur d'un compteur d'une puce électronique - Google Patents
Procédé de modification d'une valeur de compteur d'un compteur d'une puce électronique Download PDFInfo
- Publication number
- FR3103925A1 FR3103925A1 FR1913671A FR1913671A FR3103925A1 FR 3103925 A1 FR3103925 A1 FR 3103925A1 FR 1913671 A FR1913671 A FR 1913671A FR 1913671 A FR1913671 A FR 1913671A FR 3103925 A1 FR3103925 A1 FR 3103925A1
- Authority
- FR
- France
- Prior art keywords
- counter
- modified
- counter value
- value
- electronic chip
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000004891 communication Methods 0.000 claims description 12
- 230000004048 modification Effects 0.000 claims description 11
- 238000012986 modification Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 3
- 230000003993 interaction Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/77—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Analogue/Digital Conversion (AREA)
- Manipulation Of Pulses (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Procédé de modification d'une valeur de compteur d'un compteur d'une puce électronique, la puce électronique comprenant deux compteurs (CNTA, CNTB) stockant chacun une valeur de compteur (ValA, ValB) respective, le procédé comprenant les étapes suivantes : - lecture (S21, S22) des valeurs de compteur respectives de chacun des deux compteurs (CNTA, CNTB) ; - comparaison (S23) entre elles des valeurs de compteurs des deux compteurs (CNTA, CNTB) et détermination, sur la base de la comparaison, d'un compteur à modifier parmi les deux compteurs ; - écriture (S24, S25) dans le compteur à modifier d'une valeur de compteur modifiée dérivée de la valeur de compteur de l'autre compteur. Figure pour l'abrégé : figure 4
Description
La présente description se rapporte au domaine des puces électroniques, et en particulier aux puces électroniques sans contact, munies d'une protection anti-arrachement.
Arrière-plan technologique
Une puce électronique est un circuit intégré capable de contenir de l'information et de procéder à des opérations sur cette information. On trouve par exemple de telles puces électroniques dans des cartes à puces, ou des étiquettes électroniques apposées sur des objets. Une fonctionnalité importante d'une puce électronique peut être de modifier (par exemple incrémenter ou décrémenter) une valeur de compteur à chaque interaction entre la puce électronique et un lecteur de puce. C'est notamment le cas pour un titre de transport prenant la forme d'une carte à puce mémorisant un nombre de trajet autorisé ou effectué. Il peut également s'agir d'une puce RFID apposée sur un produit, et dont le comptage permet d'informer sur le nombre d'interactions ou de générer des identifiants uniques à chaque interaction.
Une puce électronique est généralement dépourvue de source d'énergie propre embarquée, par exemple dans la carte à puce. Ainsi, une puce électronique sans contact ne fonctionne que lorsque qu'elle est alimentée, via son antenne, par le champ radiofréquence d'un lecteur de puce, par exemple dans le cadre d'une communication selon la technologie de communication en champ proche, ou NFC pour l'anglais "Near Field Communication". Dans le cas d'une puce électronique avec contact, l'alimentation est fournie par le lecteur lorsqu'une communication est établie avec la puce électronique.
Or, la proximité entre la puce et le lecteur est le fait de l'utilisateur, et celui-ci peut à tout moment éloigner la puce du lecteur, interrompant ainsi l'alimentation électrique du circuit intégré. Si l'alimentation électrique s'interrompt lorsque le circuit intégré est en train d'effectuer une opération telle qu'une écriture dans une mémoire non volatile (typiquement une EEPROM pour l'anglais "Electrically Erasable Programmable Read-Only Memory" - mémoire morte effaçable électriquement et programmable), l'opération peut alors être un échec, et notamment la zone mémoire concernée n'aura pu être écrite que partiellement ou avoir été altérée.
Pour éviter ce problème, certaines puces modernes dont le circuit intégré met en œuvre une écriture d'information dans une mémoire ont été munies d'une protection dite anti-arrachement, qui vise à garantir l'intégrité d'une information mémorisée même en cas d'arrachement, c’est-à-dire d’interruption de l’alimentation du circuit intégré. L'approche la plus courante consiste à utiliser une technique d'écriture miroir, c'est-à-dire à dupliquer les données mémorisées en deux zones mémoires, et d'écrire alternativement sur l'une puis sur l'autre. Ainsi, en cas d'arrachement lors d'une opération d'écriture sur une zone mémoire qui conduirait à corrompre la donnée stockée dans cette zone mémoire, l'autre zone mémoire permet de conserver la donnée dans son état précédant l'arrachement.
La figure 1 montre un exemple de système comprenant une puce électronique 1 et un lecteur 2, ici sans contact. La puce électronique 1 comprend une interface de communication radiofréquence 3 avec le lecteur 2, un module de commande numérique 4 (machine d’état, par exemple), et une mémoire 5, par exemple une EEPROM ou un autre type de mémoire (mémoire flash par exemple). La mémoire 5 comprend deux zones mémoires 6, 7 formant des compteurs CNTA et CNTB stockant respectivement les valeurs de compteur ValA et ValB.
Un couplage radiofréquence s'établit lorsque la puce électronique 1 est mise à proximité du lecteur 2, via leurs antennes respectives 8, 9. Le lecteur 2 envoie alors une requête à la puce électronique 1 , qui fournit une réponse après avoir mené les opérations requises. Ces opérations peuvent impliquer une modification de la valeur de compteur d'un compteur, comme par exemple une incrémentation de cette valeur.
En référence aux figures 2, 3a, et 3b, un procédé précédemment utilisé pour l'incrémentation d'une valeur de compteur stockée dans la puce électronique 1 comprend les étapes suivantes, mises en œuvre par le circuit intégré de la puce électronique, incluant le module de commande numérique 4 et la mémoire 5. Tout d'abord, un drapeau est lu (étape S11). Ce drapeau est stocké dans une zone mémoire de la mémoire 5, et contient une information concernant la zone mémoire qui doit être impliquée dans l'incrémentation. Le drapeau pointe donc vers le premier compteur CNTA ou vers le second compteur CNTB. En fonction du résultat de la lecture du drapeau, le premier compteur CNTA ou le second compteur CNTB est lu. Dans cet exemple, le drapeau pointe vers le premier compteur CNTA, qui est alors lu (étape S12). Ensuite, l'autre compteur, en l'occurrence le second compteur CNTB, est effacé (étape S13) et reprogrammé (étape S14) avec la valeur ValA lue dans le premier compteur CNTA, incrémenté d'une unité, de sorte que ValB = ValA+1. La bonne réussite de l'opération d'écriture dans le second compteur CNTB est ensuite vérifiée (étape S15). C'est ensuite au tour du drapeau d'être effacé (étape S16) et reprogrammé (étape S17) pour pointer vers le second compteur CNTB, qui stocke la valeur de compteur modifiée ValA+1.
Cette procédure d'incrémentation nécessite donc deux effacements et deux programmations, pour le second compteur CNTB et le drapeau, qui sont des étapes particulièrement longues en durée (de l'ordre de 1ms et 3ms, respectivement). Ainsi, la procédure peut durer au total plus de 8ms. Or, certaines applications exigent des temps de réponse très courts à la suite de la requête du lecteur 2, de sorte qu'il peut ne pas être possible d'incrémenter un compteur avec une telle procédure d'incrémentation avant l'expiration du délai d'envoi de la réponse. En outre, plus la procédure est longue, plus le risque d'arrachement est important. Enfin, les étapes d'écritures constitués par l'effacement et la programmation sont particulièrement sensibles à l'arrachement puisque toute interruption de l'alimentation au cours de ces étapes peut corrompre les données stockées dans la zone mémoire impliquée. Pour contourner ces problèmes, il a été recherché de réduire les durées des étapes d'écriture, c'est-à-dire d'effacement et de programmation d'une zone mémoire. Toutefois, cette optimisation est difficile et coûteuse, et ne permet pas des gains de temps suffisamment importants.
Présentation de l'invention
Il existe un besoin de permettre de mener une opération de modification de compteur dans une puce électronique de façon robuste à l'arrachement. Il existe un besoin de permettre de mener une opération de modification de compteur de façon simple. Il existe un besoin de permettre de mener une opération de modification de compteur avec un temps d'exécution faible.
A cet effet, il est ici proposé un procédé de modification d'une valeur de compteur d'un compteur d'une puce électronique, la puce électronique comprenant deux compteurs stockant chacun une valeur de compteur respective, le procédé comprenant les étapes suivantes :
- lecture des valeurs de compteur respectives de chacun des deux compteurs ;
- comparaison entre elles des valeurs de compteurs des deux compteurs et détermination, sur la base de la comparaison, d'un compteur à modifier parmi les deux compteurs ;
- écriture dans le compteur à modifier d'une valeur de compteur modifiée dérivée de la valeur de compteur de l'autre compteur.
- lecture des valeurs de compteur respectives de chacun des deux compteurs ;
- comparaison entre elles des valeurs de compteurs des deux compteurs et détermination, sur la base de la comparaison, d'un compteur à modifier parmi les deux compteurs ;
- écriture dans le compteur à modifier d'une valeur de compteur modifiée dérivée de la valeur de compteur de l'autre compteur.
Le procédé est avantageusement complété par les différentes caractéristiques suivantes prises seules ou selon leurs différentes combinaisons possibles:
- le procédé comprend une étape finale de vérification de l'écriture de la valeur de compteur modifiée dans le compteur à modifier ;
- chaque valeur de compteur définit une position dans une série ordonnée de valeurs ;
- la valeur de compteur modifiée est dérivée de la valeur de compteur de l'autre compteur par incrémentation d'un incrément de cette valeur de compteur de l'autre compteur, l'incrément définissant un sens d'incrémentation ;
- le compteur à modifier est le compteur dont la valeur de compteur présente une position inférieure dans la série ordonnée de valeurs dans le sens d'incrémentation par rapport à la valeur de compteur de l'autre compteur ;
- l'écriture de la valeur de compteur modifiée comprend un effacement du compteur à modifier suivi de la programmation de la valeur de compteur modifiée dans le compteur à modifier, l'effacement résultant en une valeur nulle stockée dans le compteur à modifier, ladite valeur nulle définissant une position minimale dans la série ordonnée de valeurs dans le sens d'incrémentation ;
- la valeur de compteur d'un compteur est modifiée en réponse à une requête envoyée par un lecteur en communication avec la puce électronique ;
- la modification de la valeur d'un compteur est suivie par l'envoi de la part de la puce électronique d'une réponse au lecteur en communication avec la puce électronique ;
- aucun drapeau pointant vers un compteur n'est lu pour déterminer quel est le compteur à modifier.
- le procédé comprend une étape finale de vérification de l'écriture de la valeur de compteur modifiée dans le compteur à modifier ;
- chaque valeur de compteur définit une position dans une série ordonnée de valeurs ;
- la valeur de compteur modifiée est dérivée de la valeur de compteur de l'autre compteur par incrémentation d'un incrément de cette valeur de compteur de l'autre compteur, l'incrément définissant un sens d'incrémentation ;
- le compteur à modifier est le compteur dont la valeur de compteur présente une position inférieure dans la série ordonnée de valeurs dans le sens d'incrémentation par rapport à la valeur de compteur de l'autre compteur ;
- l'écriture de la valeur de compteur modifiée comprend un effacement du compteur à modifier suivi de la programmation de la valeur de compteur modifiée dans le compteur à modifier, l'effacement résultant en une valeur nulle stockée dans le compteur à modifier, ladite valeur nulle définissant une position minimale dans la série ordonnée de valeurs dans le sens d'incrémentation ;
- la valeur de compteur d'un compteur est modifiée en réponse à une requête envoyée par un lecteur en communication avec la puce électronique ;
- la modification de la valeur d'un compteur est suivie par l'envoi de la part de la puce électronique d'une réponse au lecteur en communication avec la puce électronique ;
- aucun drapeau pointant vers un compteur n'est lu pour déterminer quel est le compteur à modifier.
Selon un autre aspect, il est proposé une puce électronique comprenant deux compteurs stockant chacun une valeur de compteur respective, la puce électronique étant configurée pour mettre en œuvre le procédé de modification d'une valeur de compteur d'un compteur selon l'un des modes de réalisation du procédé de modification d'une valeur de compteur.
Présentation des figures
D'autres caractéristiques, buts et avantages du procédé ressortiront de la description qui suit, qui est purement illustrative et non limitative, et qui doit être lue en regard des dessins annexés sur lesquels :
Description détaillée
Le procédé prend place dans une puce électronique 1 telle que celle illustrée sur la figure 1, qui sera ici utilisé en tant qu'exemple illustratif non limitatif d'un mode de réalisation. La puce électronique 1 peut notamment être sans contact ou avec contact. Comme précédemment expliqué, en réponse à une requête du lecteur 2 faisant suite à l'établissement d'une communication entre la puce électronique 1 et le lecteur 2, la puce électronique 1 procède à une opération de modification d'une valeur de compteur, comme par exemple une incrémentation de la valeur de compteur. Dans un mode de réalisation, c'est par exemple le module de commande numérique 4 (machine d’état, par exemple) qui procède aux étapes du procédé de modification de la valeur de compteur. Cette valeur de compteur est stockée dans la mémoire 5 de la puce électronique 1, qui peut être typiquement une mémoire EEPROM ou une mémoire flash dans certains modes de réalisation, ou tout autre type approprié de mémoire non volatile. Plus précisément, la valeur de compteur est stockée dans une zone de stockage mémoire définissant un compteur.
Comme expliqué précédemment, afin d'être robuste à l'arrachement, la puce électronique 1 comprend au moins deux zones mémoires 7, 8 définissant chacune un compteur : un premier compteur CNTA et un second compteur CNTB. Chaque compteur stocke une valeur de compteur respective : le premier compteur CNTA stocke une première valeur de compteur ValA, et le second compteur CNTB stocke une seconde valeur de compteur ValB, comme illustré en tant qu'état initial sur la partie gauche de la figure 5. Les deux premières étapes du procédé S21, S22 consistent à lire chacun des compteurs CNTA, CNTB. Plus précisément, il s'agit de lire les valeurs de compteur respectives de chacun des deux compteurs CNTA, CNTB.
Ces valeurs de compteur ValA, ValB résultent typiquement des itérations précédentes du procédé. Plus précisément, une des valeurs de compteur ValA, ValB correspond à la modification de l'autre valeur de compteur ValA, ValB. Par exemple, dans le cas d'une incrémentation, suite à l'incrémentation précédente d'une valeur de compteur, les valeurs de compteur ValA, ValB diffèrent d'un incrément. D'autres situations peuvent cependant survenir, comme il sera expliqué par la suite.
L'étape suivante S23 consiste à comparer entre elles des valeurs de compteurs des deux compteurs CNTA, CNTB, afin de déterminer sur la base de la comparaison, un compteur à modifier parmi les deux compteurs CNTA, CNTB. Les modalités de cette détermination du compteur à modifier dépendent du type de modification de la valeur de compteur qui a été préalablement défini pour chaque interaction entre le lecteur et la puce électronique.
Dans le cas le plus simple, une valeur de compteur est un nombre codé en binaire, et la modification consiste à incrémenter d'un incrément la valeur de compteur. Il faut donc choisir parmi les deux valeurs de compteur, quelle est celle qui correspond à la dernière opération d'incrémentation. Si l'incrément est positif, il s'agit de la valeur de compteur la plus élevée, c'est-à-dire correspondant au nombre codé le plus élevé. Si l'incrément est négatif, il s'agit de la valeur de compteur la plus faible, c'est-à-dire correspondant au nombre codé le plus faible.
La valeur de compteur peut toutefois ne pas être seulement un nombre, mais peut plus généralement être un code renvoyant à une position dans une série ordonnée. Par exemple, dans un mode de réalisation, la valeur de compteur peut être un codage de caractère, comme dans la norme ASCII ou Unicode. Dans ce cas, la comparaison se base sur les positions respectives dans une série des caractères correspondant aux codes des valeurs de compteurs ValA, ValB des deux compteurs CNTA, CNTB. Si besoin, la mémoire de la puce électronique 1 peut stocker une table de correspondance permettant de retrouver les positions respectives des valeurs de compteur dans la série ordonnée. Il n'est pas nécessaire que la série ordonnée soit complète par rapport à la norme dont elle est tirée : il est possible d'utiliser une série ordonnée ne reprenant que certains des caractères ou codes. De même, il est possible que l'incrément corresponde à un incrément positif (un avancement dans la série ordonnée), ou à un incrément négatif (un recul dans la série ordonnée), et l'incrément peut être unitaire ou un multiple de l'unité (plusieurs déplacements de position dans la série ordonnée). De préférence, la suite de caractère est choisie pour être associée à des codes formant une suite monotone, par exemple croissante ou décroissante.
Il est à noter qu'une valeur de compteur prenant la forme d'un nombre codé en binaire n'est qu'un cas particulier de codage dans une série ordonnée. Le nombre 8 n'est supérieur au nombre 7 qu'en raison de leurs positions respectives dans la suite des nombres entiers, codé en binaire par 1000 et 111, respectivement. Afin de simplifier, et de façon non limitative, l'exemple de mode de réalisation illustré par les dessins fait référence à une valeur de compteur correspondant à un nombre (avec donc une série ordonnée correspondant à la suite des entiers), et l'incrément est positif et unitaire (incrément de +1). Dans ce cas, la détermination sur la base de la comparaison du compteur à modifier parmi les deux compteurs CNTA, CNTB revient à sélectionner le compteur CNTA, CNTB dont la valeur de compteur est la plus faible, puisque l'autre valeur de compteur correspond à la dernière incrémentation, et est conservée en tant que sauvegarde. Dans l'exemple de mode de réalisation illustré par la figure 4, c'est le compteur CNTA qui est sélectionné comme compteur à modifier car la première valeur de compteur ValA est inférieure à la seconde valeur de compteur ValB.
Une fois sélectionné le compteur à modifier, l'étape suivante consiste à écrire dans ce compteur à modifier une valeur de compteur modifiée dérivée de la valeur de compteur de l'autre compteur. Plus précisément, l'écriture consiste à effacer le compteur à modifier (étape S24) et à programmer le compteur à modifier (étape S25) avec la valeur de compteur modifiée. L'effacement résulte en une valeur nulle stockée dans le compteur à modifier. De préférence, cette valeur nulle définit une position minimale dans la série ordonnée de valeurs dans le sens d'incrémentation. Par exemple, avec les entiers naturels en tant que série ordonnée de valeurs et un incrément d'une unité (+1), la valeur nulle est le zéro, c'est-à-dire le code binaire correspondant au zéro, qui est la valeur minimale des entiers naturels. Par exemple, dans le cas d'une EEPROM ou d'une mémoire flash, l'effacement peut consister en une injection d’électrons dans la grille flottante et donc un décalage de la tension de seuil de la cellule mémoire à une tension d'effacement (par exemple aux alentours de 2.5V). La programmation consiste en une déplétion des électrons (créations de « trous ») dans la grille flottante et donc un décalage opposé de la tension de seuil de la cellule mémoire à une tension d'écriture (par exemple aux alentours de -0.5V), pour les bits dont l'état est à changer. Une convention est choisie par le designer de mémoire pour déterminer la valeur de lecture d’une cellule effacée. Ainsi, la tension d'effacement peut être lue comme un 0 ou comme un 1 en fonction de la convention choisie par le designer. La valeur nulle peut alors être constituée par une suite de 0 ou de 1. La série ordonnée est alors choisie pour que cette suite corresponde au zéro de la suite ordonnée.
La valeur de compteur modifiée est dérivée de la valeur de compteur de l'autre compteur en ce sens que la valeur de compteur modifiée est déterminée à partir de la valeur de compteur de l'autre compteur. Dans la plupart des modes de réalisation, il s'agit typiquement d'une incrémentation d'un incrément de la valeur de compteur de l'autre compteur. L'incrément correspond à un déplacement de position dans la série ordonnée. L'incrément peut être positif ou négatif, définissant un sens d'incrémentation correspondant. Par exemple, un incrément de +1 définit un sens d'incrémentation positif pour la série ordonnée constituée par les entiers naturels, tandis qu'un incrément de -2 définit un sens s'incrémentation négatif pour la série ordonnée constituée par les entiers naturels. L'incrément peut également être fixe ou variable. D'autre façon que l'incrémentation pour dériver la valeur de compteur modifiée peuvent être envisagées.
Dans le mode de réalisation de l'exemple des figures 4 et 5, le compteur à modifier est le premier compteur CNTA, et la valeur de compteur de l'autre compteur est donc la seconde valeur ValB. La seconde valeur VaB est incrémentée d'une unité pour donner ValB+1. C'est donc ValB+1 qui est écrite comme valeur de compteur modifiée dans le premier compteur CNTA, de sorte que la première valeur ValA devient ValB+1.
Dans des modes de réalisation, une étape subséquente préférentielle S26 consiste à vérifier l'écriture dans le compteur à modifier, ici le premier compteur CNTA, de la valeur de compteur modifiée, en l'occurrence ValB+1. La partie droite de la figure 5 montre un exemple de l'état final, dans lequel le premier compteur CNTA a désormais pour valeur de compteur ValA la seconde valeur de compteur ValB incrémentée d'une unité, tandis que le second compteur CNTB stocke toujours la seconde valeur de compteur ValB. La vérification de l'écriture du compteur à modifier comprend par exemple la lecture de la valeur de compteur modifiée stockée dans le compteur à modifier, et sa comparaison avec la valeur de de compteur modifiée transitoirement stockée dans une zone de mémoire tampon.
Dans des modes de réalisation, la modification de la valeur d'un compteur peut être suivie par l'envoi de la part de la puce électronique 1 d'une réponse au lecteur 2 en communication avec la puce électronique 1.
En cas d'arrachement au cours du procédé, les conséquences diffèrent selon les étapes au cours desquelles l'arrachement se produit. Au cours des étapes de lecture S21, S22 et de comparaison S23, l'arrachement n'a pas de conséquences, les valeurs de compteurs ValA, ValB ne sont pas altérées. En cas d'arrachement lors de l'étape d'effacement S24, le compteur à modifier contient soit la valeur de compteur précédemment stockée, soit une valeur nulle, par exemple uniquement constituée de zéros ou de uns. Si la valeur de compteur est conservée, il n'y a pas de conséquence, cela revient à ne pas avoir modifier les valeurs de compteur. Si la valeur de compteur est une valeur nulle, il n'y a pas de conséquences sur l'étape de comparaison lorsque la valeur nulle définit une position minimale dans la série ordonnée de valeurs dans le sens d'incrémentation. Dans l'exemple d'un incrément positif, et donc d'une sélection du compteur à modifier sur la base de la valeur de compteur la plus faible, la valeur nulle stockée par le compteur à modifier est la plus faible. Le compteur à modifier sera encore le compteur à modifier dans l'itération suivante.
En cas d'arrachement lors de l'étape de programmation S25 du compteur à modifier, l'arrachement peut se produire avant que la programmation n'ait modifié la valeur de compteur du compteur à modifier, auquel cas la valeur nulle résultant de l'effacement est conservée, et le cas précédemment expliqué se retrouve. Si l'arrachement se produit alors que la programmation est en cours, il peut en résulter une sous-programmation, dans laquelle les bits programmés ne sont pas associés à des grandeurs électriques suffisantes. Ces bits vont alors tendre à progressivement revenir à l'état résultant de l'effacement, ce qui ramène à la situation d'arrachement après l'effacement. Si l'arrachement intervient après que la programmation soit suffisamment avancée pour que la valeur de compteur modifiée soit correctement écrite, alors le compteur à modifier stocke cette valeur de compteur modifiée, et la valeur de compteur a été modifiée avec succès.
Le procédé proposé selon ses différents modes de réalisation permet donc une bonne garantie contre l'arrachement, tout en offrant une durée de réalisation de l'opération de modification de la valeur de compteur sensiblement écourtée par rapport aux approches précédemment utilisées. Notamment, une seule opération d'écriture (effacement et programmation) est requise, au lieu de deux opérations d'écriture ou plus. Or, les autres opérations sont très courtes, la lecture d'un compteur s'étalant sur une durée de l'ordre de 100µs, et la comparaison étant quasiment immédiate. A l'inverse, une opération d'écriture prend plusieurs millisecondes, typiquement 4 ms. Il en résulte que ne conserver qu'une opération d'écriture permet de diminuer le temps requis pour le procédé de plusieurs millisecondes, et typiquement de permettre une modification d'une valeur de compteur en moins de 5ms. La faible durée du procédé non seulement de répondre aux exigences de rapidité que peut avoir un lecteur attendant une réponse, mais permet également de limiter le temps pendant lequel l'arrachement peut avoir lieu. En outre, dans la mesure où l'arrachement est particulièrement néfaste s'il intervient au cours d'une opération d'écriture, la limitation à une écriture permet de limiter les risques de conséquence d'un arrachement.
L'invention n'est pas limitée au mode de réalisation décrit et représenté aux figures annexées. Des modifications restent possibles, notamment du point de vue de la constitution des divers caractéristiques techniques ou par substitution d'équivalents techniques, sans sortir pour autant du domaine de protection de l'invention.
Claims (10)
- Procédé de modification d'une valeur de compteur d'un compteur d'une puce électronique (1), la puce électronique (1) comprenant deux compteurs (CNTA, CNTB) stockant chacun une valeur de compteur (ValA, ValB) respective, le procédé comprenant les étapes suivantes :
- lecture (S21, S22) des valeurs de compteur respectives de chacun des deux compteurs (CNTA, CNTB) ;
- comparaison (S23) entre elles des valeurs de compteurs des deux compteurs (CNTA, CNTB) et détermination, sur la base de la comparaison, d'un compteur à modifier parmi les deux compteurs ;
- écriture (S24, S25) dans le compteur à modifier d'une valeur de compteur modifiée dérivée de la valeur de compteur de l'autre compteur. - Procédé selon la revendication 1, comprenant une étape finale de vérification (S26) de l'écriture de la valeur de compteur modifiée dans le compteur à modifier.
- Procédé selon l'une quelconque des revendications précédentes, dans lequel chaque valeur de compteur définit une position dans une série ordonnée de valeurs.
- Procédé selon l'une des revendications précédentes, dans lequel la valeur de compteur modifiée est dérivée de la valeur de compteur de l'autre compteur par incrémentation d'un incrément de cette valeur de compteur de l'autre compteur, l'incrément définissant un sens d'incrémentation.
- Procédé selon les revendications 3 et 4, dans lequel le compteur à modifier est le compteur dont la valeur de compteur présente une position inférieure dans la série ordonnée de valeurs dans le sens d'incrémentation par rapport à la valeur de compteur de l'autre compteur.
- Procédé selon l'une quelconque des revendications 3 à 5, dans lequel l'écriture de la valeur de compteur modifiée comprend un effacement du compteur à modifier suivi de la programmation de la valeur de compteur modifiée dans le compteur à modifier, l'effacement résultant en une valeur nulle stockée dans le compteur à modifier, ladite valeur nulle définissant une position minimale dans la série ordonnée de valeurs dans le sens d'incrémentation.
- Procédé selon l'une quelconque des revendications précédentes, dans lequel la valeur de compteur d'un compteur est modifiée en réponse à une requête envoyée par un lecteur (2) en communication avec la puce électronique (1).
- Procédé selon la revendication précédente, dans lequel la modification de la valeur d'un compteur est suivie par l'envoi de la part de la puce électronique (1) d'une réponse au lecteur (2) en communication avec la puce électronique.
- Procédé selon l'une quelconque des revendications précédentes, dans lequel aucun drapeau pointant vers un compteur n'est lu pour déterminer quel est le compteur à modifier.
- Puce électronique comprenant deux compteurs (CNTA, CNTB) stockant chacun une valeur de compteur (ValA, ValB) respective, la puce électronique étant configurée pour mettre en œuvre le procédé de modification d'une valeur de compteur d'un compteur selon l'une quelconque des revendications précédentes.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1913671A FR3103925B1 (fr) | 2019-12-03 | 2019-12-03 | Procédé de modification d'une valeur de compteur d'un compteur d'une puce électronique |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1913671 | 2019-12-03 | ||
FR1913671A FR3103925B1 (fr) | 2019-12-03 | 2019-12-03 | Procédé de modification d'une valeur de compteur d'un compteur d'une puce électronique |
Publications (2)
Publication Number | Publication Date |
---|---|
FR3103925A1 true FR3103925A1 (fr) | 2021-06-04 |
FR3103925B1 FR3103925B1 (fr) | 2022-07-15 |
Family
ID=70456846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1913671A Active FR3103925B1 (fr) | 2019-12-03 | 2019-12-03 | Procédé de modification d'une valeur de compteur d'un compteur d'une puce électronique |
Country Status (1)
Country | Link |
---|---|
FR (1) | FR3103925B1 (fr) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2667192A1 (fr) * | 1990-09-20 | 1992-03-27 | Gemplus Card Int | Procede de comptage en memoire eeprom et son utilisation pour la realisation d'un compteur securise. |
EP1939753A1 (fr) * | 2006-12-20 | 2008-07-02 | St Microelectronics S.A. | Protection de zones mémoire |
EP2131336A1 (fr) * | 2008-06-06 | 2009-12-09 | Sony Corporation | Dispositif de traitement d'informations, procédé de traitement d'informations, programme et système de communication |
-
2019
- 2019-12-03 FR FR1913671A patent/FR3103925B1/fr active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2667192A1 (fr) * | 1990-09-20 | 1992-03-27 | Gemplus Card Int | Procede de comptage en memoire eeprom et son utilisation pour la realisation d'un compteur securise. |
EP1939753A1 (fr) * | 2006-12-20 | 2008-07-02 | St Microelectronics S.A. | Protection de zones mémoire |
EP2131336A1 (fr) * | 2008-06-06 | 2009-12-09 | Sony Corporation | Dispositif de traitement d'informations, procédé de traitement d'informations, programme et système de communication |
Also Published As
Publication number | Publication date |
---|---|
FR3103925B1 (fr) | 2022-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1988548B1 (fr) | Mémoire non volatile à écriture rapide | |
EP0546048B1 (fr) | Procede et dispositif de mise a jour d'informations dans une memoire et leur utilisation dans les cartes a memoire | |
EP2786317B1 (fr) | Ecriture de données dans une mémoire non volatile de carte à puce | |
EP2388949B1 (fr) | Procédé de gestion de dispositifs électroniques, par exemple de type circuits intégrés, avec génération interne d'une clé personnelle d'authentification | |
EP3293637A1 (fr) | Gestion d'index dans une mémoire flash | |
FR3041806A1 (fr) | Dispositif de memoire non volatile, par exemple du type eeprom, ayant une capacite memoire importante, par exemple 16mbits | |
EP2724237B1 (fr) | Procédé de gestion de l'endurance de mémoires non volatiles | |
FR3103925A1 (fr) | Procédé de modification d'une valeur de compteur d'un compteur d'une puce électronique | |
EP2388948B1 (fr) | Procédé et système d'accès à un circuit intégré comprenant une clé personnelle d'authentification | |
FR3051574A1 (fr) | Gestion du stockage dans une memoire flash | |
FR2918483A1 (fr) | Dispositif electronique portable et procede de gestion de fichier destine a etre utilise dans un dispositif electronique portable | |
FR2805073A1 (fr) | Ecriture en temps reel securisee pour memoire non volatile | |
FR2809223A1 (fr) | Effacement d'eeprom en temps masque | |
FR2689662A1 (fr) | Procédé de protection d'une carte à puce contre la perte d'information. | |
JP6314859B2 (ja) | 電子制御装置及びソフトウェア書き換えシステム | |
FR2997208A1 (fr) | Procede de gestion d'une memoire flash | |
EP2383746B1 (fr) | Procédé d'écriture et de lecture dans une mémoire d'atomicité | |
EP1508901B1 (fr) | Circuit mémoire à mémoire non volatile d'identification et procédé associé | |
EP1089218B1 (fr) | Circuit d'entrée pour carte à puce à mémoire | |
EP3340098A1 (fr) | Procédé pour la sécurité d'une opération électronique avec une carte à puce | |
EP1970813B1 (fr) | Procédé de verrouillage de mots d'une mémoire non volatile dans un dispositif électronique équipé de moyens de communication RF | |
EP3416087A1 (fr) | Gestion d'atomicité dans une mémoire eeprom | |
WO2003042827A2 (fr) | Comparaison de donnees repliques | |
EP1455259B1 (fr) | Procédé et dispositif de sélection de mode de fonctionnement d'un circuit intégré | |
FR3011650A1 (fr) | Procede et dispositif de realisation de fonction par un microcircuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 2 |
|
PLSC | Publication of the preliminary search report |
Effective date: 20210604 |
|
PLFP | Fee payment |
Year of fee payment: 3 |
|
PLFP | Fee payment |
Year of fee payment: 4 |
|
PLFP | Fee payment |
Year of fee payment: 5 |