Brevet FR2893431A1 — publié le 20070518

104546FR / 05-GR2-236 COMPOSANT INTEGRE SECURISE ET PROCEDE DE SECURISATION ASSOCIE La présente invention concerne d'une manière générale la validation des données produites par un système informatique. Plus particulièrement, l'invention s'applique au domaine des composants intégrés programmables du type comprenant un premier registre, comme par exemple un registre de réception d'un périphérique, et des moyens tels qu'un système à microprocesseur pour exécuter une première tâche logicielle à partir du contenu du premier registre. Dans le cadre de la présente invention, on entend par périphérique du microprocesseur tout dispositif du circuit intégré programmable distinct de l'unité centrale de traitement (microprocesseur) à laquelle il est relié et qui est susceptible d'assurer l'entrée ou la sortie de données. Il s'agit notamment des périphériques de communication avec l'extérieur du composant intégré. Un inconvénient des périphériques actuels est qu'ils ne sont pas sécurisés. Ainsi, en cas de défaillance logicielle ou matérielle d'un périphérique ou du microprocesseur, une information erronée peut être transmise vers l'extérieur. Or, si une information erronée peut être tolérée pour certaines applications, elle n'est pas acceptable pour des applications pour des applications sensibles. Par exemple, dans le domaine de l'automobile, il n'est pas acceptable qu'un microprocesseur transmette une commande d'activation erronée vers un dispositif de freinage ou vers un dispositif de déclenchement d'un coussin gonflable. Une solution connue et largement utilisée consiste à mettre en parallèle un deuxième composant intégré, généralement identique au premier, parfois appelé "watchdog", dont la fonction principale est de surveiller les informations émises et / ou reçues par le premier composant intégré, et de signaler un défaut éventuel. Le deuxième composant intégré réalise généralement les mêmes fonctions que le premier, puis compare ses résultats avec des résultats produits par le premier composant avant de signaler ou non une erreur. Cette solution est certes efficace, mais elle est particulièrement chère à mettre en oeuvre dans la mesure où elle entraîne l'utilisation d'un deuxième composant intégré, susceptible de réaliser les mêmes fonctions. L'invention a pour but essentiel de proposer une nouvelle solution, beaucoup plus pratique et moins onéreuse que la solution connue. Ce but est atteint avec un composant comprenant, de même qu'un composant connu, un premier registre et des moyens pour exécuter une première tâche logicielle à partir du contenu du premier registre. composant intégré comprend registre, pour mémoriser le contenu du premier le deuxième registre, et exécuter une deuxième tâche logicielle à 25 partir du contenu du deuxième registre. L'invention concerne également un procédé de sécurisation d'un composant intégré programmable comprenant un premier registre et un système à microprocesseur. De même qu'un procédé connu, le procédé selon l'invention comprend les 30 étapes suivantes, consistant à : • mémoriser des données d'entrée dans le premier registre, v Selon l'invention, le également : • un deuxième • des moyens registre dans • des moyens • exécuter, par le système à microprocesseur, une première tâche logicielle à partir du contenu du premier registre. Le procédé selon l'invention se différencie des procédés connus en ce qu'il comprend les étapes suivantes consistant à : • mémoriser le contenu du premier registre dans un deuxième registre, • exécuter une deuxième tâche logicielle à partir du contenu du deuxième registre. Ainsi, l'idée essentielle de l'invention est de dupliquer une partie des informations reçues en entrée du composant, et notamment les données d'entrée mémorisées dans un premier registre tel que par exemple un registre de réception d'un port de communication du composant, afin de faire exécuter par le composant deux tâches logicielles de manière totalement indépendantes l'une de l'autre. On pourra prévoir éventuellement, en fonction des besoins des applications choisies, de dupliquer d'autres informations comme par exemple des signaux de commande tels que des signaux d'interruption. Les deux tâches logicielles étant exécutées de manière indépendante, une défaillance logicielle de l'une des tâches pourra être repérée par l'autre tâche. Ainsi, avec un composant selon l'invention, il n'est plus nécessaire d'utiliser un composant parallèle pour détecter une éventuelle défaillance. La deuxième tâche exécutée par le composant est ainsi en quelque sorte une tâche de surveillance de l'exécution de la première tâche. L'invention sera mieux comprise et d'autres caractéristiques et avantages apparaîtront à la lecture de la description qui va suivre, d'un exemple de mise en oeuvre d'un composant intégré selon l'invention. La description, faite à titre indicatif et nullement limitatif, est à lire en relation au dessin annexé dans lequel la figure unique est un schéma de principe d'un composant intégré selon l'invention. A titre d'exemple d'application, le composant selon l'invention et son fonctionnement vont être décrit dans le cadre d'un composant utilisé pour le déclenchement d'un coussin gonflable dans un véhicule. Bien sûr, l'invention n'est pas limitée à cet exemple particulier. Comme dit précédemment, l'invention concerne un composant intégré 100, comprenant notamment un premier registre 110 et des moyens 120 pour exécuter une première tâche logicielle à partir du contenu du premier registre. Dans l'exemple choisi, le premier registre est un premier registre de réception de données d'un port d'entrée du composant intégré ; le dit port est destiné à recevoir des données externes, fournies par exemple par des capteurs de mesure 112 aptes à mesurer par exemple des accélérations ou des décélérations brutales associées à un choc, ou bien des instructions telles qu'une instruction d'activation, d'interruption, etc. fournies par des dispositifs externes 114. Le premier registre sert ainsi à mémoriser des données d'entrée, ou plus généralement des informations telles que des données ou des instructions, nécessaires à l'exécution de la première tâche logicielle. Eventuellement, le premier registre peut également comprendre un premier registre d'état pour mémoriser un signal d'interruption nécessaire à la mise en oeuvre de la première tâche logicielle. Les moyens pour exécuter la première tâche logicielle sont par exemple un système comprenant notamment un microprocesseur et une mémoire de programme dans laquelle est mémorisée la première tâche logicielle sous forme de lignes d'instructions à exécuter. Ils peuvent comprendre également un port de sortie 140, notamment pour fournir à l'extérieur du composant un résultat issu de la première tâche logicielle. La première tâche logicielle est une suite d'instructions, permettant de déterminer, dans l'exemple choisi et en fonction des données d'entrée reçues dans le premier registre, si un coussin gonflable doit être déclenché ou non, et de fournir ce résultat de type oui/non à un dispositif externe de déclenchement d'un coussin gonflable. La première tâche logicielle est connue et utilisée dans les composants actuels. Le composant selon l'invention est caractérisé en ce qu'il comprend également : • un deuxième registre 130, • des moyens (non représentés) pour mémoriser le contenu du premier registre 110 dans le deuxième registre 130, et • des moyens 140 pour exécuter une deuxième tâche logicielle à partir du contenu du registre 130. Le deuxième registre est dans un exemple de réalisation, une zone dédiée d'une mémoire de données du composant. Le deuxième registre comprend un deuxième registre de données et éventuellement un deuxième registre de d'état. Le deuxième registre est utilisé pour dupliquer le contenu (données et éventuellement signal d'interruption) mémorisé dans le premier registre. Les moyens pour exécuter la deuxième tâche logicielle sont dans un exemple les moyens 120 prévus également pour réaliser la première tâche logicielle. Dans ce cas, les deux tâches sont réalisées successivement. Dans un autre exemple, les moyens pour réaliser la deuxième tâche logicielle sont des moyens 140 différents mais similaires des moyens 120, ils vont comprendre également un processeur dédié et des ressources telles que une mémoire, un port de sortie, etc. Dans ce cas, les moyens pour exécuter la première tâche logicielle et les moyens pour exécuter la deuxième tâche logicielle sont deux systèmes à microprocesseur exécutant les deux tâches en parallèle. Le ou les systèmes à microprocesseur peuvent comprendre un microprocesseur, au moins une mémoire de travail et au moins un périphérique de sortie et / ou d'entrée. La deuxième tâche logicielle est en quelque sorte une tâche de surveillance, elle comprend une série d'instructions pour vérifier que la première tâche logicielle est exécutée correctement et / ou que le résultat que la première tâche produit est vraisemblable, en fonction des données d'entrée. Après exécution de la deuxième tâche logicielle de surveillance, on peut produire une information de type oui/non. Dans un exemple, la deuxième tâche logicielle est strictement identique à la première tâche et elle comprend la même série d'instructions. Dans ce cas, le composant comprend de préférence également des moyens pour comparer un résultat produit par la deuxième tâche logicielle avec un résultat produit par la première tâche logicielle, et des moyens pour produire un signal d'alerte si le résultat de la comparaison est supérieur à une valeur prédéfinie, par exemple de l'ordre de quelques pourcents ou quelques dizaines de pourcents. Les deux tâches étant identiques, et les données d'entrée étant identiques (puisque le premier registre et son contenu ont été dupliqués à l'identique), les résultats fournis par les deux tâches devraient être identiques, à moins d'une défaillance dans l'exécution de l'une des tâches, ce qui est signalé par le signal d'alerte le cas échéant. Dans un autre exemple, la deuxième tâche logicielle réalise la même fonction que la première tâche, mais elle comprend une série d'instructions différente (c'est le cas par exemple si on utilise deux algorithmes différents produisant soit le même résultat, soit deux résultats différents mais cohérents entre eux. Dans ce cas, le composant comprend de préférence également des moyens pour vérifier qu'un résultat produit par la deuxième tâche logicielle et un résultat produit par la première tâche logicielle sont cohérents entre eux, à quelques pourcent près. Les deux tâches étant identiques, et les données d'entrée étant identiques (puisque le premier registre et son contenu ont été dupliqués à l'identique), les résultats fournis par les deux tâches devraient être identiques ou cohérents, à moins d'une défaillance dans l'exécution de l'une des tâches, ce qui est signalé par le signal d'alerte le cas échéant. Dans un autre exemple, la deuxième tâche logicielle comprend une série d'instructions visant à déterminer, en fonction des données d'entrée, si certaines conditions sont réunies pour que le résultat de la première tâche soit positif (c'est-à-dire dans l'application choisie pour que la première tâche commande le gonflement du coussin). Dans l'application choisie, la deuxième tâche peut par exemple déterminer si la valeur absolue de la décélération mesurée par un capteur de choc est inférieure à une valeur minimale. La deuxième tâche est dans ce cas différente de la première, et on prévoit de préférence dans le composant des moyens (par exemple le port de sortie 160) pour autoriser ou non la transmission à l'extérieur (ou l'utilisation à l'extérieur) d'un résultat produit par la première tâche logicielle, en fonction d'un résultat produit par la deuxième tâche logicielle.35 REVENDICATIONS 1. Composant intégré comprenant un premier registre et des moyens pour exécuter une première tâche logicielle à partir du contenu du premier registre, le composant étant caractérisé en ce qu'il comprend également • un deuxième registre, • des moyens pour mémoriser le contenu du premier registre dans le deuxième registre, et • des moyens exécuter une deuxième tâche logicielle à partir du contenu du deuxième registre. 2. Composant intégré selon la revendication 1, comprenant également des moyens pour comparer un résultat produit par la deuxième tâche logicielle avec un résultat produit par la première tâche logicielle, et des moyens pour produire un signal d'alerte si le résultat de la comparaison est supérieur à une valeur prédéfinie. 3. Composant intégré selon la revendication 2, comprenant également des moyens pour autoriser ou non la transmission à l'extérieur d'un résultat produit par la première tâche logicielle, en fonction d'un résultat produit par la deuxième tâche logicielle. 4. Composant selon l'une des revendications 1 à 3 dans lequel les moyens pour exécuter la première tâche logicielle et les moyens pour exécuter la deuxième tâche logicielle sont un unique système à microprocesseur exécutant les deux tâches successivement. 5. Composant selon l'une des revendications 1 à 4 dans lequel les moyens pour exécuter la première tâche logicielle et les moyens pour exécuter la deuxième tâche logicielle sont deux systèmes à microprocesseur exécutant les deux tâches en parallèle. 6. Composant selon la revendication 4 à 5, dans lequel le ou les systèmes à microprocesseur comprennent un microprocesseur, au moins une mémoire de travail et au moins un périphérique de sortie et / ou d'entrée. 7. Composant selon l'une des revendications précédentes, dans lequel le premier registre est un registre de réception d'un périphérique de communication du composant. 8. Composant selon l'une des revendications précédentes, dans lequel le deuxième registre est une zone d'une mémoire du composant. 9. Procédé de sécurisation d'un composant intégré programmable comprenant un premier registre et un système à microprocesseur, le procédé comprenant les étapes suivantes, consistant à : • mémoriser des données d'entrée dans le premier registre, • exécuter, par le système à microprocesseur, une première tâche logicielle à partir du contenu du premier registre, le dit procédé étant caractérisé en ce qu'il comprend les étapes suivantes consistant à : • mémoriser le contenu du premier registre dans un deuxième registre, • exécuter une deuxième tâche logicielle à partir du contenu du deuxième registre. 10. Procédé selon la revendication 9 au cours duquel, après exécution de la deuxième tâche logicielle de surveillance, on produit une information de type oui/non. 11. Procédé selon la revendication 1 au cours duquel, après exécution de la deuxième tâche logicielle de surveillance, on autorise ou non la transmission d'un résultat produit par la première tâche logicielle. 12. Procédé selon l'une des revendications 9 à 11 au cours duquel, la tâche logicielle de surveillance est exécutée par un deuxième système à microprocesseur en parallèle de la première tâche logicielle. 13. Procédé selon l'une des revendications 9 à 11, au cours duquel la première tâche logicielle et la deuxième tâche logicielle sont réalisées successivement par un même système à microprocesseur.