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 PDF

Info

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
Application number
FR1853578A
Other languages
English (en)
Other versions
FR3080474B1 (fr
Inventor
Alexis Bailly
Michel Benchetrit
Raphael Geslain
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Idemia Identity and Security France SAS
Original Assignee
Idemia Identity and Security France SAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Idemia Identity and Security France SAS filed Critical Idemia Identity and Security France SAS
Priority to FR1853578A priority Critical patent/FR3080474B1/fr
Publication of FR3080474A1 publication Critical patent/FR3080474A1/fr
Application granted granted Critical
Publication of FR3080474B1 publication Critical patent/FR3080474B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/77Protecting 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/025Geometric lay-out considerations of storage- and peripheral-blocks in a semiconductor storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/22Safety or protection circuits preventing unauthorised or accidental access to memory cells
    • G11C16/225Preventing 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)

  1. REVENDICATIONS
    1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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).
FR1853578A 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. Active FR3080474B1 (fr)

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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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&#39;un microcircuit contre des attaques
EP1605333B1 (fr) Contrôle de l&#39;exécution d&#39;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) &#34;detecteur de destruction anormale de secteur memoire&#34;
FR2888960A1 (fr) Detection d&#39;une faute par perturbation longue
EP2940690A1 (fr) Compteur bidirectionnel en mémoire flash
EP3382588B1 (fr) Procédé de protection d&#39;un dispositif électronique contre des attaques par injection de faute pendant l&#39;exécution d&#39;un programme
EP3441902B1 (fr) Procédé de protection d&#39;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&#39;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&#39;un indice de confiance variant avant et après l&#39;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&#39;exécution d&#39;un programme
WO2002027500A1 (fr) Protection contre l&#39;exploitation abusive d&#39;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&#39;un dispositif de sécurité, tel qu&#39;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&#39;une memoire vive contre des attaques par injection de fautes
EP2343663A1 (fr) Procédé de protection polymorphe d&#39;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