FR3045862A1 - Procede d'ecriture dans une memoire non-volatile, procede de lecture dans une memoire non-volatile et procede mis en œuvre dans une entite electronique - Google Patents

Procede d'ecriture dans une memoire non-volatile, procede de lecture dans une memoire non-volatile et procede mis en œuvre dans une entite electronique Download PDF

Info

Publication number
FR3045862A1
FR3045862A1 FR1562687A FR1562687A FR3045862A1 FR 3045862 A1 FR3045862 A1 FR 3045862A1 FR 1562687 A FR1562687 A FR 1562687A FR 1562687 A FR1562687 A FR 1562687A FR 3045862 A1 FR3045862 A1 FR 3045862A1
Authority
FR
France
Prior art keywords
volatile memory
electronic entity
value
writing
zone
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
FR1562687A
Other languages
English (en)
Other versions
FR3045862B1 (fr
Inventor
Guillaume Barbu
Philippe Andouard
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 France SAS
Original Assignee
Oberthur Technologies SA
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 Oberthur Technologies SA filed Critical Oberthur Technologies SA
Priority to FR1562687A priority Critical patent/FR3045862B1/fr
Publication of FR3045862A1 publication Critical patent/FR3045862A1/fr
Application granted granted Critical
Publication of FR3045862B1 publication Critical patent/FR3045862B1/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/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/75Protecting 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 by inhibiting the analysis of circuitry or operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Read Only Memory (AREA)

Abstract

L'invention concerne un procédé d'écriture dans une mémoire non-volatile (6) d'une entité électronique (1), comprenant les étapes suivantes : - détection d'une anomalie de fonctionnement de l'entité électronique (1); - en conséquence de ladite détection, écriture, à un emplacement d'une zone de la mémoire non-volatile (6), d'une donnée indicative de ladite détection d'anomalie, caractérisé en ce que, préalablement à l'étape de détection, l'emplacement est initialisé avec une valeur distincte d'une valeur d'effacement de la mémoire non-volatile (6). Un procédé de lecture dans une mémoire non-volatile et un procédé mis en œuvre dans une entité électronique sont également décrits.

Description

Domaine technique auquel se rapporte l'invention
La présente invention concerne la protection des entités électroniques contre les attaques.
Elle concerne plus particulièrement un procédé d’écriture dans une mémoire non-volatile, un procédé de lecture dans une mémoire non-volatile et un procédé mis en œuvre dans une entité électronique. L’invention s’applique particulièrement avantageusement dans le cas où l’on souhaite garder trace des anomalies détectées lors des phases successives de fonctionnement de l’entité électronique.
Arriere-plan technologique
On connaît par exemple du document EP 2 860 669 un procédé d’écriture dans une mémoire non-volatile d’une entité électronique, comprenant les étapes suivantes : - détection d’une anomalie de fonctionnement de l’entité électronique ; - en conséquence de ladite détection, écriture, à un emplacement d’une zone de la mémoire non-volatile, d’une donnée indicative de ladite détection d’anomalie.
Comme indiqué dans ce document, on garde ainsi en mémoire non-volatile une trace des anomalies détectées lors des phases de fonctionnement antérieures de l’entité électronique.
On peut ainsi lire ultérieurement la zone susmentionnée de la mémoire non-volatile et mettre en œuvre éventuellement des fonctions de protection (telles que le blocage du fonctionnement de l’entité électronique ou l’effacement de certaines données mémorisées par l’entité électronique), par exemple lorsque les données mémorisées dans cette zone indiquent que le nombre d’anomalies détectées atteint un seuil prédéterminé.
On comprend dès lors que des attaquants cherchent à éviter l’écriture de la donnée indicative de détection d’anomalie, typiquement en coupant l’alimentation électrique de l’entité électronique.
En particulier, lorsque le processus d’écriture dans la mémoire non-volatile nécessite l’effacement de la page mémoire concernée avant ré-écriture de l’ensemble de la nouvelle page mémoire, la coupure de l’alimentation électrique par l’attaquant peut se produire au moment où la page mémoire est effacée, mais non encore ré-écrite.
Toutes les données de la page mémoire concernée auront alors une valeur d’effacement (en général une valeur nulle) et l’entité électronique aura alors perdu toute trace des anomalies détectées antérieurement.
Objet de l’invention
Dans ce contexte, la présente invention propose un procédé d’écriture tel que mentionné ci-dessus, caractérisé en ce que, préalablement à l’étape de détection, l’emplacement est initialisé avec une valeur distincte d’une valeur d’effacement de la mémoire non-volatile.
Ainsi, si on lit ultérieurement la valeur d’effacement dans cet emplacement, on saura que l’entité électronique est sortie du fonctionnement normal et on pourra alors mettre en œuvre les mesures de protection adéquate.
En effet, en fonctionnement normal et en l’absence d’anomalie, l’emplacement devrait toujours mémoriser la valeur à laquelle il a été initialisé (valeur de pré-initialisation), qui est distincte de la valeur d’effacement.
Selon des caractéristiques optionnelles et donc non limitatives : - la donnée indicative est obtenue par combinaison d’un code d’erreur et de ladite valeur distincte ; - la combinaison est réalisée au moyen d’une opération de "ou exclusif' ; - l’emplacement est initialisé à ladite valeur distincte avant la mise en service de l’entité électronique, par exemple lors de la fabrication de l’entité électronique ou lors d’une phase de personnalisation de l’entité électronique ; - le procédé comprend une étape de réception d’une donnée par une interface de communication ; - le procédé comprend une étape de traitement (par exemple de traitement cryptographique) de la donnée reçue ; - le traitement utilise une clé cryptographique mémorisée dans la mémoire non-volatile ; - le procédé comprend une étape de vérification d’un résultat obtenu par ledit traitement ; - ladite détection d’anomalie résulte d’un échec à l’étape de vérification ; - l’anomalie est détectée au moyen d’un détecteur d’attaque ; L’invention propose également un procédé de lecture dans une mémoire non-volatile d’une entité électronique, comprenant les étapes suivantes : - lecture d’une zone de la mémoire non-volatile destinée à mémoriser au moins une donnée indicative de détection d’anomalie ; - mise en œuvre d’une fonction de protection si aucune donnée lue ne vaut une valeur donnée (appelée dans la suite "valeur de pré-initialisation") distincte d’une valeur d’effacement de la mémoire non-volatile.
Le procédé peut comprendre une étape de réception d’une donnée par une interface de communication.
Par ailleurs, l’étape de lecture de ladite zone peut comprendre la lecture d’un octet de ladite zone.
Le traitement de la donnée peut alors être effectué si l’octet lu vaut ladite valeur donnée (valeur de pré-initialisation).
Le procédé peut comprendre une étape de combinaison d’un octet lu dans ladite zone et de ladite valeur donnée, combinaison réalisée par exemple au moyen d’une opération de "ou exclusif'. L’invention propose enfin un procédé mis en œuvre dans une entité électronique comprenant une mémoire non-volatile, comprenant les étapes suivantes : - initialisation d’un emplacement d’une zone de la mémoire non-volatile avec une valeur distincte d’une valeur d’effacement de la mémoire non-volatile ; - au cours d’une phase de fonctionnement postérieure à ladite initialisation, détection d’une anomalie de fonctionnement de l’entité électronique ; - en conséquence de ladite détection, écriture, dans ledit emplacement, d’une donnée indicative de ladite détection d’anomalie ; suite à un démarrage ultérieur du fonctionnement de l’entité électronique, lecture de ladite zone ; - mise en œuvre d’une fonction de protection si aucune donnée lue dans ladite zone ne vaut une ladite valeur distincte.
Lorsque l’entité électronique comprend un processeur (par exemple un microprocesseur), chacun des procédés décrits ci-dessus peut être mis en œuvre du fait de l’exécution, par le processeur, d’instructions de programme d’ordinateur mémorisées dans une mémoire de l’entité électronique (par exemple dans la mémoire non-volatile susmentionnée).
Description detaillee d’un exemple de réalisation
La description qui va suivre en regard des dessins annexés, donnés à titre d’exemples non limitatifs, fera bien comprendre en quoi consiste l’invention et comment elle peut être réalisée.
Sur les dessins annexés : - la figure 1 représente schématiquement les éléments principaux d’une entité électronique au sein de laquelle est mise en œuvre l’invention ; - la figure 2 représente un état d’une zone d’écriture sécuritaire, située en mémoire non volatile, lors de la mise en service de l’entité électronique de la figure 1 ; - la figure 3 est un logigramme présentant des étapes d’un procédé mis en œuvre au sein de l’entité électronique de la figure 1 ; - la figure 4 représente l’état de la zone d’écriture sécuritaire après détection d’une anomalie ; et - la figure 5 représente l’état de la zone d’écriture sécuritaire après effacement de la page mémoire contenant cette zone.
La figure 1 représente schématiquement les éléments principaux d’une entité électronique 1 au sein de laquelle est mise en œuvre l’invention.
Cette entité électronique 1 est par exemple une carte à microcircuit, telle qu’une carte à circuit intégré universelle (ou U ICC pour "Universal Integrated Circuit Card"). En variante, il pourrait s’agir d’un élément sécurisé (ou SE pour "Secure Elément') - par exemple un microcontrôleur sécurisé, d’un dispositif électronique portatif (ou "hand-held electronic device" selon l’appellation anglo-saxonne) - par exemple un terminal de communication ou un passeport électronique, ou d’un ordinateur. L’entité électronique 1 comprend un microprocesseur 2, une mémoire vive 4 et une mémoire non-volatile 6. L’entité électronique 1 pourrait éventuellement comprendre en outre une mémoire morte.
La mémoire non-volatile 6 est par exemple une mémoire non-volatile réinscriptible (par exemple de type EEPROM pour "Electrically Erasable and Programmable Read-Only Memory", ou de type Flash).
La mémoire vive 4 et la mémoire non-volatile 6 sont chacune liées au microprocesseur 2 de sorte que le microprocesseur 2 peut lire ou écrire des données dans chacune de ces mémoires.
Une de ces mémoires, par exemple la mémoire non-volatile 6, mémorise des instructions de programme d’ordinateur qui permettent la mise en œuvre au sein de l’entité électronique 1, d’un procédé (tel que par exemple le procédé décrit ci-dessous en référence à la figure 3) lorsque ces instructions sont exécutées par le microprocesseur 2.
Les mémoires 4, 6 mémorisent également des données représentatives de variables utilisées lors de la mise en œuvre de divers procédés de traitement de données, notamment le procédé décrit ci-dessous en référence à la figure 3.
La mémoire non-volatile 6 comprend en outre une zone d’écriture sécuritaire Z utilisée comme décrit plus bas.
Lors du démarrage du fonctionnement de l’entité électronique 1 (par exemple consécutivement à sa mise sous tension), le microprocesseur 2 lit les données mémorisées dans la zone d’écriture sécuritaire Z et peut sélectivement, selon les données lues, bloquer son fonctionnement ou poursuivre son fonctionnement, comme cela est expliqué ci-dessous.
Dans certains cas, le blocage du fonctionnement de l’entité électronique 1 peut être accompagné d’autres mesures de protection, par exemple l’effacement de certaines données au moins mémorisées dans la mémoire non-volatile 6. L’entité électronique 1 comprend en outre une interface de communication 8 avec des dispositifs électroniques externes. Dans le cas décrit ici où l’entité électronique 1 est une carte à microcircuit, l’interface de communication 8 comprend par exemple des contacts affleurant sur une face de la carte à microcircuit. En variante, l’interface de communication 8 pourrait être réalisée par un module de communication sans contact. De manière générale, l’interface de communication 8 peut être un module de communication (filaire ou sans fil) avec une autre entité électronique.
Comme décrit ci-dessous en référence à la figure 3, le microprocesseur 2 peut ainsi recevoir des données d en provenance de l’autre entité électronique via l’interface de communication 8, traiter ces données d au moyen d’un algorithme de traitement (par exemple un algorithme cryptographique) afin d’obtenir un résultat r, et émettre ce résultat r à destination de l’autre entité électronique via l’interface de communication 8. L’entité électronique 1 comprend également un détecteur d’attaque 10 ; un tel détecteur d’attaque 10 est par exemple un capteur de lumière ou, en variante, un détecteur de perturbation dans l’alimentation électrique. De manière générale, il s’agit d’un composant matériel conçu pour détecter des attaques au cours desquels un attaquant cherche à provoquer une anomalie de fonctionnement de l’entité électronique, par exemple en dirigeant un rayonnement laser sur l’entité électronique 1 (attaque détectable au moyen du capteur de lumière précité) ou en perturbant l’alimentation électrique des composants au sein de l’entité électronique 1.
La figure 2 représente un état d’une zone d’écriture sécuritaire, située en mémoire non volatile, lors de la mise en service de l’entité électronique de la figure 1.
On prévoit en effet ici que, avant la mise en service de l’entité électronique 1 auprès de son utilisateur final (soit par exemple lors de la fabrication de l’entité électronique 1 ou lors d’une phase de personnalisation de l’entité électronique 1, au cours de laquelle des données sont inscrites dans la mémoire non-volatile 6), tous les octets de la zone d’écriture sécuritaire Z soient mis (par écriture dans la mémoire non-volatile 6) à une valeur prédéterminée I (ou valeur de pré-initialisation) distincte d’une valeur d’effacement de la mémoire non-volatile 6.
La valeur d’effacement de la mémoire non-volatile 6 est la valeur prise par un octet de la mémoire non-volatile 6 lorsque cet octet est effacé (cet effacement pouvant éventuellement provoquer l’effacement d’autres octets, par exemple l’effacement de l’ensemble des octets d’une page mémoire).
Ici, la valeur d’effacement est la valeur nulle (0x00 en hexadécimal) et la valeur de pré-initialisation I est donc non nulle (i.e. distincte de 0x00). Dans l’exemple représenté en figure 2, la valeur de pré-initialisation I vaut 0x55 (en hexadécimal).
La figure 3 représente, sous forme de logigramme, un exemple de procédé conforme à l’invention.
Ce procédé débute à l’étape E2 à laquelle l’entité électronique 1 est mise sous tension (par exemple du fait de sa connexion à une autre entité électronique telle qu’un lecteur de carte), ce qui entraîne le démarrage du microprocesseur 2 et l’initialisation du fonctionnement de l’entité électronique 1.
Comme déjà mentionné ci-dessus, dès son démarrage, le microprocesseur 2 consulte la zone d’écriture sécuritaire Z, comme décrit à présent.
Une variable n (mémorisée par exemple en mémoire vive 4) est tout d’abord remise à zéro à l’étape E4.
Le microprocesseur 2 lit alors l’octet Z[n] mémorisé, à l’emplacement référencé par la valeur courante de la variable n, dans la zone d’écriture sécuritaire Z, puis combine l’octet Z[n] lu et la valeur de pré-initialisation I au moyen d’une opération de "ou exclusif, ou XOR (étape E6). (Par exemple, si on note z l’adresse de la zone d’écriture sécuritaire Z, l’octet Z[n] lu est l’octet mémorisé à l’adresse z+n.)
Le résultat de la combinaison est mémorisé au sein d’une variable v : v = Z[n] XOR I.
Le microprocesseur 2 peut ainsi déterminer à l’étape E8 si la variable v vaut 0.
Si la variable v est nulle (flèche P à l’étape E8), ceci signifie que l’octet concerné (situé à l’emplacement n de la zone sécuritaire Z) n’a pas été modifié depuis la mise en service (i.e. l’octet lu Z[n] vaut la valeur de pré-initialisation I) et ne correspond pas à un code d’erreur (voir ci-dessous les étapes E22 et E28 à propos de l’écriture des codes d’erreur) et le fonctionnement de l’entité électronique 1 se poursuit donc normalement à l’étape E15 décrite ci-dessous.
Si la variable v n’est pas nulle (flèche N à l’étape E8), ceci signifie que l’octet concerné Z[n] (situé à l’emplacement n de la zone sécuritaire Z) a été modifié depuis la mise en service, soit parce qu’un code d’erreur y a été écrit (voir ci-dessous les étapes E22 et E28 à propos de l’écriture des codes d’erreur), soit parce que la page mémoire correspondante a été effacée (voir les explications données ci-dessous en référence à la figure 5).
Le microprocesseur 2 procède alors dans ce cas à l’incrémentation de la variable n (étape E10). La variable n représente donc le nombre d’octets lus dans la zone d’écriture sécuritaire Z qui correspondent à un code d’erreur (chaque code d’erreur étant indicatif d’une anomalie détectée depuis la mise en service de l’entité électronique 1, lors d’une phase antérieure de fonctionnement de cette entité électronique 1 ).
Le microprocesseur 2 détermine alors à l’étape E12 si la variable n (i.e. le nombre de codes d’erreur lus en zone d’écriture sécuritaire Z) atteint (suite à l’incrémentation de l’étape E10) un seuil prédéterminé S.
Dans l’affirmative (flèche P à l’étape E12), le microprocesseur 2 met en œuvre à l’étape E14 une fonction de protection, par exemple en bloquant le fonctionnement de l’entité électronique 1 et/ou en effaçant certaines données de la mémoire non-volatile 6. On remarque qu’en pratique, le blocage du fonctionnement de l’entité électronique 1 est par exemple réalisé par le microprocesseur 2 en exécutant une boucle sans fin.
Dans la négative (flèche N à l’étape E12), le fonctionnement boucle à l’étape E6 pour lecture de l’emplacement suivant dans la zone d’écriture sécuritaire Z.
Comme indiqué ci-dessus, dès lors qu’un octet lu dans la zone d’écriture sécuritaire Z (avant atteinte du seuil S) vaut la valeur d’initialisation I, le microprocesseur 2 vérifie à l’étape E8 que la variable v est nulle et le fonctionnement normal de l’entité électronique 1 se poursuit à l’étape E15 décrite à présent.
Le microprocesseur 2 reçoit à l’étape E15 des données d via l’interface de communication 8 en provenance de l’autre entité électronique à laquelle l’entité électronique 1 est connectée (voir l’étape E2 ci-dessus).
Le microprocesseur 2 procède alors à l’étape E16 au traitement des données reçues d. Un tel traitement est par exemple l’application aux données d d’un algorithme cryptographique utilisant une clé cryptographique mémorisée dans la mémoire non-volatile 6.
On désigne par r les données obtenues par le traitement de l’étape E16 : r = F(d), où F est la fonction mise en œuvre par le traitement de l’étape E16.
On prévoit ici en outre de réitérer à l’étape E18 le traitement effectué à l’étape E16 pour s’assurer que ce traitement a été réalisé sans anomalie.
Autrement dit, le microprocesseur effectue à l’étape E18 un traitement identique à celui effectué à l’étape E16 (ici l’application aux données d de l’algorithme cryptographique susmentionné utilisant la clé cryptographique précitée).
On désigne par r’ les données obtenues par le traitement de l’étape E18 : r' = F(d).
En fonctionnement normal, les données r et les données r’ sont identiques ; ce n’est pas le cas en revanche si une anomalie s’est produite au cours de l’étape E16 ou de l’étape E18 (anomalie qui peut être générée par une attaque par faute).
On teste ainsi à l’étape E20 si les données r et les données f sont identiques.
On remarque qu’en variante, la réitération du traitement de l’étape E16 (étape E18) pourrait être remplacée par l’application aux données r du traitement inverse de celui effectué à l’étape E16 ; les données d’ainsi obtenues (d’ = F'1(r)) sont dans ce cas comparées aux données d (en remplacement du test de l’étape E20) pour vérification du fonctionnement normal. S’il est déterminé à l’étape E20 que les données r et les données f sont identiques (flèche P), le procédé se poursuit ensuite à l’étape E26 décrite plus bas. S’il est déterminée à l’étape E20 que les données r et les données f ne sont pas identiques (ce qui est le cas si une anomalie s’est produit au cours de l’étape E16 ou de l’étape E18), le microprocesseur 2 commande l’écriture, dans l’emplacement Z[n] de la zone d’écriture sécuritaire Z désigné par la variable n, d’une valeur égale à un premier code d’erreur ERR1 (représentatif d’un premier type d’erreur) combiné avec la valeur d’initialisation I par une opération de "ou exclusif' ou XOR (étape E22) : Z[n] = ERR1 XOR I.
Le microprocesseur 2 incrémente alors à l’étape E24 la variable n (qui représente le nombre d’anomalies détectées), ce qui implique en outre que la variable n désigne l’octet suivant dans la zone d’écriture sécuritaire Z.
Le procédé se poursuit à l’étape E26 à laquelle le microprocesseur 2 détermine si une attaque a été détectée par le détecteur d’attaque 10.
Dans la négative (flèche N), le procédé se poursuit à l’étape E32 décrite plus bas.
Dans l’affirmative (flèche P), le microprocesseur 2 commande l’écriture, dans l’emplacement Z[N] de la zone d’écriture sécuritaire Z désigné par la variable n, d’une valeur égale à un second code d’erreur ERR2 (représentatif d’un second type d’erreur) combiné avec la valeur d’initialisation I par une opération de "ou exclusif' ou XOR (étape E28) : Z[n] = ERR2 XOR I.
Le microprocesseur 2 incrémente alors la variable n (étape E30). Les remarques faites ci-dessus à propos de l’étape E24 s’appliquent également ici.
On remarque que, dans certains modes de réalisation, on peut prévoir de comparer la variable n au seuil prédéterminé S après incrémentation à l’étape E24 et à l’étape E30, et de mettre en œuvre une fonction de protection (comme décrit ci-dessus à l’étape E14) si la variable n atteint le seuil S.
Lorsqu’une telle fonction de protection n’est pas exécutée, le procédé se poursuit à l’étape E32 par l’émission, via l’interface de communication 8 et à destination de l’autre entité électronique, du résultat r obtenu à l’étape E16.
Ceci met fin au traitement de la donnée d par l’entité électronique 1.
La figure 4 représente l’état de la zone d’écriture sécuritaire Z après détection d’une anomalie.
On considère dans cet exemple qu’une seule anomalie a été détectée depuis la mise en service de l’entité électronique 1, avec un code d’erreur ERR associé égal à OxEE (en hexadécimal).
Ainsi, lors d’un précédent passage à l’étape E22 ou E28, le microprocesseur 2 a commandé l’écriture, à l’emplacement Z[0] (premier emplacement, à gauche en figure 4) de la zone sécuritaire Z, de la valeur : ERR XOR I = OxEE XOR 0x55 = OxBB.
Les autres emplacements de la zone d’écriture sécuritaire Z sont en revanche inchangés depuis leur pré-initialisation à la valeur de de pré-initialisation I (ici 0x55).
Lorsque l’entité électronique 1 s’initialise (étape E2) avec une zone d’écriture sécuritaire Z comme monté en figure 4, la variable v est non-nulle lors du premier passage l’étape E8 et la variable n est donc incrémenté à 1 à l’étape E10. En revanche, lors du second passage à l’étape E8, la variable v est nulle (le second octet Z[1] de la zone d’écriture sécuritaire Z étant égal à la valeur d’initialisation I) et le procédé se poursuit donc normalement aux étapes E15 et suivantes.
La figure 5 représente l’état de la zone d’écriture sécuritaire Z après effacement de la page mémoire contenant cette zone Z, par exemple en cas de coupure de l’alimentation (provoquée dans certains cas par un attaquant, par exemple par arrachement de l’entité électronique 1 d’un lecteur) au cours d’un processus d’effacement et ré-écriture de cette page mémoire.
Comme visible en figure 5, tous les octets de la zone d’écriture sécuritaire Z ont alors la valeur d’effacement (ici la valeur nulle 0x00).
Dans un tel cas, suite à une initialisation de l’entité électronique 1 à l’étape E2, la variable v est non-nulle à chaque passage à l’étape E8. En effet, du fait que la valeur de pré-initialisation I est distincte de la valeur d’effacement (lue dans chaque octet de la zone Z dans le cas présent), la variable v calculée à l’étape E6 n’est jamais nulle.
Par conséquent, la variable n est systématiquement incrémentée après chaque lecture d’un octet Z[n] dans la zone d’écriture sécuritaire Z, jusqu’à atteindre le seuil S, ce qui entraîne la mise en œuvre de la fonction de protection à l’étape E14.
Dans les exemples décrits ci-dessus, les données (telles que les codes d’erreur ERR1, ERR2) sont combinées avec la valeur de pré-initialisation I au moyen d’un "ou exclusif' (ou XOR, ou encore somme booléenne) avant écriture dans la zone sécuritaire Z (étapes E22 et E28) ; de façon symétrique, après lecture dans la zone sécuritaire Z, les données lues sont combinées avec la valeur de pré-initialisation I au moyen d’un "ou exclusif', ce qui permet de retrouver la valeur initiale de la donnée (par exemple ERR1 ou ERR2).
En variante, on pourrait utiliser une autre opération de combinaison des données et de la valeur de pré-initialisation.
Si on écrit de manière générale Gi(X) l’opération utilisée pour combiner une donnée X et la valeur de pré-initialisation I avant écriture (Le. la valeur Gi(X) est écrite dans la zone d’écriture sécuritaire), on combine la valeur lue Y au moyen de l’opération inverse : l’opération Gf1(Y) permet de retrouver la donnée X.
On peut ainsi utiliser en variante des exemples décrits ci-dessus :
Gi(X) = X + I mod 256 et Gf1(Y) = Y - I mod 256, où mod désigne l’opérateur modulo. (On remarque que dans l’exemple décrit ci-dessus, Gi(X) = X XOR I et Gr1(Y) = Y XOR I.)

Claims (13)

  1. REVENDICATIONS
    1. Procédé d’écriture dans une mémoire non-volatile (6) d’une entité électronique (1), comprenant les étapes suivantes : - détection (E20 ; E26) d’une anomalie de fonctionnement de l’entité électronique (1) ; - en conséquence de ladite détection, écriture (E22 ; E28), à un emplacement (Z[n]) d’une zone (Z) de la mémoire non-volatile (6), d’une donnée indicative de ladite détection d’anomalie, caractérisé en ce que, préalablement à l’étape de détection, l’emplacement (Z[n]) est initialisé avec une valeur (0x55 ; I) distincte d’une valeur d’effacement (0x00) de la mémoire non-volatile (6).
  2. 2. Procédé d’écriture selon la revendication 1, dans lequel la donnée indicative est obtenue par combinaison d’un code d’erreur (ERR1 ; ERR2) et de ladite valeur distincte (I).
  3. 3. Procédé d’écriture selon la revendication 2, dans lequel la combinaison est réalisée au moyen d’une opération de "ou exclusif'.
  4. 4. Procédé d’écriture selon l’une des revendications 1 à 3, dans lequel l’emplacement (Z[n]) est initialisé à ladite valeur distincte (0x55 ; I) avant la mise en service de l’entité électronique (1).
  5. 5. Procédé d’écriture selon l’une des revendications 1 à 4, comprenant les étapes suivantes : - réception (E15) d’une donnée (d) par une interface de communication (8); - traitement (E16) de la donnée (d) reçue.
  6. 6. Procédé d’écriture selon la revendication 5, dans lequel le traitement (E16) utilise une clé cryptographique mémorisée dans la mémoire non-volatile (6).
  7. 7. Procédé d’écriture selon la revendication 5 ou 6, comprenant une étape de vérification (E20) d’un résultat (r) obtenu par ledit traitement (E16), ladite détection d’anomalie résultant d’un échec à l’étape de vérification (E20).
  8. 8. Procédé d’écriture selon l’une des revendications 1 à 6, dans lequel l’anomalie est détectée au moyen d’un détecteur d’attaque (10).
  9. 9. Procédé de lecture dans une mémoire non-volatile (6) d’une entité électronique (1), comprenant les étapes suivantes : - lecture (E6) d’une zone (Z) de la mémoire non-volatile (6) destinée à mémoriser au moins une donnée indicative de détection d’anomalie ; - mise en œuvre d’une fonction de protection (E14) si aucune donnée lue ne vaut une valeur donnée (I) distincte d’une valeur d’effacement (0x00) de la mémoire non-volatile (6).
  10. 10. Procédé de lecture selon la revendication 9, comprenant une étape de réception d’une donnée (d) par une interface de communication (8), dans lequel l’étape de lecture de ladite zone comprend la lecture (E6) d’un octet Z[n] de ladite zone Z et dans lequel un traitement (E16) de la donnée (d) est effectué si l’octet lu Z[n] vaut ladite valeur donnée (I).
  11. 11. Procédé de lecture selon la revendication 9 ou 10, comprenant une étape de combinaison (E6) d’un octet lu (Z[n]) dans ladite zone (Z) et de ladite valeur donnée (I).
  12. 12. Procédé de lecture selon la revendication 11, dans lequel la combinaison est réalisée au moyen d’une opération de "ou exclusif.
  13. 13. Procédé mis en œuvre dans une entité électronique (1) comprenant une mémoire non-volatile (6), comprenant les étapes suivantes : - initialisation d’un emplacement (Z[n]) d’une zone (Z) de la mémoire non-volatile (6) avec une valeur (I) distincte d’une valeur d’effacement (0x00) de la mémoire non-volatile (6) ; - au cours d’une phase de fonctionnement postérieure à ladite initialisation, détection (E20 ; E26) d’une anomalie de fonctionnement de l’entité électronique (1) ; - en conséquence de ladite détection, écriture (E22 ; E28), dans ledit emplacement (Z[n]), d’une donnée indicative de ladite détection d’anomalie ; suite à un démarrage ultérieur du fonctionnement de l’entité électronique (1), lecture de ladite zone (Z) ; - mise en œuvre d’une fonction de protection (E14) si aucune donnée lue dans ladite zone (Z) ne vaut ladite valeur distincte (I).
FR1562687A 2015-12-17 2015-12-17 Procede d'ecriture dans une memoire non-volatile, procede de lecture dans une memoire non-volatile et procede mis en œuvre dans une entite electronique Active FR3045862B1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR1562687A FR3045862B1 (fr) 2015-12-17 2015-12-17 Procede d'ecriture dans une memoire non-volatile, procede de lecture dans une memoire non-volatile et procede mis en œuvre dans une entite electronique

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1562687A FR3045862B1 (fr) 2015-12-17 2015-12-17 Procede d'ecriture dans une memoire non-volatile, procede de lecture dans une memoire non-volatile et procede mis en œuvre dans une entite electronique
FR1562687 2015-12-17

Publications (2)

Publication Number Publication Date
FR3045862A1 true FR3045862A1 (fr) 2017-06-23
FR3045862B1 FR3045862B1 (fr) 2018-02-02

Family

ID=55948884

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1562687A Active FR3045862B1 (fr) 2015-12-17 2015-12-17 Procede d'ecriture dans une memoire non-volatile, procede de lecture dans une memoire non-volatile et procede mis en œuvre dans une entite electronique

Country Status (1)

Country Link
FR (1) FR3045862B1 (fr)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2164031A1 (fr) * 2008-09-11 2010-03-17 Oberthur Technologies Procédé et dispositif de protection d'un microcircuit contre des attaques
EP2860669A1 (fr) * 2013-10-09 2015-04-15 Oberthur Technologies Procédé mis en oeuvre dans un microcircuit et dispositif associé

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2164031A1 (fr) * 2008-09-11 2010-03-17 Oberthur Technologies Procédé et dispositif de protection d'un microcircuit contre des attaques
EP2860669A1 (fr) * 2013-10-09 2015-04-15 Oberthur Technologies Procédé mis en oeuvre dans un microcircuit et dispositif associé

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
COLIN WALLS: "Data storage in non-volatile memory | Embedded", 14 September 2015 (2015-09-14), XP055300064, Retrieved from the Internet <URL:https://web.archive.org/web/20150914071121/http://www.embedded.com/design/system-integration/4437690/Data-storage-in-non-volatile-memory-> [retrieved on 20160906] *

Also Published As

Publication number Publication date
FR3045862B1 (fr) 2018-02-02

Similar Documents

Publication Publication Date Title
EP2164031B1 (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
CA2575143C (fr) Procede et dispositif de traitement de donnees
EP2280364A1 (fr) Détecteur d&#39;injection de fautes dans un circuit intégré
FR2879320A1 (fr) Carte a puce a circuit integre et procede pour detecter si des donnees en memoire dans une telle carte ont ete compromises
EP3391228B1 (fr) Procédé d&#39;écriture dans une mémoire non-volatile d&#39;une entité électronique et entité électronique associée
EP3441902B1 (fr) Procédé de protection d&#39;un dispositif électronique contre des attaques par injection de faute
FR3045862A1 (fr) Procede d&#39;ecriture dans une memoire non-volatile, procede de lecture dans une memoire non-volatile et procede mis en œuvre dans une entite electronique
WO2007010009A2 (fr) Integrite materielle permanente des donnees
EP2860668B1 (fr) Procédé et dispositif de réalisation de fonction par un microcircuit
EP3032451B1 (fr) Procédé d&#39;exécution d&#39;un programme par un processeur et entité électronique comportant un tel processeur
EP2860669B1 (fr) Procédé mis en oeuvre dans un microcircuit et dispositif associé
EP3493182B1 (fr) Procédé et dispositif de traitement cryptographique de données
EP2343663A1 (fr) Procédé de protection polymorphe d&#39;un code exécutable
EP2630605B1 (fr) Procede de securisation de l&#39;execution d&#39;un code informatique par redondance dynamique
FR3045858A1 (fr) Procede de chargement d’une sequence de codes d’instruction, procede d’execution d’une sequence de codes d’instruction, procede mis en oeuvre dans une entite electronique et entites electroniques associees
FR3011650A1 (fr) Procede et dispositif de realisation de fonction par un microcircuit
FR3080474A1 (fr) Procede de controle de commandes mis en oeuvre par un dispositif tel qu&#39;une carte a puce, et dispositif.
FR3082333A1 (fr) Procede de determination d’inverse modulaire et dispositif de traitement cryptographique associe
WO2006029960A1 (fr) Procede et dispositif de mise a jour d&#39;une graine etablie par une fonction deterministe dans un dispositif de communication a traitement numerique
WO2016097637A1 (fr) Procede de securisation d&#39;un code pin avec des compteurs d&#39;erreurs dans une carte a puce
WO2007099164A1 (fr) Procede de securisation de l&#39;execution d&#39;une suite d&#39;etapes logiquement enchainees

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20170623

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 5

CA Change of address

Effective date: 20200826

CJ Change in legal form

Effective date: 20200826

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9