Brevet FR3149401A1 — publié le 20241206

Système et procédé de limitation d'accès à une ressource La présente description concerne un dispositif informatique comprenant : un dispositif mémoire configuré pour stocker une application logicielle ; un dispositif de traitement relié au dispositif mémoire et configuré pour exécuter l'application logicielle ; et une ou plusieurs ressources qui peuvent être appelées par l'exécution d'un code dans l'application logicielle, dans lequel le dispositif mémoire, ou un dispositif mémoire supplémentaire, est configuré pour stocker une table de redirection (411) indiquant, sur la base d'une ou des deux parmi une adresse appelante et une adresse appelée d'un appel à une des ressources, une adresse de remplacement à laquelle l'appel doit être retransmis, le dispositif informatique comprenant en outre un logiciel ou un matériel destiné à intercepter un appel provenant de l'application logicielle et à rediriger l'appel sur la base de la table de redirection (411). Figure pour l'abrégé : Fig. 4 Système et procédé de limitation d'accès à une ressource La présente description concerne de façon générale des systèmes de traitement informatique comprenant un processeur ou microcontrôleur et, plus particulièrement, des systèmes et procédés de limitation d'accès par des modules logiciels particuliers à des ressources d'un système de traitement informatique. Il est connu de prévoir des environnements de traitement dans lesquels des applications peuvent se voir attribuer différents niveaux de droits d'accès à des ressources, telles que des ressources matérielles, par exemple des dispositifs périphériques ou des régions mémoires particulières, ou d'autres ressources, par exemple un service logiciel, un service de cryptage, un paramètre particulier ou des données confidentielles. Une application de logiciel certifiée ayant le niveau de droit requis pour accéder à une ressource donnée à accès limité peut y accéder directement en utilisant un appel direct. Par contre, si une application non certifiée n'ayant pas le niveau de droit requis souhaite accéder à une ressource à accès limité, il peut être nécessaire d'effectuer un appel système qui interrompt l'exécution de l'application, et demande qu'un système ayant un niveau de droit supérieur, tel que le système d'exploitation, accède à la ressource pour le compte de l'application non-certifiée. Afin de prendre en charge à la fois les cas d'applications certifiées et non certifiées, il serait possible de développer deux versions de l'application logicielle, une destinée à être utilisée dans un environnement dans lequel elle est certifiée, et une autre destinée à être utilisée dans un environnement dans lequel elle n'est pas certifiée. Toutefois, cela conduit à un problème technique, dans la mesure où cela signifie qu'un code d'application donné n'est pas réutilisable sur tous les systèmes et dans tous les contextes, conduisant à des coût et complexité supplémentaires. Une difficulté supplémentaire est que, dans certains environnements de traitement, deux composants logiciels ou plus peuvent être en activité indépendamment l'un de l'autre et peuvent avoir besoin d'accéder à une ou plusieurs ressources à accès limité. Cela peut imposer de dupliquer le code d'application dans chaque composant logiciel, ou que chaque code d'application ai un code particulier pour appeler un fournisseur donné de services, ce qui signifie de nouveau que le code logiciel ne peut pas être réutilisé sur tous les systèmes et dans tous les contextes. Il existe donc un besoin dans l'état de l'art pour une solution technique qui permette de limiter sélectivement l'accès par une application logicielle aux une ou plusieurs ressources sur la base du niveau de droit de l'application logicielle et utilisant un même code réutilisable. Un objet des modes de réalisation de la présente description est de remplir au moins partiellement un ou plusieurs besoins de l'état de l'art. Selon un aspect, on prévoit un dispositif informatique comprenant : au moins un dispositif mémoire configuré pour stocker une application logicielle ; un dispositif de traitement relié à l'au moins un dispositif mémoire par l'intermédiaire d'un bus et configuré pour exécuter l'application logicielle ; et une ou plusieurs ressources qui peuvent être appelées par l'exécution d'un code dans l'application logicielle, dans lequel l'au moins un dispositif mémoire, ou un autre dispositif mémoire du dispositif informatique, est configuré pour stocker une table de redirection indiquant, sur la base d'une ou des deux parmi une adresse appelante et une adresse appelée d'un appel à une des ressources, une adresse de remplacement à laquelle l'appel doit être retransmis, dans lequel le dispositif informatique comprend en outre un logiciel ou un matériel destiné à intercepter un appel provenant de l'application logicielle et à rediriger sélectivement l'appel sur la base de la table de redirection. Selon un autre aspect, on prévoit un procédé d'accès à une ou plusieurs ressources d'un dispositif informatique, le procédé comprenant : l'interception, par un logiciel ou un matériel du dispositif informatique, d'un appel provenant d'une application logicielle stockée par au moins un dispositif mémoire du dispositif informatique, dans lequel un dispositif de traitement du dispositif informatique est relié à l'au moins un dispositif mémoire par l'intermédiaire d'un bus et est configuré pour exécuter l'application logicielle ; et la redirection sélective, par ledit logiciel ou matériel du dispositif informatique, de l'appel sur la base d'une table de redirection stockée dans l'au moins un dispositif mémoire, ou dans un dispositif mémoire supplémentaire, la table de redirection indiquant, sur la base d'une ou des deux parmi une adresse appelante et une adresse appelée d'un appel à une des ressources, une adresse de remplacement à laquelle l'appel doit être retransmis. Selon un mode de réalisation, les une ou plusieurs ressources comprennent une ou plusieurs ressources matérielles telles que des dispositifs périphériques du dispositif informatique. Selon un mode de réalisation, les une ou plusieurs ressources comprennent une ou plusieurs régions mémoire de l'au moins un dispositif mémoire. Selon un mode de réalisation, le logiciel ou le matériel destiné à intercepter l'appel est configuré pour comparer l'adresse appelante de l'appel à une pluralité d'adresses appelantes de référence indiquées dans la table de redirection, et, dans le cas d'une concordance, pour rediriger l'appel vers l'adresse de remplacement associée dans la table de redirection à l'adresse appelante de référence de l'appel. Selon un mode de réalisation, le logiciel ou le matériel destiné à intercepter l'appel est configuré pour comparer l'adresse appelée de l'appel à une pluralité d'adresses appelées de référence indiquées dans la table de redirection, et, dans le cas d'une concordance, pour rediriger l'appel vers l'adresse de remplacement associée dans la table de redirection à l'adresse appelée de référence de l'appel. Selon un mode de réalisation, le logiciel ou le matériel destiné à intercepter l'appel est configuré pour comparer l'adresse appelante de l'appel à une pluralité d'adresses appelantes de référence indiquées dans la table de redirection et pour comparer l'adresse appelée de l'appel à une pluralité d'adresses appelées de référence indiquées dans la table de redirection, et, dans le cas d'une concordance pour à la fois les adresses appelante et appelée, pour rediriger l'appel vers l'adresse de remplacement associée dans la table de redirection aux adresses appelante et appelée de référence de l'appel. Selon un mode de réalisation, les une ou plusieurs ressources qui peuvent être appelées par l'exécution d'un code dans l'application logicielle comprennent : une première ressource qui peut être appelée par un appel à une première fonction stockée à une première adresse dans l'au moins un dispositif mémoire ; et une deuxième ressource qui peut être appelée par un appel à une deuxième fonction stockée à une deuxième adresse dans l'au moins un dispositif mémoire. Selon un mode de réalisation, le logiciel ou le matériel destiné à intercepter l'appel est un module logiciel stocké dans l'au moins un dispositif mémoire. Selon un mode de réalisation, le logiciel ou le matériel destiné à intercepter l'appel est un circuit relié au bus et comprenant un ou les deux parmi : un premier comparateur configuré pour comparer une adresse sur le bus à une adresse appelante de référence ou à une plage d'adresse appelante de référence ; et un deuxième comparateur configuré pour comparer une adresse sur le bus à une adresse appelée de référence ou à une plage d'adresse appelées de référence. 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 : la représente schématiquement un dispositif informatique selon un exemple de mode de réalisation de la présente description ; la représente schématiquement un système d'appel de ressources basé sur des appels directs provenant d'une application logicielle ; la représente schématiquement un système d'appel de ressources basé à la fois sur des appels directs et des appels systèmes provenant d'applications logicielles ; la représente schématiquement un système d'accès à des ressources comprenant un module de redirection selon un exemple de mode de réalisation de la présente description ; et la représente schématiquement un système d'accès à des ressources comprenant un circuit de redirection selon un exemple de mode de réalisation de la présente description. 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. 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. 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 (en anglais "coupled") entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés par l'intermédiaire d'un ou plusieurs autres éléments. 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 ou à un ... dans une position normale d'utilisation. 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. Dans la présente description, on considérera que les termes suivants ont les définitions suivantes : - appel système : signal électronique généré par l'exécution d'une application logicielle qui provoque l'arrêt de l'exécution de l'application logicielle et la requête d'un service en provenance d'une ressource par un composant privilégié, tel qu'un composant d'exploitation, pour le compte de l'application logicielle ; - ressource : toute ressource matérielle ou logicielle qui peut être appelée par une application logicielle par un appel direct ou un appel système à une adresse donnée, et à laquelle l'accès peut être limité, des exemples étant un dispositif périphérique, tel qu'un dispositif accélérateur matériel, un circuit de cryptage, une interface mémoire, etc., un dispositif mémoire volatile ou non volatile, ou une région ou une plage d'adresse d'un dispositif mémoire, un service logiciel, un service de cryptage, un paramètre particulier ou des données confidentielles ; - redirection d'appel : la translation d'un appel à une adresse donnée dans un appel à une autre adresse sans que l'appelant ne soit impliqué dans ce processus. La représente schématiquement un dispositif informatique 100 selon un exemple de mode de réalisation de la présente description. Le dispositif informatique 100 est par exemple mis en œuvre par un système sur puce (SoC). Le dispositif informatique 100 fait par exemple partie d'un dispositif électronique tel qu'un dispositif IoT (de l'anglais 'Internet of Things', Internet des objets), un capteur numérique, un contrôleur numérique de, par exemple, un système électronique ou électromécanique, ou analogue, ou tout "dispositif intelligent" qui peut profiter de la sécurité, tel qu'un compteur, par exemple d'électricité, d'eau, de gaz, etc., une caméra corporelle, un dispositif médical, tel qu'une pompe à insuline, un moniteur de fréquence cardiaque etc., ou analogue. Le dispositif informatique 100 comprend par exemple un dispositif de traitement (P) 102 comprenant un ou plusieurs processeurs et un ou plusieurs dispositifs mémoires, tels qu'une mémoire volatile (RAM) 104 et/ou une mémoire non volatile (FLASH) 106. Dans certains modes de réalisation, la mémoire volatile 104 est une mémoire vive et/ou la mémoire non volatile 106 est une mémoire Flash, bien que d'autres types de mémoires volatiles et non volatiles pourraient être présentes. Le dispositif de traitement 102 et les mémoires 104, 106, sont par exemple reliés par un bus 108, constitué par exemple d'un bus d'adresse et d'un bus de données (non représenté individuellement). La mémoire non volatile 106 stocke par exemple un code logiciel, incluant par exemple un système d'exploitation (OS), qui peut être un système d'exploitation sécurisé et/ou un système d'exploitation en temps réel (RTOS), et une ou plusieurs applications logicielles. Deux exemples d'applications logicielles APP1, APP2 sont représentés en . Comme cela est connu de la personne du métier, le système d'exploitation OS et les applications logicielles peuvent être au moins partiellement chargés dans la mémoire volatile 104 et exécutés par le dispositif de traitement 102. Il serait également possible que le dispositif informatique 100 soit un système nu dépourvu de tout système d'exploitation OS ou dépourvu de système d'exploitation riche, l'OS étant par exemple un RTOS. Le dispositif informatique 100 comprend en outre, par exemple, un ou plusieurs dispositifs matériels à accès limité (RA HW 1, RA HW N) 110, 112 reliés au bus 108, qui sont par exemple des dispositifs périphériques, tels que des interfaces de communication, ou tout autre type de ressources qui peuvent être accédés seulement directement par l'OS et/ou par une ou plusieurs des applications logicielles ayant les droits requis. De plus, la mémoire volatile 104 comprend par exemple une zone à accès limité (RA ZONE) 114, et/ou la mémoire non volatile 106 comprend par exemple une zone à accès limité (RA ZONE) 116, qui sont par exemple des ressources matérielles sous forme de régions mémoire ou de plages d'adresse qui peuvent être accédées seulement directement par l'OS et/ou par une ou plusieurs des applications logicielles ayant les droits requis. Bien que cela ne soit pas représenté en , le dispositif informatique peut en outre mettre en œuvre une ou plusieurs ressources logicielles assurant, par exemple, des services à accès limité. La représente schématiquement un système d'appel de ressources 200 basé sur des appels directs provenant d'une application logicielle. Le système 200 comprend une application logicielle (APP BINARY) 202, correspondant par exemple à l'application APP1 de la , et des ressources matérielles (HW) 206, 208. Dans des variantes de mode de réalisation, une ou plusieurs ressources logicielles sont présentes en outre ou selon une variante. L'application logicielle 202 est par exemple constituée d'un code logiciel (SW), parfois désigné comme étant un code binaire, et comporte un code de bibliothèque LIB_A (HAL) 204, qui est par exemple un code de couche d'abstraction matérielle (HAL) qui permet à l'application logicielle d'effectuer des appels directs aux ressources matérielles 206, 208. En effet, le système 200 de la est par exemple un système nu dans lequel l'application logicielle 202 a tous les droits requis pour accéder aux ressources matérielles ou logicielles. Dans l'exemple de la , la ressource matérielle 206 est une interface UART (de l'anglais "Universal Asynchronous Receiver-Transmitter", récepteur-émetteur asynchrone universel) et la ressource matérielle 208 est une unité de minuteur (TIM). La représente schématiquement un système d'appel de ressources 300 basé à la fois sur des appels directs et des appels systèmes provenant d'applications logicielles. Le système 300 comprend deux applications logicielles correspondant par exemple aux applications logicielles APP1 et APP2 de la , une première des applications logicielles (APP. MODULE 1) 302 comprenant un code de bibliothèque LIB_A (HAL) 304, et une deuxième des applications logicielles (APP. MODULE 2) 306 comprenant un code de bibliothèque LIB_A (HAL) 308. Le système 300 comprend en outre un système d'exploitation (SECURE OS) 310, qui est par exemple un OS sécurisé. Selon une variante, plutôt qu'un OS, qui a des capacités de planification, tout environnement de développement sécurisé agissant en tant que gardien de portes (de l'anglais "gate keeper") (en d'autres termes, un système n'ayant pas de capacités de planification) pourrait être utilisé. Le système 300 comprend également par exemple les ressources matérielles (HW) 206, 208 qui sont par exemple identiques à celles de la . Le système 300 pourrait en outre comprendre une ou plusieurs ressources logicielles en plus ou au lieu d'une des ou des deux ressources matérielles 206, 208. L'application logicielle 306 a par exemple des droits similaires à ceux de l'application logicielle 202 de la , et peut ainsi appeler à la fois les ressources matérielles 206, 208 directement par l'intermédiaire du code de bibliothèque 308. Par contre, l'application logicielle 302 a par exemple un niveau de droits inférieur, et peut par exemple appeler la ressource matérielle 208 directement, mais doit effectuer un appel système à l'OS 310 afin d'accéder à la ressource matérielle 206. Ainsi, bien qu'il soit possible de réutiliser le code de bibliothèque 204 de l'application logicielle 202 comme le code de bibliothèque 308 de l'application logicielle 306, sans ajouter de mécanisme pour gérer les appels de ressource, le code de bibliothèque 304 de l'application logicielle 302 pourrait devoir être différent des autres afin de gérer les deux types d'appels aux ressources matérielles 206 et 208. La figure 4 représente schématiquement un système d'accès à des ressources 400 comprenant un module de redirection 410 selon un exemple de mode de réalisation de la présente description. Ce système 400 est par exemple mis en œuvre dans le système informatique 100 de la figure 1. Le système 400 comprend deux applications logicielles correspondant par exemple aux applications logicielles APP1 et APP2 de la figure 1, une première des applications logicielles (BINARY: SECTION1) 402 comprenant un code de bibliothèque LIB_A CHECK_REDIRECT() 404, et une deuxième des applications logicielles (BINARY: SECTION2) 406 comprenant un code de bibliothèque LIB_A CHECK_REDIRECT() 408, qui est par exemple identique au code de bibliothèque 404. Donc les codes 404 et 408 peuvent être réutilisés entre les applications logicielles 402, 406, même si ces applications logicielles ont des niveaux de droit différents. Cela est obtenu grâce à un module de redirection (CHECK_REDIRECT()) 410, qui est configuré pour intercepter des appels provenant des applications logicielles 402 et 406, et pour les rediriger sur la base de si l'appel doit être effectué en tant qu'appel direct ou qu'appel système. Pour cela, chacune des applications logicielles 402, 406 est par exemple configurée pour appeler une même fonction particulière FuncHR pour une ressource donnée HR. Dans certains modes de réalisation, les fonctions FuncHR font partie des applications logicielles 402, 406, par exemple font partie des codes de bibliothèque LIB_A 404, 408 respectivement, et ont le rôle d'appeler le module de redirection 410. En particulier, les applications logicielles 402, 406 appellent un service à partir du code de bibliothèque LIB_A grâce à la fonction FuncHR et la fonction FuncHR invoque le module de redirection CHECK_REDIRECT() 410. A titre d'exemple, la fonction FuncHR = HAL_GPIO_Init. Les fonctions FuncHR pour les différentes ressources sont par exemple toutes stockées dans la mémoire non volatile 106, et chacune contient par exemple un code qui démarre en appelant le module de redirection 410 qui met par exemple en œuvre une fonction CHECK_REDIRECT(). De cette façon, le module de redirection 410 peut intercepter et traiter les appels aux fonctions FuncHR. Le module de redirection 410 est configuré pour déterminer quel appel réel doit être effectué : un appel direct ou un appel système. La fonction CHECK_REDIRECT() n'est par exemple pas dépendante d'une plate-forme, et est toujours le même code. Par exemple, les seules parties qui peuvent changer d'un système à un autre est l'adresse de cette fonction et la taille de la table de redirection. Le module de redirection 410, et en particulier la fonction CHECK_REDIRECT(), est par exemple configuré pour rediriger l'appel si une redirection doit être appliquée. Par exemple, la représente un exemple dans lequel la ressource appelée est un UART, et l'appel est redirigé par le module de redirection 410 vers soit : une première adresse mémoire 412 correspondant à un appel direct UART (UART_DIRECT CALL) ; soit vers une deuxième adresse mémoire 414 correspondant à un appel système UART (UART_SYS CALL). Par exemple, la redirection effectuée par le module de redirection 410 est basée sur des règles stockées dans une table de redirection 411, qui fait par exemple partie du module de redirection 410. Dans certains modes de réalisation, la table de redirection peut être mise à jour comme cela est représenté par une entrée TABLE UPDATE dans le module de redirection 410. En quittant la fonction de redirection CHECK_REDIRECT(), la pile est par exemple ignorée et le registre de liaison est par exemple forcé à l'adresse de redirection. En outre, une branche est par exemple appliquée à l'adresse de redirection, avec la pile provenant de l'appelant, sur la base des paramètres d'entrée et de l'adresse appelante dans le registre de liaison. Selon une variante, si aucune redirection ne doit être appliquée, alors le flux de code se poursuit par exemple avec le flux standard. Les tableaux 1 et 2 ci-après fournissent des exemples de la table de redirection. Comme cela est indiqué dans le tableau 1, chacun des enregistrements de table #1 à #6 définit par exemple les règles s'appliquant à un appel d'une ressource donnée au niveau d'une adresse appelée donnée (Called ) à partir d'une adresse appelante donnée (Caller ) dans le module logiciel 402 ou 406, c'est-à-dire à une quelconque adresse dans une section 1 ( SECTION1) ou à une quelconque adresse dans une section 2 ( SECTION2), ou à une adresse particulière dans une de ces sections. Dans l'exemple du tableau 1, il y a deux ressources qui peuvent respectivement être appelées par des fonctions FuncA et FuncB respectivement. Les adresses appelées de ces fonctions telles qu'exécutées par les applications logicielles 402 et 406 sont par exemple des adresses dans le module de redirection 410, de sorte que le module de redirection 410 intercepte et traite ces appels. De plus, pour chaque enregistrement de table #1 à #6, il y a une indication de l'adresse de redirection (Redirected ), en d'autres mots l'adresse à laquelle l'appel serait redirigé par le module de redirection 410. Enregistrement table Caller Called Redirected #1 Adresse exacte du code I1 effectuant l'appel à FuncA &FuncA dans FLASH &SyscallFuncA #2 Adresse exacte du code I2 effectuant l'appel à FuncB &FuncB dans FLASH &SyscallFuncB #3 Adresse exacte du code I3 effectuant l'appel à FuncB &FuncB dans FLASH &SyscallFuncB #4 Caller dans section S1 Called dans plage [ 1; 2] called + décalage #5 Caller dans section S2 &FuncA dans FLASH &OtherSyscallFuncA #6 Caller dans RAM &FuncB dans FLASH &DoNothing Par exemple, l'enregistrement #1 dans le tableau 1 correspond à une adresse appelante à une adresse exacte d'un code I1 qui appelle la fonction FuncA, l'enregistrement #2 dans le tableau correspond à une adresse appelante à une adresse exacte d'un code I2 qui appelle la fonction FuncB, et l'enregistrement #3 dans le tableau correspond à une adresse appelante à une adresse exacte d'un code I3 qui appelle la fonction FuncB. Les codes I1, I2 et I3 peuvent être dans l'une quelconque des applications logicielles 402 ou 406. Les fonctions FuncA et FuncB sont par exemple stockées dans la mémoire non volatile 106, qui est par exemple une mémoire FLASH. Les adresses de redirection pour les enregistrements #1, #2 et #3 sont par exemple des appels système à la fonction correspondante, car les codes I1, I2 et I3 n'ont par exemple pas le niveau de droit requis pour appeler directement les ressources associées aux fonctions FuncA et FuncB. Par exemple, l'enregistrement #4 dans le tableau 1 correspond à une adresse appelante dans l'application logicielle 402, autrement dit dans une plage d'adresse de la section S1, l'enregistrement #5 dans le tableau correspond à une adresse appelante dans l'application logicielle 406, en d'autres termes dans une plage d'adresse de la section S2, et l'enregistrement #6 dans le tableau correspond à une adresse appelante dans la mémoire volatile 104, qui est par exemple la mémoire vive RAM. L'adresse appelée pour l'enregistrement de table #4 est par exemple une plage d'adresse [@1;@2], en d'autres termes toutes les adresses entre les adresses @1 et @2, et l'adresse de redirection est l'adresse appelée plus un décalage. Cela permet par exemple un appel direct à une ressource, mais à une adresse modifiée. L'adresse appelée pour l'enregistrement de table #5 est par exemple la fonction FuncA, et l'adresse de redirection est un appel système à la fonction FuncA, mais différent de l'appel système de l'enregistrement de table #1, par exemple parce qu'un dispositif différent est appelé afin d'accéder à la ressource, telle qu'un dispositif qui est externe au dispositif 100 de la . A titre d'exemple, l'appel système est utilisé pour accéder à un service cryptographique, tel qu'une opération de décryptage impliquant l'utilisation d'une clef confidentielle. Dans un premier cas, la clef de chiffrement est par exemple protégée directement dans le dispositif 100 lui-même, et donc un premier appel système (par exemple, l'appel système de l'enregistrement de table #1) est effectué avec toutes les opérations exécutées dans le dispositif 100, qui est par exemple un SoC. Dans un deuxième cas, la clef de chiffrement peut même être plus sensible et un accès supplémentaire à une composante sécurisée externe peut être mis en œuvre, conduisant ainsi à un appel système différent (par exemple, l'appel système de l'enregistrement de table #5). L'adresse appelée pour l'enregistrement de table #6 est par exemple la fonction FuncB et cet appel est par exemple bloqué, et n'est pas redirigé, comme cela est indiqué par l'entrée ne rien faire "&DoNothing". Le tableau 2 indique dans une colonne "Applicabilité", pour chaque enregistrement de table #1 à #6 du tableau 1, des conditions supplémentaires qui doivent par exemple s'appliquer avant que la redirection ne soit appliquée. La fourniture de conditions supplémentaires est optionnelle, et dans certains cas il peut n'y avoir aucune condition supplémentaire pour tout ou partie des enregistrements de table, comme cela est indiqué par l'entrée "sans condition". En outre, dans certains cas, une colonne supplémentaire "Rejet" indique, pour chaque enregistrement de table #1 à #6 du tableau 1, ce qui devrait être fait si la condition n'est pas remplie. S'il n'y a pas de condition, alors une entrée N.A. (non applicable) est présente dans cette colonne. Enregistrement de table Applicabilité Rejet #1 Noyau en mode non privilégié Valeur du registre XX est YY … Si les contrôles d'applicabilité sont négatifs, déclencher une faute matérielle #2 Sans condition N.A. #3 1. Valeur à RAM@ XX est YY Ne pas effectuer la redirection, appeler &FuncB #4 Noyau en mode privilégié Réinitialiser #5 Mode sécurisé Exception E1 #6 Sans condition N.A. Bien entendu, les Tableaux 1 et 2 précédents fournissent seulement un exemple d'un ensemble de règles pour définir des redirections d'appel, et de nombreuses modifications sont possibles, par exemple en fonction du nombre de ressources qui peuvent être appelées, du nombre d'applications logicielles qui peuvent émettre des appels, etc. Bien que des exemples aient été fournis dans lesquels chaque enregistrement de table est défini pour une adresse appelante particulière et pour une adresse appelée particulière, il serait également possible que tout ou partie des enregistrements de table soient définis uniquement sur la base seulement de l'adresse appelante ou sur la base seulement de l'adresse appelée, si par exemple tous les appels provenant d'un code logiciel donné ou à une ressource donnée doivent être traités de la même façon. Bien que la représente un mode de réalisation dans lequel l'interception et la redirection d'appels soient effectuées sous forme logicielle par un module logiciel, une mise en œuvre matérielle est également possible, dont un exemple sera décrit plus en détail ci-après en relation avec la . La représente schématiquement un système d'accès à des ressources 500 comprenant un circuit de redirection 502 selon un exemple de mode de réalisation de la présente description. Ce système 500 est par exemple mis en œuvre dans le système informatique 100 de la . Par exemple, le circuit de redirection 502 est relié entre le bus 108 et le dispositif mémoire volatile 104 (RAM (CODE, VDATA)), qui stocke un code logiciel et/ou des données volatiles, et/ou entre le bus 108 et le dispositif mémoire non volatile 106 (FLASH (CODE, NVDATA)), qui stocke un code logiciel et des données non volatiles. Bien que la représente un exemple dans lequel un seul circuit 502 est relié entre le bus et chacun des dispositifs mémoire 104, 106, dans des variantes de mode de réalisation, il serait possible de prévoir un circuit séparé pour chaque dispositif mémoire 104, 106. Comme cela est représenté en , le dispositif de traitement (P) 102 est également relié au bus 108, et dans certains modes de réalisation un ou plusieurs autres dispositifs maitres (OTHER MASTER(S)) 504 peuvent être reliés au bus 108 et peuvent être configurés pour effectuer des appels à des ressources sur le bus 108 qui peuvent être traités d'une façon similaire aux appels effectués par le dispositif de traitement 102. Le circuit de redirection 502 comprend par exemple une mémoire tampon (@IN) 506 reliée au bus 108 et configurée pour stocker temporairement des adresses apparaissant sur le bus d'adresse du bus 108 qui correspondent aux adresses dans la mémoire non volatile 106. Le circuit de redirection 502 comprend en outre un comparateur (CALLEE COMPARATOR) 508, configuré pour comparer une adresse dans la mémoire tampon 506 à une ou plusieurs adresses appelées de référence, ou à des plages d'adresse appelée de référence, stockées par exemple dans un registre (REF ADDRS) 510. Ces adresses appelées de référence ou plages d'adresse appelée de référence correspondent par exemple à l'adresse ou aux plages d'adresse définies dans la colonne "adresse appelée" de la table de redirection décrite précédemment. En outre, le circuit de redirection 502 comprend par exemple une mémoire tampon (@IN) 512 reliée au bus 108 et configuré pour stocker temporairement des adresses apparaissant sur le bus d'adresse du bus 108 qui correspondent aux adresses dans la mémoire volatile 104. Le comparateur 508 est par exemple en outre configuré pour comparer une adresse dans la mémoire tampon 512 aux une ou plusieurs adresses appelées de référence ou aux plages d'adresse appelée de référence stockées dans le registre 510. Le circuit de redirection 502 comprend en outre, par exemple, une mémoire tampon 514 configuré pour stocker une adresse précédente présente dans le tampon 506 et/ou le tampon 512. Le circuit de redirection 502 comprend en outre un comparateur (CALLER COMPARATOR) 516 configuré pour comparer une adresse dans la mémoire tampon 514 à une ou plusieurs adresses appelantes de référence ou à des plages d'adresse appelante de référence stockées par exemple dans un registre (REF ADDRS) 518. Ces adresses appelantes de référence ou plages d'adresse appelante de référence correspondent à l'adresse ou aux plages d'adresse définies dans la colonne "adresse appelante" de la table de redirection décrite précédemment. La mise en œuvre du circuit 502 de la suppose que, pour un appel donné, l'adresse appelante apparaisse sur le bus d'adresse une période d'horloge avant l'adresse appelée. Des sorties des comparateurs 508 et 516 sont par exemple reliées à une mémoire 520 stockant par exemple une table de vérité (LUT) 522 mettant en œuvre la table de redirection décrite précédemment. Dans le cas où l'un des ou les deux comparateurs 508 et 516 détectent une concordance, l'adresse appelante et/ou appelée correspondante est par exemple fournie comme entrée de la table de vérité 522, qui est configurée pour déterminer s'il y a une concordance avec un des enregistrements de la table de redirection et, le cas échéant, pour rendre disponible l'adresse de redirection pour un récupérateur d'adresse (FETCHER) 524. Le récupérateur d'adresse est configuré pour stocker l'adresse de redirection dans soit une mémoire tampon 526 (REDIRECTED IN) si l'appel est destiné à la mémoire non volatile 106, soit dans une mémoire tampon 528 (REDIRECTED IN) si l'appel est destiné à la mémoire volatile 104. Une sortie de la mémoire tampon 506 est reliée en outre à une entrée de la mémoire tampon 526, et une sortie de la mémoire tampon 512 est reliée en outre à une entrée de la mémoire tampon 528, de sorte que les adresses traversent le circuit 502 de façon transparente si aucune adresse de redirection n'est définie. Si une adresse de redirection est définie, le récupérateur d'adresse 524 est configuré pour réécrire, dans la mémoire tampon 526 ou 528, les adresses transférées depuis la mémoire tampon 506 ou 512 par l'adresse de redirection. Bien que cela ne soit pas représenté en , il sera évident à la personne du métier que le circuit 502 est une mise en œuvre synchrone, chacun des composants étant par exemple synchronisé par un signal d'horloge commun. Bien que cela ne soit pas représenté en , la table de vérité 522 peut avoir comme entrées supplémentaires des informations complémentaires afin que les conditions indiquées dans la colonne "applicabilité" de la table de redirection décrite précédemment puissent être analysées et appliquées. En outre, dans certains modes de réalisation, les contenus de la table de vérité peuvent être mis à jour, comme cela est représenté par une entrée de configuration (CONFIG) 530 et un chemin de mise à jour (UPDATE) 532. Dans le cas où les adresses ou plages d'adresse appelantes ou appelées sont mises à jour, les nouvelles informations sont par exemple stockées dans les registres 510, 518. Dans certains modes de réalisation, le mécanisme de mise à jour est un mécanisme sécurisé auquel il est possible d'accéder seulement sur la base d'une vérification de l'authentification en utilisant par exemple une ou plusieurs clefs de chiffrement. De plus ou selon une variante, la table de redirection à la fois de la mise en œuvre matérielle ( ) et de la mise en œuvre logicielle ( ) peut par exemple être stockée dans une ROM (de l'anglais "Read-Only Memory", mémoire à lecture seule) ou comme une table non volatile, par exemple dans une mémoire Flash, qui est configurée pendant la programmation du dispositif informatique 100. Dans certains modes de réalisation, la table de redirection est protégée en écriture, ou peut être mise à jour dans des conditions particulières, telles qu'une authentification et/ou une régression de protection de lecture (RDP), par un logiciel autorisé et/ou sécurisé, sur la base d'un octet d'option, d'un bit système, ou d'une broche d'état, etc. A titre de variante supplémentaire, la table de redirection peut être une table RAM dynamique qui est configurée à chaque réinitialisation ou arrêt du dispositif informatique 100. La mise à jour de la table peut être effectuée par l'intermédiaire d'une ou de plusieurs broches d'entrée du dispositif informatique 100, ou par l'intermédiaire d'une interface sans fil telle qu'une interface OTA (de l'anglais "Over The Air", interface d'accès aux données à distance). Un avantage des modes de réalisation décrits ici est qu'il est possible d'accéder à des ressources sur la base d'un même code réutilisable, indépendamment du contexte dans lequel l'application logicielle est utilisée, et en particulier indépendamment du niveau de droit affecté à l'application logicielle. En effet, l'accès restreint est obtenu en utilisant la table de redirection décrite, qui permettra soit à l'appel d'agir comme un appel direct à la ressource, soit redirigera l'appel en tant qu'appel système, soit bloquera l'appel. Divers modes de réalisation et variantes ont été décrits. La personne du métier comprendra que certaines caractéristiques de ces divers modes de réalisation et variantes pourraient être combinées, et d’autres variantes apparaîtront à la personne du métier. Par exemple, il sera évident à la personne du métier que les principes décrits ici pourraient être appliqués à un quelconque nombre de ressources, qui peuvent correspondre à des dispositifs périphériques ou à des régions mémoire. Enfin, la mise en oeuvre pratique des modes de réalisation et variantes décrits est à la portée de la personne du métier à partir des indications fonctionnelles données ci-dessus. Dispositif informatique comprenant : - au moins un dispositif mémoire (104, 106) configuré pour stocker une application logicielle (APP1, APP2) ; - un dispositif de traitement (102) relié à l'au moins un dispositif mémoire par l'intermédiaire d'un bus (108) et configuré pour exécuter l'application logicielle (APP1, APP2) ; et - une ou plusieurs ressources (110, 112, 114, 116) qui peuvent être appelées par l'exécution d'un code dans l'application logicielle (APP1, APP2), dans lequel l'au moins un dispositif mémoire (104, 106), ou un dispositif mémoire supplémentaire (520) du dispositif informatique, est configuré pour stocker une table de redirection (411, 522) indiquant, sur la base d'un ou des deux parmi une adresse appelante et une adresse appelée d'un appel à une des ressources, une adresse de remplacement à laquelle l'appel doit être retransmis, dans lequel le dispositif informatique comprend en outre un logiciel ou un matériel destiné à intercepter un appel provenant de l'application logicielle (APP1, APP2) et à rediriger l'appel sur la base de la table de redirection (411, 522). Procédé d'accès à une ou plusieurs ressources (110, 112, 114, 116) d'un dispositif informatique, le procédé comprenant : - l'interception, par un logiciel ou un matériel du dispositif informatique, d'un appel provenant d'une application logicielle (APP1, APP2) stockée par au moins un dispositif mémoire (104, 106) du dispositif informatique, dans lequel un dispositif de traitement (102) du dispositif informatique est relié à l'au moins un dispositif mémoire (104, 106) par l'intermédiaire d'un bus (108) et est configuré pour exécuter l'application logicielle (APP1, APP2) ; et - la redirection sélective, par ledit logiciel ou matériel du dispositif informatique, de l'appel sur la base d'une table de redirection (411, 522) stockée dans l'au moins un dispositif mémoire (104, 106) ou dans un dispositif mémoire supplémentaire (520), la table de redirection (411, 522) indiquant, sur la base d'un ou des deux parmi une adresse appelante et une adresse appelée d'un appel à une des ressources, une adresse de remplacement à laquelle l'appel doit être retransmis. Dispositif informatique selon la revendication 1, dans lequel les une ou plusieurs ressources (110, 112, 114, 116) comprennent une ou plusieurs ressources matérielles telles que des dispositifs périphériques du dispositif informatique. Dispositif informatique selon la revendication 1 ou 3, dans lequel les une ou plusieurs ressources (110, 112) comprennent une ou plusieurs régions mémoire (114, 116) de l'au moins un dispositif mémoire (104, 106). Dispositif informatique selon l'une quelconque des revendications 1, 3 ou 4, dans lequel le logiciel ou le matériel destiné à intercepter l'appel est configuré pour comparer l'adresse appelante de l'appel à une pluralité d'adresses appelantes de référence indiquées dans la table de redirection, et, dans le cas d'une concordance, pour rediriger l'appel vers l'adresse de remplacement associée dans la table de redirection à l'adresse appelante de référence de l'appel. Dispositif informatique selon l'une quelconque des revendications 1, 3 ou 4, dans lequel le logiciel ou le matériel destiné à intercepter l'appel est configuré pour comparer l'adresse appelée de l'appel à une pluralité d'adresses appelées de référence indiquées dans la table de redirection, et, dans le cas d'une concordance, pour rediriger l'appel vers l'adresse de remplacement associée dans la table de redirection à l'adresse appelée de référence de l'appel. Dispositif informatique selon l'une quelconque des revendications 1, 3 ou 4, dans lequel le logiciel ou le matériel destiné à intercepter l'appel est configuré pour comparer l'adresse appelante de l'appel à une pluralité d'adresses appelantes de référence indiquées dans la table de redirection et pour comparer l'adresse appelée de l'appel à une pluralité d'adresses appelées de référence indiquées dans la table de redirection, et, dans le cas d'une concordance pour à la fois les adresses appelante et appelée, pour rediriger l'appel vers l'adresse de remplacement associée dans la table de redirection aux adresses appelante et appelée de référence de l'appel. Dispositif informatique selon l'une quelconque des revendications 1 ou 3 à 7, dans lequel les une ou plusieurs ressources (110, 112, 114, 116) qui peuvent être appelées par l'exécution d'un code dans l'application logicielle comprennent : - une première ressource qui peut être appelée par un appel à une première fonction (FuncA) stockée à une première adresse dans l'au moins un dispositif mémoire (104, 106) ; et - une deuxième ressource qui peut être appelée par un appel à une deuxième fonction (FuncB) stockée à une deuxième adresse dans l'au moins un dispositif mémoire (104, 106). Dispositif informatique selon la revendication 8, dans lequel le logiciel ou le matériel destiné à intercepter l'appel est un module logiciel (410) stocké dans l'au moins un dispositif mémoire (104, 106). Dispositif informatique selon l'une quelconque des revendications 1 ou 3 à 8, dans lequel le logiciel ou le matériel destiné à intercepter l'appel est un circuit (502) relié au bus (108) et comprenant un ou les deux parmi : - un premier comparateur (516) configuré pour comparer une adresse sur le bus (108) à une adresse appelante de référence ou à une plage d'adresse appelante de référence ; et - un deuxième comparateur (508) configuré pour comparer une adresse sur le bus (108) à une adresse appelée de référence ou à une plage d'adresse appelée de référence.