Procédé de protection des données effaçables d'un calculateur embarqué de véhicule automobileMethod for protecting the erasable data of an on-board computer of a motor vehicle
La présente invention se rapporte aux calculateurs électroniques embarqués dans les véhicules automobiles, tels que notamment les calculateurs qui assurent le pilotage d'un système de direction assistée électrique équipant un véhicule automobile moderne.The present invention relates to electronic computers on board motor vehicles, such as in particular computers which control an electric power steering system fitted to a modern motor vehicle.
Cette invention concerne plus particulièrement un procédé de protection et correction des données effaçables d'un calculateur embarqué de véhicule automobile, ces données étant stockées en mémoire.This invention relates more particularly to a method for protecting and correcting the erasable data of an on-board computer of a motor vehicle, this data being stored in memory.
Les calculateurs de ce genre, embarqués dans les véhicules, doivent sauvegarder des informations dans des mémoires de type effaçables et programmables électriquement.Computers of this kind, embedded in vehicles, must save information in erasable and electrically programmable memories.
Or la durée de rétention des informations dans ces mémoires n'est pas infinie, en particulier lorsque le nombre d'effacements et de réécritures augmente, et que la température de fonctionnement du calculateur s'élève. De telles situations sont de plus en plus fréquentes, pour les calculateurs placés dans le compartiment moteur d'un véhicule, tels que les calculateurs de pilotage d'une direction assistée électrique. On se trouve donc dans l'obligation de trouver des palliatifs, de type logiciel, pour garantir de façon aussi sûre que possible une rétention des données mémorisées dans ces calculateurs, sur des durées importantes dépassant dix ans, et dans des ambiances dont la température peut dépasser 100°C. L'exposition prolongée à des températures, et/ou à des champs électro-magnétiques perturbateurs, peut occasionner une altération des données mémorisées.However, the duration of information retention in these memories is not infinite, in particular when the number of erasures and rewritings increases, and the operating temperature of the computer rises. Such situations are more and more frequent, for computers placed in the engine compartment of a vehicle, such as control computers for electric power steering. We are therefore obliged to find workarounds, of the software type, to guarantee as securely as possible the retention of the data stored in these computers, over long periods exceeding ten years, and in atmospheres whose temperature can exceed 100 ° C. Prolonged exposure to temperatures and / or disturbing electromagnetic fields can cause the stored data to be corrupted.
L'utilisation de plus en plus courante de composants programmables dans les calculateurs en question augmente en outre les risques d'effacement de leurs mémoires. Les données stockées dans les calculateurs en question peuvent notamment comprendre des données de configuration, des lois de pilotage d'assistance, des enregistrements de défauts, etc., voire même, de plus en plus couramment, le code exécutable du programme- lui-même. Afin de sécuriser de telles données, deux types de solutions sont actuellement utilisées.
La première solution consiste en l'utilisation d'un code de redondance des informations écrites dans la mémoire, code qui est recalculé lors de chaque modification de la mémoire, et vérifié lors de chaque écriture. Ce code, basé sur des opérations logiques sur les codes hexadécimaux des informations inscrites en mémoire, permet de vérifier facilement que les données sont exactes avant toute utilisation. Par contre, il est ici impossible, en cas d'anomalie, de localiser l'erreur, et il est encore moins possible de la corriger.The increasingly common use of programmable components in the computers in question also increases the risk of erasing their memories. The data stored in the computers in question may in particular include configuration data, assistance control laws, fault records, etc., or even, more and more commonly, the executable code of the program itself . In order to secure such data, two types of solutions are currently used. The first solution consists in using a redundancy code of the information written in the memory, code which is recalculated during each modification of the memory, and checked during each writing. This code, based on logical operations on the hexadecimal codes of the information stored in memory, makes it easy to verify that the data is correct before any use. On the other hand, it is impossible here, in the event of an anomaly, to locate the error, and it is even less possible to correct it.
La seconde solution connue consiste à réécrire plusieurs fois les données, en réalisant ainsi une redondance complète de l'information. Une comparaison entre ces données enregistrées séparément peut alors être effectuée facilement avant toute utilisation. Il est aussi possible, si la même information est stockée plusieurs fois, et avec certaines limitations, de localiser et de corriger les erreurs. Toutefois, cette solution est très coûteuse en termes de taille de mémoire, de taille de code applicatif et de charge du processeur. De plus, la mise en œuvre de cette solution est souvent difficile.The second known solution consists in rewriting the data several times, thus achieving complete redundancy of the information. A comparison between these data recorded separately can then be carried out easily before any use. It is also possible, if the same information is stored several times, and with certain limitations, to locate and correct errors. However, this solution is very expensive in terms of memory size, application code size and processor load. In addition, the implementation of this solution is often difficult.
La présente invention vise à éliminer les inconvénients des solutions actuelles, et elle a donc pour but de fournir un procédé de protection des données, pour les calculateurs du genre ici concerné, qui soit capable de déterminer l'emplacement des erreurs et de les corriger automatiquement, dans la plupart des cas, sans augmentation excessive de la taille de mémoire nécessaire.The present invention aims to eliminate the drawbacks of current solutions, and it therefore aims to provide a data protection method for computers of the type concerned here, which is capable of determining the location of errors and correcting them automatically. , in most cases, without excessively increasing the memory size required.
A cet effet, l'invention a essentiellement pour objet un procédé de protection des données effaçables stockées en mémoire d'un calculateur embarqué de véhicule automobile, caractérisé en ce qu'il met en œuvre :To this end, the subject of the invention is essentially a method of protecting erasable data stored in the memory of an on-board computer of a motor vehicle, characterized in that it implements:
• une redondance au moins partielle de la taille mémoire à sécuriser,• at least partial redundancy of the memory size to be secured,
• un code de correction d'erreur de Hamming et en ce qu'il comporte :• a Hamming error correction code and in that it comprises:
• d'une part une étape de stockage des données sous forme codée comportant des bits de données utiles et des bits de correction, ladite forme codée étant obtenue par une multiplication des données utiles par une matrice correctrice issue d'une matrice génératrice,On the one hand, a step of storing the data in coded form comprising useful data bits and correction bits, said coded form being obtained by multiplying the useful data by a corrective matrix originating from a generating matrix,
• d'autre part une tâche de fond périσtiique~vérifiant l'exactitude des données par une multiplication des données codées par la transposée de la matrice correctrice et, le cas échéant si le produit de la multiplication n'est pas nul donc en cas d'erreur sur au moins un bit,
corrigeant tout ou partie des erreurs sur le contenu des données effaçables stockées en mémoire en utilisant les informations fournies par le résultat de la multiplication donnant la position des bits erronés. Dans un mode de mise en œuvre préféré du procédé de l'invention, le code correcteur de Hamming met en œuvre une fonction involutive• on the other hand a background task perσtiic ~ verifying the accuracy of the data by a multiplication of the data coded by the transpose of the corrective matrix and, if necessary if the product of the multiplication is not zero therefore in case of 'error on at least one bit, correcting all or part of the errors on the content of the erasable data stored in memory by using the information provided by the result of the multiplication giving the position of the erroneous bits. In a preferred embodiment of the method of the invention, the Hamming correcting code implements an involutive function
Avantageusement, les bits de données utiles d'une part et les bits de correction d'autre part sont stockés dans des zones de mémoires différentes.Advantageously, the useful data bits on the one hand and the correction bits on the other hand are stored in different memory areas.
Le procédé de l'invention est utilisable également pour la protection du code exécutable stocké en mémoire d'un calculateur.The method of the invention can also be used for the protection of the executable code stored in the memory of a computer.
L'invention sera mieux comprise à la lecture de la description qui suit d'un exemple de mise en œuvre du procédé.The invention will be better understood on reading the following description of an example of implementation of the method.
Selon un mode de mise en œuvre du procédé, le code de correction d'erreur se base sur un doublement de la taille mémoire à sécuriser. Pour chaque octet de donnée utile, 8 bits de corrections sont attribués.According to one embodiment of the method, the error correction code is based on a doubling of the memory size to be secured. For each byte of useful data, 8 correction bits are allocated.
La table de correction, c'est-à-dire l'ensemble des bits de correction, est configurée de manière à permettre :The correction table, i.e. all the correction bits, is configured so as to allow:
• d'une part la correction de 1 bit faux par octet de données utiles• on the one hand the correction of 1 false bit per byte of useful data
• d'autre par la détection de 4 bits faux par octet de données utiles Ce mode de mise en œuvre permet un bon compromis entre la performance et la fiabilité.• other by detecting 4 false bits per byte of useful data This implementation mode allows a good compromise between performance and reliability.
La fonction de correction d'erreur est basée sur une opération mathématique involutive. Une matrice de correction simple de dimension 8 est utilisée, telle que celle-ci et sa transposée soient identiques. Il existe 64 matrices ayant les propriétés requises, calculées à partir de la matrice génératrice M suivante :The error correction function is based on an involutive mathematical operation. A simple correction matrix of dimension 8 is used, such that this and its transpose are identical. There are 64 matrices with the required properties, calculated from the following generator matrix M:
M='((0 1 0 0 1 1 0 1)M = '((0 1 0 0 1 1 0 1)
(1 0 1 0 0 1 1 0)(1 0 1 0 0 1 1 0)
(0 1 0 1 0 0 1 1) (1 0 1 0 1 0 0 1)(0 1 0 1 0 0 1 1) (1 0 1 0 1 0 0 1)
(1 1 0 1 0 1 0 0) (0 1 1 0 1 0 1 0) (0 0 1 1 0 1 0 1) (1 0 0 1 1 0 1 0)) Cette disposition particulière de la matrice permet de réaliser les calculs en parallèles et non bit à bit.
Deux fonctions sont embarquées dans le calculateur correspondant aux deux étapes du procédé :(1 1 0 1 0 1 0 0) (0 1 1 0 1 0 1 0) (0 0 1 1 0 1 0 1) (1 0 0 1 1 0 1 0)) This particular arrangement of the matrix makes it possible to carry out calculations in parallel and not bit by bit. Two functions are embedded in the computer corresponding to the two stages of the process:
• une première fonction d'encodage des données avant stockage dans la mémoire prenant en entrée un octet de donnée utile et fournissant en sortie un mot de 16 bits contenant les bits de données utiles et les bits de correction.A first function for encoding the data before storage in the memory taking as input a byte of useful data and supplying as output a 16-bit word containing the useful data bits and the correction bits.
• une seconde fonction de lecture des données dans la mémoire permettant leur décodage et la vérification de leur exactitude. Cette fonction prend en entrée un mot de 16 bits contenant les bits de données utiles et les bits de correction ainsi qu'un pointeur sur une zone de mémoire d'un octet pour stocker les données utiles éventuellement corrigées et fournit en sortie un code de retour booléen indiquant si les données ont pu ou non être corrigées.• a second function for reading data from memory allowing them to be decoded and their accuracy checked. This function takes as input a 16-bit word containing the useful data bits and the correction bits as well as a pointer to a memory area of one byte to store the useful data possibly corrected and provides an output return code boolean indicating whether or not the data could be corrected.
Dans le cas où le nombre d'erreurs détecté est supérieur au nombre d'erreurs pouvant être corrigé, plusieurs solutions sont utilisées. A titre d'exemple, il est possible de relancer une fonction de calibration ou de choisir une valeur moyenne pour un paramètre afin de ne pas bloquer le système.If the number of errors detected is greater than the number of errors that can be corrected, several solutions are used. For example, it is possible to restart a calibration function or to choose an average value for a parameter so as not to block the system.
Un mode de mise en œuvre alternatif du procédé consiste à placer les bits de correction d'erreur dans une zone de la mémoire disjointe de la zone où sont stockées les données utiles. Cette approche permet de disposer d'une zone de mémoire classique comportant les données utiles et d'une zone mémoire regroupant les bits de correction et ainsi d'utiliser le procédé de protection des informations sur du code exécutable, de façon transparente pour le processeur. Selon un autre mode de mise en œuvre du procédé utilisant un doublement de la taille mémoire à sécuriser, les tables de correction sont configurées pour permettre la correction de 2 ou 3 bits faux par octet en utilisant la même taille mémoire. Dans ce cas la fiabilité est réduite par rapport au premier mode de mise en œuvre si la même consommation des ressources, taille mémoire et charge du processeur, est conservée.An alternative implementation of the method consists in placing the error correction bits in an area of the memory separated from the area where the useful data are stored. This approach makes it possible to have a conventional memory area comprising the useful data and a memory area grouping the correction bits and thus to use the method of protecting information on executable code, in a manner transparent to the processor. According to another embodiment of the method using a doubling of the memory size to be secured, the correction tables are configured to allow the correction of 2 or 3 false bits per byte using the same memory size. In this case, reliability is reduced compared to the first mode of implementation if the same consumption of resources, memory size and processor load is retained.
D'autres modes de mise en œuvre du procédé utilisent une taille de redondance différente des deux modes de mise en œuvre décrits précédemment utilisant un doublement de " fertaille mémoire, c'est-à-dire un taux d'expansion égal à 2. A titre d'exemple, en utilisant un taux d'expansion de la taille mémoire supérieur à 2, il est possible de détecter et de corriger plus de bits en erreur dans les données utiles. A l'opposé, en utilisant un taux
d'expansion de 1,5, il sera possible de détecter certaines erreurs, mais pas de les corriger. Le choix d'un mode de mise en œuvre du procédé dépend de la taille de redondance cherchée.
Other modes of implementation of the method use a redundancy size different from the two modes of implementation described above using a doubling of " fertile memory, that is to say an expansion rate equal to 2. A As an example, by using a memory size expansion rate greater than 2, it is possible to detect and correct more bits in error in the useful data. expansion of 1.5, it will be possible to detect certain errors, but not to correct them. The choice of a method of implementing the method depends on the size of redundancy sought.