FR2933791A1 - Procede de verification de l'integralite d'une memoire eeprom - Google Patents

Procede de verification de l'integralite d'une memoire eeprom Download PDF

Info

Publication number
FR2933791A1
FR2933791A1 FR0803875A FR0803875A FR2933791A1 FR 2933791 A1 FR2933791 A1 FR 2933791A1 FR 0803875 A FR0803875 A FR 0803875A FR 0803875 A FR0803875 A FR 0803875A FR 2933791 A1 FR2933791 A1 FR 2933791A1
Authority
FR
France
Prior art keywords
memory
integrity
groups
verification
group
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
FR0803875A
Other languages
English (en)
Other versions
FR2933791B1 (fr
Inventor
Eric Vetillard
Axelle Apvrille
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.)
TRUSTONIC, FR
Original Assignee
Trusted Logic 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 Trusted Logic SAS filed Critical Trusted Logic SAS
Priority to FR0803875A priority Critical patent/FR2933791B1/fr
Publication of FR2933791A1 publication Critical patent/FR2933791A1/fr
Application granted granted Critical
Publication of FR2933791B1 publication Critical patent/FR2933791B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

L'invention concerne un procédé de vérification de l'intégrité d'une mémoire EEPROM d'un système embarqué, dans laquelle sont stockées des données, ainsi qu'un système embarqué correspondant. Le procédé selon l'invention se caractérise en ce qu'il comporte les étapes suivantes selon lesquelles : la mémoire est divisée en une pluralité de groupes d'adresses physiques de la mémoire ; on effectue un cycle d'une pluralité de points de vérification, chaque point de vérification comprenant une étape de sélection d'un groupe puis de vérification de l'intégrité du groupe sélectionné, selon lequel chaque groupe est sélectionné selon une fonction de sélection garantissant que tous les groupes soient sélectionnés au bout d'un cycle de vérifications ; puis, pour chaque groupe sélectionné, on vérifie l'intégrité dudit groupe, les point de vérification étant étalés dans le temps. L'invention s'applique en particulier à la vérification de l'intégrité de mémoires EEPROM de systèmes embarqués disposant de faibles ressources matérielles.

Description

PROCEDE DE VERIFICATION DE L'INTEGRITE D'UNE MEMOIRE EEPROM
L'invention concerne un procédé de vérification de l'intégrité d'une mémoire non volatile électriquement effaçable et programmable (EEPROM) ainsi qu'un système pour la mise en oeuvre de ce procédé. Elle concerne plus particulièrement un tel procédé, mis en oeuvre par un système embarqué dans lequel la mémoire EEPROM est une mémoire Flash. La mémoire Flash est une mémoire EEPROM très prisée dans les systèmes embarqués, notamment du fait de sa faible consommation en courant électrique, de sa résistance aux chocs, de ses propriétés de réinscriptibilité, ainsi que de sa capacité relativement importante pour le stockage de données. De ce fait, les mémoires Flash sont aujourd'hui couramment utilisées dans les systèmes embarqués portatifs tels que les téléphones mobiles, les clés USB, les lecteurs dits MP3, les appareils photographiques, les assistants personnels digitaux (PDAs) et les cartes à puce. L'intégrité de chacun des composants des systèmes embarqués est bien souvent vérifiée au cours de l'initialisation desdits systèmes, ou au cours de leur personnalisation. Cette pratique est systématique pour les systèmes qui implémentent un amorçage sécurisé tel que préconisé par dans la technologie dite <z Trusted Computing notamment promue par le Trusted Computing GroupîM. Par ailleurs, des vérifications partielles peuvent également être effectuées lors du lancement d'une application sensible, afin de vérifier l'intégrité du code de cette application, ou des données qu'elle utilise. L'augmentation de la taille des mémoires Flash embarquées font de cette vérification d'intégrité un processus long qui pénalise trop lourdement le démarrage du système, ou alors, son fonctionnement, lorsque cette vérification est réalisée après le démarrage du système. C'est la raison pour laquelle les fabricants de systèmes embarqués n'effectuent généralement pas cette vérification. Il peut cependant en résulter des problèmes graves de sécurité et de fonctionnement des systèmes. Pour pallier à cette lacune, il a été proposé de réduire la taille de la mémoire à vérifier, de manière à ce que le temps de vérification puisse être acceptable. C'est le cas par exemple des systèmes dits à amorce ou initialisation sécurisée (secure bootstrap) tels que divulgués dans le document brevet publié sous le numéro US-6,185,678. Dans de tels systèmes, seule l'intégrité d'un premier chaînon d'une amorce modifiée du système est finalement vérifiée. C'est le cas en outre de certains systèmes de vérification d'intégrité proposés dans des consoles de jeux et divulgués en particulier dans le document brevet publié sous le numéro US-4,727,544. Dans ces systèmes, une mémoire EPROM de la console contient un algorithme de vérification de sommes de contrôle (checksums). Les autres mémoires EPROM contiennent leur propre code et un checksum. La vérification consiste à vérifier uniquement l'intégrité de la mémoire EPROM contenant l'algorithme de vérification de checksum. Les autres EPROM ne sont pas vérifiées. Par ailleurs, l'homme du métier pourrait également envisager d'implémenter un système de vérification partiel de la mémoire basé sur la méthode proposée dans le document brevet publié sous le numéros WO2005054847. Toutefois, dans ce cas, la sécurité ne serait pas totale, compte tenu du fait que seule l'intégrité de certaines portions de mémoire sont vérifiées et donc garanties. Il en irait de même en ce qui concerne le système proposé dans la demande de brevet déposée en France sous le numéro 07 09024, et qui n'est pas publiée au jour de dépôt de la présente demande de brevet.
On notera par ailleurs que la vérification ponctuelle d'une mémoire EEPROM constitue une problématique différente de la vérification de mémoires volatiles notamment du type dynamique. Dans le premier cas, on cherche à garantir que toute la mémoire est intègre à un instant donné bien identifié, notamment au démarrage du système ou lors de la personnalisation de celui-ci. Dans le second cas, on cherche à garantir que des portions de mémoire en cours d'écriture ou de lecture sont intègres.
Ainsi, le document SoftECC: A system for Software Integrity Checking , Septembre 2005, Dave Dopson, divulgue un système de vérification de l'intégrité des données contenues dans des pages continues d'une mémoire de type DRAM. Schématiquement, le système enseigné dans ce document consiste à introduire de manière suffisamment régulière des points de vérification d'intégrité entre plusieurs lectures et écritures de pages. Dès que l'application SoftECC a la main, elle vérifie l'intégrité de quelques pages. Les pages qui font l'objet de nombreuses lectures/écritures sont les plus souvent vérifiées. Au contraire, les pages qui ne sont pas accédées, c'est-à-dire les pages dites trapall , ne font pas l'objet d'une vérification. Ce procédé ne vérifie donc pas l'intégrité de toute la mémoire. Le degré de sécurité obtenu n'est que relatif, étant donné qu'au bout d'un cycle de vérifications, le contenu des pages a changé tellement de fois qu'il n'est pas possible d'être certain de l'intégrité de la mémoire. Compte tenu de ce qui précède, un problème que se 35 propose de résoudre l'invention est de réaliser un procédé de vérification de l'intégrité d'une mémoire EEPROM, en particulier d'une mémoire Flash, dans un système embarqué, qui garantisse une intégrité totale ou pratiquement totale de cette mémoire.
La solution de l'invention à ce problème posé a pour premier objet un procédé de vérification de l'intégrité d'une mémoire EEPROM d'un système embarqué, dans laquelle sont stockées des données, caractérisé en ce qu'il comporte les étapes suivantes selon lesquelles : la mémoire est divisée en une pluralité de groupes d'adresses physiques de la mémoire ; on effectue un cycle d'une pluralité de points de vérifications, chaque point de vérification comprenant une étape de sélection d'un groupes puis une étape de vérification de l'intégrité du groupe sélectionné, selon lequel : chaque groupe de la pluralité de groupes est sélectionné selon une fonction de sélection des groupes, cette fonction de sélection garantissant que tous les groupes soient sélectionnés au bout d'un cycle de vérifications ; puis pour chaque groupe sélectionné, on vérifie l'intégrité dudit groupe contre une valeur de contrôle, les points de vérification étant étalés dans le temps, de sorte qu'il s'écoule, entre lesdits points, des intervalles de temps au cours desquels le système est susceptible d'exécuter des actions diverses, l'intégrité de la mémoire étant déduite de la vérification de tous les groupes, à l'issue d'un cycle de 30 vérifications. Elle a pour second objet un système embarqué comprenant une mémoire EEPROM dans laquelle sont stockées des données, caractérisé en ce que la mémoire est divisée en une pluralité de groupes d'adresses physiques de la 35 mémoire, en ce que ledit système comporte une fonction de sélection des groupes garantissant que tous les groupes soient sélectionnés au bout d'un cycle d'une pluralité de points de vérification étalé dans le temps de sorte qu'il s'écoule, entre lesdits points, des intervalles de temps au cours desquels le système est susceptible d'exécuter des actions diverses, chaque point de vérification comprenant une étape de sélection d'un groupe puis une étape de vérification de l'intégrité du groupe sélectionné, et en ce qu'il comporte en outre des moyens pour vérifier l'intégrité d'un groupe sélectionné contre une valeur de contrôle, l'intégrité de la mémoire étant déduite de la vérification de l'intégrité de tous les groupes, à l'issue du cycle. De manière avantageuse, - l'intégralité de la mémoire est divisée en une pluralité de groupes de sorte que toute la mémoire soit vérifiée à l'issue d'un cycle de vérifications ; - les étapes de sélection des groupes puis de vérification de l'intégrité desdits groupes sont menées à des temps donnés dans lesquels la mémoire n'est pas ou peu accédée pour une écriture de données ; - les étapes de sélection des groupes puis de vérification de l'intégrité des données desdits groupes sont menées lors de l'initialisation et/ou de la personnalisation des systèmes embarqués ; - la mémoire EEPROM est une mémoire Flash ; - la fonction de sélection utilise un élément extérieur à la mémoire ; - l'élément extérieur à la mémoire est une horloge, un générateur de nombres aléatoires ou un compteur monotone ; - la fonction de sélection dépend de la valeur d'un indicateur de groupe stocké intrinsèquement à la mémoire ; - la fonction de sélection des groupes est choisie de manière que l'ordre dans lequel les groupes sont vérifiés ne soit pas prévisible ; - le nombre total de groupes est choisi en fonction des objectifs de sécurité à atteindre et en fonction de l'architecture de la mémoire ; - un au moins des intervalles de temps est non nul, et en ce que, dans cet intervalle de temps non nul, le système exécute ou a la possibilité d'exécuter des commandes qui ne concernent pas la vérification de l'intégrité de la mémoire ; - la fonction de sélection est définie de manière que la probabilité de vérification des groupes dont les données sont modifiées plus fréquemment soit supérieure à celle des groupes dont les données sont modifiées moins fréquemment ; - les valeurs de contrôle sont stockées dans la mémoire ou extérieurement à celle-ci. L'invention sera mieux comprise à la lecture de la description non limitative qui suit, et au regard des dessins annexés, dans lesquels : la figure 1 schématise différentes étapes du procédé 15 selon l'invention ; et la figure 2 illustre un exemple de mise en oeuvre de l'invention. L'invention a trait à des systèmes embarqués. Les systèmes embarqués visés dans la présente invention sont 20 des systèmes portatifs fabriqués en séries tels que des cartes à puce, y compris les modules d'identification abonnés (SIMs), des téléphones portables, des PDAs, des appareils photographiques ou des caméras, des clés USB, des lecteurs dits MP3 ou tous autres dispositifs 25 électroniques de dimensions réduites manipulant et stockant des données numériques. Les systèmes embarqués selon l'invention sont munis d'un processeur ou non. Ils comportent au moins une et parfois plusieurs mémoires. L'une des mémoires des 30 systèmes embarqués selon l'invention est une mémoire non volatile électriquement effaçable et programmable (EEPROM). Cette mémoire EEPROM est par exemple une mémoire Flash. La mémoire flash est notamment du type NOR ou du type NAND. Dans la mémoire Flash NOR, les temps 35 d'effacement et d'écriture des données sont relativement longs. Toutefois, cette mémoire possède une interface d'adressage permettant un accès aléatoire et rapide à n'importe quelle position dans la mémoire. Le stockage des données est généralement totalement sûr. Dans la mémoire Flash NAND, les temps d'effacement et d'écriture sont bien plus rapides que dans la mémoire Flash NOR. Toutefois, l'interface d'entrée/sortie: de cette mémoire n'autorise qu'un accès séquentiel aux données et le stockage des données présente un taux d'erreurs sensiblement supérieur à celui des mémoires Flash NOR. Les systèmes embarqués selon l'invention disposent bien souvent de ressources matérielles limitées, en comparaison des ressources dont disposent des ordinateurs personnels par exemple. De ce fait, les gains en temps de vérification d'intégrité des données stockées par ces systèmes sont particulièrement appréciables. Le procédé selon l'invention est un procédé de vérification de l'intégrité d'une mémoire EEPROM d'un système embarqué. Il s'agit donc généralement d'une vérification de l'intégrité de toute la mémoire et par suite de toutes les données contenues dans la mémoire EEPROM et non pas uniquement d'une vérification de l'intégrité d'une partie desdites données correspondant à une ou plusieurs portions de la mémoire.
Selon l'invention, la mémoire est divisée en une pluralité de groupes GO, G1, G2, ..., Gi, ...Gg-1, lesdits groupes comprenant l'ensemble des données stockées dans la mémoire. Autrement dit, la mémoire dont on souhaite vérifier l'intégrité est découpée en groupes d'adresses physiques de la mémoire, lesdits groupes correspondant à des portions de la mémoire généralement des groupes d'adresses physiques consécutives de la mémoire comportant ou non des données, les portions considérées regroupant classiquement une pluralité d'éléments mémoires, c'est-à-dire une pluralité de pages ou de secteurs de la mémoire. Le choix du nombre g de groupes Gi est généralement dicté par l'architecture de la mémoire, ainsi que par les objectifs de sécurité à atteindre. Ce nombre g est un nombre entier. Il est supérieur à 1. En pratique, il pourrait être compris entre 4 et 100 bien que cela ne soit pas limitatif. En ce qui concerne les objectifs de sécurité, on cherchera à limiter le nombre g de groupes afin d'augmenter la fréquence des vérifications de toute la mémoire, si le risque de sécurité considéré pour la mémoire est élevé. Ainsi, et par exemple, g pourrait alors être inférieur ou égal à 10. Par contre, si ce risque est plus faible, alors le nombre g de groupes pourrait être plus grand, par exemple compris entre 10 et 40. A l'opposé, si le risque est diffus, par exemple si l'objectif est de limiter la diffusion mass:_ve d'une attaque, un nombre élevé de groupes peut considérablement réduire le taux de réussite de l'attaque, avec un impact limité sur les performances. Le nombre g est ainsi choisi en fonction des objectifs de sécurité à atteindre. Par ailleurs, plusieurs types de contraintes architecturales sont susceptibles d'influer sur le choix du nombre de g de groupes. Certaines architectures mémoires sont susceptibles d'intégrer une fonction de vérification d'intégrité au niveau de chaque page mémoire, ou alors, de chaque bloc. D'autres architectures sont susceptibles de proposer des fonctions de lecture par blocs ou, au contraire, de restreindre les lectures consécutives sur une même page. Par exemple, si la mémoire M est une mémoire flash NAND, il est avantageux qu'un groupe Gi contienne un nombre entier de pages. Si la mémoire M est une mémoire Flash NOR, il est avantageux qu'un groupe contienne un nombre entier de blocs. Par exemple, si la mémoire M est une mémoire Flash NAND de 512 Mo, comprenant des pages de 4 ko, alors le nombre g de bloc pourrait avantageusement être égal à 128, car 512/4 = 128, chaque bloc comprenant 1000 pages.
Selon l'invention, tous les groupes Gi sont sélectionnés l'un après l'autre, mais pas nécessairement dans l'ordre, selon une fonction de sélection F des groupes, cette fonction de sélection garantissant que tous les groupes soient sélectionnés de manière récurrente ; puis, pour chaque groupe sélectionné, on vérifie l'intégrité dudit groupe, et par suite l'intégrité des données dudit groupe, contre une valeur de contrôle Ci. Lorsque l'intégrité des g groupes Gi a été vérifiée, alors un cycle de vérification est achevé et la mémoire est considérée comme intègre. En définitive, à chaque étape de vérification d'un groupe contre une valeur de contrôle, le pourcentage de confiance en l'intégrité de la mémoire EEPROM augmente. Par exemple, et ainsi que cela est schématisé à la figure 1, ce pourcentage sera de 25 % lorsque le premier des quatre groupes aura été vérifié à un temps t. Il sera de 50 % lorsque le second groupe aura été vérifié à un temps t+6. Puis il augmentera encore jusqu'à atteindre 100 % lorsque le quatrième et dernier groupe aura été vérifié au temps t+35, sauf si le contenu de la mémoire est modifié après par exemple t+25 car, dans ce cas, ce pourcentage de confiance ne sera que de 75 % et un nouveau cycle de vérification devrait être entrepris pour atteindre 100 %.
Les fonctions de sélection F sont de deux types. Certaines fonctions F utilisent un élément extérieur à la mémoire, tandis que d'autres fonctions F n'utilisent pas de tel élément extérieur. Si la fonction F utilise un élément extérieur à la 35 mémoire, alors cet élément extérieur peut être une horloge. En effet, dans le cas où le système embarqué dispose d'une horloge, il suffit de choisir la fonction de sélection comme étant fonction du temps donné par l'horloge. Par exemple, il est possible de définir la fonction suivante : F(t) = nombre de microsecondes écoulées modulo g On notera que cette fonction de sélection retourne l'index i du groupe Gi à vérifier. Au bout d'un certain temps, tous les groupes Gi sont vérifiés. Avec cette fonction, l'ordre dans lequel les groupes Gi sont vérifiés n'est pas facilement prévisible, ce qui interdit à un attaquant potentiel de déplacer un code malicieux avant une vérification du groupe comportant ce code. La fonction de sélection F peut en outre utiliser un aléa. En effet, si le système ne dispose pas d'horloge embarquée mais dispose d'un générateur de nombres aléatoires de bonne qualité, la fonction de sélection peut être dépendante de cet aléa. Par exemple, on peut définir la fonction de sélection comme étant : F(alea) = valeur aléatoire modulo cr Dans un autre exemple, on peut définir la fonction de sélection de manière non linéaire, afin d'augmenter la probabilité de vérification des groupes les plus sensibles. Dans un tel exemple, la fonction de sélection pourrait être : F(alea) = g - RACINE CARRE ((alea modulo g2)) La fonction de sélection F peut enfin utiliser un compteur monotone. En effet, dans le cas où le système embarqué dispose d'un compteur monotone, la fonction de sélection peut être définie comme dépendante des valeurs retournées par ce compteur monotone. Ainsi, la fonction peut être du type : F(valeur compteur) = valeur compteur modulo g On notera que la fonction retourne l'index i du 35 groupe Gi à vérifier. A chaque usage, la valeur du compteur monotone est incrémentée. Au bout d'un certain temps, tous les groupes Gi sont vérifiés. Grâce à cette fonction, l'ordre dans lequel les groupes Gi sont vérifiés est prévisible, ce qui permet de garantir la fréquence de vérification de ces groupes. Si la fonction de sélection n'utilise pas un élément extérieur à la mémoire, les groupes Gi à vérifier sont susceptibles d'être repérés par un indicateur stocké directement dans ladite mémoire M. Cette méthode présente l'avantage de ne pas utiliser de composant externe tel qu'une horloge ou un compteur monotone. Ainsi, dans chaque groupe Gi, on réserve au moins un bit, pour indiquer si le groupe doit être vérifié ou non. Par exemple, cet indicateur est un bit, appelé TC.
Lorsque TC = 0, alors le groupe ne doit pas être vérifié. Lorsque TC = 1, alors le groupe doit être vérifié. Si la mémoire M est une mémoire Flash NAND, alors le bit TC sera écrit dans la première page de chaque groupe. Par contre, si la mémoire M est une mémoire Flash NOR, alors le bit TC sera écrit dans le premier bloc de chaque groupe. Initialement, tous les groupes Gi sont écrits avec un bit TC égal 0, à l'exception du premier groupe G1, dans lequel le bit TC est égal à 1. Ensuite, chaque fois que l'on effectue une vérification, le bit TC est lu dans le début du groupe Gi. Si ce bit TC est à zéro, alors le bit TC du prochain groupe est lu, et ce , jusqu'à ce que l'on trouve un bit TC égal à 1. Pour le groupe pour lequel TC = 1, on vérifie le groupe, on écrit TC = .1 pour le groupe Gi+l, et on écrit TC = 0 pour le groupe Gi. Au bout de g vérifications, les g groupes Gi auront été vérifiés. Ce procédé impose donc la réservation d'un espace mémoire pour l'indicateur TC dans tous les groupes Gi ; une lecture d'au plus g débuts de groupes Gi pour la vérification de l'intégrité de la mémoire ; et une écriture dans deux groupes Gi à chaque vérification de l'intégrité d'un groupe. Ces restrictions sont généralement acceptables. On notera que, dans l'exemple ci-dessus, si l'on souhaite garantir l'authenticité de la valeur TC, par exemple pour éviter qu'un attaquant tente d'éviter la vérification d'un groupe Gi comportant des données non intègres, alors il est possible d'inclure la valeur du bit TC dans la signature de la valeur de contrôle Ci.
On notera que chaque groupe est sélectionné puis vérifié à des temps donnés dans lesquels la mémoire n'est pas ou peu accédée pour l'écriture de données voir pour la lecture de données, de sorte que la vérification de l'intégrité de la mémoire est distribuée ou étalée dans le temps. Les moments privilégiés dans lesquels les vérifications sont réalisées sont l'initialisation du système (boot) ou une phase de personnalisation. Ainsi, un cycle de vérifications se compose d'une pluralité de points de vérification. Entre chaque point de vérification s'écoule un intervalle de temps 5. Par exemple, après la sélection puis la vérification d'un groupe G1, et avant la sélection puis la vérification d'un groupe G2, il s'écoulera un temps 51. De même, après la sélection puis la vérification d'un groupe C;2, et avant la sélection puis la vérification d'un groupe G3, il s'écoulera un temps 62, et ainsi de suite. L'un au moins des intervalles de temps 51, 52, 53, ... est non nul. Les intervalles de temps 51, 52, 53, .... sont susceptibles d'être égaux ou non. Pendant les intervalles de temps, le système vaque à des occupations diverses, c'est-à-dire le système exécute des actions, des commandes ou des instructions qui ne concernent pas la vérification de l'intégrité de la mémoire. La valeur de contrôle Ci est une valeur permettant 35 de vérifier l'intégrité des données du groupe Gi. Cette valeur est par exemple un total de contrôle (checksum), une empreinte numérique (hash), un code d'authentification (MAC), une signature. Ces valeurs Ci sont susceptibles d'être stockées dans une autre mémoire du système embarqué, dans un autre espace de stockage, par exemple un espace dédié au stockage de données sensibles, ou alors, au sein même de chaque groupe Gi. Par exemple, ces valeurs pourraient être stockées à la suite de l'indicateur TC. Dans ce cas là, le système réserve donc pour chaque groupe Gi un espace permettant de contenir TC + Ci. On notera que certaines mémoires Flash disposent de zones particulières réservées au contrôle. Les valeurs de contrôle Ci sont susceptibles d'être stockées dans ces zones particulières réservées au contrôle. On notera par ailleurs que le choix de la solution de stockage des valeurs de contrôle Cl dépend à la fois du type de valeur de contrôle utilisé, des solutions techniques à disposition, et des hypothèses de sécurité.
Voici quelques exemples. Si on fait l'hypothèse qu'un attaquant peut modifier à volonté la mémoire à protéger, la protection de l'intégrité de la mémoire doit reposer sur un élément externe à cette mémoire. Cet élément peut être une autre mémoire, non modifiable par l'attaquant, dans laquelle on stocke soit directement les Ci, soit une valeur de contrôle comme clé publique de vérification des Ci, ou une zone de stockage de clé secrète, qui est alors utilisée dans le calcul d'un MAC.
Si on fait au contraire l'hypothèse qu'un attaquant ne peut modifier que très partiellement la mémoire à protéger, par exemple par injection de fautes, les contraintes sont moins fortes, et les valeurs de contrôle peuvent être stockées directement dans la mémoire à protéger.
On considère, à titre d'exemples de mise en œuvre de l'invention, une carte à puce comportant une mémoire flash de 256 ko occupés au moins en partie par le système logiciel de la carte, ou alors, une telle carte, comportant une mémoire flash de 512 ko dont 256 ko sont occupés au moins en partie par le système logiciel de la carte, le système logiciel faisant l'objet d'un contrôle d'intégrité selon l'invention en vue de pallier aux attaques localisées de la cartes.
Dans les cas précités, il est possible de choisir g = 8 et par suite de diviser les 256 ko de mémoire en 8 groupes et 32 ko Go, G1, ..., G8, en suivant les adresses physiques de la mémoire GO = 000000-007FFF, G1 = 008000-OOFFF, ..., ainsi que cela est montré à la figure 2. On peut ensuite définir une fonction de sélection F utilisant un générateur de nombres aléatoire de la carte, et qui considère que le code stocké dans les adresses basses est plus sensible, en utilisant la règle quadratique suivante : F(alea) = 8 - RACINE CARRE ((alea modulo 82)) Cette fonction garantit en effet une distribution non égale des vérifications, tout en garantissant par ailleurs que toutes les zones de la mémoire sont vérifiées de manière périodique. La probabilité que l'intégrité d'un groupe Gi soit vérifiée est alors approximativement la suivante : GO 23% G1 20% G2 17% G3 14 % G4 11 % G5 8% G6 5% G7 2% Etant donné la faible puissance de calcul d'une carte à puce, les valeurs Ci peuvent être considérées comme des contrôle de redondance cyclique qui opère sur 32 bits (CRC32). En effet, un tel contrôle permet un niveau de performance adéquat. On peut par exemple stocker Co dans une mémoire OTP, qui n'est pas modifiable après une écriture initiale, puis stocker Cl, C2, ..., C7 dans GO. Cette répartition des indiquée dans la figure 2. En définitive, on a selon l'invention, effectué une vérification de l'intégrité complète de la mémoire EEPROM, par étapes dans le temps. La vérification est donc distribuée ou étalée dans le temps. De ce fait, elle devient généralement acceptable pour des systèmes embarqués dont les ressources matérielles sont limitées.

Claims (14)

  1. REVENDICATIONS1. Procédé de vérification de l'intégrité d'une mémoire EEPROM d'un système embarqué, dans laquelle sont stockées des données, caractérisé en ce qu'il comporte les étapes suivantes selon lesquelles : la mémoire est divisée en une pluralité de groupes d'adresses physiques de la mémoire ; on effectue un cycle d'une pluralité de points de vérification, chaque point de vérification comprenant une étape de sélection d'un groupe puis une étape de vérification de l'intégrité du groupe sélectionné, selon lequel : chaque groupe de la pluralité de groupes est sélectionné selon une fonction de sélection des groupes, cette fonction de sélection garantissant que tous les groupes soient sélectionnés au bout d'un cycle de vérifications ; puis pour chaque groupe sélectionné, on vérifie l'intégrité dudit groupe contre une valeur de contrôle, les points de vérification étant étalés dans le temps, de sorte qu'il s'écoule, entre lesdits points, des intervalles de temps au cours desquels le système est susceptible d'exécuter des actions diverses, l'intégrité de la mémoire étant déduite de la vérification de tous les groupes, à l'issue d'un cycle de vérifications.
  2. 2. Procédé selon la revendication 1, caractérisé en ce que l'intégralité de la mémoire est divisée en une pluralité de groupes de sorte que toute la mémoire soit vérifiée à l'issue d'un cycle de vérifications.
  3. 3. Procédé selon l'une des revendications 1 ou 2, caractérisé en ce que les étapes de sélection des groupespuis de vérification de l'intégrité desdits groupes sont menées à des temps donnés dans lesquels la mémoire n'est pas ou peu accédée pour une écriture de données.
  4. 4. Procédé selon la revendication 3, caractérisé en ce que les étapes de sélection des groupes puis de vérification de l'intégrité des données desdits groupes sont menées lors de l'initialisation et/ou de la personnalisation des systèmes embarqués.
  5. 5. Procédé selon l'une des revendications précédentes, caractérisé en ce que la mémoire EEPROM est une mémoire Flash.
  6. 6. Procédé selon l'une des revendications précédentes, caractérisé en ce que la fonction de sélection utilise un élément extérieur à la mémoire.
  7. 7. Procédé selon la revendication 6, caractérisé en ce que l'élément extérieur à la mémoire est une horloge, un générateur de nombres aléatoires ou un compteur monotone.
  8. 8. Procédé selon l'une des revendications précédentes, caractérisé en ce que la fonction de sélection dépend de la valeur d'un indicateur de groupe stocké intrinsèquement à la mémoire.
  9. 9. Procédé selon l'une des revendications précédentes, caractérisé en ce que la fonction de sélection des groupes est choisie de manière que l'ordre dans lequel les groupes sont vérifiés ne soit pas prévisible.
  10. 10. Procédé selon l'une des revendications précédentes, caractérisé en ce que le nombre total de groupes est choisi en fonction des objectifs de sécurité à atteindre et en fonction de l'architecture de la mémoire.
  11. 11. Procédé selon l'une des revendications précédentes, caractérisé en ce que un au moiras des intervalles de temps est non nul, et en ce que, dans cet intervalle de temps non nul, le système exécute ou a la possibilité d'exécuter des commandes qui ne concernent pas la vérification de l'intégrité de la mémoire.
  12. 12. Procédé selon l'une précédentes, caractérisé en ce sélection est définie de manière vérification des groupes dont les plus fréquemment soit supérieure à des revendications que la fonction de que la probabilité de données sont modifiées celle des groupes dont les données sont modifiées moins fréquemment.
  13. 13. Procédé selon l'une des revendications précédentes, caractérisé en ce que les valeurs de contrôle sont stockées dans la mémoire ou extérieurement à celle-ci.
  14. 14. Système embarqué comprenant une mémoire EEPROM dans laquelle sont stockées des données, caractérisé en ce que la mémoire est d'adresses physiques système comporte une garantissant que tous bout d'un cycle d'une divisée en une pluralité de groupes de la mémoire, en ce que ledit fonction de sélection des groupes les groupes soient sélectionnés au pluralité de points de vérification étalés dans le lesdits points, temps de sorte qu'il s'écoule, des intervalles de temps au entre coursdesquels le système est susceptible d'exécuter des actions diverses, chaque point de vérification comprenant une étape de sélection d'un groupe puis une étape de vérification de l'intégrité du groupe sélectionné, et en ce qu'il comporte en outre des moyens pour vérifier l'intégrité d'un groupe sélectionné contre une valeur de contrôle, l'intégrité de la mémoire étant déduite de la vérification de l'intégrité de tous les groupes, à l'issue du cycle.
FR0803875A 2008-07-08 2008-07-08 Procede de verification de l'integralite d'une memoire eeprom Active FR2933791B1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR0803875A FR2933791B1 (fr) 2008-07-08 2008-07-08 Procede de verification de l'integralite d'une memoire eeprom

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0803875A FR2933791B1 (fr) 2008-07-08 2008-07-08 Procede de verification de l'integralite d'une memoire eeprom

Publications (2)

Publication Number Publication Date
FR2933791A1 true FR2933791A1 (fr) 2010-01-15
FR2933791B1 FR2933791B1 (fr) 2010-09-24

Family

ID=40298733

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0803875A Active FR2933791B1 (fr) 2008-07-08 2008-07-08 Procede de verification de l'integralite d'une memoire eeprom

Country Status (1)

Country Link
FR (1) FR2933791B1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9477549B2 (en) 2014-09-15 2016-10-25 Sandisk Technologies Llc Methods, systems, and computer readable media for address and data integrity checking in flash memory operations

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030023856A1 (en) * 2001-06-13 2003-01-30 Intertrust Technologies Corporation Software self-checking systems and methods
US20030055552A1 (en) * 2001-09-14 2003-03-20 Mark Akins Tamper detection for vehicle controller
GB2419979A (en) * 2004-11-04 2006-05-10 Sigmatel Inc System and method for reading non-volatile computer memory
EP1912148A1 (fr) * 2006-10-09 2008-04-16 Axalto S.A. Protection contre une attaque par canal latéral avec contrôle d'intégrité

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030023856A1 (en) * 2001-06-13 2003-01-30 Intertrust Technologies Corporation Software self-checking systems and methods
US20030055552A1 (en) * 2001-09-14 2003-03-20 Mark Akins Tamper detection for vehicle controller
GB2419979A (en) * 2004-11-04 2006-05-10 Sigmatel Inc System and method for reading non-volatile computer memory
EP1912148A1 (fr) * 2006-10-09 2008-04-16 Axalto S.A. Protection contre une attaque par canal latéral avec contrôle d'intégrité

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
DAVE DOPSON: "A System for Software Memory Integrity Checking", September 2005 (2005-09-01), XP002513750, Retrieved from the Internet <URL:http://pdos.csail.mit.edu/papers/softecc:ddopson-meng/softecc_ddopson-meng.pdf> [retrieved on 20090205] *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9477549B2 (en) 2014-09-15 2016-10-25 Sandisk Technologies Llc Methods, systems, and computer readable media for address and data integrity checking in flash memory operations

Also Published As

Publication number Publication date
FR2933791B1 (fr) 2010-09-24

Similar Documents

Publication Publication Date Title
EP2178016B1 (fr) Procédé de fonctionnement d&#39;un équipement embarqué, équipement associé et aéronef comprenant un tel équipement
EP1616242B1 (fr) Procede et dispositif pour controler l&#39;acces a un periferique
EP1605333B1 (fr) Contrôle de l&#39;exécution d&#39;un programme
EP1483673A1 (fr) Methode de stockage de blocs de donnees dans une memoire
EP1734536A1 (fr) Mémoire protégée contre des attaques par injection d&#39;erreur dans des signaux de sélection de cellules mémoire
EP2724237B1 (fr) Procédé de gestion de l&#39;endurance de mémoires non volatiles
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
EP1880387B1 (fr) Dispositif de protection d&#39;une memoire contre les attaques par injection d&#39;erreur
FR2933791A1 (fr) Procede de verification de l&#39;integralite d&#39;une memoire eeprom
FR2816731A1 (fr) Procede de chargement et de personnalisation des informations et programmes charges dans une carte a puce
EP2860660A1 (fr) Système et méthode de chargement sécurisé de données dans une mémoire cache associée à un processeur sécurisé
EP1436792B1 (fr) Protocole d&#39;authentification a verification d&#39;integrite de memoire
WO2009040204A1 (fr) Procede de generation de masques dans un objet communiquant et objet communiquant correspondant
EP1770524A2 (fr) Détection d&#39;erreur de séquencement dans l&#39;exécution d&#39;un programme
EP2252978B1 (fr) Carte a circuit integre ayant un programme d&#39;exploitation modifiable et procede de modification correspondant
WO2008096076A2 (fr) Systemes electroniques securises, procedes de securisation et utilisations de tels systemes
EP2383746B1 (fr) Procédé d&#39;écriture et de lecture dans une mémoire d&#39;atomicité
EP1547005B9 (fr) Carte à microcircuit dont les performances peuvent être modifiées après personnalisation
EP3360034A1 (fr) Procédé et système de sauvegarde répartie dynamique
EP4307143A1 (fr) Procede et circuit pour la verification de l&#39;integrite d&#39;un logiciel
FR3122753A1 (fr) Procédé d&#39;exécution d&#39;un code binaire par un microprocesseur
EP1650766B1 (fr) Procédé de gestion pour l&#39;effacement d&#39;une mémoire de type flash, et compteur électrique comprenant une mémoire de type flash
FR2856815A1 (fr) Procede d&#39;authentification de donnees contenues dans un objet a memoire
WO2002041235A2 (fr) Procede de verification avant activation d&#39;un programme charge dans une carte a puce
EP1763029A2 (fr) Protection d&#39;un contenu numérique sur un support physique

Legal Events

Date Code Title Description
TP Transmission of property

Owner name: TRUSTED LOGIC MOBILITY, FR

Effective date: 20120524

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9

PLFP Fee payment

Year of fee payment: 10

PLFP Fee payment

Year of fee payment: 11

PLFP Fee payment

Year of fee payment: 12

CA Change of address

Effective date: 20200217

CD Change of name or company name

Owner name: TRUSTONIC, FR

Effective date: 20200217

PLFP Fee payment

Year of fee payment: 13

PLFP Fee payment

Year of fee payment: 14

PLFP Fee payment

Year of fee payment: 15

PLFP Fee payment

Year of fee payment: 16

PLFP Fee payment

Year of fee payment: 17