Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
ELECTRONIC SYSTEM
Document Type and Number:
WIPO Patent Application WO/2021/043829
Kind Code:
A1
Abstract:
The present description concerns a method for authenticating instructions and operands in an electronic system comprising a controller, the method comprising: extraction of the instructions and operands, by a first circuit (102) of the controller, from at least one first memory (104) internal to the controller, via a matrix bus (106) of the controller; fetching, on the matrix bus (106), by a second circuit (110) internal to the controller, of the instructions and operands during the transmission of same to the first circuit (102); and generation of a word representative of the instructions and operands (DIGEST).

Inventors:
RUELLE FREDERIC (FR)
Application Number:
PCT/EP2020/074475
Publication Date:
March 11, 2021
Filing Date:
September 02, 2020
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
STMICROELECTRONICS GRAND OUEST SAS (FR)
International Classes:
G06F21/57
Foreign References:
US20190236281A12019-08-01
US9749141B22017-08-29
FR1909826A2019-09-06
Attorney, Agent or Firm:
CABINET BEAUMONT (FR)
Download PDF:
Claims:
REVENDICATIONS

1.Procédé d'authentification d'instructions et d'opérandes dans un système électronique comprenant un contrôleur, le procédé comprenant : l'extraction des instructions et opérandes par un premier circuit (102) du contrôleur depuis au moins une première mémoire (104) interne au contrôleur par l'intermédiaire d'un bus matriciel (106) du contrôleur ; le prélèvement sur le bus matriciel (106), par un deuxième circuit (110) interne au contrôleur, des instructions et opérandes lors de leur transmission au premier circuit (102) ; et la génération d'un mot représentatif des instructions et opérandes (DIGEST).

2. Système électronique comprenant contrôleur, le contrôleur comprenant : un premier circuit (102) configuré pour extraire des instructions et des opérandes depuis au moins une première mémoire (104) interne au contrôleur par l'intermédiaire d'un bus matriciel (106) du contrôleur, et un deuxième circuit (110) configuré pour prélever, sur le bus matriciel, les instructions et les opérandes lorsqu'elles sont transmises au premier circuit (102) et pour générer un mot représentatif des instructions et opérandes (DIGEST).

3. Procédé selon la revendication 1 ou système selon la revendication 2, dans lequel le premier circuit (102) est configuré pour exécuter les instructions, les instructions étant des instructions de démarrage du système.

4. Procédé selon la revendication 1 ou 3 ou système selon la revendication 2 ou 3, dans lequel le deuxième circuit (110) est configuré pour comparer le mot représentatif des instructions à un mot de référence.

5. Procédé ou système selon la revendication 4, dans lequel le deuxième circuit (110) est configuré pour déterminer que les instructions sont authentiques lorsque le mot représentatif des instructions est identique au mot de référence et que les instructions ne sont pas authentiques lorsque le mot représentatif des instructions n'est pas identique au mot de référence.

6. Procédé ou système selon la revendication 5, dans lequel le système est configuré pour être redémarré ou éteint si le deuxième circuit (110) détermine que les instructions ne sont pas authentiques.

7. Procédé ou système selon la revendication 4 à 6, dans lequel le deuxième circuit (110) comprend une deuxième mémoire (112) dans laquelle le mot de référence est contenu depuis une programmation initiale du système.

8. Procédé ou système selon la revendication 6 ou 7, dans lequel le deuxième circuit (110) détermine le début desdites instructions en comparant les adresses à une adresse de début des instructions (0START) contenue dans la deuxième mémoire (112).

9. Procédé ou système selon l'une quelconque des revendications 6 à 8, dans lequel la fin des données est déterminée par une durée prédéterminée après le début des instructions ou en comparant les adresses à une adresse de fin des instructions (@END) contenue dans la deuxième mémoire.

10.Procédé selon l'une quelconque des revendications 1, 3 à 9 ou système selon l'une quelconque des revendications 2 à 9, dans lequel la première mémoire (104) est une mémoire non volatile interne au contrôleur, le contrôleur comprenant une troisième mémoire (108), la première mémoire comprenant les instructions et la troisième mémoire comprenant les opérandes.

11.Procédé selon l'une quelconque des revendications 1, 3 à

10 ou système selon l'une quelconque des revendications 2 à 10, dans lequel le bus matriciel comprend des bus formant des lignes et des colonnes, chaque intersection entre une ligne et une colonne étant configurée pour permettre ou non le transfert d'information entre la ligne et la colonne.

12.Procédé selon l'une quelconque des revendications 1, 3 à

11 ou système selon l'une quelconque des revendications 2 à 11, dans lequel le premier circuit est relié à la matrice par une première entrée/sortie sur laquelle sont transmises les instructions, et au moins une deuxième entrée/sortie sur laquelle sont transmises les opérandes.

13.Procédé ou système selon la revendication 10 et 12, dans lequel la première mémoire (104) est reliées aux première et deuxième entrées/sorties du premier circuit (102) par le bus matriciel (106) et la troisième mémoire (108) est reliées à la troisième entrée/sortie du premier circuit par le bus matriciel.

14.Procédé selon l'une quelconque des revendications 1, 3 à

13 ou système selon l'une quelconque des revendications 2 à 14, dans lequel les opérandes incluent des paramètres d'initialisation d'au moins un élément parmi : une unité de protection de la mémoire, un circuit de type "chien de garde", ou des circuits de protection de mémoires non volatiles.

Description:
DESCRIPTION

Système électronique

La présente demande de brevet revendique la priorité de la demande de brevet français 19/09826 qui sera considérée comme faisant partie intégrante de la présente description.

Domaine technique

[0001] La présente description concerne de façon générale les systèmes électroniques et plus particulièrement les systèmes comprenant une mémoire.

Technique antérieure

[0002] La sécurité des systèmes électroniques est d'autant plus importante que les domaines des objets connectés, par exemple la domotique, se développent. En particulier, il est important de pouvoir s'assurer que les données, c'est-à-dire les instructions de démarrage et les opérandes associés, contenues dans des mémoires et exécutées lors de l'initialisation du système correspondent bien aux instructions voulues et non pas des instructions modifiées par des pirates.

[0003] Il serait souhaitable d'améliorer au moins un aspect des systèmes électroniques connus.

Résumé de l'invention

[0004] Un mode de réalisation pallie tout ou partie des inconvénients des systèmes électroniques connus.

[0005] Un mode de réalisation prévoit un procédé d'authentification d'instructions et d'opérandes dans un système électronique comprenant un contrôleur, le procédé comprenant : l'extraction des instructions et opérandes par un premier circuit du contrôleur depuis au moins une première mémoire interne au contrôleur par l'intermédiaire d'un bus matriciel du contrôleur ; le prélèvement sur le bus matriciel, par un deuxième circuit interne au contrôleur, des instructions et opérandes lors de leur transmission au premier circuit ; et la génération d'un mot représentatif des instructions et opérandes .

[0006] Un autre mode de réalisation prévoit un système électronique comprenant contrôleur, le contrôleur comprenant : un premier circuit configuré pour extraire des instructions et des opérandes depuis au moins une première mémoire interne au contrôleur par l'intermédiaire d'un bus matriciel du contrôleur, et un deuxième circuit configuré pour prélever, sur le bus matriciel, les instructions et les opérandes lorsqu'elles sont transmises au premier circuit et pour générer un mot représentatif des instructions et opérandes.

[0007] Selon un mode de réalisation, le premier circuit est configuré pour exécuter les instructions, les instructions étant des instructions de démarrage du système.

[0008] Selon un mode de réalisation, le deuxième circuit est configuré pour comparer le mot représentatif des instructions à un mot de référence.

[0009] Selon un mode de réalisation, le deuxième circuit est configuré pour déterminer que les instructions sont authentiques lorsque le mot représentatif des instructions est identique au mot de référence et que les instructions ne sont pas authentiques lorsque le mot représentatif des instructions n'est pas identique au mot de référence.

[0010] Selon un mode de réalisation, le système est configuré pour être redémarré ou éteint si le deuxième circuit détermine que les instructions ne sont pas authentiques. [0011] Selon un mode de réalisation, le deuxième circuit comprend une deuxième mémoire dans laquelle le mot de référence est contenu depuis une programmation initiale du système .

[0012] Selon un mode de réalisation, le deuxième circuit détermine le début desdites instructions en comparant les adresses à une adresse de début des instructions contenue dans la deuxième mémoire.

[0013] Selon un mode de réalisation, la fin des données est déterminée par une durée prédéterminée après le début des instructions ou en comparant les adresses à une adresse de fin des instructions contenue dans la deuxième mémoire.

[0014] Selon un mode de réalisation, la première mémoire est une mémoire non volatile interne au contrôleur, le contrôleur comprenant une troisième mémoire, la première mémoire comprenant les instructions et la troisième mémoire comprenant les opérandes.

[0015] Selon un mode de réalisation, le bus matriciel comprend des bus formant des lignes et des colonnes, chaque intersection entre une ligne et une colonne étant configurée pour permettre ou non le transfert d'information entre la ligne et la colonne.

[0016] Selon un mode de réalisation, le premier circuit est relié à la matrice par une première entrée/sortie sur laquelle sont transmises les instructions, et au moins une deuxième entrée/sortie sur laquelle sont transmises les opérandes.

[0017] Selon un mode de réalisation, la première mémoire est reliée aux première et deuxième entrées/sorties du premier circuit par le bus matriciel et la troisième mémoire est reliées à la troisième entrée/sortie du premier circuit par le bus matriciel. [0018] Selon un mode de réalisation, les opérandes incluent des paramètres d'initialisation d'au moins un élément parmi : une unité de protection de la mémoire, un circuit de type "chien de garde", ou des circuits de protection de mémoires non volatiles.

Brève description des dessins

[0019] Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec les figures jointes parmi lesquelles :

[0020] la figure 1 représente un mode de réalisation d'un système électronique ; et

[0021] la figure 2 représente un mode de réalisation d'un procédé d'authentification d'instructions et de données.

Description des modes de réalisation

[0022] De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. En particulier, les éléments structurels et/ou fonctionnels communs aux différents modes de réalisation peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques.

[0023] Par souci de clarté, seuls les étapes et éléments utiles à la compréhension des modes de réalisation décrits ont été représentés et sont détaillés. En particulier, les différentes applications des modes de réalisation de systèmes électroniques ne seront pas détaillées.

[0024] Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments reliés ou couplés entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés ou couplés par l'intermédiaire d'un ou plusieurs autres éléments.

[0025] Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures.

[0026] Sauf précision contraire, les expressions "environ", "approximativement", "sensiblement", et "de l'ordre de" signifient à 10 % près, de préférence à 5 % près.

[0027] La figure 1 représente un mode de réalisation d'un système électronique 100. Le système 100 est un système dont on cherche à protéger des instructions, par exemple les instructions de démarrage, par exemple contre des modifications. Le système 100 correspond par exemple à un objet connecté, par exemple dans le domaine de la domotique. Les modes de réalisation décrits ici sont particulièrement applicables à des types de systèmes qui n'étaient pas ordinairement connectés à un réseau. Plus précisément, la figure 1 représente un contrôleur du système 100.

[0028] Le système 100, et plus précisément ledit contrôleur du système, comprend un circuit 102, de préférence un processeur (mR). Le système comprend au moins une mémoire 104 (MEM1). La mémoire 104 est une mémoire interne du contrôleur. La mémoire 104 est une mémoire non volatile réinscriptible, par exemple une mémoire flash. Le système comprend aussi au moins une mémoire 108 (MEM2), par exemple volatile, par exemple une mémoire RAM. La mémoire 108 est aussi une mémoire interne du contrôleur. De préférence, les mémoire 104 et 108 sont des mémoires distinctes. [0029] Les différents éléments du système, en particulier les mémoires 104 et 108 et le processeur 102, sont connectés les uns aux autres par une matrice de bus 106, ou bus matriciel d'interconnexion, par exemple un bus à hautes performances avancées (AHB - Advanced High-performance Bus). Le bus matriciel 106 est interne au contrôleur. Le bus matriciel 106 permet de relier les circuits de type "maître" aux circuits de type "esclave". Chaque élément du dispositif est relié à au moins une ligne ou à au moins une colonne de la matrice. De préférence, les éléments de type "maître" sont reliés, de préférence connectés, aux colonnes et les éléments du type "esclave" sont reliés, de préférence connectés, aux lignes. Les lignes et les colonnes du bus matriciel sont des éléments de transmission d'information, par exemple des bus.

[0030] Le processeur 102 est relié, de préférence connecté, à trois colonnes de la matrice 106 : une colonne sur laquelle sont transmises des instructions, et au moins une colonne sur laquelle sont transmises des opérandes. Dans l'exemple de la figure 1, le processeur est relié, de préférence connecté, à deux colonnes sur lesquelles sont transmise des opérandes.

[0031] La mémoire 104 est par exemple reliée, de préférence connectée, à deux lignes, par exemple une ligne sur laquelle sont transmises des instructions et une ligne sur laquelle sont transmises des opérandes. La mémoire 108 est par exemple reliée, de préférence connectée, à une ligne de la matrice 106.

[0032] Le système 100 peut en outre comprendre d'autres circuits connectés à la matrice 106, par exemple un ou plusieurs circuits d'accès direct à la mémoire 120 (DMA1, DMA2) et des circuits exécutant d'autres fonctions, représentés en figure 1 par des blocs 122 (FCT1, FCT2). Chaque DMA est par exemple relié, de préférence connecté, à une colonne de la matrice 106. Chaque circuit 122 est par exemple relié, de préférence connecté, à une ligne de la matrice 106.

[0033] Chaque ligne croise toutes les colonnes et, inversement, chaque colonne croise toutes les lignes. Tous les croisements ne correspondent cependant pas à une connexion électrique. Chaque croisement correspond à une connexion électrique possible. Il est possible de choisir quelle ligne est électriquement connectée à quelle colonne. De préférence, cela est déterminé lors de la fabrication du dispositif. De préférence, les liaisons entre lignes et colonnes ne sont pas modifiées après la fabrication du dispositif. Les liaisons sont ainsi fixes et immuables lors du fonctionnement du dispositif .

[0034] Ainsi, dans le dispositif 100, une colonne 102a, reliée, de préférence connectée, à une entrée/sortie du processeur 102, est connectée à une ligne 104a reliée, de préférence connectée, à une entrée/sortie de la mémoire 104 et à une ligne 108a reliée, de préférence connectée, à une entrée/sortie de la mémoire 108. Ces liaisons sont représentées, en figure 1, par des points aux intersections des lignes et des colonnes. Ainsi, le processeur 102 est relié, de préférence connecté, à la mémoire 104 par la colonne 102a et la ligne 104a et est relié, de préférence connecté, à la mémoire 108 par la colonne 102a et la ligne 108a.

[0035] Dans le mode de réalisation de la figure 1, les croissements : entre la colonne 102a et une ligne 104b reliée, de préférence connectée, à une autre entrée/sortie de la mémoire 104 ; entre la colonne 102a et une ligne 122a reliée, de préférence connectée, à une entrée/sortie du bloc FCT1 ; et entre la colonne 102a et une ligne 122b reliée, de préférence connectée, à une entrée/sortie du bloc FCT2, ne sont pas configurés pour permettre une connexion électrique. Ainsi, il n'est pas possible au processeur 102 d'échanger des informations avec les blocs FCT1 et FCT2 par la ligne 102a.

[0036] Similairement, dans le mode de réalisation de la figure 1, une colonne 102b, reliée, de préférence connectée, à une entrée/sortie du processeur 102, est reliée, de préférence connectée, à la ligne 104b et à la ligne 108a, mais n'est pas reliée aux ligne 104a, 122a et 122b.

[0037] De préférence, le processeur 102 est relié, de préférence connecté, à la mémoire 104 par la colonne 102a et la ligne 104a, sur lesquelles sont transmises les instructions et par la colonne 102b et la ligne 104b, sur lesquelles sont transmises des opérandes.

[0038] La colonne 102c, reliée à une entrée/sortie du processeur 102, est, dans l'exemple de la figure 1, reliée, de préférence connectée, à la ligne 108a, 122a et 122b. La colonne 102c est une colonne sur laquelle sont transmis les opérandes. La colonne 102c n'est pas, dans l'exemple de la figure 1, reliée aux lignes 104a et 104b. Ainsi, le processeur 102 n'est pas, de préférence, relié à la mémoire 104 par la colonne 102c sur laquelle sont transmis les opérandes. Le processeur 102 est cependant relié à la mémoire 108 par la colonne 102c et la ligne 108a, de manière à pouvoir transmettre des opérandes.

[0039] Le processeur 102 peut donc recevoir des instructions ou des opérandes situées dans la mémoire 104 et recevoir des opérandes situés dans la mémoire 108.

[0040] Les DMA 120 sont par exemple reliés, de préférence connectés, aux lignes 104a, 104b, 108a, 122a and 122b respectivement par des colonnes 120a et 120b.

[0041] Les mémoires 104 et 108 contiennent les données de démarrage, c'est-à-dire des instructions de démarrage ("boot"), ou d'initialisation, du système, contenues de préférence dans la mémoire 104 et des opérandes utilisés lors du démarrage, contenues de préférence dans la mémoire 108.

[0042] Par instructions de démarrage, on entend les instructions elles-mêmes. Les instructions de démarrage sont exécutées par le circuit 102, et sont transmises par la ligne 104a de la matrice 106. Les instructions de démarrage sont de préférence parmi les premières instructions exécutées lors de la mise en fonctionnement du système. Les opérandes comprennent par exemple les paramètres d'initialisation d'au moins un élément parmi : une unité de protection de la mémoire, qui autorise ou non l'accès des différentes parties des mémoires aux différents périphériques et aux différents programmes, un circuit de type "chien de garde" ( "watchdog"), et des circuits de protection de mémoires non volatiles.

[0043] Par circuit de type "chien de garde", on entend un circuit comprenant un minuteur, le minuteur étant relancé régulièrement avant d'atteindre sa valeur finale en situation normal. Si le dispositif fait face à une attaque empêchant le minuteur d'être relancer, il atteint alors sa valeur finale et une erreur est détectée.

[0044] Les données de démarrage, c'est-à-dire les instructions de démarrage et les opérandes, sont écrites dans les mémoires lors de la programmation initiale du système. Les données de démarrage ne sont pas censées être modifiées en dehors d'une reprogrammation totale du système, qui impliquerait l'effacement total des mémoires 104 et 108. Cette reprogrammation serait alors considérée comme la nouvelle programmation initiale du système. Ainsi, des modifications des instructions de démarrage impliquent une tentative de piratage, cherchant par exemple à éviter les sécurités du système 100. [0045] Le système 100 comprend un circuit 110 d'authentification des instructions, comprenant de préférence une mémoire interne 112 et différents circuits logiques 114. De préférence, le circuit 110, le processeur 102, le bus matriciel 106 et les mémoires 104 et 108 font partie d'un même microcontrôleur.

[0046] Les différents circuits logiques 114 comprennent un circuit 114-2 (MONITOR) configuré pour surveiller le bus matriciel 106. Plus précisément, le circuit 114-2 est configuré pour surveiller toutes les liaisons du bus matricielle. En particulier, le circuit logique 114-2 surveille le passage des adresses des instructions transmises par la mémoire 104 sur la colonne 102b et la ligne 104b. Les circuits logiques 114 comprennent un circuit 114-4

(ACCUMULATE) configuré pour prélever les données sur les liaisons du bus matriciel et pour obtenir un mot représentatif (DIGEST) des données de démarrage, et un circuit 114-6 (COMPARE) configuré pour comparer le mot représentatif à un mot de référence (REFERENCE).

[0047] La mémoire interne 112, correspondant de préférence à des registres, comprend des données relatives à l'authentification des instructions de démarrage. En particulier, les registres de la mémoire 112 comprennent le mot de référence REFERENCE et le mot représentatif DIGEST. De plus, les registres de la mémoire 112 peuvent comprendre des éléments caractérisant les instructions de démarrage, par exemple l'adresse de la première instruction (0START) et l'adresse de la dernière instruction (@END).

[0048] Toutes les données de démarrage transmises, par le bus matriciel, entre la transmission d'une première donnée, de préférence une première instruction, par exemple repérée par son adresse 0START et la dernière donnée, de préférence une dernière instruction à authentifier, repérée par son adresse @END. De préférence, uniquement des données stockées par les mémoires 104 et 106 sont fournies entre la première et la dernière donnée. Cependant, des informations, par exemple des données, transmisses sur d'autres lignes ou colonnes peuvent être transmises entre les première et dernière données et sont aussi utilisées pour la génération du mot représentatif.

[0049] A titre de variante, plusieurs séquences de données peuvent être utilisées pour former le mot représentatif, ces séquences pouvant être séparées par des séquences de données n'étant pas utilisées dans la formation du mot représentatif. La mémoire interne contient alors de préférence les adresses de début et de fin de chacune desdites séquences utilisées pour générer le mot représentatif.

[0050] Les données utilisées pour générer le mot représentatif sont telles que, entre la première et la dernière donnée, les instructions et les opérandes transmises au processeur 102 sont toujours exactement les mêmes, de référence dans le même ordre. De préférence, la génération du mot représentatif est toujours faite avec des instructions et au moins un opérande.

[0051] De préférence, le circuit 110 comprend : des câblages (114-2) permettant de surveiller les informations transmises sur toutes les lignes et colonnes du bus matriciel ;

- des éléments de logique (114-2) permettant de déterminer le début et la fin des données à authentifier, par exemple des éléments de logique permettant de comparer les adresses transmises sur les ligne et colonne 104a et 102a ;

- des éléments de logique (114-4) permettant de générer le mot représentatif

- des éléments de logique (114-6) permettant de comparer des mots binaires, et permettant ainsi de comparer le mot représentatif DIGEST au mot de référence REFERENCE ; - une horloge permettant de synchroniser les éléments du circuit 110 ; et

- des registres 112 dans lesquels sont contenus le mot de référence et les adresses de début et de fin des séquences de données à authentifier.

[0052] La figure 2 représente un mode de réalisation d'un procédé d'authentification d'instructions, effectué par exemple par le système 100 de la figure 1.

[0053] Le procédé comprend une première étape 200 au cours de laquelle le processeur 102 envoie une demande à la mémoire 104 pour extraire (EXTRACT) les instructions de démarrage. Cette étape est effectuée lors du démarrage du système 100.

[0054] Les instructions de démarrage sont ensuite transmises au circuit 102 par l'intermédiaire du bus matriciel 106, dans le but d'être exécutées par le processeur 102.

[0055] Le circuit 110 peut être configuré pour déterminer le début des instructions de démarrage en surveillant le bus de données et en repérant la première instruction elle-même.

[0056] Alternativement, le circuit 110 surveille le bus matriciel 106 et est configuré pour repérer la première instruction de démarrage transmise par la mémoire 104. Pour ce faire, les adresses des instructions passant sur le bus d'adresses sont par exemple comparées (étape 202, "=@START ?") à l'adresse 0START de la première instruction de démarrage.

[0057] Alternativement, le circuit 110 peut être configuré pour déterminer le début des instructions de démarrage sans comparer les adresses des instructions transmises à une adresse préprogrammée. Par exemple, le circuit 110 peut considérer que la première instruction transmise par la mémoire 104 est la première instruction de démarrage.

[0058] Le circuit 110 peut être configuré pour surveiller, pendant une durée préprogrammée, le bus 106 de manière à repérer la première instruction de démarrage. Si la première instruction de démarrage n'a pas été repérée au cours de cette durée, le circuit 110 détermine qu'il y a un problème au niveau des instructions de démarrage et que la sécurité du système peut être compromise.

[0059] Selon un mode de réalisation, le circuit 110 peut être configuré pour surveiller, pendant une durée préprogrammée, le bus 106 de manière à repérer la dernière instruction de démarrage de la séquence à authentifier. Si la dernière instruction de démarrage n'a pas été repérée au cours de cette durée, le circuit 110 détermine qu'il y a un problème au niveau des instructions de démarrage et que la sécurité du système peut être compromise.

[0060] Lorsque la première instruction de démarrage est repérée (branche Y de l'étape 202), chaque donnée passant par le bus matriciel est, d'une part, prélevée par le circuit 102 pour être exécutée (étape 204, "IMPLEMENT"), et, d'autre part, prélevée par le circuit 110 (étape 206, "COLLECT"). Ainsi, le circuit 110 surveille le bus matriciel 106 et y lit directement les instructions et leurs adresses, par exemple sur les colonnes 102a et 102b, ainsi que les opérandes, par exemple sur la colonne 102c. Les étapes 204 et 206 sont effectuées de manière parallèle et les données sont donc traitées parallèlement par les circuits 102 et 110.

[0061] Le circuit 110 détermine ensuite (étape 208) si l'instruction transmise est la dernière instruction de démarrage. Par exemple, l'adresse, sur le bus d'adresses, de l'instruction transmise est comparée à l'adresse @END de la dernière instruction de démarrage. Si l'adresse de l'instruction transmise est différente de l'adresse @END, (branche N de l'étape 208), on retourne aux étapes 204 et 206 pour transmettre la donnée suivante. Si l'adresse de l'instruction transmise est égale à l'adresse @END, (branche Y de l'étape 208), la transmission des données de démarrage est considérée terminée et on passe à l'étape suivante.

[0062] La fin des instructions, autrement dit la fin de la séquence de données de démarrage à authentifier, peut alternativement être déterminée par une durée tl correspondant au temps mis par l'ensemble des données de démarrage pour être transmises au circuit 102. La fin des données de démarrage correspond à l'instant t + tl, où t est l'instant de début des données de démarrage (par exemple l'instant de l'étape 202). La durée tl est par exemple contenue dans la mémoire interne 112.

[0063] A l'étape 209 (GENERATE) suivant l'étape 208 (branche Y), les données de démarrage prélevées par le circuit 110 sur le bus matriciel sont utilisées pour générer le mot représentatif (DIGEST). Selon un exemple, les données prélevées sur le bus matricielle sont toutes stockées dans la mémoire interne 112 et le mot représentatif est généré en une seule fois à partir de l'ensemble des instructions mémorisées. Selon un autre exemple, le circuit 110 peut mettre à jour le mot représentatif à chaque fois qu'une donnée est prélevée par le circuit 110 à l'étape 206.

[0064] Après la fin de la transmission des données et après la génération du mot représentatif DIGEST définitif, c'est- à-dire après l'étape 209, le mot représentatif est comparé au mot de référence (REFERENCE), contenu dans la mémoire 112.

[0065] A chaque initialisation du système, la séquence de lecture des instructions de démarrage est identique. Les mêmes instructions de démarrage et les mêmes opérandes sont extraits par le circuit 102 dans le même ordre sur le bus matriciel. Le mot représentatif est donc le même à chaque initialisation en l'absence de modification. [0066] Ainsi, si le mot représentatif est différent du mot de référence (branche N de l'étape 210), cela signifie que les instructions ayant été exécutées et/ou les opérandes fournis ne correspondent pas aux instructions prévues et authentiques et que la sécurité du système peut être compromise. Des mesures de protection peuvent alors être mises en oeuvre (étape 212), par exemple le redémarrage du système, ou l'extinction du système.

[0067] Dans le cas où le mot de référence et le mot représentatif sont égaux, cela signifie que les instructions mises en oeuvre sont les instructions authentiques et que les opérandes sont authentiques. Le démarrage du système 100 peut donc continuer.

[0068] De préférence, le circuit 110 est éteint après l'authentification des données de démarrage. Le circuit 110 ne serait alors allumé de nouveau que lors du démarrage suivant du système, par exemple en recevant un signal de redémarrage .

[0069] Les adresses 0START et @END, la durée tl et le mot de référence REFERENCE ont par exemple été écrits dans la mémoire 112 lors de la programmation initiale du système. Les adresses 0START et @END, la durée tl et le mot de référence REFERENCE sont par exemple déterminés une fois, par exemple par simulation sur un émulateur, et sont ensuite écrits dans les mémoires 104 d'une pluralité de systèmes similaires.

[0070] Alternativement, la programmation initiale de chaque système peut comprendre une étape durant laquelle ces valeurs sont déterminées pour le système considéré.

[0071] Différentes fonctions peuvent être utilisées pour générer le mot représentatif DIGEST à partir des données. Par exemple, une fonction de hachage peut être utilisée. De même, toute fonction apte à générer une signature à partir des données peut être utilisée.

[0072] La taille des instructions de démarrage est de préférence inférieure à 5 kilo octets, par exemple comprise entre environ 2 et environ 3 kilo octets.

[0073] La taille du mot représentatif est par exemple égale ou inférieure à 32 octets. La taille du mot représentatif est de préférence indépendante des tailles des mots contenus dans les mémoires.

[0074] Les adresses de début 0START et de fin @END des instructions de démarrage peuvent par exemple former une gamme d'adresses de la mémoire 104 dans laquelle sont présentes toutes les instructions de démarrage. Ainsi, si une instruction ayant une adresse hors de cette gamme est transmise sur le bus entre le début et la fin des instructions, le circuit 110 peut détecter un problème et, par exemple, arrêter le démarrage du système 100. Par exemple, une attaque de pirate peut consister à faire en sorte que le circuit 110 cherche à extraire les instructions de démarrage dans une mémoire autre que la mémoire 104, par exemple dans la mémoire 108. Les instructions transmises sont alors hors de la gamme autorisée et l'attaque peut donc être repérée. Pour ce faire, le circuit 114-2 surveille les adresses des données transmises jusqu'à la fin des instructions de démarrage.

[0075] A titre de variante, les instructions de démarrage peuvent comprendre des instructions, ou peuvent utiliser des opérandes, situées hors de la gamme formée par les adresses de début (0START) et de fin (@END) d'instructions. Par exemple, une partie des instructions de démarrage peuvent être situées dans l'une quelconque des autres mémoires, par exemple situées dans la mémoire 108. La mémoire interne peut comprendre plusieurs adresses déterminant plusieurs gammes d'adresses, éventuellement dans plusieurs mémoires, dans lesquelles sont comprises des données de démarrage authentiques. Ces données sont prélevées par le circuit 110, par exemple par l'intermédiaire du bus de données 106, et sont aussi utilisées pour la génération du mot représentatif DIGEST. Ces données devraient par exemple être les mêmes à chaque démarrage du système, comme les instructions de démarrage situées dans la mémoire 104.

[0076] Une autre solution serait de vérifier les instructions stockées dans la mémoire avant la transmission des instructions de démarrage, de manière à s'assurer que les instructions stockées correspondent bien aux instructions authentiques. Cependant, un pirate pourrait faire en sorte, sans modifier les instructions stockées en mémoire, que les instructions transmises ne soient pas les instructions prévues ce qui ne sera pas détecté. Un avantage des modes de réalisation décrits ici est qu'ils permettent de repérer des modifications apparaissant au cours de la transmission des instructions .

[0077] Un avantage des modes de réalisation décrits est que les éléments sont des éléments internes à un contrôleur. En particulier, les mémoires sont des mémoires interne au contrôleur. La liaison entre les circuits 102 et 110 et les mémoires sont donc plus sécurisées.

[0078] Un autre avantage est que l'authentification du code est faite par le même contrôleur qui exécute les instructions. Il n'est donc pas nécessaire au système d'avoir un deuxième contrôleur. De plus le circuit 110 ne comprend pas de processeur, les comparaisons et calculs étant faits par des circuits logique. Le circuit 110 a donc une structure simple à mettre en œuvre.

[0079] Divers modes de réalisation et variantes ont été décrits. L'homme de l'art comprendra que certaines caractéristiques de ces divers modes de réalisation et variantes pourraient être combinées, et d'autres variantes apparaîtront à l'homme de l'art. En particulier, les modes de réalisation décrits ici peuvent être appliqués à des ensembles d'instructions autres que les instructions de démarrage. Ces ensembles d'instructions sont des ensembles d'instructions identiques à chaque exécution.

[0080] Enfin, la mise en oeuvre pratique des modes de réalisation et variantes décrits est à la portée de l'homme du métier à partir des indications fonctionnelles données ci- dessus .