Brevet FR2926903A1 — publié le 20090731

La présente invention concerne un procédé de gestion de données dans une mémoire telle qu'une mémoire volatile de type RAM (de l'anglais � Random Access Memory �, mémoire à accès aléatoire). Les programmes, et plus généralement toutes les données utiles à l'utilisateur d'un système informatique, sont habituellement stockés dans une mémoire non volati:_e du système informatique. Les programmes et les données sont chargés dans une mémoire volatile du système infor- matique préalablement à leur traitement par un processeur du système informatique. Après le chargement d'un pro-gramme dans la mémoire volatile du système informatique, le processeur lit et exécute successivement les différentes parties du programme. Il arrive que des pirates tentent de perturber :e fonctionnement normal d'un système informatique par exemple pour en prendre le contrôle ou accéder à des données secrètes. Modifier le programme pour y introduire des fonctions prédéterminées est généralement trop compliqué pour être réalisable dans le cadre d'un piratage. Pour arriver à leurs fins, les pirates modifient plus simple-ment un bit voire un octet du contenu de la mémoire volatile pour altérer le fonctionnement du programme et observer les réactions du système. Une telle modification peut également résulter des conditions environnementales, comme par exemple la présence d'un fort champ électromagnétique. Un but de l'invention est de fournir un moyen pour limiter l'impact d'une telle modification. A cet effet, on prévoit, selon l'invention, un procédé de gestion de données d'une mémoire, dans lequel les données sont enregistrées dans une pluralité de zones de la mémoire de telle manière que des données des différentes zones soient associées les unes aux autres par une relation mettant en oeuvre une fonction involutive et, 2 pour un nombre minimal de zones égal au nombre total de zones moins une, une valeur d'intégrité de chaque zone est calculée sur les données de la zone concernée et en-registrée dans la mémoire. Ainsi, la valeur d'intégrité de chaque zone per-met de vérifier si une des zones contenant une donnée a été modifiée et, le cas échéant, la relation permet de recalculer cette donnée à partir des autres données qui lui sont associées. De préférence, la fonction involutive est � ou exclusif � et / ou la valeur d'intégrité résulte d'une somme de contrôle. La fonction logique � ou exclusif � et le contrôle par redondance à partir d'une somme de contrôle 15 sont bien adaptés au procédé de l'invention. Selon un mode de mise en oeuvre particulier, les zones sont au nombre de trois, dont une première zone et une deuxième zone servent à l'enregistrement des données utilisateur et une troisième zone sert à l'enregistremen-: 20 de données constituant chacune un résultat d'une application de la relation à des données de la première zone et de la deuxième zone. Le nombre de zones est ainsi relativement faible de sorte que la gestion de la mémoire n'a que peu ou pas 25 d'influence notable sur les performances du système informatique. Pour une opération de lecture de donnée en mémoire, le procédé comprend les étapes de, lors d'une de-mande de transmission d'une donnée depuis la mémoire : 30 - rechercher les données associées et contrôler que la relation est vérifiée, - si oui, transmettre la donnée demandée, - sinon, vérifier l'intégrité d'une des zones aa moyen de la valeur d'intégrité correspondante et, si la 35 zone n'est pas intègre, recalculer la donnée correspon- 3 dante à partir de la relation ou, si la zone est intègre, vérifier l'intégrité d'une autre zone ; transmettre :La donnée demandée si la zone contenant la donnée demandée est intègre et transmettre la donnée calculée si la zone non intègre est la zone contenant la donnée demandée. Ainsi, à chaque opération de lecture d'une don-née, cette donnée et les données associées sont vérifiées au moins par le contrôle de la relation. Si la relation s'avère non vérifiée (c'est-à-dire inexacte), l'intégrité des zones contenant la donnée demandée et les données associées est vérifiée et, si une zone contenant une de ces données a été altérée, cette donnée est corrigée. De préférence, la première zone dont l'intégrité est vérifiée est la zone contenant la donnée à transmet:- tre. Ceci permet de ne pas retarder :La transmission de la donnée demandée. Pour une opération d'écriture en mémoire, le pro-cédé comprend les étapes de, lors d'une demande d'inscription d'une donnée dans la mémoire : - sélectionner une zone de la mémoire, y enregistrer la donnée et recalculer la valeur d'intégrité de cette zone, - associer à la donnée ainsi enregistrée des don- nées des autres zones en utilisant la relation. A chaque opération d'écriture d'une donnée dans une zone, des données des autres zones lui sont associées pour permettre à tout moment un contrôle et une correction de la donnée. Avantageusement alors, les zones sont organisées pour avoir des adresses relatives identiques et les dor.-nées associées figurent à la même adresse dans les différentes zones. Ceci facilite l'organisation et la gestion de la mémoire. D'autres caractéristiques et avantages de l'invention ressortiront à la lecture de la description qui suit d'un mode de mise en oeuvre particulier non :Limitatif de l'invention. Il sera fait référence aux dessins annexés, parmi lesquels : - la figure 1 représente schématiquement une mémoire pour la mise en oeuvre du procédé conforme à l'invention, - la figure 2 représente schématiquement une opé-ration de lecture de données en mémoire, - la figure 3 représente schématiquement une opération d'écriture de données en mémoire. En référence à la figure 1, le procédé de l'invention est ici décrit en relation avec la gestion d'une mémoire M, volatile de type RAM, d'un système informatique tel qu'un ordinateur comprenant, de façon classique, un processeur relié à la mémoire volatile et à une mémoire non volatile. La mémoire M est divisée en trois zones a, b, c qui ont des tailles identiques et qui sont organisées ici en pages ayant des adresses relatives identiques (chaque page constituant une zone). Les zones a et b sont destinées à contenir des données de l'utilisateur du système, comme les données r, s, u, v et la zone c est destinée à contenir des données de vérification, comme les données t, w. Les données figurant aux mêmes adresses dans chacune des zones a, b et c (adresses notées respectivement Za(X), Zb(X) et Zc(X) sur les figures 2 et 3) - c'est-à-dire les données r, s, t et u, v, w - sont associées par une relation mettant en oeuvre une fonction involutive. Plus précisément, chaque donnée de vérification est le résultat de l'application de la fonction involutive aux deux autres données qui lui sont associées. La fonction involutive retenue est la fonction logique � ou exclusif � symbolisée par l'opérateur xor. On rappelle que la fonction � ou exclusif � (comme toute fonction involutive) est cumulative et associative et permet : u xor v = w et u xor w = v et v 5 xor w = u de sorte qu'il est toujours possible de recalculer un des termes de la relation à partir des deux autres termes de la relation. Les zones a et b contiennent aussi chacune une valeur d'intégrité la et Ib respectivement. Chaque valeur d'intégrité est le résultat d'une somme de contrôle (couramment appelée par sa dénomination anglaise CHECKSUM et symbolisée ici par la lettre S) des données de la zone a, b concernée par la valeur d'intégrité. A titre d'exemple, pour n données ai mémorisées dans la zone b, on a : la = S (al_ agi_ an) = E Rotm (agi) pour i variant de 1 à n (où Hotu désigne une rotation binaire sur 32 bits). La somme de contrôle présente en outre la propriété suivante : S (al_ agi'_ an) = S (al_ agi_ an) - F(agi) + g (ai') où F et g sont des rotations binaires sur 32 bits. On comprend que l'on peut substituer une donnée ai' à une donnée ai et recalculer une nouvelle valeur d'intégrité à partir de la valeur d'intégrité mémorisée sans devoir recalculer la somme de contrôle sur toutes les données. Ceci permet d'accélérer les opérations d'écriture en mémoire. Une opération de lecture va maintenant être décrite en relation avec la figure 2. A la demande de transmission d'une donnée depuis la mémoire (étape 1), c'est-à-dire une demande de lecture de la donnée inscrite à l'adresse Za(X), débute l'étape de rechercher les données inscrites aux adresses Za(X) et Zb(X) (étapes 2 et 3) et de contrôler que la relation est vérifiée. Ce contrôle de la relation est réalisée en calcu- lant Za(X) xor Zb(X) (étape 4) et en comparant le résultat obtenu à la donnée inscrite à l'adresse Zc(X) (étape 5). Si le résultat est bien égal à Zc(X), la donnée enregistrée à l'adresse Za(X), par exemple r, est trans- mise (étape 6). Si tel n'est pas le cas, des vérifications complémentaires sont effectuées. L'intégrité de la zone a est vérifiée en recalcu- lant la somme de contrôle (étape 7) et en en comparant le résultat à la valeur d'intégrité la mémorisée (étape 8). Si la zone a n'est pas intègre, la donnée correspondante mémorisée à l'adresse Za(X) est recalculée (étape 9) à partir de la relation (Za(X) = Zc(X) xor Zb(X)) et la donnée Za(X) recalculée est transmise (étape 10). Si la zone a est intègre, l'intégrité d'une autre zone, ici la zone b est vérifiée. L'intégrité de la zone b est vérifiée en recalculant la somme de contrôle (étape 11) et en en comparant le résultat à la valeur d'intégrité lb mémorisée (étape 12). Si la zone b n'est pas intègre, la donnée correspondante mémorisée à l'adresse Zb(X) est recalculée (étape 13) c. partir de la relation (Zb(X) = Zc(X) xor Za(X)). La donnée Za(X) mémorisée est transmise (étape 14). Si la zone b est intègre, la donnée mémorisée à l'adresse Zc(X) est recalculée (étape 15) à partir de la relation (Zc(X) = Za(X) xor Zb(X)). Une opération d'écriture va maintenant être dé- crite en relation avec la figure 3. Lors d'une demande d'inscription d'une donnée x dans la mémoire (étape 20), une adresse est sélectionnée pour recevoir la donnée, ici l'adresse Za(X). La valeur d'intégrité la est lue (étape 21), la valeur F(Za(X)) en est soustraite (étape 22) et la valeur g(x) y est ajoutée (étape 23). Le résultat devient la nouvelle valeur d'intégrité la et est mémorisée (étape 24). La relation est alors appliquée à la donnée x et à la donnée Zb(X) (étape 25). Le résultat Zc(X) = a xor Zb(X) est mémorisé à l'adresse Zc (étape 26) et la donnée x est inscrite à l'adresse Za(X) (étape 27). Bien entendu, l'invention n'est pas limitée au mode de mise en oeuvre décrit mais englobe toute variante entrant dans le cadre de l'invention telle que définie par les revendications. La mémoire peut être organisée d'une manière différente de celle décrite, notamment en ce qui concerne le nombre de zones, l'adressage... La mémoire peu comporter d'autres zones non utilisées pour la mise en oeuvre du procédé de l'invention. Une valeur d'intégrité peut être associée à chacune des zones servant à la mise en oeuvre du procédé ou à un nombre minimal de zones au moins égal au nombre de zones servant à la mise en oeuvre du procédé moins une (s'il y a une zone non intègre et que les valeurs d'intégrité pu être testées pour toutes les zones sauf une, cette dernière zone est la zone non intègre). REVENDICATIONS 1. Procédé de gestion de données d'une mémoire, dans lequel les données sont enregistrées dans une plura- lité de zones de la mémoire de telle manière que des don-nées des différentes zones soient associées les unes aux autres par une relation mettant en oeuvre une fonction involutive et, pour un nombre minimal de zones égal à un nombre total de zones moins une, une valeur d'intégrité de chaque zone concernée est calculée sur les données de la zone concernée et est enregistrée dans la mémoire. 2. Procédé selon la revendication 1, dans lequel la fonction involutive est � ou exclusif �. 3. Procédé selon la revendication 1, dans lequel la valeur d'intégrité résulte d'une somme de contrôle. 4. Procédé selon la revendication 1, dans lequel les zones sont au nombre de trois, dont une première zone et une deuxième zone servent à l'enregistrement des don-nées utilisateur et une troisième zone sert à l'enregistrement de données constituant chacune un résultat d'une application de la relation à des données de la première zone et de la deuxième zone. 5. Procédé selon la revendication 1, dans lequel la mémoire est une mémoire volatile. 6. Procédé selon la revendication 1, comprenant les étapes de, lors d'une demande de transmission d'une donnée depuis la mémoire : - rechercher les données associées et contrôler que la relation est vérifiée, - si oui, transmettre la donnée demandée, - sinon, vérifier l'intégrité d'une des zones au moyen de la valeur d'intégrité correspondante et, si la zone n'est pas intègre, recalculer la donnée correspondante à partir de la relation ou, si la zone est intègre, vérifier l'intégrité d'une autre zone ; transmettre la 9 donnée demandée si la zone contenant la donnée demandée est intègre et transmettre la donnée calculée si la zone non intègre est la zone contenant la donnée demandée. 7. Procédé selon la revendication 6, dans lequel la première zone dont l'intégrité est vérifiée est la zone contenant la donnée à transmettre. 8. Procédé selon la revendication 1, comprenant les étapes de, lors d'une demande d'inscription d'une donnée dans la mémoire : - sélectionner une zone de la mémoire, y enregistrer la donnée et recalculer la valeur d'intégrité de cette zone, - associer à la donnée ainsi enregistrée des don-nées des autres zones en utilisant la relation. 11. Procédé selon la revendication 8, dans lequel les zones sont organisées pour avoir des adresses relatives identiques et les données associées figurent à la même adresse dans les différentes zones. 12. Procédé selon la revendication 8, dans lequel 20 l'étape de recalculer la valeur d'intégrité est réalisée en calculant une nouvelle valeur d'intégrité à partir de la valeur d'intégrité préalablement mémorisée et en enregistrant la nouvelle valeur d'intégrité à la place de la valeur d'intégrité préalablement mémorisée. 15