Brevet FR2933791A1 — publié le 20100115

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 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.