FR3080474A1 - Procede de controle de commandes mis en oeuvre par un dispositif tel qu'une carte a puce, et dispositif. - Google Patents
Procede de controle de commandes mis en oeuvre par un dispositif tel qu'une carte a puce, et dispositif. Download PDFInfo
- Publication number
- FR3080474A1 FR3080474A1 FR1853578A FR1853578A FR3080474A1 FR 3080474 A1 FR3080474 A1 FR 3080474A1 FR 1853578 A FR1853578 A FR 1853578A FR 1853578 A FR1853578 A FR 1853578A FR 3080474 A1 FR3080474 A1 FR 3080474A1
- Authority
- FR
- France
- Prior art keywords
- zone
- command
- zones
- datum
- data
- 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 30
- 238000004891 communication Methods 0.000 claims description 14
- 230000001681 protective effect Effects 0.000 claims description 14
- 230000000903 blocking effect Effects 0.000 claims description 4
- 238000004590 computer program Methods 0.000 claims description 2
- 230000004224 protection Effects 0.000 abstract description 9
- 238000012795 verification Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 7
- 230000002159 abnormal effect Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/556—Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/02—Disposition of storage elements, e.g. in the form of a matrix array
- G11C5/025—Geometric lay-out considerations of storage- and peripheral-blocks in a semiconductor storage device
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/22—Safety or protection circuits preventing unauthorised or accidental access to memory cells
- G11C16/225—Preventing erasure, programming or reading when power supply voltages are outside the required ranges
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
La présente invention concerne un procédé de contrôle de commandes mis en œuvre par un dispositif (1) comprenant une mémoire non volatile (10) contenant une première zone (Z1) et une deuxième zone (Z2) différente de la première zone (Z1), le procédé comprenant des étapes de : • écriture (106) dans la première zone (Z1) d'une première donnée sur réception par le dispositif d'une commande à traiter, avant traitement de la commande par le dispositif, • écriture (110) dans la deuxième zone (Z2) d'une deuxième donnée une fois que le traitement de la commande est terminé, • comparaison (202) du contenu des première et deuxième zone (Z1, Z2) lors d'une mise sous tension du dispositif, • mise en œuvre d'une mesure de protection (206) seulement si la comparaison révèle que seule une parmi les première et deuxième données est présente dans les première et deuxième zones (Z1, Z2).
Description
DOMAINE DE L'INVENTION
La présente invention concerne un procédé de contrôle de commandes mis en œuvre par un dispositif tel qu’une carte à puce, et concerne un tel dispositif.
ETAT DE LA TECHNIQUE
De façon connue, une carte à puce reçoit généralement des commandes émises par un équipement extérieur, traite en interne de telles commandes, et émet des réponses à ces commandes à l’équipement.
Une commande particulière est une commande de vérification d’un code candidat par la carte à puce. Sur réception d’une telle commande de vérification, la carte à puce met en œuvre un traitement de vérification comprenant typiquement une comparaison entre le code candidat et un code secret mémorisé dans une mémoire non volatile de la carte à puce.
Généralement, la vérification du code candidat est protégée à l’aide d’un compteur anti-rejeu (nommé « Pin Try Counter PTC » dans les spécifications EMV). Le compteur est incrémenté ou décrémenté chaque fois qu’une commande de vérification de code candidat se solde par un échec (c’est-à-dire que le code candidat est différent du code secret). Lorsque le compteur atteint un seuil prédéterminé, la carte à puce de se bloque.
Pour contourner cette protection, une attaque connue consiste à mettre la carte à puce hors tension avant la fin de l’exécution de la commande de vérification, donc avant que la valeur du compteur ne soit modifiée. De cette manière, l’attaquant dispose d’une infinité d’essais pour tenter de deviner le code secret.
EXPOSE DE L'INVENTION
Un but de l’invention est de détecter une attaque visant à contourner une protection telle que celle mentionnée ci-dessus.
Il est dès lors proposé un procédé de contrôle de commandes mis en œuvre par un dispositif comprenant une mémoire non volatile contenant une première zone et une deuxième zone différente de la première zone, le procédé comprenant des étapes de :
• écriture dans la première zone d’une première donnée sur réception par le dispositif d’une commande à traiter, avant traitement de la commande par le dispositif, • écriture dans la deuxième zone d’une deuxième donnée une fois que le traitement de la commande est terminé, • comparaison du contenu des première et deuxième zone lors d’une mise sous tension du dispositif, • mise en œuvre d’une mesure de protection seulement si la comparaison révèle que seule une parmi les première et deuxième données est présente dans les première et deuxième zones.
L’écriture de la première donnée et l’écriture de la deuxième donnée dans la mémoire non volatile ont pour effet de constituer une trace de ce qui a été déjà effectué par le dispositif, et de ce qui n’a pas encore effectué par le dispositif.
Le fait qu’une seule parmi la première donnée et la deuxième donnée soit présente dans la mémoire non volatile lors d’une mise sous tension du dispositif est donc révélateur d’une précédente mise hors tension anormale du dispositif. Deux situations anormales sont détectées :
• s’il est révélé, au cours de la comparaison du contenu des deux zones, que la première donnée a été écrite dans la première zone, mais que la deuxième donnée n’est pas présente dans la deuxième zone, cela signifie qu’une mise hors tension du dispositif est survenue au cours du traitement de la commande, ce qui est suspect.
• s’il est révélé, au cours de la comparaison du contenu des deux zones, que la première donnée est absente de la première zone, mais que la deuxième donnée a été écrite dans la deuxième zone, il y a de fortes chances pour la mémoire non volatile ait été corrompue avant la mise hors tension, ce qui est également suspect.
Il est donc avantageux de mettre en œuvre une mesure de protection dans ce cas.
A l’opposé, le fait que la première donnée et la deuxième donnée soient toutes les deux présentes ou toutes les deux absentes dans les deux zones est révélateur d’un fonctionnement normal du dispositif :
• s’il est révélé, au cours de la comparaison du contenu des deux zones, que la première donnée est absente de la première zone et que la deuxième donnée est absente de la deuxième zone, cela signifie qu’une mise hors tension du dispositif est survenue avant que la commande ne soit traitée, ce qui est normal.
• s’il est révélé, au cours de la comparaison du contenu des deux zones, que la première donnée est présente dans la première zone et que la deuxième donnée est présente dans la deuxième zone, cela signifie qu’une mise hors tension du dispositif est survenue après la fin du traitement de la commande, ce qui est également considéré comme normal.
Il n’est donc alors pas nécessaire de mettre en œuvre la mesure de protection.
En définitive, le procédé proposé permet de détecter des tentatives de contournement de protections (par exemple des protections par compteur anti-rejeu) impliquant une mise hors tension anormale du dispositif, et de prendre des mesures appropriées en réponse à une telle détection.
Le procédé peut également comprendre les caractéristiques optionnelles suivantes, prises seules ou en combinaison.
- le procédé comprend en outre les étapes suivantes :
• l’étape d’écriture dans la première zone est répétée pour différentes commandes reçues et à traiter par le dispositif, de sorte à écrire dans la première zone plusieurs premières données respectivement associées aux différentes commandes reçues, • l’étape d’écriture dans la deuxième zone est répétée pour les différentes commandes, de sorte à écrire dans la deuxième zone plusieurs deuxièmes données respectivement associées aux différentes commandes, • la mesure de protection est mise en œuvre seulement si la comparaison révèle que, pour au moins une commande de référence parmi les commandes reçues, une seule parmi la première donnée associée à la commande de référence et la deuxième donnée associée à la commande de référence est présente dans une des première et deuxième zone ;
- les première et deuxième zones sont vierges avant les écritures, et ne sont effacées de sorte à les rendre à nouveau vierges qu’une fois qu’au moins une des zones a été remplie de premières ou deuxièmes données ;
- au moins une parmi la première zone et la deuxième zone est une page constituant une plus petite portion effaçable de la mémoire non volatile ;
- chaque donnée est écrite dans une unité mémoire qui lui est propre, chaque unité mémoire constituant une plus petite portion inscriptible de la mémoire volatile ;
- la première zone mémoire et la deuxième zone mémoire sont de mêmes tailles ;
- une première donnée associée à une commande et une deuxième donnée associée à la même commande sont de mêmes tailles ;
- la mesure de protection comprend une mise à jour d’un compteur de sorte à rapprocher la valeur du compteur d’un seuil prédéterminé, le procédé comprenant en outre un blocage du dispositif lorsque la valeur du compteur atteint le seuil prédéterminé.
L’invention concerne en outre un produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé proposé, lorsque ce programme est exécuté par une unité de traitement de données.
Elle concerne également un dispositif, tel qu’une carte à puce, comprenant :
• une interface de communication pour recevoir des commandes, • une mémoire non volatile adaptée pour contenir une première zone et une deuxième zone différente de la première zone, • une unité de contrôle de commandes configurée pour :
o écrire dans la première zone d’une première donnée sur réception d’une commande à traiter, avant traitement de la commande par le dispositif, o écrire dans la deuxième zone d’une deuxième donnée une fois que le traitement de la commande est terminé, o comparer du contenu des première et deuxième zone lors d’une mise sous tension du dispositif, o mettre en œuvre une mesure de protection seulement si la comparaison révèle que seule une parmi les première et deuxième données est présente dans les première et deuxième zones.
DESCRIPTION DES FIGURES
D’autres caractéristiques, buts et avantages de l’invention 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 :
• La figure 1 illustre de façon schématique un dispositif selon un premier mode de réalisation de l’invention ;
• La figure 2 est un organigramme d’étapes d’un procédé de traitement de données selon un mode de mise en ouvre de l’invention ;
• Les figures 3a, 3b, 3c représentent de manière schématique l’état de deux zones d’une mémoire non volatile à trois instants différents, au cours de la mise en œuvre du procédé de la figure 2.
• La figure 4 est un organigramme d’autres étapes du procédé de traitement de la figure
2.
Sur l’ensemble des figures, les éléments similaires portent des références identiques.
DESCRIPTION DETAILLEE DE L'INVENTION
En référence à la figure 1, un dispositif 1 comprend une interface de communication 2, une mémoire 4, et une unité de traitement 6 de données.
L’interface de communication 2 est adaptée pour faire communiquer le dispositif 1 avec un autre équipement 3, tel qu’un terminal. L’interface de communication 2 est notamment adaptée pour recevoir des commandes destinées à être traitées par le dispositif 1, et pour émettre des réponses à de telles commandes.
L’interface de communication 2 comprend par exemple au moins un contact électrique susceptible d’être électriquement connecté à un contact électrique de l’équipement 3. Des données peuvent ainsi être communiquées entre le dispositif 1 et l’équipement 3 via ces contacts. En variante ou en complément, l’interface de communication 2 est de type sans contact, par exemple en champ proche (NFC en anglais). Dans ce cas, l’interface de communication 2 comprend une antenne adaptée pour communiquer avec une antenne de l’équipement 3.
La mémoire 4 comprend une mémoire volatile 8, par exemple de type RAM. La mémoire volatile 8 peut comprendre une ou plusieurs composants de mémoire physique. La mémoire volatile 8 6a pour fonction de mémoriser temporairement des données, par exemple des données calculées par le processeur 2. Le contenu de la mémoire volatile 8 6 est effacé lors d’une mise hors tension du dispositif 1 électronique 1.
La mémoire 4 comprend en outre une mémoire non volatile 10, par exemple de type mémoire de masse, Flash, ROM, PROM, EPROM, EEPROM, UVPROM, SSD, etc. La mémoire non volatile 10 comprendre un ou plusieurs composants de mémoire physiques de types identiques ou différents.
La mémoire non volatile 10 a pour fonction de mémoriser des données de manière persistante, au sens où une mise hors tension du dispositif 1 électronique 1 n’efface pas le contenu de la mémoire non volatile 10.
La mémoire non volatile 10 est susceptible de recevoir des requêtes d’accès émises par l’unité de traitement 6. Ces requêtes d’accès sont de différents types : écriture, lecture, effacement notamment.
La mémoire non volatile 10 est paginée, c’est-à-dire comprend une pluralité de pages.
Chaque page comprend elle-même une pluralité d’unités mémoires. Chaque unité mémoire est par exemple un octet.
A un instant donné, une unité mémoire ne peut être que dans un état « vierge » ou dans un état « écrit ». Une unité mémoire passe de l’état vierge à l’état écrit lors d’une écriture, et passe de l’état écrit à l’état vierge lors d’un effacement.
Dans l’état vierge, on considère qu’une unité mémoire ne stocke aucune donnée.
Dans l’état écrit, une unité mémoire stocke une donnée susceptible de prendre différentes valeurs (le nombre de valeurs possibles dépendant de la longueur en bits de l’unité mémoire). Par exemple, lorsqu’une unité mémoire est un octet, jusqu’à 256 valeurs alternatives sont inscriptibles dans cette unité mémoire.
Une unité mémoire constitue une plus petite portion inscriptible de la mémoire non volatile 10. On entend par là qu’il est possible d’écrire dans une unité mémoire sans avoir à écrire dans une quelconque autre unité mémoire, mais qu’il n’est pas possible d’écrire dans seulement une portion de l’unité mémoire sans que cela n’affecte une portion restante de l’unité mémoire.
De plus, une unité mémoire dans l’état écrit ne peut pas changer de valeur sans repasser par l’état vierge. Autrement dit, lorsque le contenu d’une unité mémoire doit passer d’une première valeur à une deuxième valeur, deux opérations doivent être mises en œuvre sur l’unité mémoire : l’unité mémoire doit d’abord être entièrement effacée (l’état de l’unité mémoire passe alors de l’état écrit à l’état vierge), avant d’y écrire la deuxième valeur (l’état de l’unité mémoire passe alors de l’état vierge à l’état écrit).
Par exemple, il peut être prévu deux requêtes d’écriture transmissibles à la mémoire non volatile 10, fonctionnant à deux échelles différentes :
• une requête d’écriture par page : cette requête ne peut être effectuée que sur une page dont tous les unités mémoires sont à l’état vierge, et lorsque cette condition est vérifiée, toutes les unité mémoire de la page passent de l’état vierge à l’état écrit.
• une requête d’écriture par unité mémoire, faisant sélectivement passer une seule unité mémoire de l’état vierge à l’état écrit.
Par ailleurs, une page constitue une plus petite portion effaçable de la mémoire non volatile 10. On entend par là, qu’il n’est pas possible, par une requête d’effacement, de faire passer seulement une partie des unités mémoire d’une page de l’état écrit à l’état vierge, et de conserver d’autres unités mémoire de la même page à l’état écrit. Autrement dit, une requête d’effacement fournie à la mémoire non volatile 10 implique forcément le passage de chaque unité mémoire d’une page de l’état écrit à l’état vierge. Dit encore d’une autre manière, il est prévu dans le dispositif 1 une requête d’effacement par page, mais pas de requête d’effacement par unité mémoire.
Par ailleurs, l’unité de traitement 6 de données est configurée pour traiter des commandes reçues par l’interface de communication 2 et de générer des réponses à ces commandes susceptibles d’être envoyées par l’interface de communication 2.
Une fonction remplie par l’unité de traitement de commande est également de contrôler de telles commandes, en sus de leur traitement.
L’unité de traitement 6 est apte à requérir des accès à la mémoire via des requêtes appropriées.
L’unité de traitement 6 de données comprend au moins un processeur.
Est par exemple mémorisé dans la mémoire non volatile 10 un programme comprenant des instructions de code de programme pour traiter et contrôler des commandes, lorsque ce programme est exécuté par un processeur de l’unité de traitement 6 de données.
En référence à l’organigramme illustré sur la figure 2, un procédé mis en œuvre par le dispositif 1 comprend les étapes suivantes.
Dans ce qui suit, on considéra que toute étape mise en œuvre par l’unité de traitement 6 résulte implicitement de l’exécution d’instructions de code appropriées du programme précité.
Dans une étape préliminaire 100, l’unité de traitement 6 alloue dans la mémoire non volatile 10 une première zone Z1 et une deuxième zone Z2 différente de la première zone Z1, dont des exemples sont représentés sur les figure 3a à 3c. Cette allocation est mise en œuvre lors d’une première mise sous tension du dispositif 1.
La première zone Z1, ou zone d’entrée, est une première page comprenant N premières unités mémoire (N=8 dans l’exemple représenté sur les figures 3a à 3c).
La première zone Z1 a une adresse de début AD1 et d’une adresse de fin AF1 dans la mémoire non volatile 10. Les premières unités mémoire de la première zone Z1 sont contiguës. L’adresse de l’unité mémoire 4t/l(i) d’indice i de la première zone Z1 est la suivante, i allant de 0 à N-1 :
4l/l(i) = ADI + i
La deuxième zone Z2, ou zone de sortie, est une deuxième page comprenant N deuxièmes unités mémoire. On a donc, pour tout i allant de 0 à N-1 :
4l/2(i) = AD2 + i où 41/2(0 est l’adresse de l’unité mémoire d’indice i de la deuxième zone Z2, AD2 est l’adresse de début de la deuxième zone Z2.
A l’issue de l’allocation 100, les N premières unités mémoire de la première zone Z1 et les N deuxièmes unités mémoires de la deuxième zone Z2 sont toutes à l’état vierge, conformément à la figure 3a. Sur les figures annexées, l’état vierge d’une unité mémoire est représenté par le symbole FF.
L’unité de traitement 6 alloue par ailleurs dans la mémoire volatile 8 une variable représentative d’un pointeur d’écriture, notée « offset » sur les figures annexées. L’offset peut contenir un écart entre deux adresses, par exemple compté en nombre d’unités mémoire. L’offset est initialisé à zéro (étape 102).
On suppose par la suite qu’un canal de communication est établi entre l’interface de communication 2 du dispositif 1 et l’équipement 3.
L’interface de communication 2 reçoit une commande CO émise par l’équipement 3 et la transmet à l’unité de traitement 6 de données (étape 104).
Sur réception de cette commande CO, l’unité de traitement 6 transmet à la mémoire non volatile 10 une première requête d’écriture d’une première donnée dans la première zone Z1 (étape 106). Cette première donnée est indicative de la réception de cette commande CO.
L’écriture 106 est mise en œuvre avant que la commande CO ne soit traitée par l’unité de traitement 6 de données.
La première requête en écriture est une requête en écriture par unité mémoire à l’adresse ADI + offset.
A ce stade, l’offset est nul si bien que l’unité mémoire visée par la première requête est celle ayant ADI + 0 = 4111(0) pour adresse. Ainsi, l’effet de cette première requête est de faire passer sélectivement la première unité mémoire d’indice 0 de l’état vierge à l’état écrit. La valeur de la première donnée écrite à l’adresse 41/1(0) est quelconque.
Sur les figures annexées, l’état « écrit » d’une unité mémoire est représenté par le symbole 00 (ce qui ne veut pas forcément dire que la donnée écrite dans cette unité mémoire est la valeur zéro, même s’il est envisageable d’écrire cette valeur zéro au cours de cette étape). On a représenté en figure 4 le contenu des zones une fois effectuée l’écriture 106.
La commande CO est ensuite traitée par l’unité de traitement 6 (étape 108). Ce traitement 108 peut typiquement comprendre la mise en œuvre d’une fonction cryptographique du dispositif 1. Le traitement 108 peut toutefois se terminer prématurément s’il est détecté que la commande CO est incorrecte.
Une fois que le traitement de la commande est terminé, l’unité de traitement 6 transmet à la mémoire non volatile 10 une deuxième requête d’écriture d’une deuxième donnée dans la deuxième zone Z2 (étape 110).
Cette écriture 110 est mise en œuvre, par exemple avant que la réponse ne soit émise (étape 114), pendant l’émission 114 de la réponse, ou juste après cette émission 114.
La deuxième requête en écriture est une requête en écriture par unité mémoire à l’adresse 4D2 + offset. L’unité mémoire visée par la deuxième requête est celle ayant pour l’adresse 4112(0) à ce stade. Ainsi, l’effet de cette première requête est de faire passer sélectivement la première unité mémoire d’indice 0 de l’état vierge à l’état écrit. Pour la même raison que la première zone. On passe d'un état à 1 de tous le bits de l'octet (état vierge) a un état à zéro sans coupure de courant.
La deuxième donnée est de préférence égale à la première donnée.
Une fois la deuxième requête en écriture traitée par la mémoire non volatile 10, l’offset est incrémenté de 1 (à supposer que l’offset est un nombre d’unités mémoire) (étape 112).
On a représenté en figure 5 le contenu des zones Z1 et Z2 une fois effectuée les étapes 110 et 112 terminées.
Après les deux écritures 106 et 110, l’unité de traitement 6 vérifie s’il reste dans la première zone Z1 ou dans la deuxième zone Z2 au moins une unité mémoire à l’état libre (étape 116).
Cette vérification 116 comprend typiquement une comparaison entre la première variable d’adresse et l’adresse de fin AF1 de la première zone Z1 ou une comparaison entre la deuxième variable d’adresse et l’adresse de fin AF2 de la deuxième zone Z2. Par exemple, si la première variable d’adresse est strictement supérieure à AF1 - SI, cela signifie qu’il ne reste plus d’unité mémoire à l’état libre dans la première zone Z1 ; la première zone Z1 est donc remplie. Similairement, si la deuxième variable d’adresse est strictement supérieure à AF2 - S2, cela signifie qu’il ne reste plus d’unité mémoire à l’état libre dans la deuxième zone Z2 ; la deuxième zone Z2 est donc remplie.
Si au moins une des deux zones Z1 et Z2 est totalement remplie, alors un effacement des zones Z1 et Z2 est mis en œuvre (étape 118). Aucun effacement 118 n’est mis en œuvre sur les deux zones si chacune de ces zones contient au moins une unité mémoire encore à l’état libre.
En l’occurrence, les deux zones Z1 et Z2 telles que représentées sur la figure 3c ne sont pas encore remplies : aucun effacement 118 n’est donc mis en œuvre à ce stade.
A chaque fois qu’une nouvelle commande Ci à traiter est reçue 104 par le dispositif 1, les étapes 106 et suivantes décrites précédemment sont à nouveau mises en œuvre par l’unité de traitement 6.
Ainsi, chaque fois qu’une nouvelle commande Ci est reçue 104, deux nouvelles données associées à cette commande Ci sont écrites : une nouvelle première donnée associée à la commande Ci est écrite dans la première zone Z1 à l’adresse AUl(i), et une nouvelle deuxième donnée associée à la même commande Ci est écrite dans la deuxième zone Z2 à l’adresse AU2(t).
Les zones Z1 et Z2 ne sont en définitive remplies qu’une fois que les étapes qui précèdent ont été mises en œuvre N fois, pour N commandes CO, ..., CN-1, à compter d’un instant où ces zones étaient entièrement vierges.
Lors de la Nième vérification 116 mise en œuvre par l’unité de traitement 6, il est détecté par cette unité de traitement 6 que les deux zones sont toutes les deux remplies de données. Conformément à l’organigramme de la figure 2, l’étape d’effacement 118 des deux zones est alors mise en œuvre pour la première fois depuis leur allocation 100.
L’unité de traitement 6 transmet à la mémoire non volatile 10 une requête en effacement de la première page formant la première zone Z1. Une fois cette requête en effacement traitée par la mémoire non volatile 10, toutes les unités mémoires de la première page sont à nouveau dans l’état libre. L’unité de traitement 6 transmet également à la mémoire non volatile 10 une requête en effacement de la deuxième page formant la deuxième zone Z2. Une fois cette requête en effacement traitée par la mémoire non volatile 10, toutes les unités mémoires de la deuxième page sont à nouveau dans l’état libre.
Lorsqu’un effacement 118 est mis en œuvre, l’étape 102 est mise en œuvre pour réinitialiser l’offset est à zéro.
De nouvelles données peuvent ainsi être écrites dans les deux zones, suite à la réception de nouvelles commandes à traiter.
Par ailleurs, en référence à la figure 4, les étapes suivantes sont mises en œuvre lors d’une mise sous tension du dispositif 1. Dans le cas particulier où la mise sous tension est la première mise sous tension du dispositif 1, ces étapes sont mises en œuvre après l’allocation 100 des zones Z1 et Z2.
L’unité de traitement 6 analyse le contenu de la première zone Z1 et de la deuxième zone Z2 (étape 202). Ce contenu est révélateur de la mise en œuvre d’étapes d’écritures 106 et/ou 110 avant la précédente mise hors tension du dispositif 1 (cette mise hors tension pouvant être normale ou anormale).
Si l’analyse 202 révèle que seule une parmi la première donnée associée à une commande Ci et la deuxième donnée associée à la même commande Ci est présente dans une des première et deuxième zone Z2, alors l’unité de traitement 6 met en œuvre une mesure de protection prédéterminée (étape 206). Ce cas de figure est rencontré si, par exemple, une mise hors tension du dispositif était survenue alors que le contenu des zones Z1 et Z2 était celui représenté sur la figure 3b.
Dans le cas contraire, l’unité de traitement 6 ne met pas en œuvre la mesure de protection prédéterminée. Ce cas de figure est rencontré si, par exemple, une mise hors tension du dispositif était survenue alors que le contenu des zones Z1 et Z2 était celui représenté sur la figure 3a ou la figure 3c.
Au cours de l’analyse 202, l’unité de traitement 6 compare les états respectifs de l’unité mémoire d’adresse AUl(i) et de l’unité mémoire d’adresse AU2(i).
Si ces états sont différents (autrement dit si l’un d’entre eux est l’état vierge et l’autre est l’état écrit), cela signifie que seule une de ces deux unités mémoires contient une donnée écrite, l’analyse se termine et la mesure de protection est mise en œuvre. Typiquement, si l’unité mémoire d’adresse XL/1(O) est dans l’état écrite et si l’unité mémoire d’adresse XL/2(0) est à l’état vierge, cela signifie qu’une mise hors tension du dispositif 1 est survenu après la mise en œuvre de l’étape d’écriture 106 à l’adresse AUl(i) dans la première zone Z1 (déclenchée lorsque la commande Ci a été reçue par le dispositif 1 ) et avant la mise en œuvre de l’étape d’écriture 110 subséquente à l’adresse AU2(i) dans la deuxième zone Z2 (écriture qui aurait dû survenir lors de l’émission d’une réponse à la commande Ci). La mise hors tension étant très probablement survenue au cours du traitement de la commande Ci, elle est considérée comme anormale, et donc suspecte. C’est pourquoi la mesure de protection 206 est mise en œuvre dans ce cas.
Si les états comparés sont tous les deux l’état écrit et si i < N, l’unité de traitement 6 répète l’état de comparaisons d’états, mais en l’appliquant cette fois aux états respectifs de l’unité mémoire d’adresse AUl(i + 1) et de l’unité mémoire d’adresse AU2(i + 1).
Si les états comparés sont tous les deux l’état vierge ou si i = N, l’analyse se termine et la mesure de protection n’est pas mise en œuvre.
La mesure de protection 206 comprend par exemple une mise à jour d’un compteur, ce compteur étant associé à un seuil prédéterminé. La mise à jour tend à rapprocher la valeur du seuil prédéterminé. Par exemple, le seuil est une valeur positive, la valeur du compteur est initialement à zéro, et la mise à jour est une incrémentation de la valeur du compteur. En variante le seuil est à zéro, la valeur du compteur est initialement à une valeur positive, et la mise à jour est une décrémentation de la valeur du compteur.
Après la mise à jour, le dispositif 1 compare la valeur du compteur avec le seuil prédéterminé. Si ce seuil est atteint (notamment franchi), alors l’unité de traitement 6 bloque le dispositif 1 de sorte à rendre le dispositif 1 partiellement ou totalement inutilisable. Par exemple, ce blocage peut faire en sorte que toute commande reçue par l’interface de communication 2 ne soit pas traitée.
Dans le cas où à l’issue de l’analyse 202 l’unité de traitement 6 décide de ne pas mettre en œuvre la mesure de protection, l’unité de traitement 6 peut mettre en œuvre une opération factice en lieu et place de cette mesure de protection. Cette opération factice peut par exemple comprendre une mise à jour d’un compteur factice non utilisé pour engendrer un quelconque blocage du dispositif 1.
Durant le procédé décrit ci-dessus, on peut constater que l’effacement des zones Z1 et Z2 n’est pas mis en œuvre pour chaque commande reçue, mais seulement pour N commandes reçues. Ceci est avantageux car allonge la durée de vie de la mémoire non volatile 10.
Par ailleurs, comme indiqué précédemment, la première zone Z1 et la deuxième zone Z2 sont deux pages de la mémoire non volatile 10, et ces pages constituent des plus petites portions effaçables de la mémoire non volatile 10. Ceci est avantageux car la quantité de mémoire non volatile additionnelle utilisée pour détecter des anomalies est très réduite.
Dans le mode de réalisation présenté ci-dessus, les étapes du procédé visant à contrôler ces commandes (notamment les étapes (100, 102, 106, 110, 112, 116, 118) sont mises en œuvre par l’unité de traitement 6 qui traite ces commandes (étape 108). En variante, ces étapes de contrôle sont mises en œuvre par une unité de contrôle de commandes distincte de l’unité de traitement 6. Un processeur de cette unité de contrôle distincte peut ainsi 10 exécuter un programme de contrôle de commande dédié.
Claims (10)
- REVENDICATIONS1. Procédé de contrôle de commandes mis en œuvre par un dispositif (1) comprenant une mémoire non volatile (10) contenant une première zone (Z1) et une deuxième zone (Z2) différente de la première zone (Z1), le procédé comprenant des étapes de :• écriture (106) dans la première zone (Z1 ) d’une première donnée sur réception par le dispositif d’une commande à traiter, avant traitement de la commande par le dispositif, • écriture (110) dans la deuxième zone (Z2) d’une deuxième donnée une fois que le traitement de la commande est terminé, • comparaison (202) du contenu des première et deuxième zone (Z1, Z2) lors d’une mise sous tension du dispositif, • mise en œuvre d’une mesure de protection (206) seulement si la comparaison révèle que seule une parmi les première et deuxième données est présente dans les première et deuxième zones (Z1, Z2).
- 2. Procédé selon la revendication précédente, dans lequel :• l’étape d’écriture (106) dans la première zone (Z1) est répétée pour différentes commandes reçues et à traiter par le dispositif, de sorte à écrire dans la première zone (Z1) plusieurs premières données respectivement associées aux différentes commandes reçues, • l’étape d’écriture (110) dans la deuxième zone (Z2) est répétée pour les différentes commandes, de sorte à écrire dans la deuxième zone (Z2) plusieurs deuxièmes données respectivement associées aux différentes commandes, • la mesure de protection (206) est mise en œuvre seulement si la comparaison révèle que, pour au moins une commande de référence parmi les commandes reçues, une seule parmi la première donnée associée à la commande de référence et la deuxième donnée associée à la commande de référence est présente dans une des première et deuxième zone (Z1, Z2).
- 3. Procédé selon la revendication précédente, dans lequel les première et deuxième zones (Z1, Z2) sont vierges avant les écritures (106, 110), et ne sont effacées (118) de sorte à les rendre à nouveau vierges qu’une fois qu’au moins une des zones (Z1, Z2) a été remplie de premières ou deuxièmes données.
- 4. Procédé selon l’une des revendications précédentes, dans lequel au moins une parmi la première zone (Z1 ) et la deuxième zone (Z2) est une page constituant une plus petite portion effaçable de la mémoire non volatile (10).
- 5. Procédé selon l’une des revendications précédentes, dans lequel chaque donnée est écrite dans une unité mémoire qui lui est propre, chaque unité mémoire constituant une plus petite portion inscriptible de la mémoire volatile (10).
- 6. Procédé selon l’une des revendications précédentes, dans lequel la première zone (Z1 ) mémoire et la deuxième zone (Z2) mémoire sont de mêmes tailles.
- 7. Procédé selon l’une des revendications précédentes, dans lequel une première donnée associée à une commande et une deuxième donnée associée à la même commande sont de mêmes tailles.
- 8. Procédé selon l’une des revendications précédentes, dans lequel la mesure de protection (206) comprend une mise à jour d’un compteur de sorte à rapprocher la valeur du compteur d’un seuil prédéterminé, le procédé comprenant en outre un blocage du dispositif lorsque la valeur du compteur atteint le seuil prédéterminé.
- 9. Produit programme d'ordinateur comprenant des instructions de code de programme pour l'exécution des étapes du procédé selon l’une des revendications précédentes, lorsque ce programme est exécuté par une unité de traitement de données.
- 10. Dispositif (1), tel qu’une carte à puce, comprenant :• une interface de communication (2) pour recevoir des commandes, • une mémoire non volatile (10) adaptée pour contenir une première zone (Z1) et une deuxième zone (Z2) différente de la première zone (Z1), • une unité de contrôle (6) de commandes configurée pour :o écrire dans la première zone (Z1) d’une première donnée sur réception d’une commande à traiter, avant traitement de la commande par le dispositif, o écrire dans la deuxième zone (Z2) d’une deuxième donnée une fois que le traitement de la commande est terminé, o comparer du contenu des première et deuxième zone (Z1, Z2) lors d’une mise sous tension du dispositif, o mettre en œuvre une mesure de protection seulement si la comparaison révèle que seule une parmi les première et deuxième données est présente dans les première et deuxième zones (Z1, Z2).
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1853578A FR3080474B1 (fr) | 2018-04-24 | 2018-04-24 | Procede de controle de commandes mis en oeuvre par un dispositif tel qu'une carte a puce, et dispositif. |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1853578A FR3080474B1 (fr) | 2018-04-24 | 2018-04-24 | Procede de controle de commandes mis en oeuvre par un dispositif tel qu'une carte a puce, et dispositif. |
FR1853578 | 2018-04-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
FR3080474A1 true FR3080474A1 (fr) | 2019-10-25 |
FR3080474B1 FR3080474B1 (fr) | 2021-07-30 |
Family
ID=63683969
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1853578A Active FR3080474B1 (fr) | 2018-04-24 | 2018-04-24 | Procede de controle de commandes mis en oeuvre par un dispositif tel qu'une carte a puce, et dispositif. |
Country Status (1)
Country | Link |
---|---|
FR (1) | FR3080474B1 (fr) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2299363A1 (fr) * | 2009-09-21 | 2011-03-23 | STMicroelectronics (Rousset) SAS | Procédé de nivellement de l'usure dans une mémoire non volatile |
FR3010211A1 (fr) * | 2013-09-05 | 2015-03-06 | Morpho | Procede de mise en place de moyens de securite dans un dispositif electronique a memoire, et dispositif pour la mise en œuvre dudit procede |
US9298533B2 (en) * | 2010-12-14 | 2016-03-29 | Giesecke & Devrient Gmbh | Portable data carrier having operating error counter |
-
2018
- 2018-04-24 FR FR1853578A patent/FR3080474B1/fr active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2299363A1 (fr) * | 2009-09-21 | 2011-03-23 | STMicroelectronics (Rousset) SAS | Procédé de nivellement de l'usure dans une mémoire non volatile |
US9298533B2 (en) * | 2010-12-14 | 2016-03-29 | Giesecke & Devrient Gmbh | Portable data carrier having operating error counter |
FR3010211A1 (fr) * | 2013-09-05 | 2015-03-06 | Morpho | Procede de mise en place de moyens de securite dans un dispositif electronique a memoire, et dispositif pour la mise en œuvre dudit procede |
Also Published As
Publication number | Publication date |
---|---|
FR3080474B1 (fr) | 2021-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2164031B2 (fr) | Procédé et dispositif de protection d'un microcircuit contre des attaques | |
EP1605333B1 (fr) | Contrôle de l'exécution d'un programme | |
EP1779284B1 (fr) | Procédé et dispositif de traitement de données | |
FR2879320A1 (fr) | Carte a puce a circuit integre et procede pour detecter si des donnees en memoire dans une telle carte ont ete compromises | |
FR2894709A1 (fr) | "detecteur de destruction anormale de secteur memoire" | |
FR2888960A1 (fr) | Detection d'une faute par perturbation longue | |
EP2940690A1 (fr) | Compteur bidirectionnel en mémoire flash | |
EP3382588B1 (fr) | Procédé de protection d'un dispositif électronique contre des attaques par injection de faute pendant l'exécution d'un programme | |
EP3441902B1 (fr) | Procédé de protection d'un dispositif électronique contre des attaques par injection de faute | |
FR3080474A1 (fr) | Procede de controle de commandes mis en oeuvre par un dispositif tel qu'une carte a puce, et dispositif. | |
FR2805073A1 (fr) | Ecriture en temps reel securisee pour memoire non volatile | |
EP3042334B1 (fr) | Procédé de mise en place de moyens de sécurité en fonction d'un indice de confiance variant avant et après l'exécution de commandes sous la forme ddans un dispositif électronique à mémoire, et dispositif pour la mise en oeuvre dudit procédé | |
FR3045184A1 (fr) | Procede d’ecriture dans une memoire non-volatile d’une entite electronique et entite electronique associee | |
EP2860668B1 (fr) | Procédé et dispositif de réalisation de fonction par un microcircuit | |
EP1980968B1 (fr) | Protection de l'exécution d'un programme | |
WO2002027500A1 (fr) | Protection contre l'exploitation abusive d'une instruction dans une memoire | |
FR2748134A1 (fr) | Procede et dispositif permettant a un programme fige de pouvoir evoluer | |
EP2901291B1 (fr) | Procédé de gestion des ressources mémoire d'un dispositif de sécurité, tel qu'une carte à puce, et dispositif de sécurité mettant en oeuvre ledit procédé. | |
EP2860669B1 (fr) | Procédé mis en oeuvre dans un microcircuit et dispositif associé | |
FR2974648A1 (fr) | Protection d'une memoire vive contre des attaques par injection de fautes | |
EP2343663A1 (fr) | Procédé de protection polymorphe d'un code exécutable | |
EP4032000A1 (fr) | Système sur puce et procédé garantissant la fraicheur des données stockées dans une mémoire extérieure | |
WO2019234346A1 (fr) | Carte a puce personnalisable de façon securisée et procede de personnalisation securisé | |
FR3011650A1 (fr) | Procede et dispositif de realisation de fonction par un microcircuit | |
FR2991085A1 (fr) | Procede et carte a puce pour transmettre des informations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 2 |
|
PLSC | Publication of the preliminary search report |
Effective date: 20191025 |
|
PLFP | Fee payment |
Year of fee payment: 3 |
|
PLFP | Fee payment |
Year of fee payment: 4 |
|
PLFP | Fee payment |
Year of fee payment: 5 |
|
PLFP | Fee payment |
Year of fee payment: 6 |
|
PLFP | Fee payment |
Year of fee payment: 7 |