EP2087428A2 - Procédé de contrôle de l'exécution d'un programme par un microcontrôleur - Google Patents

Procédé de contrôle de l'exécution d'un programme par un microcontrôleur

Info

Publication number
EP2087428A2
EP2087428A2 EP07822611A EP07822611A EP2087428A2 EP 2087428 A2 EP2087428 A2 EP 2087428A2 EP 07822611 A EP07822611 A EP 07822611A EP 07822611 A EP07822611 A EP 07822611A EP 2087428 A2 EP2087428 A2 EP 2087428A2
Authority
EP
European Patent Office
Prior art keywords
program
block
execution
controlling
ctrl
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP07822611A
Other languages
German (de)
English (en)
Inventor
Christophe Gogniat
Michael John Hill
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nagravision SARL
Original Assignee
NagraCard SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NagraCard SA filed Critical NagraCard SA
Priority to EP07822611A priority Critical patent/EP2087428A2/fr
Publication of EP2087428A2 publication Critical patent/EP2087428A2/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing

Definitions

  • the present invention relates to the field of microcontrollers, in particular the field of securing the execution of a program by said microcontroller. More specifically, the invention proposes to prevent disturbances from revealing confidential information contained in a memory of the microcontroller or cooperating with it. This invention can in particular be applied to a microprocessor security module used in the field of conditional access television.
  • the use of several caches avoids, as long as the content of the second cache has been chosen, to wait for the content of this new cache is introduced.
  • the microcontroller according to the invention is such that only the content of the active cache is accessible by the processing unit. If the cache has a larger size than the program block that is introduced, it is possible to place in this cache instructions to carry out countermeasures. It is also possible to place countermeasures in a specific block.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Le but de la présente invention est de proposer une méthode et un dispositif afin de pallier aux dégâts qu'une désynchronisation du compteur de programme peut provoquer. Ce but est atteint par un procédé de contrôle de l'exécution d'un programme par un microcontrôleur comportant au moins une mémoire de programme et une unité de traitement, caractérisé en ce qu'il comporte les étapes de: - séparation dudit programme en au moins deux blocs contenant chacun une pluralité d'instructions exécutables par ledit microcontrôleur; - intégration à ces blocs d'au moins une zone de contrôle d'entrée (CTRL-E) contenant des conditions d'entrées, ces conditions d'entrée comportent des adresses de consigne correspondant à des instructions d'où le programme est autorisé à entrer dans ladite zone de contrôle d'entrée (CTRL-E); - intégration à ces blocs d'au moins une zone de contrôle de sortie (CTRL-S) contenant des conditions de sortie; - lors de l'exécution d'instructions dudit programme mémorisées dans un bloc donné, mise en oeuvre de tests de vérification de l'adéquation entre le déroulement effectif du programme et les conditions d'entrée et/ou de sortie; et - mise en oeuvre de contre-mesures si les tests de vérification indiquent une inadéquation entre le déroulement effectif du programme et les conditions d'entrée et/ou de sortie.

Description

Procédé de contrôle de l'exécution d'un programme par un microcontrôleur
Introduction
La présente invention concerne le domaine des microcontrôleurs, en particulier le domaine de la sécurisation de l'exécution d'un programme par ledit microcontrôleur. Plus précisément, l'invention se propose d'empêcher que des perturbations ne permettent de dévoiler des informations confidentielles contenues dans une mémoire du microcontrôleur ou coopérant avec ce dernier. Cette invention peut notamment être appliquée à un module de sécurité à microprocesseur utilisé dans le domaine de la télévision à accès conditionnel.
Etat de la technique
II est bien connu qu'un programme utilisé par un microcontrôleur ou un microprocesseur est formé d'une suite d'instructions, elles-mêmes formées d'un code opérationnel (opcode) et éventuellement d'un ou plusieurs opérandes. Le premier octet d'une instruction ("opcode") joue un rôle important car il définit la fonction souhaitée. Selon l'instruction, un ou plusieurs octets complémentaires seront nécessaires pour former une instruction.
Selon le type de processeur, la taille d'un opcode peut par exemple être de 8, 12, 16 ou 32 bits. Un opcode peut être également temporairement sur une plus grande longueur.
Egalement de façon connue, le processeur exécute les instructions en fonction de la valeur contenue dans un compteur de programme.
Lorsqu'un processeur se désynchronise, par exemple suite à une erreur de programmation ou une perturbation extérieure, il se peut que son compteur de programme (PC) indique une position de la mémoire qui n'est pas un code opérationnel, mais un opérande.
Ces perturbations peuvent par exemple provenir de micro-interruptions de l'alimentation, de crêtes de tension sur le bus de connexion, de chocs thermiques chauds ou froids, d'exposition à un champ magnétique, d'exposition à une lumière laser, de particules alpha, etc.
Lorsqu'il se produit une telle perturbation extérieure, qui peut par exemple être volontairement réalisée sur le processeur par une personne mal intentionnée, ceci a pour effet d'interrompre l'exécution normale d'une ou plusieurs instructions. Par ce type de perturbations, il est possible qu'un programme d'exécution saute dans un endroit non prévu de ce programme. Il est également possible qu'une telle perturbation change le contenu du compteur de programme de telle façon que le déroulement ultérieur de ce programme se fasse sans passer par les instructions prévues préalablement et sans passer par les conditions d'accès associées. De cette façon, il arrive que des procédures de vérification ou d'authentification ne soient pas effectuées ou qu'un port de communication du module à microcontrôleur délivre des informations qui ne devraient normalement pas sortir du module de sécurité ou du microcontrôleur, comme par exemple des clés, des données et des parties de programmes.
La demande de brevet français FR-A-2 790 844 cherche à résoudre ce problème en proposant un procédé et un dispositif de surveillance du déroulement d'un programme. Selon ce procédé, il est vérifié que toutes les instructions comprises dans un boc d'instructions et qui doivent être exécutées par un processeur ont bien été transmises. Il est également vérifié que certaines valeurs obtenues lors de l'exécution d'instructions correspondent à des valeurs préenregistrées. Selon ce procédé, le déroulement de l'ensemble du programme n'est pas contrôlé. En particulier, il n'est pas vérifié quelles instructions ou quels blocs d'instructions peuvent être valablement exécutés après la dernière instruction ou le dernier bloc d'instructions effectués. Ce procédé ne garantit donc pas une sécurité optimale.
Brève description de l'invention
Le but de la présente invention est de proposer une méthode permettant d'éviter les conséquences possibles liées à un saut non prévu lors de l'exécution d'un programme. En particulier, cette méthode permet d'éviter que des informations confidentielles soient délivrées de façon indue.
Ce but est atteint par un procédé de contrôle de l'exécution d'un programme par un microcontrôleur comportant au moins une mémoire de programme et une unité de traitement, caractérisé en ce qu'il comporte les étapes de:
- séparation dudit programme en au moins deux blocs contenant chacun une pluralité d'instructions exécutables par ledit microcontrôleur;
- intégration à ces blocs d'au moins une zone de contrôle d'entrée (CTRL-E) contenant des conditions d'entrées, ces conditions d'entrée comportent des adresses de consigne correspondant à des instructions d'où le programme est autorisé à entrer dans ladite zone de contrôle d'entrée (CTRL-E);
- intégration à ces blocs d'au moins une zone de contrôle de sortie (CTRL-S) contenant des conditions de sortie;
- lors de l'exécution d'instructions dudit programme mémorisées dans un bloc donné, mise en œuvre de tests de vérification de l'adéquation entre le déroulement effectif du programme et les conditions d'entrée et/ou de sortie; et - mise en œuvre de contre-mesures si les tests de vérification indiquent une inadéquation entre le déroulement effectif du programme et les conditions d'entrée et/ou de sortie.
Dans le procédé de l'invention, on sépare la mémoire contenant le programme exécutable en blocs, ces blocs étant indépendants et chacun d'eux ayant au moins deux zones de contrôle. L'une de ces zones de contrôle définit quelles sont les conditions que le programme doit remplir pour sortir de ce bloc et exécuter des instructions contenues dans un autre bloc et à quels emplacements le programme peut sauter. Une autre zone de contrôle contient la liste des adresses à partir desquelles il est possible d'entrer dans le bloc concerné, ainsi qu'éventuellement les conditions à remplir pour pouvoir exécuter les instructions contenues dans ce bloc. Une autre zone de contrôle optionnelle peut imposer un contrôle du déroulement du programme à l'intérieur d'un bloc.
Dans la présente invention, le passage d'un bloc à un autre est obligatoirement effectué par l'intermédiaire des zones de contrôle. De cette manière, si le programme saute de façon inattendue sans passer par au moins l'une des zones de contrôle, il pourra automatiquement être stoppé ou d'autres mesures peuvent être prises. De même, si le programme saute d'un bloc à un autre bloc sans que cela corresponde aux règles prévues, il est possible de prendre des mesures telles que l'arrêt du programme par exemple. La seule façon de ne pas bloquer le programme ou d'éviter les contre-mesures est de respecter les règles de passage d'un bloc à un autre.
Brève description des figures
L'invention sera mieux comprise grâce à la description détaillée qui va suivre et qui se réfère aux dessins annexés, donnés à titre d'exemples nullement limitatifs, dans lesquels : • la figure 1 illustre schématiquement les éléments utilisés pour la mise en œuvre du procédé de la présente invention;
• la figure 2 représente un premier mode de réalisation de l'invention; « la figure 3 représente un deuxième mode de réalisation de l'invention;
• les figures 4a et 4b représentent de façon détaillée, deux blocs de contrôle tels qu'utilisés dans les modes de réalisation des figures 2 et 3; • la figure 5 représente de façon schématique un programme opérationnel formé de différents blocs de contrôle ainsi que le contenu de ces blocs; et
• la figure 6 représente sous forme de schéma bloc, le procédé de l'invention.
Description détaillée de l'invention
La figure 1 représente schématiquement un microcontrôleur MC comportant notamment une mémoire de programme MEM, une unité de traitement CPU, un compteur de programme PC et une interface INT. Ce microcontrôleur comporte en outre une mémoire d'historique MH dont la fonction est décrite plus bas.
La mémoire de programme MEM contient l'ensemble du programme exécutable et éventuellement des zones non utilisées. Cette mémoire peut être formée de différents types de support tels que notamment RAM, DRAM, ROM, EPROM, Flash.
L'interface INT du microcontrôleur MP est chargée notamment de la lecture des instructions contenues dans la mémoire selon le compteur de programme PC. Cette lecture se déroule selon les indications données de façon détaillées ci-dessous. Le compteur de programme PC est en charge de mémoriser l'adresse de la prochaine instruction à traiter.
Dans une exécution normale d'un programme conventionnel selon l'art antérieur, on peut considérer qu'il existe deux types de situation lors de l'exécution d'une instruction:
- elle est exécutée juste après la précédente;
- elle est exécutée suite à un saut.
Dans le premier cas, le compteur de programme PC s'incrémente automatiquement à la fin du traitement de l'instruction précédente. Nous sommes dans un mode continu.
Dans le second cas, le compteur de programme PC est chargé avec une valeur pouvant provenir de plusieurs sources, par exemple un saut, un appel de sous-routine, un saut conditionnel ou une entrée d'interruption.
Dans le procédé de l'invention, le programme tel que mémorisé dans la mémoire de programme du microcontrôleur est séparé en blocs. Dans le mode de réalisation illustré par la figure 2, ces blocs ont tous une taille identique et fixe. Cette taille peut être différente d'une application à l'autre, mais dans le mode de réalisation choisi, elle ne peut pas être modifiée lorsqu'elle a été définie. Chacun de ces blocs comporte un certain nombre d'instructions, représentées par les lignes INST. Chaque bloc comporte également deux zones de contrôle dont l'une est placée en début du bloc, l'autre étant placée à la fin du bloc dans ce mode de réalisation. Il est à noter que l'emplacement des blocs de contrôle peut être différent dans d'autres réalisations.
Dans cette figure, l'interface INT est représentée comme un ensemble d'interrupteurs, un interrupteur pour chaque bloc de programme. Ces interrupteurs sont de préférence réalisés sous forme hardware et illustrent schématiquement la connexion entre l'unité de traitement du microcontrôleur et les blocs du programme d'exécution. L'interrupteur fermé pointant sur le bloc supérieur de la figure 2 indique que le contenu de ce bloc peut être utilisé pour être exécuté par l'unité de traitement ou en d'autres termes, que l'unité de traitement a accès au contenu de ce bloc. Celui-ci est dénommé "bloc actif". Les interrupteurs ouverts pointant sur les autres blocs, dits blocs inactifs, indiquent que ces autres blocs ou leur contenu ne sont pas accessibles et que les instructions qu'ils contiennent ne peuvent donc pas être exécutées par l'unité de traitement.
En ce qui concerne le bloc actif, c'est-à-dire celui qui est en communication avec l'unité de traitement par l'intermédiaire de l'interface, une fois que des tests de vérification ont été effectués dans la zone de contrôle d'entrée et passés avec succès, les instructions sont exécutées de façon conventionnelle à l'intérieur du bloc. Un registre d'instructions (non représenté) contient l'instruction en cours de traitement. Le compteur de programme PC mémorise l'adresse de la prochaine instruction à traiter.
La mémoire d'historique MH contient au moins l'adresse de la dernière instruction traitée dans le bloc précédent. La fonction de cette mémoire d'historique MH est explicitée plus en détail plus bas.
Dès le moment où une instruction située hors du bloc actif doit être exécutée, le programme doit passer par une zone de contrôle de sortie, notée CTRL-S sur les figures, contenue dans ce bloc actif.
La figure 4a illustre de façon détaillée, le contenu d'une zone de contrôle d'entrée CTRL-E. Cette zone contient en premier lieu une adresse d'entrée IN. Elle contient ensuite des conditions qui doivent impérativement être remplies pour que le programme puisse se dérouler normalement. Ces conditions peuvent notamment comporter une liste d'adresses de consigne ou adresses autorisées AA. Ces adresses de consigne sont les adresses à partir desquelles il est possible d'être envoyé dans le bloc actif considéré de façon légale, c'est-à-dire conformes au déroulement conventionnel du programme. Les conditions peuvent également concerner des valeurs qui doivent être stockées dans un emplacement spécifique tel qu'un registre ou une mémoire. D'autres conditions pourraient également être envisagées. Les conditions peuvent être définies lors de la réalisation du programme.
La figure 4b illustre de façon détaillée, le contenu d'une zone de contrôle de sortie CTRL-S. Cette zone contient des conditions similaires aux conditions de la zone de contrôle d'entrée. En particulier, elles contiennent une liste d'adresses de consigne ou adresses autorisées FF, qui sont les adresses auxquelles le programme peut être envoyé de façon légale. La zone de contrôle contient également une zone contenant des conditions relatives à l'état attendu d'une mémoire ou d'un ou de plusieurs registres. Ces conditions peuvent, comme précédemment être définies lors de la réalisation du programme et peuvent contenir par exemple une indication relative à l'état attendu d'une mémoire ou d'un ou de plusieurs registres. L'utilisation détaillée de ces zones de contrôle est expliquée en référence à la figure 6.
Dans le mode de réalisation illustré par la figure 3, le programme n'est pas séparé en blocs de tailles identiques, mais en blocs de tailles différentes. La taille de chaque bloc peut être définie en fonction du contenu logique du programme. Ainsi, les blocs peuvent contenir une ou plusieurs sous-routines, la taille des blocs dépendant alors de la taille des sous-routines.
Dans le mode de réalisation illustré par la figure 3, les blocs ne sont pas rendu actifs ou inactifs au moyen d'interrupteurs, mais sont placés dans une ou plusieurs mémoires caches. Selon le mode de réalisation illustré par la figure 3, deux caches sont utilisés. L'un des caches contient le bloc actif et l'autre contient un autre bloc. Cet autre bloc peut être choisi comme le bloc ayant la plus grande probabilité d'être le bloc actif suivant lors de l'exécution du programme.
Il est également possible de n'utiliser qu'un seul cache. Dans ce cas, lorsque le programme contenu dans le cache est exécuté et qu'un bloc actif suivant doit être utilisé, le cache est chargé avec le contenu du nouveau bloc.
L'utilisation de plusieurs caches permet d'éviter, pour autant que le contenu du deuxième cache ait été bien choisi, d'attendre que le contenu de ce nouveau cache soit introduit. Le microcontrôleur selon l'invention est tel que seul le contenu du cache actif est accessible par l'unité de traitement. Si le cache a une taille plus grande que le bloc de programme qui y est introduit, il est possible de placer dans ce cache des instructions permettant de réaliser des contre-mesures. Il est également possible de placer des contre-mesures dans un bloc spécifique.
La figure 3 comporte en outre des éléments de contrôle supplémentaires par rapport au mode de réalisation illustré par la figure 2. Ces éléments sont notés CTRL-I est forment une zone de contrôle intermédiaire.
Lorsque le programme se déroule de façon conventionnelle, il est prévu qu'il arrive sur une telle zone de contrôle intermédiaire. Cette zone contient des instructions qui peuvent correspondre à deux modes de réalisation différents. Selon l'un des modes de réalisation, le programme est renvoyé sur la zone de contrôle d'entrée CTRL-E. Des tests de vérification de l'adéquation entre le déroulement effectif du programme et le déroulement attendu, tels que décrits plus bas sont effectués. En cas de déroulement du programme correspondant à ce qui a été prévu, les tests sont passés avec succès et le programme peut continuer sont déroulement normal.
En cas de déroulement anormal du programme, suite par exemple à une perturbation, les tests d'entrée sont effectués. Si les conditions pour passer à la suite du programme ne sont pas remplies, des contre- mesures sont prises. De cette manière, si une perturbation implique que le programme saute dans un endroit non prévu du bloc, un contrôle intermédiaire peut être effectué.
Selon un autre mode de réalisation, le microcontrôleur contient un marqueur FG. Lorsque le déroulement du programme implique que les tests prévus dans la zone de contrôle d'entrée CTRL-E sont passés avec succès, ce marqueur est mis à une valeur prédéfinie, par exemple 1.
Dans ce mode de réalisation, lorsque le programme arrive sur une zone de contrôle intermédiaire CTRL-I, la valeur du marqueur est vérifiée. Si cette valeur est à 1 , cela signifie que les conditions de contrôle d'entrée ont déjà été vérifiées. Si au contraire, cette valeur est à zéro par exemple, cela signifie que les conditions d'entrée n'ont pas encore été vérifiées. Dans ce cas, des contre-mesures peuvent être prises. Dans ce mode de réalisation, le passage par la zone de contrôle de sortie a pour effet de remettre la valeur du marqueur à une valeur différente de la valeur prédéfinie, par exemple zéro.
La figure 5 illustre d'une part le programme tel que mémorisé dans la mémoire du microcontrôleur, et d'autre part le même programme tel que séparé en blocs indépendants lors de son utilisation conformément au procédé de l'invention. Dans la partie gauche de la figure, le programme est placé en continu. Il débute toujours par un bloc de démarrage (Boot), suivi de différents blocs (BL. 2, BL. 3, ..., BL. N) qui peuvent par exemple correspondre à des routines. Dans la partie droite de la figure, les blocs sont séparés et illustrent les parties du programme qui forment le bloc actif ou qui sont introduites dans les mémoires cache.
A titre d'exemple, le bloc de démarrage Boot contient une zone de contrôle d'entrée CTRL-E, une zone de contrôle intermédiaire CTRL-I, une zone de contrôle de sortie CTRL-S et des lignes d'instructions.
Les blocs 2 et 3 sont introduits dans un même cache CA 1. La place disponible dans le cache qui n'est pas occupée par les lignes d'instruction ou les zones de contrôle est occupée par des contre- mesures CM destinées à agir sur le contenu du cache en cas d'utilisation non conforme.
Le bloc 4 est introduit dans un cache CA 2. Les zones de contrôle ne sont pas placées en début de bloc, mais peuvent être placées n'importe où dans ce bloc.
La figure 6 illustre le déroulement du procédé selon la présente invention. Dans ce procédé, on peut distinguer deux phases. La première phase concerne le démarrage du programme après une remise à zéro (reset) ou après enclenchement d'un dispositif exécutant ce programme (ce démarrage étant couramment appelé boot) et la deuxième phase concerne le déroulement subséquent du programme. Dans la première phase, le programme débute dans un bloc initial, qui peut commencer à une adresse fixe. Ce bloc est référencé par BOOT à la figure 5. Cela signifie qu'après un démarrage ou une mise à zéro (reset), le programme débute toujours à la même adresse. Dans la deuxième phase, le programme débute à une adresse qui dépend du bloc traité, y compris le bloc de démarrage. Cette adresse est fixe pour chaque bloc, mais elle change bien entendu d'un bloc à l'autre. La figure 6 décrit plus spécifiquement la deuxième phase.
Lors du contrôle de sortie du dernier bloc actif exécuté, la mémoire d'historique MH a été remplie avec la dernière adresse utilisée.
Le programme débute donc à l'adresse d'entrée du bloc à exécuter ou bloc actif, celui-ci commençant par la zone de contrôle d'entrée CTRL- E. Celle-ci contient les adresses de provenance autorisées et les autres conditions qui doivent être remplies pour avoir l'autorisation de poursuivre le déroulement du programme. L'adresse de provenance est contrôlée lors d'une étape 10 de la figure 6. Si l'adresse réelle de laquelle vient le programme (adresse mémorisée dans la mémoire d'historique MH) fait partie de la liste des adresses admises AA (contenue dans la zone de contrôle), le déroulement du programme se poursuit à l'étape suivante 11. Si au contraire, l'adresse réelle, mémorisée dans la mémoire d'historique MH, ne fait pas partie de la liste autorisée, des contre-mesures sont prises. Ces contre-mesures, représentées par CM sur la figure, peuvent être le blocage du programme, l'incrémentation d'un compteur d'erreurs, l'effacement de données telles que des instructions du programme, des valeurs mémorisées ou toute autre mesure choisie par le programmeur.
Dans le cas où l'adresse est une adresse autorisée, le programme vérifie, dans une étape 11 , si les conditions relatives à l'état des mémoires ou des registres sont remplies. Ces conditions sont indiquées dans la zone de contrôle et définissent des caractéristiques impératives qui doivent être respectées. Si les conditions impératives ne sont pas remplies, des contre-mesures sont prises. Si les conditions sont remplies, le déroulement du programme peut se poursuivre de façon conventionnelle, par l'exécution du code du programme, ce qui est représenté par la référence 12 sur la figure. Comme indiqué précédemment, le programme peut contenir une ou plusieurs zones de contrôle intermédiaire CTRL-I. Dans l'un des modes de réalisation illustrés, lorsque l'adresse de provenance du programme et les conditions d'accès ont été vérifiées et remplies, le marqueur FG est mis à 1. Lorsque le programme arrive sur une zone de contrôle intermédiaire, un test est effectué, lors d'une étape 13, sur la valeur de ce marqueur. Si ce test indique que les conditions ont été remplies lors du contrôle dans la zone de contrôle (le marqueur vaut 1 dans notre exemple), le programme se déroule normalement par la suite des instructions.
Si au contraire, il apparaît que les conditions n'ont pas été remplies (le marqueur vaut 0 dans cet exemple), des contre-mesures CM sont prises.
Selon une variante, lorsque le programme arrive dans une zone de contrôle intermédiaire CTRL-I, il peut être renvoyé dans la zone de contrôle d'entrée CTRL-E où des tests sont de nouveau effectués.
Il est également possible à la fois de vérifier le marqueur et de reeffectuer les tests de la zone de contrôle d'entrée.
Lorsque le programme arrive à la fin du bloc actif ou qu'une instruction du programme pointe vers une adresse située en dehors de ce bloc, il est nécessaire de passer par la zone de contrôle de sortie CTRL-S avant d'être autorisé à exécuter des opérations d'un autre bloc. Cette zone de contrôle de sortie contient la liste des adresses desquelles le programme peut venir. Si le programme provient d'une adresse autorisée, ce qui est vérifié lors d'une étape 14, le programme peut en outre vérifier les autres conditions de sortie lors d'une étape 15. Ces conditions peuvent être du même type que les conditions d'entrées, c'est-à-dire qu'elles concernent l'état de mémoires ou de registres notamment. La zone de contrôle de sortie peut en outre comporter la liste des blocs dans lesquels le programme peut être dirigé.
Le programme est ensuite dirigé dans un bloc qui devient le nouveau bloc actif et le marqueur FG est remis à zéro. Le processus de contrôle d'entrée tel qu'expliqué ci-dessus recommence pour ce nouveau bloc actif. Bien entendu, si une violation des règles, que ce soit en sortie ou en entrée, est détectée, des contre-mesures, telles que notamment l'arrêt du programme avec éventuellement réinitialisation, peuvent être prises.
Le passage par la zone de contrôle de sortie CTRL-S a pour effet de définir quel est le bloc suivant qui aura le rôle de bloc actif selon le programme courant et de déconnecter l'accès aux autres blocs. Si le programme tente de sauter dans un bloc non autorisé, des contre- mesures pourront être prises. Si le programme est dirigé dans un bloc conforme aux règles de la zone de contrôle de sortie, le nouveau bloc sera le bloc actif, les autres blocs seront rendus inactifs et le programme se déroulera de façon conventionnelle.
En ce qui concerne la première phase de déroulement du programme, le procédé de l'invention est similaire à ce qui a été expliqué précédemment, à ceci près que l'entrée ne peut se faire que par une adresse. Lors du contrôle dans la zone de contrôle d'entrée, seule cette adresse est valable et permet l'exécution de la suite du programme.
Dans les modes de réalisation décrits ci-dessus, un seul bloc ou cache est actif, tous les autres blocs ou caches étant inactifs. En pratique, il est également possible d'avoir plusieurs blocs actifs, par exemple deux ou trois. Dans certains cas, ceci peut permettre un déroulement du programme plus rapide. Les différents modes de réalisation décrits ci-dessus peuvent être combinés entre eux, sans sortir du cadre de l'invention. En particulier, les blocs peuvent être de taille variable ou fixe identiques ou différentes. L'interface pourrait fonctionner à la manière d'interrupteurs ou utiliser une ou plusieurs mémoires cache.

Claims

Revendications
1. Procédé de contrôle de l'exécution d'un programme par un microcontrôleur comportant au moins une mémoire de programme et une unité de traitement, caractérisé en ce qu'il comporte les étapes de:
- séparation dudit programme en au moins deux blocs contenant chacun une pluralité d'instructions exécutables par ledit microcontrôleur;
- intégration à ces blocs d'au moins une zone de contrôle d'entrée (CTRL-E) contenant des conditions d'entrées, ces conditions d'entrée comportent des adresses de consigne correspondant à des instructions d'où le programme est autorisé à entrer dans ladite zone de contrôle d'entrée (CTRL-E);
- intégration à ces blocs d'au moins une zone de contrôle de sortie (CTRL-S) contenant des conditions de sortie;
- lors de l'exécution d'instructions dudit programme mémorisées dans un bloc donné, mise en œuvre de tests de vérification de l'adéquation entre le déroulement effectif du programme et les conditions d'entrée et/ou de sortie; et
- mise en œuvre de contre-mesures si les tests de vérification indiquent une inadéquation entre le déroulement effectif du programme et les conditions d'entrée et/ou de sortie.
2. Procédé de contrôle de l'exécution d'un programme selon la revendication 1 , caractérisé en ce que les conditions de sortie comportent des adresses de consigne correspondant à des instructions auxquelles le programme est autorisé à aller.
3. Procédé de contrôle de l'exécution d'un programme selon la revendication 1 , caractérisé en ce que lesdites conditions d'entrée et/ou de sortie comportent des conditions concernant au moins une valeur qui doit être contenue dans un emplacement spécifique.
4. Procédé de contrôle de l'exécution d'un programme selon la revendication 1 , caractérisé en ce que les contre-mesures comportent l'interdiction de l'exécution subséquente d'instructions mémorisées dans un autre bloc que celui dans lequel la dernière instruction a été exécutée.
5. Procédé de contrôle de l'exécution d'un programme selon la revendication 1 , caractérisé en ce que l'on intègre en outre dans ledit bloc au moins une zone de contrôle intermédiaire (CTRL-I).
6. Procédé de contrôle de l'exécution d'un programme selon la revendication 1 , caractérisé en ce que lorsque le programme débute une instruction dans un bloc différent du bloc dans lequel l'instruction précédente a été effectuée, il effectue d'abord les tests de vérification contenus dans ledit bloc de contrôle d'entrée (CTRL-E).
7. Procédé de contrôle de l'exécution d'un programme selon la revendication 1 , caractérisé en ce que lorsque le programme quitte un bloc pour exécuter une instruction contenue dans un autre bloc, il effectue, avant de quitter ce bloc, les tests de vérification contenus dans ledit bloc de contrôle de sortie (CTRL-S).
8. Procédé de contrôle de l'exécution d'un programme selon les revendications 1 et 6, caractérisé en ce que lesdits tests du bloc de contrôle d'entrée consistent à comparer l'adresse réelle de provenance du programme avec lesdites adresses de consigne.
9. Procédé de contrôle de l'exécution d'un programme selon la revendication 7, caractérisé en ce que, avant de quitter un bloc, une adresse correspondant à ce bloc est mémorisée dans une mémoire d'historique MH.
10. Procédé de contrôle de l'exécution d'un programme selon la revendication 1 , caractérisé en ce que le microcontrôleur comporte un marqueur, ce marqueur étant forcé à une valeur prédéfinie lorsque les tests de vérification de la zone de contrôle d'entrée ont été passés avec succès.
11. Procédé de contrôle de l'exécution d'un programme selon la revendication 10, caractérisé en ce que le marqueur est forcé à une valeur différente de ladite valeur prédéfinie lorsque le programme quitte un bloc.
12. Procédé de contrôle de l'exécution d'un programme selon les revendications 5 et 10, caractérisé en ce que lorsque le programme arrive sur une zone de contrôle intermédiaire (CTRL-I), la valeur du marqueur est vérifiée, et en ce que si la valeur du marqueur est égale à ladite valeur prédéfinie, le programme se poursuit.
13. Procédé de contrôle de l'exécution d'un programme selon la revendication 5, caractérisé en ce que lorsque le programme arrive sur une zone de contrôle intermédiaire (CTRL-I), il est renvoyé sur la zone de contrôle d'entrée (CTRL-E).
EP07822611A 2006-11-16 2007-11-15 Procédé de contrôle de l'exécution d'un programme par un microcontrôleur Withdrawn EP2087428A2 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP07822611A EP2087428A2 (fr) 2006-11-16 2007-11-15 Procédé de contrôle de l'exécution d'un programme par un microcontrôleur

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP06124175A EP1923789A1 (fr) 2006-11-16 2006-11-16 Procédé de contrôle de l'exécution d'un programme par un microcontrôleur
PCT/EP2007/062364 WO2008059008A2 (fr) 2006-11-16 2007-11-15 Procédé de contrôle de l'exécution d'un programme par un microcontrôleur
EP07822611A EP2087428A2 (fr) 2006-11-16 2007-11-15 Procédé de contrôle de l'exécution d'un programme par un microcontrôleur

Publications (1)

Publication Number Publication Date
EP2087428A2 true EP2087428A2 (fr) 2009-08-12

Family

ID=38098638

Family Applications (2)

Application Number Title Priority Date Filing Date
EP06124175A Withdrawn EP1923789A1 (fr) 2006-11-16 2006-11-16 Procédé de contrôle de l'exécution d'un programme par un microcontrôleur
EP07822611A Withdrawn EP2087428A2 (fr) 2006-11-16 2007-11-15 Procédé de contrôle de l'exécution d'un programme par un microcontrôleur

Family Applications Before (1)

Application Number Title Priority Date Filing Date
EP06124175A Withdrawn EP1923789A1 (fr) 2006-11-16 2006-11-16 Procédé de contrôle de l'exécution d'un programme par un microcontrôleur

Country Status (4)

Country Link
US (1) US8141145B2 (fr)
EP (2) EP1923789A1 (fr)
TW (1) TW200830177A (fr)
WO (1) WO2008059008A2 (fr)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101944011B (zh) * 2010-06-29 2015-11-25 北京中星微电子有限公司 运行程序的装置、芯片和方法
GB2561881A (en) * 2017-04-27 2018-10-31 Airbus Group Ltd Microcontroller
FR3118219B1 (fr) * 2020-12-17 2024-03-15 Stmicroelectronics Grand Ouest Sas Procédé de protection d’un système, par exemple un microcontrôleur, et sytème correspondant

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2003418A1 (fr) * 1988-12-29 1990-06-29 Louis A. Winans Transmission de messages et d'ecran vers des ordinateurs dans un reseau multilingue
US5729676A (en) * 1993-12-10 1998-03-17 Nec Corporation Method of generating data for evaluating programs
FR2790844B1 (fr) * 1999-03-09 2001-05-25 Gemplus Card Int Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme
US6823507B1 (en) * 2000-06-06 2004-11-23 International Business Machines Corporation Detection of memory-related errors in computer programs
US20020138748A1 (en) * 2001-03-21 2002-09-26 Hung Andy C. Code checksums for relocatable code
US6880149B2 (en) * 2002-04-01 2005-04-12 Pace Anti-Piracy Method for runtime code integrity validation using code block checksums
FR2841015A1 (fr) * 2002-06-18 2003-12-19 St Microelectronics Sa Controle d'execution d'un programme
WO2004001584A2 (fr) * 2002-06-24 2003-12-31 Ante Vista Gmbh Procede d'execution de code machine symbolique structure sur un microprocesseur
FR2864655B1 (fr) * 2003-12-31 2006-03-24 Trusted Logic Procede de controle d'integrite de programmes par verification d'empreintes de traces d'execution

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
None *
See also references of WO2008059008A2 *

Also Published As

Publication number Publication date
US20080120517A1 (en) 2008-05-22
WO2008059008A3 (fr) 2009-01-15
WO2008059008A2 (fr) 2008-05-22
EP1923789A1 (fr) 2008-05-21
US8141145B2 (en) 2012-03-20
TW200830177A (en) 2008-07-16

Similar Documents

Publication Publication Date Title
US7987351B2 (en) Method and system for enhanced boot protection
EP0540095B1 (fr) Microcircuit pour carte à puce à mémoire programmable protégée
FR2675602A1 (fr) Procede et dispositif de protection d'un systeme informatique.
US11449602B1 (en) Systems and methods for generating trust binaries
US9043812B2 (en) Dynamic rule management for kernel mode filter drivers
EP2087428A2 (fr) Procédé de contrôle de l'exécution d'un programme par un microcontrôleur
WO2019175482A1 (fr) Traitement sécurisé de données
EP1605333B1 (fr) Contrôle de l'exécution d'un programme
EP0919026A1 (fr) Procede de modification de sequences de code et dispositif associe
CA2002349C (fr) Systeme de telechargement securise d'un terminal et procede mis en oeuvre
FR2944117A1 (fr) Procedes et dispositifs de gestion d'evenements lies a la securite des systemes informatiques d'aeronefs
FR2901949A1 (fr) Procede de mise en veille d'un decodeur de television numerique et decodeur numerique a mode veille basse consommation
FR2749697A1 (fr) Procede de mise en oeuvre d'un appareil de commande avec une memoire programmee par un dispositif de programmation
JP2006330864A (ja) サーバ計算機システムの制御方法
EP2860660A1 (fr) Système et méthode de chargement sécurisé de données dans une mémoire cache associée à un processeur sécurisé
EP3470999A1 (fr) Sécurisation d'instructions de branchement conditionnel composé dans un programme informatique en code intermédiaire
WO2021123684A1 (fr) Système électronique et procédés d'activation dynamique de contre-mesures
EP2377290A1 (fr) Procede et dispositif de transfert securise de donnees numeriques
EP4174709B1 (fr) Procede de verrouillage d'une zone de memoire non-volatile reinscriptible et dispositif electronique mettant en oeuvre ledit procede
GB2595509A (en) Computer secure boot method and system
FR2888651A1 (fr) Procede pour la prise en compte automatique et le stockage persistant de parametres de personnalisation a priori volatils
EP4632579A1 (fr) Procede de protection d'un microcontroleur
US20250328631A1 (en) Systems and Methods for Monitoring Network Traffic
US20240289434A1 (en) Method and Apparatus for Operating a Computer
FR3110005A1 (fr) Contrôleur de démarrage sécurisé pour un système embarqué, système embarqué et procédé de démarrage sécurisé associés

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20090602

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC MT NL PL PT RO SE SI SK TR

RIN1 Information on inventor provided before grant (corrected)

Inventor name: GOGNIAT, CHRISTOPHE

Inventor name: HILL, MICHAEL JOHN

RAP1 Party data changed (applicant data changed or rights of an application transferred)

Owner name: NAGRAVISION S.A.

DAX Request for extension of the european patent (deleted)
17Q First examination report despatched

Effective date: 20100212

GRAP Despatch of communication of intention to grant a patent

Free format text: ORIGINAL CODE: EPIDOSNIGR1

INTG Intention to grant announced

Effective date: 20180328

RIN1 Information on inventor provided before grant (corrected)

Inventor name: HILL, MICHAEL JOHN

Inventor name: GOGNIAT, CHRISTOPHE

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20180808