FR 3047587 A1 20170811 FR 1651065 A 20160210 B14344 1 DISPOSITIF DE TRAITEMENT MUNI D'UN MODE D'ACCES AIDES DONNEES SENSIBLES Domaine de l'invention La présente invention concerne le domaine des systèmes informatiques ayant des modes de fonctionnement privilégiés, et 5 en particulier un dispositif de traitement ayant un mode d'accès à des données sensibles. Exposé de l'art antérieur On connaît des systèmes informatiques munis de modes de fonctionnement ayant différents niveaux de privilège. Par exemple, 10 un système informatique peut avoir la capacité de fonctionner dans un mode superviseur dans lequel la totalité ou la plupart des opérations sont permises, y compris la modification de certains fichiers de programme du noyau concernant le système d'exploitation. Il peut aussi avoir la capacité de fonctionner dans un 15 mode utilisateur, dans lequel certaines opérations sont empêchées, comme l'accès à ces fichiers de programme du noyau. En général, les applications qui sont exécutées pendant que le système d'exploitation fonctionne avec un niveau de privilège élevé doivent avoir été soumises à un processus de 20 vérification rigoureux pour s'assurer qu'elles fonctionnent comme 3047587 B14344 2 prévu et ne risquent pas de déstabiliser le système d'exploitation. En outre, le code doit provenir d'une source fiable. En effet, il ne doit pas être possible que de telles applications viennent endommager certains fichiers associés à un fonctionnement correct du système d'exploitation, ou permettent d'accéder de façon frauduleuse à des données. Dans certains cas, il serait souhaitable que certaines applications logicielles qui n'ont pas été soumises au processus de vérification rigoureux soient exécutables à partir du mode de fonctionnement privilégié. Cependant, il y a un problème technique pour permettre une telle exécution sans compromettre la sécurité du système informatique. En outre, on a besoin dans la technique d'un système informatique assurant une sécurité accrue pour des données sensibles comme des clés cryptographiques. Résumé Ainsi, un objet de modes de réalisation de la présente description est de résoudre au moins partiellement un ou plusieurs détails de l'art antérieur. Selon un aspect, on prévoit un procédé de protection de 20 données sensibles comprenant : entrer, par un dispositif de traitement, dans un mode d'accès à des données sensibles dans lequel des données sensibles sont accessibles ; restreindre, par un programme s'exécutant dans le mode d'accès à des données sensibles, une ou plusieurs plages d'adresses accessibles pour 25 une fonction non sécurisée, et appeler, à partir du mode d'accès à des données sensibles, la fonction non sécurisée ; et entrer, par le dispositif de traitement, dans un autre mode de fonctionnement pour exécuter la fonction non sécurisée, pendant lequel le dispositif de traitement a accès seulement auxdites une ou 30 plusieurs plages d'adresses accessibles. Selon un mode de réalisation, le fait de restreindre lesdites une ou plusieurs plages d'adresses accessibles pour la fonction non sécurisée comprend la configuration, dans un ou plusieurs registres de configuration d'un circuit de protection 3047587 B14344 3 de mémoire, desdites une ou plusieurs plages d'adresses accessibles. Selon un mode de réalisation, le procédé comprend en outre : recevoir, par le circuit de protection de mémoire pendant 5 l'exécution de la fonction non sécurisée, une adresse à accéder ; comparer l'adresse à accéder auxdites une ou plusieurs plages d'adresses accessibles ; et déclencher l'accès mémoire seulement si l'adresse à accéder se trouve dans lesdites une ou plusieurs plages d'adresses accessibles. 10 Selon un mode de réalisation, le procédé comprend en outre la définition dans un registre d'un pointeur de pile pointant vers des paramètres d'appel mémorisés dans lesdites une ou plusieurs plages d'adresses accessibles et à utiliser par la fonction non sécurisée. 15 Selon un mode de réalisation, le procédé comprend en outre l'exécution de la fonction non sécurisée dans l'autre mode de fonctionnement en extrayant du code d'instructions d'une mémoire de code d'instructions. Selon un mode de réalisation, le code d'instructions 20 mémorisé dans la mémoire de code d'instructions est chiffré, le procédé comprenant en outre le déchiffrement du code d'instructions. Selon un mode de réalisation, le code d'instructions est déchiffré par un circuit de déchiffrement en utilisant une 25 première clé associée à l'autre mode de fonctionnement, et la mémoire de code d'instructions mémorise en outre un autre code d'instructions associé au mode de fonctionnement sensible et pouvant être déchiffré en utilisant une deuxième clé différente de la première clé, le circuit de déchiffrement étant configuré 30 pour rendre la deuxième clé accessible seulement pendant que le dispositif de traitement est dans le mode d'accès à des données sensibles. Selon un mode de réalisation, le procédé comprend en outre un retour au mode d'accès à des données sensibles à la fin 35 de l'appel de fonction non sécurisée. 3047587 B14344 4 Selon un mode de réalisation, la fin de l'appel de fonction non sécurisée est déclenchée par un événement externe au dispositif de traitement. Selon un mode de réalisation, la fin de l'appel de 5 fonction non sécurisée est déclenchée par au moins l'un des évènements suivants : la détection, par un circuit de protection de mémoire, d'une tentative d'accès à une adresse située en dehors desdites une ou plusieurs plages d'adresses accessibles ; la détection d'une tentative d'accès à un dispositif périphérique 10 interdit ; la détection d'une tentative d'accès à un registre interdit ; la détection d'une tentative d'accès à une instruction inconnue ou interdite ; et la détection d'une interruption générée par un dispositif périphérique. Selon un autre aspect, on prévoit un système 15 informatique comprenant : un dispositif de traitement capable de fonctionner dans un mode d'accès à des données sensibles dans lequel des données sensibles sont accessibles, et dans un autre mode, le dispositif de traitement étant agencé pour : restreindre, par un programme s'exécutant dans le mode d'accès à des données 20 sensibles, une ou plusieurs plages d'adresses accessibles pour une fonction non sécurisée ; appeler, à partir du mode d'accès à des données sensibles, la fonction non sécurisée ; et entrer dans l'autre mode de fonctionnement pour exécuter la fonction non sécurisée, pendant lequel le dispositif de traitement a accès 25 seulement auxdites une ou plusieurs plages d'adresses. Selon un mode de réalisation, le système informatique comprend en outre un circuit de déchiffrement agencé pour déchiffrer le code d'instructions de la fonction non sécurisée avant son exécution par le dispositif de traitement. 30 Selon un mode de réalisation, le système informatique comprend en outre : une mémoire de code d'instructions mémorisant le code d'instructions et un autre code d'instructions associé au mode de fonctionnement sensible ; et un circuit de déchiffrement adapté à déchiffrer le code d'instructions en utilisant une 35 première clé associée à l'autre mode de fonctionnement, et à 3047587 B14344 5 déchiffrer l'autre code d'instructions en utilisant une deuxième clé différente de la première clé, le circuit de déchiffrement étant agencé pour rendre la deuxième clé accessible seulement pendant que le dispositif de traitement est dans le mode d'accès 5 à des données sensibles. Selon un mode de réalisation, le dispositif de traitement est agencé pour mettre fin à l'appel de fonction non sécurisée en réponse à une interruption générée en réponse à la détection d'un ou plusieurs des événements suivants : une 10 tentative d'accès à une adresse située en dehors desdites une ou plusieurs plages d'adresses accessibles ; une tentative d'accès à un dispositif périphérique interdit ; une tentative d'accès à un registre interdit ; une tentative d'accès à une instruction inconnue ou interdite ; et une interruption générée par un 15 dispositif périphérique. Brève description des dessins Les caractéristiques et avantages susmentionnés, et d'autres, apparaîtront clairement avec la description détaillée suivante de modes de réalisation, donnés à titre d'illustration et non de limitation, en faisant référence aux dessins joints dans lesquels : la figure 1 est un diagramme d'états représentant des modes de fonctionnement d'un dispositif de traitement selon un exemple de réalisation ; la figure 2 représente schématiquement un système informatique comportant un circuit de protection d'accès selon un exemple de réalisation de la présente description ; la figure 3A est un organigramme illustrant des étapes dans un procédé de réalisation d'un appel de fonction non 30 sécurisée à partir d'un mode d'accès à des données sensibles selon un exemple de réalisation ; la figure 3B est un organigramme illustrant des étapes pour gérer des requêtes d'accès à la mémoire pendant un appel de fonction non sécurisée selon un exemple de réalisation ; 3047587 B14344 6 la figure 4 est un organigramme illustrant plus en détail des étapes conduisant à un appel de fonction non sécurisée à partir d'un mode d'accès à des données sensibles selon un exemple de réalisation ; 5 la figure 5A illustre schématiquement des cartes de mémoire de modes de fonctionnement du système informatique de la figure 2 selon un exemple de réalisation dans lequel le système informatique comprend un module de protection de mémoire ; et la figure 5B illustre schématiquement des cartes de 10 mémoire des modes de fonctionnement du système informatique de la figure 2 selon un autre exemple de réalisation dans lequel le système informatique comprend un module de gestion de mémoire. Description détaillée La figure 1 est un diagramme d'états représentant des 15 modes de fonctionnement d'un dispositif de traitement informatique selon un exemple de réalisation. Dans l'exemple de la figure 1, le dispositif de traitement peut fonctionner dans l'un de trois modes de fonctionnement disponibles, un mode utilisateur (USER MODE), un mode superviseur (SUPERVISOR MODE), et un mode d'accès 20 à des données sensibles (SENSITIVE DATA ACCESS MODE). Le dispositif de traitement informatique met par exemple en oeuvre une forme de sécurité en anneau dans laquelle il y a une hiérarchie de privilèges entre les modes de fonctionnement. Par exemple, dans le système de la figure 1, le mode utilisateur a le 25 moins de privilèges, le mode superviseur a des privilèges supérieurs par rapport au mode utilisateur, et le mode d'accès à des données sensibles a des privilèges encore supérieurs par rapport au mode superviseur. Certaines opérations qui pourraient endonnager ou compromettre le système informatique sont par exemple bloquées dans le mode utilisateur, et le mode superviseur doit par exemple être appelé à partir du mode utilisateur afin d'exécuter de telles opérations. En outre, certaines opérations impliquant des données sensibles sont par exemple bloquées dans les modes utilisateur et superviseur, et le mode d'accès à des données sensibles doit par 3047587 B14344 7 exemple être appelé à partir de l'un ou l'autre des modes les moins privilégiés pour que de telles opérations soient exécutées. Chacun des modes de fonctionnement est associé à un code d'instructions dédié qui peut seulement être exécuté à partir du 5 mode de fonctionnement correspondant, bien qu'un appel de fonction "encadré" (de l'anglais "sandbox" - bac à sable) soit décrit dans la suite qui permet à du code d'un mode de fonctionnement moins privilégié d'être appelé à partir d'un mode de fonctionnement plus privilégié. 10 Pendant que le dispositif de traitement est dans le mode utilisateur, certaines opérations peuvent par exemple être exécutées, mais d'autres opérations sont bloquées. En outre, des dispositifs périphériques critiques comme des minuteurs, des convertisseurs analogique-numérique, des interfaces série, etc., 15 ne peuvent par exemple pas être accédés directement. Des parties de la mémoire sont aussi inaccessibles, afin que des données sensibles ne puissent pas être lues ou modifiées. Le terme "données sensibles" est utilisé ici pour désigner toute sorte de données auxquelles l'accès doit être restreint, et comprend par 20 exemple des routines d'amorçage exécutées pendant une séquence d'amorçage du dispositif de traitement, des clés cryptographiques, des routines qui réalisent des opérations cryptographiques, etc. Les applications qui peuvent être exécutées pendant que le dispositif de traitement est dans le mode utilisateur sont par 25 exemple des applications qui ne peuvent pas accéder à des données sensibles. Pendant que le dispositif de traitement est dans le mode superviseur, toutes les opérations qui sont autorisées à être exécutées dans le mode utilisateur peuvent par exemple être 30 exécutées, et toutes les régions de la mémoire qui sont accessibles dans le mode utilisateur sont aussi accessibles. En outre, une ou plusieurs autres opérations qui ne pourraient pas être exécutées dans le mode utilisateur peuvent être exécutées, et/ou une ou plusieurs régions de la mémoire qui ne pourraient 35 pas être accédées dans le mode utilisateur peuvent être accédées. 3047587 B14344 8 Par exemple, le système d'exploitation, les pilotes et/ou les appels système sont exécutables dans le mode superviseur. Pendant que le dispositif de traitement et dans le mode d'accès à des données sensibles, toutes les opérations autorisées 5 dans les modes utilisateur et superviseur sont par exemple autorisées, et additionnellement des données sensibles, et/ou des opérations impliquant des données sensibles, peuvent être accédées et/ou exécutées. Afin de protéger, pendant le développement du programme, le code exécutable et des données accessibles à partir 10 du mode d'accès à des données sensibles, seuls les développeurs autorisés du programme ont par exemple la permission de modifier le contenu des programmes du mode d'accès aux données sensibles, et d'accéder à un outil de débogage ayant les mêmes privilèges que les programmes du mode d'accès à des données sensibles. Par 15 exemple, les autres utilisateurs ne peuvent qu'écrire du code qui contient des appels au mode d'accès à des données sensibles, mais ne peuvent pas obtenir des informations sur le fonctionnement du programme du mode d'accès à des données sensibles, ou accéder au code assembleur de ce programme, ou accéder au contenu de la 20 mémoire qui est accédée par ce programme. Comme cela sera décrit plus en détail ci-après, la protection d'accès est par exemple mise en oeuvre sous diverses formes en fonction du contexte, et peut inclure la vérification d'un mot de passe et/ou d'une clé d'activation. 25 Les modes de fonctionnement du dispositif de traitement sont par exemple mis en oeuvre par des mécanismes de protection matériels qui garantissent que les données et les programmes puissent seulement être accédés à partir de modes de fonctionnement autorisés. Par exemple, de tels mécanismes matériels sont 30 décrits plus en détail dans la publication de M.D.Schroeder et J.H.Saltzer intitulée "A Hardware Architecture for Implementing Protection Rings", disponible sur le site internet http://www.multicians.org/protection.html, dont le contenu est considéré inclus ici dans les limites autorisées par la loi. La 35 protection d'accès à la mémoire repose par exemple sur un module 3047587 B14344 9 de gestion de mémoire (MMU) qui sera configuré à partir d'un ou plusieurs des modes ayant les priorités les plus hautes, comme le mode superviseur ou le mode d'accès à des données sensibles, pour protéger des segments de la mémoire et/ou les cacher en utilisant 5 une translation d'adresse. Les flèches entre les modes de fonctionnement en figure 1 représentent des transitions qui peuvent être faites entre un mode et un autre. Il est par exemple possible de rentrer directement dans l'un quelconque des modes à partir de l'un 10 quelconque des autres modes. Comme cela est représenté par la flèche 102, le dispositif de traitement peut commuter entre le mode superviseur et les modes utilisateur, par exemple par l'intermédiaire d'un appel système, ou par une interruption pendant une commutation de 15 contexte. L'interruption est par exemple déclenchée par un périphérique et fournie au dispositif de traitement, ce qui amène le dispositif de traitement à commuter entre les modes de fonctionnement pour exécuter le gestionnaire d'interruption 20 correspondant. Une fois que le gestionnaire d'interruption a terminé son exécution, le processeur revient au mode et au cheminement actifs précédemment. Par exemple, l'interruption pourrait être déclenchée par l'expiration d'un minuteur, ou par un périphérique de communication série lorsque des données sont 25 reçues ou sont prêtes à être envoyées, ou par tout autre périphérique adapté à notifier un événement au processeur. Dans certains modes de réalisation, des interruptions sont aussi déclenchées par programmation à partir d'un programme dans le mode utilisateur. 30 L'appel système implique l'exécution dans le mode utilisateur d'une instruction qui peLmet au mode de changer pour passer dans le mode superviseur pour exécuter la routine d'appel système. Par exemple, l'appel système est une interruption logicielle, le gestionnaire d'interruption décodant, vérifiant et 35 exécutant le code de l'interruption logicielle. Cette routine 3047587 B14344 10 vérifie que l'appelant, qui est par exemple une tâche exécutée dans le mode utilisateur, est autorisé à réaliser l'appel, et si ce n'est pas le cas, elle rejette la demande. La routine réalise ensuite les opérations associées, colline une allocation de mémoire 5 ou un accès à un périphérique pour le processus appelant, et commute pour revenir vers le mode utilisateur pour continuer l'exécution de la tâche appelante. La comuutation de contexte est utilisée pour partager des cycles exécution entre des tâches du mode utilisateur, et 10 comprend une routine d'interruption qui est exécutée dans le mode superviseur et généralement déclenchée par un périphérique minuteur. Cette routine d'interruption sauvegarde par exemple le contexte de la tâche en cours d'exécution, utilise un algorithme de planification pour définir le processus actif suivant, restaure 15 le contexte du processus, et ramène le processeur dans le mode utilisateur pour exécuter ce processus. Comme cela est représenté par des flèches 104 et 106 en figure 1, le mode d'accès à des données sensibles peut être accédé soit à partir du mode superviseur soit à partir du mode 20 utilisateur. Dans tous les cas, cette transition est par exemple réalisée par l'exécution d'un appel spécifique associé au mode d'accès à des données sensibles, par une interruption sécurisée, ou par une exception de sécurité. L'appel spécifique, qui est par exemple un appel du mode d'accès à des données sensibles, implique 25 par exemple l'exécution d'une instruction qui permet ce changement de mode. Une exception est un type particulier d'interruption, déclenché par un événement interne dans le processeur. Un exemple simple d'exception est le cas qui survient lorsque le processeur tente d'exécuter un programme incorrect, comme un programme qui 30 n'est pas codé correctement en ce qui concerne le jeu d'instructions. Dans certains modes de réalisation, les interruptions sont rendues sures en autorisant le système d'exploitation à configurer seulement des interruptions dédiées à des dispositifs 35 périphériques, et pas celles concernant le mode d'accès à des 3047587 B14344 11 données sensibles, qui ont par exemple la priorité la plus haute. Le niveau de priorité des interruptions est par exemple géré par des registres de configuration qui peuvent par exemple seulement être écrits à partir du mode d'accès à des données sensibles. 5 Comme cela est représenté par une flèche 108 en figure 1, dans certains modes de réalisation une ou plusieurs fonctions (F) du mode utilisateur peuvent être appelées et exécutées à partir du mode d'accès à des données sensibles. Afin d'assurer la sécurité pendant l'exécution de ces fonctions, elles sont par 10 exemple appelées en utilisant ce qu'on dénommera des appels de fonction "encadrés" (connus sous le terme anglais "sandboxed" dans un bac à sable). Par exemple, un tel appel encadré est réalisé en utilisant une instruction spécifique du jeu d'instructions du dispositif de traitement, cette instruction provoquant une 15 dégradation temporaire du niveau de privilège, avec une restriction correspondante sur les accès à la mémoire, de sorte que la fonction non sécurisée peut être exécutée de manière sécurisée, par exemple dans le mode utilisateur ou dans un mode encadré dédié. En particulier, l'appel de fonction encadré permet 20 par exemple l'exécution de fonctions contenant des routines non sécurisées tout en assurant la sécurité, ce qui permet que des résultats renvoyés par l'exécution de ces fonctions soient accédés et utilisés dans le mode d'accès à des données sensibles. Par exemple, les fonctions du mode utilisateur devant être exécutées 25 à partir du mode de données sensibles pourraient inclure des librairies standard, comme des librairies mathématiques, ou des algorithmes cryptographiques, qui n'ont pas été vérifiés pour une utilisation dans le mode d'accès à des données sensibles. De telles fonctions seront appelées ici fonctions non sécurisées. 30 L'appel encadré permet d'isoler l'exécution de la fonction, et de confiner son opération dans un espace mémoire limité aussi bien pour les opérations de lecture que d'écriture. Cet espace mémoire est réservé pour le mode d'accès à des données sensibles, et empêche par exemple d'accéder à des dispositifs 35 périphériques, ce qui garantit que de tels dispositifs ne puisse 3047587 B14344 12 pas accéder à des données situées à l'extérieur de la fonction encadrée, ni transmettre des données à l'extérieur du dispositif de traitement. Par exemple, pendant un appel encadré, le contrôle est 5 repassé au programme du mode d'accès à des données sensibles si un ou plusieurs des événements suivants surviennent : - la fonction appelée se termine correctement ; - une interruption de sécurité est déclenchée, comme une exception de sécurité externe dans laquelle un dispositif 10 périphérique détecte une attaque COMILle une injection de fautes, ou une exception de sécurité interne, déclenchée par exemple par l'exécution de code incorrect par le dispositif de traitement, ou un accès interdit à de la mémoire ou à un périphérique ; - la fonction encadrée tente de réaliser une opération 15 interdite comme accéder à une adresse mémoire à l'extérieur de la zone encadrée, réaliser un appel système, ou accéder à un dispositif périphérique ; - une interruption est déclenchée avant que la fonction encadrée se termine. Par exemple, un tel mécanisme permet 20 d'allouer un temps limité à l'appel encadré en utilisant un dispositif périphérique comme un minuteur chien de garde. Un avantage d'un tel appel encadré est qu'il permet à des fonctions non sécurisées qui n'ont pas été vérifiées pour une utilisation dans le mode d'accès à des données sensibles d'être 25 appelées à partir du mode d'accès à des données sensibles sans introduire de risque de sécurité. En outre, cela permet de réduire l'empreinte globale de la mémoire du programme en utilisant la même mise en oeuvre pour des fonctions qui sont communes dans le mode utilisateur et dans le mode d'accès à des données sensibles. 30 En d'autres termes, cela évite la duplication de code commun entre les espaces d'exécution sécurisés et non sécurisés. Bien que dans l'exemple de la figure 1, le dispositif de traitement soit capable de fonctionner dans trois modes de fonctionnement, dans des modes de réalisation alternatifs, il y a 35 au moins un mode d'accès à des données sensibles, et un ou 3047587 B14344 13 plusieurs autres modes ayant des privilèges inférieurs. Par exemple, dans certains modes de réalisation seulement un mode utilisateur et le mode d'accès à des données sensibles sont supportés. 5 La figure 2 illustre schématiquement un système informatique 200 comportant un circuit de protection d'accès selon un exemple de réalisation. Comme cela est illustré, le système informatique comprend par exemple un dispositif de traitement (MCU) 202, qui 10 est par exemple un module microcontrôleur. Le dispositif de traitement 202 comprend par exemple un ou plusieurs processeurs agencés pour exécuter du code d'instructions. Le dispositif de traitement 202 communique par exemple avec une mémoire (MEMORY) 204 qui est par exemple une RAM (mémoire à accès aléatoire) comme 15 une SRAM (RAM statique) ou une DRAM (RAM dynamique). L'interface entre le dispositif de traitement 202 et la mémoire 204 comprend un circuit de protection d'accès (ACCESS PROTECTION) 206. Le circuit 206 est par exemple mis en oeuvre par un MPU (module de protection de mémoire) ou un MMU (module de gestion de mémoire), 20 et est couplé entre des lignes de données (DATA) et des lignes d'adresse/commande (ADDR+CMD) du dispositif de traitement, et des lignes de données et d'adresse/commande de la mémoire 204. En outre, le dispositif de traitement 202 est par exemple couplé à une mémoire d'instructions (INSTR CODE) 208 par 25 l'intermédiaire d'un autre circuit de protection d'accès 210. Dans certains modes de réalisation, ce circuit 210 protège l'accès au code d'instructions mémorisé dans la mémoire 208 et/ou assure une protection cryptographique du code mémorisé dans la mémoire 208. Par exemple, le circuit 210 déchiffre des instructions extraites 30 de la mémoire 208 sur la base d'une ou plusieurs clés mémorisées par le circuit 210, par exemple dans un registre sécurisé (KEY) 212. Dans certains modes de réalisation, le circuit 210 est agencé pour activer des clés différentes pour des modes de fonctionnement différents, de sorte que seul du code associé au mode de 35 fonctionnement courant peut être extrait et exécuté. Le circuit 3047587 B14344 14 210 reçoit par exemple un signal MODE provenant du MCU 202 et indiquant le mode de fonctionnement courant, de sorte que la clé appropriée est activée. Si le MCU 202 tente d'extraire et d'exécuter du code associé à un mode de fonctionnement différent 5 du mode de courant, une clé incorrecte va être appliquée par le circuit 210, créant une exception, qui est par exemple communiquée au MCU 202 et qui provoque la fin de l'opération courante. Dans certains modes de réalisation, un contrôleur de mémoire cache 214 est prévu pour s'interfacer avec la mémoire 208. 10 Dans l'exemple représenté en figure 2, le contrôleur de cache 214 est positionné entre le circuit 210 et la mémoire de code d'instructions 208, bien qu'il puisse être positionné ailleurs. Le contrôleur de cache mémorise par exemple des lignes de code d'instructions ayant une longueur égale ou supérieure à la 15 longueur de la taille de bloc utilisée pendant le déchiffrement. Le contrôleur de cache 214 aide ainsi l'opération de déchiffrement en mémorisant des blocs de code de taille appropriée à déchiffrer. Le dispositif de traitement 202 comprend par exemple un compteur (CNTR) 216, et un ou plusieurs registres (RGSTR) 218. 20 Lorsqu'une fonction du mode utilisateur doit être appelée à partir du mode d'accès à des données sensibles, une instruction spécifique, qui sera appelée ici "USERMODE_CALL", est utilisée. L'instruction indique par exemple l'adresse de la fonction qui doit être exécutée. Le registre 218 est par exemple 25 un registre à fonction spéciale qui mémorise un statut "UFCALL STATUS" associé à USER MODE _CALL, et en particulier mémorise le résultat de l'appel. Par exemple, les valeurs possibles de ce registre, et leurs significations correspondantes, sont les suivantes : 30 - UFCALL OK : l'appel de fonction s'est terminé correctement ; - UFCALL ERR INSTRUCTION : la fonction encadrée a tenté d'exécuter une instruction interdite ou inconnue ; 3047587 B14344 15 - UFCALL _ ERR _MEMORY : la fonction encadrée a tenté d'accéder à une adresse située dans une plage d'adresses interdite ; - UFCALL _ ERR SFR : la fonction encadrée a tenté 5 d'accéder à un registre à fonction spéciale (SFR) interdit ; UFCALL INTERRUPT : une interruption est survenue avant la fin de l'appel de fonction, l'interruption ayant été traitée et l'appel de fonction interrompu. 10 Pendant l'exécution de l'appel de fonction, le compteur 216 est par exemple utilisé pour tracer d'autres appels de fonction. Par exemple, le compteur est initialisé à 1, et est incrémenté sur chaque nouvel appel de fonction, et décrémenté à la fin de chaque appel de fonction. Le compteur tombe à 0 lorsque 15 l'appel de fonction encadré se termine, et le dispositif de traitement revient ensuite par exemple au mode d'accès à des données sensibles, et saute à l'instruction suivant l'instruction USER MODE CALL. _ _ On notera que le mode utilisateur et le mode d'accès à 20 des données sensibles n'utilisent pas par exemple les mêmes registres de retour (RTR), qui mémorisent localement l'adresse de retour des fonctions. Ainsi, la fonction encadrée ne peut pas altérer l'adresse de retour de l'appel. De cette manière, il n'est pas possible que du code non vérifié soit exécuté dans le mode 25 d'accès à des données sensibles. Le dispositif de traitement 202 est aussi par exemple couplé à un ou plusieurs dispositifs périphériques (TO PERIPHERALS), par l'intermédiaire d'un contrôleur d'interruptions (INTERRUPT CONTROLLER) 220, qui dans des variantes de réalisation 30 pourrait être intégré d'un seul bloc avec le dispositif de traitement 202. Les périphériques comprennent par exemple des dispositifs tels que des minuteurs, des convertisseurs analogique-numérique (ADC), des convertisseurs numérique-analogique (DAC), des modulateurs de largeur d'impulsion, des interfaces série, 35 comme I2C, des interfaces SPI (interface périphérique série) ou 3047587 B14344 16 UART (récepteur-émetteur asynchrone universel), des capteurs, etc. Le contrôleur d'interruptions 220 reçoit par exemple des interruptions provenant des périphériques sur des lignes d'entrée respectives, et aussi une indication du mode courant provenant du 5 dispositif de traitement. Le contrôleur d'interruptions 220 comprend par exemple un circuit de contrôle de priorité (PRIORITY CONTROL) 222, qui par exemple gère les niveaux de priorité entre les interruptions, et est par exemple reconfigurable par le dispositif de traitement lorsqu'il est dans le mode d'accès à des 10 données sensibles. Le circuit de protection d'accès 206 est par exemple un MMU (module de gestion de mémoire) agencé pour restreindre, pendant un appel de fonction encadré à partir du mode d'accès à des données sensibles, la plage des adresses mémoire qui sont 15 accessibles par la mémoire 204. Par exemple, le circuit 206 comprend un registre de configuration 224 accessible par le dispositif de traitement 202 pendant que le dispositif de traitement fonctionne dans le mode d'accès à des données sensibles. Avant l'appel de fonction encadré et pendant que le 20 dispositif de traitement 202 est dans le mode d'accès à des données sensibles, il définit par exemple une ou plusieurs plages d'adresses dans le registre de configuration 224 afin de limiter, pendant l'appel de fonction encadré, les plages d'adresses de la mémoire 204 qui peuvent être accédées ensuite par le dispositif 25 de traitement 202 pendant le fonctionnement dans le mode utilisateur. Par exemple, les plages d'adresses accessibles pendant l'appel encadré sont limitées à certaines plages d'adresses parmi celles qui sont associées au mode d'accès à des données sensibles. 30 Le circuit 206 compare par exemple chaque adresse d'une requête de lecture ou d'écriture provenant du dispositif 202 à une ou plusieurs plages d'adresses autorisées définies par le registre de configuration 218, et relaye la requête de lecture ou d'écriture vers la mémoire 204 seulement si l'adresse est dans la 35 plage permise. 3047587 B14344 17 À la fin de l'appel encadré, le dispositif de traitement 202 revient par exemple au mode d'accès à des données sensibles et reconfigure le registre 224 de telle sorte que toutes les plages d'adresses associées au mode d'accès à des données 5 sensibles soient de nouveau accessibles. La figure 3A est un organigramme illustrant des étapes dans un procédé de réalisation d'un appel de fonction non sécurisée à partir d'un mode d'accès à des données sensibles selon un exemple de réalisation. Ces étapes sont par exemple mises en 10 oeuvre par le dispositif de traitement 202 de la figure 2, sous le contrôle de code d'instructions extrait de la mémoire 208. Dans une étape 301, on entre dans le mode d'accès à des données sensibles, par exemple en utilisant l'un de mécanismes décrits précédemment en relation avec la figure 1. 15 Dans une étape 302, lorsqu'une fonction non sécurisée doit être appelée, la protection d'accès à l'espace d'adresses mémoire du dispositif de traitement est restreinte. Cette étape est par exemple réalisée en configurant le registre 224 en figure 2 de façon à limiter les adresses mémoire accessibles à une 20 certaine plage d'adresses associée au mode d'accès à des données sensibles. Dans une étape 303, un appel de fonction est fait à la fonction non sécurisée, comme une fonction dont l'exécution n'est permise que dans un mode utilisateur. Le mode de fonctionnement 25 commute ensuite vers le mode utilisateur ou vers un autre mode approprié pour une exécution de la fonction appelée, de sorte que le code d'instructions associé à la fonction non sécurisée peut être accédé et exécuté. Toutefois, l'appel de fonction est encadré, ce qui signifie que puisque le programme appelant du mode 30 d'accès à des données sensibles a défini, dans l'étape 302, une plage d'adresses autorisée dans le registre de configuration 224, les adresses qui vont être accessibles pendant l'exécution de la fonction sont restreintes. Dans une étape suivante 304, après que la fonction 35 appelée s'est terminée, ou lorsque la fonction encadrée a été 3047587 B14344 18 quittée pour une autre raison COMffle une exception de sécurité, le dispositif de traitement revient par exemple au mode d'accès à des données sensibles, et reconfigure le registre 224 du circuit de protection 206 sur la base des plages d'adresses qui sont 5 normalement accessibles à partir du mode d'accès à des données sensibles. Cette opération est par exemple réalisée en reconfigurant le registre 224 en figure 2. La figure 3B est un organigramme représentant des étapes dans un procédé de restriction d'accès mémoire pendant un appel 10 de fonction encadré selon un exemple de réalisation. Ces étapes sont par exemple réalisées par le circuit de protection d'accès 206 de la figure 2. Dans une étape 310 pendant l'exécution de la fonction appelée, une requête d'accès à la mémoire est générée, qui peut 15 être une opération de lecture ou d'écriture. Cette requête d'accès mémoire est par exemple reçue par le circuit de protection d'accès 206 en provenance du dispositif de traitement 202. Dans une étape 311, le circuit de protection d'accès 206 détermine si l'adresse mémoire dont l'accès est demandé est dans 20 une plage autorisée, définie par exemple par des données mémorisées dans le registre de configuration 224. Si oui, l'accès à la mémoire est autorisé dans une étape 313, et on revient à l'étape 310 pour une opération d'accès mémoire suivante. Dans l'autre cas, si l'adresse n'est pas dans une plage autorisée, dans 25 une étape 312 l'accès mémoire est bloqué par le circuit de protection d'accès 206. Dans un tel cas, le contrôle est par exemple renvoyé au programme dans le mode d'accès à des données sensibles. La figure 4 est un organigramme illustrant des étapes 30 conduisant à un appel de fonction encadré selon un exemple de réalisation. Dans une étape 401, une zone de mémoire, par exemple dans la mémoire 204, est réservée pour l'exécution de la fonction encadrée, et est affectée dans ce but par le programme s'exécutant 35 dans le mode d'accès à des données sensibles. 3047587 B14344 19 Dans une étape suivante 402, des données d'entrée sont par exemple copiées dans la zone mémoire réservée, ces données fournissant les entrées à la fonction appelée. Cette étape pourrait dans certains modes de réalisation être réalisée par le 5 programme exécuté dans le mode d'accès à des données sensibles, qui désigne par exemple des plages d'adresses du mode d'accès à des données sensibles qui contiennent déjà les données d'entrée pour la fonction appelée, évitant par cela le coût d'une étape de copie en mémoire. 10 Dans une étape suivante 403, un dispositif périphérique "minuteur de chien de garde" est par exemple configuré pour limiter le temps d'exécution de la fonction. Ce minuteur de chien de garde est par exemple un circuit minuteur adapté à activer une interruption après un certain temps. Un avantage de limiter le 15 temps d'exécution de la fonction de cette manière est que le code non vérifié de la fonction appelée pourrait boucler, gelant par cela le système à moins qu'un système de minuteur soit en place. Une étape suivante 404 correspond par exemple à l'étape 302 de la figure 3A, dans laquelle le circuit de protection mémoire 20 206 est configuré de manière à restreindre l'accès à la zone réservée de la mémoire dans le mode utilisateur. Dans une étape suivante 405, un pointeur de pile d'appel est par exemple initialisé. Le pointeur de pile d'appel est par exemple mis en oeuvre par un registre d'usage général dans le dispositif de 25 traitement 202, et est par exemple affecté à une valeur à la fin de la zone réservée dans la mémoire, de sorte que si la pile s'étend en dehors de la zone autorisée, cela peut être détecté par le statut UFCALL_ERR MEMORY du registre SFR comme cela a été décrit précédemment. 30 Dans une étape suivante 406, les paramètres de l'appel encadré sont par exemple empilés en utilisant le registre défini précédemment. Lorsque les paramètres empilés comprennent des pointeurs, la translation d'adresse est aussi prise en compte. De cette manière, on empêche par exemple à l'appel encadré de 35 connaître les plages d'adresses absolues auxquelles il accède. 3047587 B14344 20 Par exemple, la région de mémoire encadrée coilitence à une adresse absolue donnée, comme l'adresse "100". Toutefois, la fonction encadrée croit que cette adresse est l'adresse "0". Si un pointeur est passé à une variable située à une adresse absolue de "250", 5 cette adresse va être traduite en une valeur de "150" pour la fonction encadrée, en d'autres termes l'adresse absolue "250" du pointeur, moins l'adresse de départ "100". Dans une étape suivante 407, le pointeur de pile du mode utilisateur est par exemple configuré pour pointer vers l'espace 10 réservé dans la pile dans cette zone mémoire, tout en prenant en compte toute translation d'adresse appropriée. Dans une étape 408, la fonction du mode utilisateur est alors appelée par l'instruction "USERMODE_CALL". Le code suivant, fourni sous la forme d'un mélange de 15 pseudocode, de langage C et d'assembleur, donne un exemple d'un appel de fonction encadré concernant une fonction de déchiffrement. Dans ce code, "key" est un tampon de taille key_size contenant la clé de déchiffrement, et "ciphered" est un tampon de taille ciphered_size contenant les données à déchiffrer. On 20 supposera que le programme s'exécutant dans le mode d'accès à des données sensibles doit récupérer les données déchiffrées et leur taille. // Réservation de la zone mémoire 25 // La zone mémoire réservée pour l'appel est la plage d'adresses Ox8000 à 0x9000 // La fonction appelée voit la zone mémoire réservée comme commençant à l'adresse 0x0000 key_sdb = 0x8000; 30 ciphered_sdb = keysdb + key_size; data sdb = ciphered sdb + ciphered size; // Copie des données d'entrée memcpy(key_sdb, key, key_size) memcpy(ciphered_sdb, ciphered, ciphered_size) 35 // Configuration du _WU 3047587 B14344 21 configure mmu(USER MODE,/*loc=*/0x8000, /*size =*/0x1000, /*offset=*/0x8000) // Configuration d'un minuteur de chien de garde start watchdog(10000) 5 // Création de la pile MOV DR52, 0x8900 MOV DRO, keysdb - 8000 // Paramètre 1 : adresse de la clé vue par la function encadrée MOV DR4, key_size // Paramètre 2 : taille de 10 la clé (inchangée) MOV DR8 ciphered_sdb - 0x8000 // Paramètre 3 : adresse des données chiffrées vues par la fonction encadrée MOV @DR52++, ciphered_size // Paramètre 4 : taille des données chiffées 15 MOV @DR52++, data_sdb - 0x8000 // Paramètre 5 : adresse de destination vue par la function encadrée // Appel de la fonction USER CALL decipher // Vérification du statut de sortie 20 if ( UFCALL_STATUS == UFCALL_OK 11 (UFCALL STATUS == UFCALL INTERRUPT && !watchdogtimeout())) { // OK } else { 25 // Error } La figure 5A illustre schématiquement les cartes de mémoire disponibles dans le système informatique 200 de la figure 30 2 pendant le mode d'accès à des données sensibles, le mode superviseur, le mode utilisateur et l'appel de fonction encadré, selon un exemple de réalisation, en supposant que le circuit de protection d'accès 202 de la figure 2 est un module de protection mémoire (MPU). 3047587 B14344 22 Dans l'exemple illustré, dans le mode utilisateur, seules des premières données (DATA FOR USER TASK 1) 502 et des deuxièmes données (DATA FOR USER TASK 2) 504 sont accessibles. Dans le mode superviseur, sont accessibles non seulement les 5 données 502 et 504, mais sont accessibles aussi des données OS du système d'exploitation (OS DATA) 506, les données OS correspondant aux structures de données internes de l'OS, comme la description des tâches, des signaux, des sémaphores, etc. Dans le mode d'accès à des données sensibles, sont accessibles non seulement les 10 données 502, 504 et 506, mais aussi des données critiques (CRITICAL DATA) 508, qui représentent par exemple des données sensibles conservées par le système, comme des clés de chiffrement, des routines de la période d'amorçage, etc. Pendant l'appel de fonction encadré, une portion 510 de ces données 15 critiques 508 est par exemple accessible, mais aucune autre donnée n'est accessible, de sorte que la fonction appelée ne peut pas par exemple transférer des données vers d'autres zones non autorisées de la mémoire. La figure 5B illustre un cas similaire à celui de la 20 figure 5A, mais dans ce cas le circuit de protection d'accès est un module de gestion de mémoire qui peut réaliser une translation d'adresse en plus d'une protection d'accès. Ainsi les informations de zones mémoire qui sont seulement accessibles pour des modes fortement privilégiés sont cachées, et ainsi n'existent pas du 25 point de vue des tâches. Un avantage des modes de réalisation décrits ici est que, en permettant à des fonctions non sécurisées d'être appelées à partir du mode d'accès à des données sensibles, et en limitant la plage d'adresses accessible pendant l'exécution de cet appel, 30 de telles fonctions peuvent être utilisées pendant le mode d'accès à des données sensibles sans compromettre la sécurité. Avec la description ainsi faite d'au moins un mode illustratif, diverses altérations, modifications et améliorations apparaîtront facilement à l'homme de l'art. Par exemple, il 35 apparaîtra clairement à l'homme de l'art que bien qu'on ait décrit 3047587 B14344 23 un dispositif de traitement ayant trois modes de fonctionnement, dans des variantes de réalisation il pourrait y avoir un nombre quelconque de modes de fonctionnement. REVENDICATIONS1. Procédé de protection de données sensibles, comprenant : entrer, par un dispositif de traitement (202), dans un mode d'accès à des données sensibles dans lequel des données sensibles sont accessibles ; restreindre, par un programme s'exécutant dans le mode d'accès à des données sensibles, une ou plusieurs plages d'adresses accessibles pour une fonction non sécurisée, et appeler, à partir du mode d'accès à des données sensibles, la fonction non sécurisée ; et entrer, par le dispositif de traitement (202), dans un autre mode de fonctionnement pour exécuter la fonction non sécurisée, pendant lequel le dispositif de traitement a accès seulement auxdites une ou plusieurs plages d'adresses accessibles. 2. Procédé selon la revendication 1, dans lequel le fait de restreindre lesdites une ou plusieurs plages d'adresses accessibles pour la fonction non sécurisée comprend la configuration, dans un ou plusieurs registres de configuration (224) d'un circuit de protection de mémoire (206), desdites une ou plusieurs plages d'adresses accessibles. 3. Procédé selon la revendication 2, comprenant en outre : recevoir, par le circuit de protection de mémoire (206) pendant l'exécution de la fonction non sécurisée, une adresse à accéder ; comparer l'adresse à accéder auxdites une ou plusieurs plages d'adresses accessibles ; et déclencher l'accès mémoire seulement si l'adresse à accéder se trouve dans lesdites une ou plusieurs plages d'adresses accessibles. 4. Procédé selon l'une quelconque des revendications 1 à 3, comprenant en outre la définition dans un registre d'un pointeur de pile pointant vers des paramètres d'appel mémorisés 3047587 B14344 25 dans lesdites une ou plusieurs plages d'adresses accessibles et à utiliser par la fonction non sécurisée. 5. Procédé selon l'une quelconque des revendications 1 à 4, comprenant en outre l'exécution de la fonction non sécurisée 5 dans l'autre mode de fonctionnement en extrayant du code d'instructions d'une mémoire de code d'instructions (208). 6. Procédé selon la revendication 5, dans lequel le code d'instructions mémorisé dans la mémoire de code d'instructions (208) est chiffré, le procédé comprenant en outre le déchiffrement 10 du code d'instructions. 7. Procédé selon la revendication 6, dans lequel le code d'instructions est déchiffré par un circuit de déchiffrement (210) en utilisant une première clé associée à l'autre mode de fonctionnement, et dans lequel la mémoire de code d'instructions 15 (208) mémorise en outre un autre code d'instructions associé au mode de fonctionnement sensible et pouvant être déchiffré en utilisant une deuxième clé différente de la première clé, le circuit de déchiffrement (210) étant configuré pour rendre la deuxième clé accessible seulement pendant que le dispositif de 20 traitement est dans le mode d'accès à des données sensibles. 8. Procédé selon l'une quelconque des revendications 1 à 7, comprenant en outre un retour au mode d'accès à des données sensibles à la fin de l'appel de fonction non sécurisée. 9. Procédé selon la revendication 8, dans lequel la fin 25 de l'appel de fonction non sécurisée est déclenchée par un événement externe au dispositif de traitement. 10. Procédé selon la revendication 8 ou 9, dans lequel la fin de l'appel de fonction non sécurisée est déclenchée par au moins l'un des évènements suivants : 30 la détection, par un circuit de protection de mémoire (206), d'une tentative d'accès à une adresse située en dehors desdites une ou plusieurs plages d'adresses accessibles ; la détection d'une tentative d'accès à un dispositif périphérique interdit ; 3047587 B14344 26 la détection d'une tentative d'accès à un registre interdit ; la détection d'une tentative d'accès à une instruction inconnue ou interdite ; et 5 la détection d'une interruption générée par un dispositif périphérique. 11. Système informatique comprenant : un dispositif de traitement (202) capable de fonctionner dans un mode d'accès à des données sensibles dans lequel des 10 données sensibles sont accessibles, et dans un autre mode, le dispositif de traitement étant agencé pour : - restreindre, par un programme s'exécutant dans le mode d'accès à des données sensibles, une ou plusieurs plages d'adresses accessibles pour une fonction non sécurisée ; 15 - appeler, à partir du mode d'accès à des données sensibles, la fonction non sécurisée ; et - entrer dans l'autre mode de fonctionnement pour exécuter la fonction non sécurisée, pendant lequel le dispositif de traitement a accès seulement auxdites une ou plusieurs plages 20 d'adresses. 12. Système informatique selon la revendication 11, comprenant en outre un circuit de déchiffrement (210) agencé pour déchiffrer le code d'instructions de la fonction non sécurisée avant son exécution par le dispositif de traitement. 25 13. Système informatique selon la revendication 11, comprenant en outre : une mémoire de code d'instructions (208) mémorisant le code d'instructions et un autre code d'instructions associé au mode de fonctionnement sensible ; et 30 un circuit de déchiffrement (210) adapté à déchiffrer le code d'instructions en utilisant une première clé associée à l'autre mode de fonctionnement, et à déchiffrer l'autre code d'instructions en utilisant une deuxième clé différente de la première clé, le circuit de déchiffrement (210) étant agencé pour rendre la deuxième clé accessible seulement pendant que le 3047587 B14344 27 dispositif de traitement est dans le mode d'accès à des données sensibles. 14. Système informatique selon l'une quelconque des revendications 11 à 13, dans lequel le dispositif de traitement 5 est agencé pour mettre fin à l'appel de fonction non sécurisée en réponse à une interruption générée en réponse à la détection d'un ou plusieurs des événements suivants : une tentative d'accès à une adresse située en dehors desdites une ou plusieurs plages d'adresses accessibles ; 10 une tentative d'accès à un dispositif périphérique interdit ; 15 une tentative d'accès à un registre interdit ; une tentative d'accès à une instruction inconnue ou interdite ; et une interruption générée par un dispositif périphérique.