Brevet FR2916065A1 — publié le 20081114

La présente invention appartient au domaine de la sûreté de fonctionnement des systèmes utilisant des données stockées ou transmises sous formes numériques. L'invention concerne le contrôle de l'intégrité des données et trouve plus particulièrement application dans les systèmes utilisant des données à durées de vie longues et pouvant être altérées dans le temps quelle qu'en soit la cause. Dans les systèmes traitant des données sous forme numérique, automates et systèmes mettant en oeuvre des microprocesseurs en particulier, il est important que le contenu des données utilisées soit correct pour garantir la qualité des résultats issus des traitements ou dans le cas le plus défavorable, lorsque les données ont été altérées, que 1 0 les données erronées soient détectées afin que ces données erronées soient corrigées ou écartées des traitements. Pour résoudre ce type de problème, contrôler que les données sont correctes, de nombreuses méthodes ont été développées, plus ou moins complexes en fonction de la robustesse recherchée pour le système concerné. 15 Dans la plupart des procédés connus comme l'illustre la figure 1, chaque donnée ou chaque groupe 11 de données, Dl, D2 ...Dn, devant être transmis ou stocké est associé à des données 12 de contrôle, CHK, élaborées à partir de la donnée ou du groupe de données de telle sorte qu'une transformation non voulue de la donnée ou du groupe de données rend incohérent son contenu avec celui des données de contrôle. 20 Ces données 12 cle contrôle le plus souvent désignées sommes de contrôle ou check summ sont établies par des algorithmes plus ou moins complexes suivant le niveau de garantie d'intégrité recherché pour les données concernées. Les données de contrôle CHK sont élaborées dans un premier temps lors de l'élaboration des données D1, D2, ...Dn, avant leur transmission par exemple, à partir des 25 dites données, puis, dans un second temps, avant leur utilisation la cohérence entre les données du groupe et les données de contrôle CHK qui leurs sont associées est vérifiée. Si une incohérence est détectée, le groupe de données est en général rejeté. Lorsque les données du groupe considérées sont des données dynamiques, c'est à dire dont la valeur varie souvent à une échelle de temps considérée par le système 30 pour ladite donnée, le rejet d'une valeur détectée comme étant erronée s'avère le plus souvent non critique car lors de la transmission suivante de la donnée la nouvelle valeur sera a priori transmise correctement. Un problème particulier se pose lorsque des données sont transmises groupées sous la forme illustrée figure 1. 2 Dans ce cas, il est compris que les données de contrôle CHK du groupe de données, la somme de contrôle du groupe, sont nécessairement mises à jour dès lors qu'une des données, par exemple Di, est normalement modifiée en raison par exemple de l'évolution de la valeur d'un paramètre porté par la donnée considérée dans le groupe. Trois situations peuvent alors se présenter lorsqu'une erreur sur une des données, autre que la donnée Di qui a été normalement modifiée et qui donne lieu à une mise à jour volontaire des données de contrôle, se produit. Première situation illustrée figure 2a: l'intégrité du groupe de données vérifiée 20a antérieurement et correcte, validité symbolisée sur les figures par une flèche orientée vers le haut, est à nouveau vérifiée 21a au temps tCHK, suivant une périodicité 2 propre au système concerné, au rnoyen des données de contrôle après qu'une erreur 4a, erreur symbolisée par une croix sur les figures, soit apparue mais avant une mise à jour 3a, mise à jour symbolisée par un cercle sur les figures, d'une donnée Di du groupe de données à un instant tDi+, et donc avant la mise à jour des données de contrôle CHK. Dans ce cas l'erreur est normalement détectée, détection d'erreur symbolisée par une flèche orientée vers le bas sur les figures, puisque les données de contrôle CHK ne sont plus cohérentes avec Iles données du groupe au moment de la vérification 21a. Deuxième situation illustrée figure 2b: l'intégrité du groupe de données vérifiée 20b antérieurement et correcte est à nouveau vérifiée 21b au moyen des données de contrôle après qu'une erreur 4b soit apparue elle-même après une mise à jour 3b d'une donnée Di du groupe de données et donc après la mise à jour des données de contrôle CHK. Comme dans le cas précédent, l'apparition de l'erreur sur une donnée conduit à une incohérence avec les données de contrôle qui permet de détecter 21b l'existence de 25 l'erreur qui n'existait pas lors de la vérification précédente 20b. Troisième situation illustrée figure 2c: l'intégrité du groupe de données vérifiée 20c et correcte est à nouveau vérifiée 21c au moyen des données de contrôle après qu'une erreur 4c soit apparue, ladite erreur étant apparue avant une mise à jour 3c d'une donnée Di du groupe. Dans ce cas particulier, les données de contrôle CHK seront 30 calculées après l'instant tDi+ de la mise à jour de la donnée Di pour tenir compte des données mises à jour, mais en utilisant également la donnée du groupe erronée suite à l'erreur 4c. Les données de contrôle CHK et les données du groupe seront alors parfaitement cohérentes malgré la présence dans le groupe d'une donnée erronée et non seulement il ne sera pas possible de détecter la présence d'une donnée erronée lors de la 35 vérification 21c suivant l'apparition de l'erreur 4c mais de plus le groupe de données sera validé, y compris lors de vérifications 22c ultérieures. Cette troisième situation qui vient d'être considérée s'avère donc particulièrement gênante, en particulier lorsque le groupe de données contient des données qui ne sont pas mises à jour de manière récurrente. Un cas de donnée mise à jour de manière récurrente est par exemple la valeur transmise par un capteur. Dans ce cas la valeur mesurée par le capteur est à nouveau transmise dans un cycle ultérieur d'acquisition du groupe de données dont il fait partie ce qui limite beaucoup les conséquences que pourraient avoir une valeur erronée non détectée lors d'une transmission antérieure. Dans le cas de données non mises à jour de manière récurrente, par exemple un identifiant de clé pour un dispositif de contrôle d'accès ou un identifiant d'équipement ou une information relative à une version de logiciel embarqué dans un équipement pour une gestion de configuration d'un système complexe, non seulement l'erreur sur la donnée ne sera pas détectée mais la donnée erronée sera définitivement considérée comme valide par le système si aucune intervention n'est réalisée par ailleurs, pouvant conduire à une défaillance plus ou moins pénalisante du système qui utilise la dite donnée. Par exemple si la donnée est un identifiant de clés de contrôle d'accès, les dites clés de contrôle d'accès ne sont plus reconnues par le système. Afin de résoudre cette difficulté, l'invention propose un procédé de vérification de l'intégrité d'un groupe de données D1, D2, ...Dn, au moins deux données, au moyen de données de contrôle CHK calculées en fonction du contenu des données dudit groupes de données. Lorsque de nouvelles données de contrôle CHK+ sont calculées, après une évolution connue d'une donnée Di devenant une donnée Di+ du groupe de données, les dites données de contrôle CHK+ sont calculées à partir des données de contrôle CHK associé au groupe de données comportant la donnée Di, de la nouvelle donnée Di+ du groupe ayant évoluée et de la donnée antérieure Di de ladite donnée du groupe, sans utiliser de données D1, D2, ...Dn du groupe de données autre que la donnée Di/Di+. Plus particulièrement, pour détecter une incohérence dans le groupe de donnée, les nouvelles données de contrôle CHK+ sont comparées à des données de contrôle CHKr élaborées, sans considération de la valeur de CHK antérieure, à partir des données D1, D2, ...Dn du groupe de données incorporant la donnée Di+ à la place de la donnée Di, et si besoin le groupe de données est invalidé lorsqu'une incohérence est détectée entre les données de contrôle CHK+ et les données de contrôle CHKr. Avantageusement pour appliquer le procédé, les données de contrôle CHK sont 35 calculées comme une somrne de contrôle. Le procédé trouve avantageusement application dans tout dispositif dans lequel un groupe de données doit être vérifié, et plus particulièrement lorsque au moins une 4 donnée du groupe de données est une donnée à longue durée de vie, c'est à dire dont le contenu n'est pas modifié de façon voulue pendant une durée longue relativement aux temps séparant les modifications d'autres données. Une telle donnée à longue durée de vie susceptible d'être altérée est notamment 5 un identifiant ID d'un élément du dispositif. La description détaillée d'un mode de réalisation de l'invention est faite en référence aux figures qui représentent schématiquement : * Figure 1 : déjà citée, la composition d'un groupe de données associé à des données de contrôle ; 10 * Figures 2a, 2b, 2c : déjà citée, des chronogrammes représentants différentes situations de l'art antérieur dans lesquels une donnée est modifiée, une erreur se produit sur une autre donnée et des contrôles sont réalisés sur le groupe de données ; * Figures 3a et 3b : une représentation du principe du calcul incrémentai des données de contrôle ; 15 * Figure 4 : un chronogramme représentant la détection d'une erreur dans le cas non détecté par l'art antérieur présenté sur la figure 2c ; * Figure 5 : un 'exemple de dispositif mettant en oeuvre le procédé. Pour vérifier l'intégrité d'un groupe 11 de données Dl, D2, ... Dn, comportant au moins deux données, ledit groupe de données est associé à des données 12 de contrôle 20 CHK. Dans la suite de la description de l'invention le terme donnée et les symboles Dl, D2, Di, Di+, Dn, CHIK et CHK+ désignent indifféremment la donnée considérée proprement dite ou son contenu, par exemple un nombre, suivant le sens qui ressort du texte. 25 Les données de contrôle CHK, somme de contrôle ou check summ , sont élaborées au moyen d'algorithmes connus choisis plus ou moins complexes en fonction du niveau de garantie recherché sur l'intégrité des données du groupe, c'est à dire une probabilité qu'un défaut d'intégrité soit détecté. Il convient de considérer le terme somme de contrôle ou check summ dans un sens large tel qu'il est utilisé en 30 pratique, c'est à dire pour désigner des données de contrôle en général même lorsque les dites données de contrôle rie correspondent pas à une somme au sens stricte. De manière connue les données de contrôle CHK sont modifiées lorsque le contenu du groupe de données 11 est modifié de manière voulue de sorte que le changement, a priori accidentel ou au moins non voulu, du contenu du groupe de 35 données 11 sans changement des données de contrôle CHK par application des algorithmes choisis soit détecté par la comparaison des données de contrôle CHK, préalablement calculées et associées au dit groupe de données, avec des données de contrôle recalculées à partir des données Dl, D2, ...Dn effectivement disponibles, par exemple après une transmission. Suivant le procédé les données de contrôle CHK sont calculées une première fois à partir du groupe de données Dl, D2, ...On de manière conventionnelle et associées 5 au dit groupe de données comme illustré sur la figure 3a. Lors de ce premier calcul des données de contrôle CHK il est supposé que les données Dl, D2 . Dn sont correctes, des moyens de vérification particuliers étant le cas échéant mis en oeuvre pour vérifier que tel est effectivement le cas. Lorsqu'une donnée Di du groupe est normalement modifiée comme présenté figure 3b, c'est à dire que le contenu de la donnée Di change de manière attendue comme par exemple lorsque ledit contenu correspond à une valeur mesurée par un capteur et que cette valeur est réactualisée, ladite donnée modifiée étant identifiée Di+, une comparaison entre Di avant modification de la donnée et Di+ après modification est utilisée pour calculer de nouvelles données de contrôle CHK+ à partir des données de contrôle antérieures CHK, sans qu'il soit fait usage des autres données du groupe qui dans ce cas sont supposées n'avoir pas été modifiées de manière voulue. On comprend ainsi que suivant le procédé proposé, dit calcul incrémentai, de calcul des données de contrôle CHK l'existence d'une donnée altérée dans le groupe de données autre que Di sera sans effet sur les données de contrôle CHK+ puisque CHK+ est calculé sans faire appel aux dites données mais uniquement à partir de la donnée Di avant modification, de la donnée Di+ après modification et des données de contrôle CHK avant la modification. Conformément à l'illustration de la figure 4, lors de la vérification de la cohérence entre les données du groupe et les données de contrôle, l'existence d'une erreur 4d survenue postérieurement à une vérification 20d ayant validé les données sera détectée lors d'une vérification 21d suivante, même lorsque ladite erreur 4d est apparue entre la vérification de la validité antérieure 20d et la modification normale 3d de la donnée Di. L'exemple suivant, sans considération sur la robustesse de l'algorithme de somme de contrôle choisi pour sa simplicité, illustre comment le procédé s'applique à un cas simple dans lequel le groupe de données comporte 3 données Dl, D2, D3 de 4 bits (chaque bit pouvant prendre la valeur 0 ou 1) chacune et dans lequel les données de contrôle CHK sont réduites à un bit de parité du groupe de données. Si le nombre de bits ayant la valeur 1 dans le bloc de donnée est pair, le bit de parité est égal à 0, si le nombre de bits ayant la valeur 1 dans le groupe de données est 35 impair le bit de parité est égal à 1. Par exemple avec : Dl = 0010 6 D2 = 0101 D3 = 1011 le bit de parité a donc dans ce cas la valeur CHK= 0 car le nombre total de bit ayant la valeur 1 est ici égal à 6 donc pair...DTD: Suivant le principe de l'invention, lorsqu'une donnée Di, par exemple D2, est normalement modifiée, et prend la valeur D2+ = 1110, une valeur incrémentale de CHK est calculée en fonction de la valeur antérieur de D2 (0101) et de la nouvelle valeur de D2+ (1110). Suivant l'algorithme de l'exemple utilisé pour le calcul du bit de parité, les deux valeurs de D2 et D2+ ayant des parités contraires (0 pour l'ancienne valeur et 1 pour la nouvelle valeur), la valeur du bit de parité CHK est modifiée et passe donc de 0 à 1. La nouvelle valeur CHK+ = 1 correspond bien à la valeur du bit de parité du nouveau groupe de données : Dl = 0010 D2 = 1110 D3 = 1011 bien que Dl et D3 n'aient pas été utilisés pour le calcul de CHK+. Dans ce cas si une erreur s'est introduite sur une des données Dl ou D3, par exemple si Dl passe de manière erronée à 0000, le bit de parité, qui n'a pas pris en compte cette valeur erronée de D1, n'est plus cohérent avec le groupe de données dont la parité, recalculée à partir de l'ensemble des données Dl, D2 et D3 du groupe, a alors la valeur 0 et l'erreur est détectée. Un dispositif utilisant le procédé de l'invention est illustré schématiquement sur la figure 5. Le dispositif 5 comporte un premier élément 51 et un second élément 53. L'élément 51 contient, au moins à un instant donné, des données devant être connues du second élément 53. A titre d'illustration non limitative, deux données sont considérées dans l'exemple, une première donnée 55, notée ID, et une seconde donnée 56, notée M. Dans cet exemple ID est une donnée d'identification, dit identifiant, du premier élément 51 qui a priori n'a pas de raison d'être modifié, sauf reconfiguration de l'élément, au cours de l'utilisation normale du dispositif 5. M est une valeur issue d'une mesure fournie par un capteur 52. Le second élément 53 reçoit au moyen d'une liaison 54, par exemple une liaison filaire, une liaison radio, une liaison optique ou tout autre liaison permettant la communication de données, la valeur des données ID et M dans un groupe de données 7 58 associé à des données de contrôle 57, notées CHK, élaborées par le premier élément 55. II est à noter que l'échange d'information entre les éléments 51 et 53 peut utiliser tout support de communication approprié et notamment être réalisé via une mémoire 5 interne (pointeur, service, pipe...). Ledit second élément 53 contrôle l'intégrité du groupe de données {ID, M} en recalculant des données de contrôle CHKr à partir des valeurs reçues et en comparant les dites données recalculées CHKr avec les données de contrôle CHK transmises avec le groupe de données et, lorsque la comparaison conduit à accepter le groupe de données, 10 la valeur de la donnée M est associée au premier élément 55 identifié par l'identifiant ID. En élaborant les données de contrôle CHK+ transmises en utilisant le procédé de l'invention, le premier élément 51 n'utilise pas la valeur de ID qui est supposée ne pas être modifiée. Si la valeur de ID est modifiée accidentellement, la comparaison des données de 15 contrôle transmises CHK+ et recalculées CHKr conduit le second élément 53 à rejeter le groupe de données ce qui permet d'éviter qu'une valeur d'une donnée M soit associée à un premier élément différent de celui qui émet réellement la donnée reçue. Par exemple le dispositif 5 est un système de contrôle des roues d'un véhicule dans lequel le second élément 53 assure la surveillance des roues et dans lequel le 20 premier élément 51 mesure la pression dans une roue et transmet par une liaison sans fil la valeur mesurée. Dans cet exemple il est essentiel que le dispositif ne prenne en compte que les valeurs provenant des roues du véhicule considéré, correspondant à des identifiants ID connus, et ne puisse pas prendre en compte des valeurs qui sont émises par les roues d'un autre véhicule, d'où la nécessité d'éliminer les valeurs émises avec un 25 identifiant erroné ce que permet précisément l'invention dans les différents scénarii d'apparition d'une erreur sur la valeur ID de l'identifiant. Le procédé suivant l'invention de calcul incrémental des données de contrôle CHK est avantageusement utilisé avec tout algorithme de calcul des données de contrôle, compatible avec la possibilité de déterminer une nouvelle valeur des données de contrôle 30 à partir de la valeur antérieure des dites données de contrôle pour une variation connue des données d'un groupe de données auquel sont associées les dites données de contrôle. Le procédé est avantageusement mis en oeuvre par tout dispositif devant utiliser des données stockées à durée de vie longue au regard d'autres données également 35 utilisées et ou transmises simultanément. REVENDICATIONS 1 ù Procédé de vérification de l'intégrité d'un groupe de données D1, D2, ...Dn, comportant au moins deux données, au moyen de données de contrôle CHK calculées en fonction du contenu des données dudit groupes de données caractérisé en ce que de nouvelles données de contrôle CHK+ sont calculées, après une évolution connue d'une 5 donnée Di devenant une donnée Di+ dudit groupe de données, à partir : a) des données de contrôle CHK associé au groupe de données comportant la donnée Di, et ; b) de la nouvelle donnée Di+ du groupe ayant évoluée, et ; c) de la donnée antérieure Di de ladite donnée du groupe, 10 sans utiliser de données D1, D2, ...Dn du groupe de données autre que la donnée Di/Di+. 2 ù Procédé de vérification suivant la revendication 1 dans lequel les nouvelles données de contrôle CHK+ sont comparées à des données de contrôle CHKr élaborées, sans considération de la valeur de CHK antérieure, à partir des données Dl, D2, ...Dn du groupe de données incorporant la donnée Di+ à la place de la donnée Di. 15 3 ù Procédé de vérification suivant la revendication 2 dans lequel le groupe de données est invalidé lorsqu'une incohérence est détectée entre les données de contrôle CHK+ et les données de contrôle CHKr. 4 ù Procédé de vérification suivant l'une des revendications précédentes dans lequel les données de contrôle CHK sont calculées comme une somme de contrôle. 20 5 ù Dispositif (5) dans lequel un groupe de données (58) est vérifié suivant le procédé de l'une des revendications 1 à 4. 6 ù Dispositif suivant la revendication 5 dans lequel au moins une donnée (55) du groupe de données (58) est une donnée à longue durée de vie, c'est à dire dont le contenu n'est pas modifié de façon voulue pendant une durée longue relativement aux 25 temps séparant les modifications d'autres données (56). 7 ù Dispositif suivant la revendication 6 dans lequel la donnée (55) à longue durée de vie détermine un identifiant ID d'un élément (55) du dispositif (5).