FR 3069935 A1 20190208 FR 1757380 A 20170801 DISPOSITIFS ET PROCEDES DE PROTECTION DE PROPRIETE INTELLECTUELLE DE LOGICIEL POUR DES PLATES-FORMES INTEGREES 10 Dans son domaine technique, la présente invention se rapporte à des dispositifs sécurisés. Plus particulièrement, la présente invention à se rapporte à 15 des dispositifs et procédés destiné à protéger la propriété intellectuelle (PI) de logiciel sur des plates-formes intégrées telles que des microcontrôleurs. Dans la technique antérieure, des fournisseurs de logiciel dans le commerce de la distribution de licence et de la vente de logiciel développent des logiciels propriétaires de forte valeur, tel que du code binaire qui comprend de la propriété 20 intellectuelle. De manière classique, le logiciel spécifique est compilé et mémorisé dans une librairie logicielle et délivré à un client, par exemple, un développeur d'application, qui utilise et intègre le logiciel dans ses propres applications. La création d'un tel logiciel implique souvent une dépense en temps et travail considérable ; toutefois, un logiciel est relativement facilement copié, partagé par 25 des moyens électroniques, modifié et réutilisé sur différentes plates-formes. Du fait de la nature de leur commerce, les fournisseurs de logiciel ne peuvent pas totalement masquer leur produit. Par exemple, à la mise à disposition d'une version de démonstration limitée d'un programme afin d'attirer les clients potentiels, un fournisseur de logiciel révèle des informations critiques à des tierces 30 parties. Pour un intrus inventif ou un développeur d'application malhonnête, les informations peuvent être utilisées afin de commencer une attaque sur de -2 nombreux fronts, tels que des serveurs, des ordinateurs et des dispositifs intégrés, de manière à extraire illégalement la PI de valeur contenue dans le code binaire en utilisant des procédés d'ingénierie inverse, tels que le désassemblage et ensuite en appliquant l'analyse de code d'assemblage afin d'extraire des informations concernant l'algorithme. Les solutions légales, telles que des accords contractuels tendent à présenter un pouvoir de dissuasion insuffisant qui n'assure pas une protection efficace de la PI de logiciel. De plus, l'incertitude inhérente et les temps et ressources requis pour renforcer les droits de la PI par des moyens légaux représentent une charge sur des titulaires de brevet que beaucoup trouvent inacceptables de même que trop intrusives sur leurs activités économiques. Par exemple, pour la plupart des titulaires de brevet, le circuit permettant d'assurer une protection par brevet dans le monde entier est onéreux de manière prohibitive et l'applicabilité est pavée de différents problèmes qui se dressent face à un titulaire de brevet dans différents pays. En outre, la protection par brevet n'est pas une option appropriée pour les fournisseurs de logiciel qui préfèrent conserver leurs PI et savoir-faire d'entreprise comme un secret commercial. Par conséquent, il est nécessaire de créer des dispositifs et procédés qui, à tout moment, empêchent des attaquants d'accéder au code binaire ou source de valeur, tel que la version en texte clair d'un code de librairie mémorisé sur un microcontrôleur ou autre plate-forme. Les mécanismes de protection idéaux ne doivent présenter aucun impact négatif sur les fonctionnalités ou performances de ressources, par exemple, la consommation d'énergie de la mémoire, et ne doivent provoquer aucune interférence avec des mécanismes de mise à jour de logiciel existants, l'utilisation de sondes JTAG, ou de tout autre outil classique du commerce des développeurs d'application. Une brève description des dessins va maintenant être donnée ci-dessous. Il va être fait référence à des modes de réalisation de l'invention, dont des exemples peuvent être représentés sur les figures annexées. Ces figures sont destinées à être représentatives et non limitatives. Bien que l'invention soit généralement décrite dans le contexte de ces modes de réalisation, il doit être -3 compris qu'il n'est pas prévu de limiter la portée de l'invention à ces modes de réalisation particuliers. La figure 1 représente la génération et la transmission d'une librairie cryptée dans la mémoire d'un dispositif de client, selon différents modes de réalisation de 5 la présente invention. La figure 2 représente l'effet intrusif d'un dispositif de mise au point sur un dispositif comprenant la PI de logiciel à protéger, selon différents modes de réalisation de la présente invention. La figure 3 est un algorithme d'un processus représentatif de protection de la 10 PI de logiciel contre l'ingénierie inverse selon différents modes de réalisation de la présente invention. La figure 4 représente un exemple d'architecture d'un dispositif de protection de la PI de logiciel contre l'ingénierie inverse selon différents modes de réalisation de la présente invention. 15 La figure 5 représente un dispositif protégé pendant le développement d'application, selon différents modes de réalisation de la présente invention. La figure 6 représente un scénario dans lequel une application essaye de lire des données du dispositif protégé selon différents modes de réalisation de la présente invention. 20 La figure 7 décrit un schéma fonctionnel simplifié d'un dispositif informatique, selon des modes de réalisation de la présente invention. Une description détaillée des modes de réalisation préférés va maintenant être donnée. Dans la description suivante, pour des besoins d'explication, des détails 25 spécifiques sont mis en évidence dans le but d'assurer la compréhension de l'invention. Toutefois, il va être évident pour le spécialiste de la technique que l'invention peut être mise en oeuvre sans ces détails. En outre, il va être évident pour le spécialiste de la technique que des modes de réalisation de la présente invention décrits ci-dessous, peuvent être mis en oeuvre suivant une variété de 30 manières, telles que par un processus, un appareil, un système, un dispositif ou un procédé sur un support pouvant être lu par ordinateur tangible. -4 Des composants, ou modules, montrés sur les schémas sont représentatifs d'exemples de modes de réalisation de l'invention et sont destinés à éviter d'obscurcir l'invention. Il doit aussi être compris, à travers cette description, que des composants peuvent être décrits comme des unités fonctionnelles distinctes 5 qui peuvent comprendre des unités secondaires, mais il va être évident pour les spécialistes de la technique que différents composants, ou des parties de ceux-ci, peuvent être divisés en composants distincts ou peuvent être intégrés ensemble, comprenant intégrés à l'intérieur d'un dispositif ou composant unique. Il doit être noté que des fonctions ou opérations décrites ici peuvent être mises en oeuvre sous 10 la forme de composants. Des composants peuvent être mis en oeuvre sous forme logicielle, matérielle ou d'une association des deux. En outre, des liaisons entre les composants ou dispositifs sur les figures ne sont pas destinées à être limitées à des liaisons directes. Au contraire, des données entre ces composants peuvent être modifiées, reformatées ou changées d'une autre 15 manière par des composants intermédiaires. De plus, des liaisons supplémentaires ou moins de liaisons peuvent être utilisées. Il doit aussi être noté que les termes "couplé", "raccordé" ou "couplé de manière à communiquer" doivent être compris comme comportant des liaisons directes, des liaisons indirectes au moyen d'un ou plusieurs dispositifs intermédiaires et des liaisons sans fil. 20 La référence, dans la description à un "premier mode de réalisation", un "mode de réalisation préféré", "un mode de réalisation," ou des "modes de réalisation" signifie qu'une particularité, structure, caractéristique, ou fonction spécifique décrite en relation avec le mode de réalisation est contenue dans au moins un premier mode de réalisation de l'invention et peut l'être dans plusieurs 25 modes de réalisation. De plus, les utilisations des phrases notées précédemment à différents emplacements dans la spécification ne se réfèrent pas nécessairement toutes aux mêmes modes de réalisation ou modes de réalisation. L'utilisation de certains termes à différents emplacements dans la description est destinée à la représentation et ne doit pas être considérée comme 30 limitative. Un service, une fonction ou une ressource n'est pas limité à un service, une fonction, ou une ressource unique ; l'utilisation de ces termes peut se référer à -5 un groupement de services, fonctions ou ressources associés, qui peuvent être répartis ou regroupés. En outre, les termes de mémoire, base de données, base d'informations, mémoire de données, tables, matériel et analogue peuvent être utilisés ici afin de désigner un composant ou des composants de dispositif dans 5 lesquels des informations peuvent être entrées ou enregistrées d'une autre manière. En outre, il doit être noté que des modes de réalisation décrits ici sont données dans le contexte de microcontrôleurs sécurisés, mais il va devenir évident pour un spécialiste de la technique que les enseignements de la présente invention ne sont pas limités à un type quelconque de microcontrôleur et peuvent aussi 10 présenter éventuellement un intérêt pour un fournisseur de logiciel quelconque qui souhaite utiliser des services de protection de PI dans d'autres contextes et applications. Dans ce document, les termes "librairie" et "code de librairie" peuvent être utilisés de manière interchangeable. "PI de logiciel" comporte tout secret dont la 15 protection est recherchée. La figure 1 représente la génération et la transmission d'une librairie cryptée dans la mémoire d'un dispositif de client, selon différents modes de réalisation de la présente invention. Dans certains modes de réalisation, un fournisseur de logiciel peut crypter une librairie non cryptée 140, par exemple, avant de la 20 délivrer au client, afin de produire une librairie cryptée 142. La librairie cryptée 142 peut alors être délivrée, sous un format crypté, à une plate-forme intégrée 110 du client. Ainsi, la librairie 144 est protégée d'une exposition non souhaitée, et la protection de PI de logiciel est établie à partir de la fourniture initiale par l'utilisation du logiciel au niveau de la plate-forme intégrée 110 du client. 25 Dans certains modes de réalisation, la librairie 144 est programmée dans la mémoire 120, un emplacement à partir duquel elle peut être décryptée et mise en oeuvre, par exemple, sans réaliser préalablement une copie de la librairie 142 dans la mémoire RAM interne 116. Il doit être compris que la librairie 142 peut être mise en oeuvre comme une pluralité de librairies dans la mémoire 120 ou comme 30 une librairie répartie. La mémoire 120 peut être d'un type quelconque de mémoire non volatile, par exemple, une mémoire rapide intégrée. 6 Il doit être compris que tout procédé de cryptage 102 connu dans la technique peut être utilisé afin de crypter la librairie 140, par exemple, afin de produire une clef de décryptage qui n'est pas destinée à être partagée avec un client, qui pourrait sinon avoir accès au code spécifique de propriétaire mémorisé 5 à l'intérieur. Dans certains modes de réalisation, la clef de décryptage (par exemple, pour l'algorithme AES ou tout autre algorithme cryptographique symétrique) peut être une clef aléatoire (c'est-à-dire, ne pouvant être devinée facilement) qui peut être utilisée par un contrôleur instantané et, afin d'assurer une protection améliorée, peut être mémorisée à l'extérieur de la mémoire rapide 120. 10 Dans certains modes de réalisation, le code produit peut être intégré dans du silicium, c'est-à-dire, dans la pastille. En résultat, puisque le coût (en temps, outils, travail, etc.) permettant l'extraction du code à partir du silicium afin de s'affranchir des protections qui sont assurées par les modes de réalisation de la présente invention excède fortement le coût de l'ingénierie inverse de la propriété PI 15 mémorisée dans la librairie logicielle 144, le bénéfice global des dispositifs et procédés de protection de propriété PI de logiciel décrits reste positif. Dans certains modes de réalisation, différents codes peuvent être fournis à différents clients ou utilisateurs afin d'augmenter davantage la protection de propriété PI de logiciel. 20 De plus, pour faciliter la gestion et la personnalisation de clef, un fournisseur de pastille peut utiliser une clef unique afin de crypter la librairie 144, qu'un client peut programmer sur un certain nombre de pastilles, puis la librairie pour chaque différente pastille peut être décryptée et recryptée en utilisant une clef locale et unique sur pastille, de telle sorte que chaque pastille peut 25 comprendre une image différente. La figure 2 représente l'effet intrusif d'un dispositif de mise au point sur un dispositif comprenant la PI de logiciel à protéger. Le dispositif de mise au point 256 peut être une sonde JTAG ou tout autre outil de mise au point de problèmes logiciels au cours d'un développement d'application. Alors que le dispositif 256 30 peut être un outil de mise au point utile, l'utilisation du dispositif 256 est plutôt intrusive sur une pastille 204 qui peut comprendre une plate-forme intégrée 210. 7 Comme cela est représenté sur la figure 2, le dispositif de mise au point 256 a un accès à la presque totalité de la plate-forme sondée 210, ce qui fournit de nombreux points d'attaque à des intrus. De plus, puisque la librairie 240 doit s'exécuter en texte en clair pouvant être lu par un microcontrôleur, l'utilisation du 5 dispositif de mise au point 256 par un développeur d'application permet, du point de vue du fournisseur de logiciel, un accès non souhaité au code de valeur et à la propriété PI qui peuvent être volés par un intrus chanceux. Par conséquent, il est être désirable de créer des solutions qui protègent une librairie 240 et son contenu, par exemple, en limitant l'accès aux versions en texte 10 clair du code de librairie par des intrus potentiels et sans interférer avec la capacité des développeurs d'application de dépanner et mettre au point le code d'application 230 en utilisant le dispositif de mise au point 256. La figure 3 est un algorithme d'un processus représentatif destiné à assurer la protection de propriété PI de logiciel par rapport à l'ingénierie inverse selon 15 différents modes de réalisation de la présente invention. Le processus 300 commence à l'étape 302 lorsqu'une application appelle un code, par exemple, une fonction spécifique. A l'étape 304, en réponse à l'appel du code, il est déterminé si un compteur de programme tombe dans une première zone d'une mémoire (par exemple, une 20 mémoire non volatile) qui comprend des instructions cryptées. Dans certains modes de réalisation, la zone comprenant les instructions cryptées est définie par un registre de mémoire de librairie (registre LMR). Si le compteur de programme tombe dans la première zone, alors, à l'étape 306, les instructions cryptées sont communiquées à un moteur de décryptage afin 25 d'obtenir des instructions décryptées, et, à l'étape 308, les instructions décryptées sont chargées dans une mémoire cache. Sinon, si, à l'étape 304, il est déterminé que le compteur de programme ne tombe pas dans la première zone, alors, le processus 300 charge directement des instructions non cryptées dans la mémoire cache. 30 A l'étape 310, les instructions cryptées/non-cryptées sont communiquées, par l'intermédiaire d'un bus de code d'instruction, à partir de la mémoire cache -8 vers un noyau, par exemple, pour une exécution immédiate. Il doit être noté que 1) certaines étapes peuvent, en variante, être exécutées ; 2) des étapes peuvent ne pas être limitées à l'ordre spécifique présenté ici ; 3) certaines étapes peuvent être exécutées suivant différents ordres ; et 4) certaines 5 étapes peuvent être réalisées simultanément. La figure 4 représente un exemple d'architecture d'un dispositif destiné à assurer la protection de propriété PI de logiciel par rapport à l'ingénierie inverse selon différents modes de réalisation de la présente invention. Le dispositif 400 comprend un noyau 402, une mémoire cache 410, un moteur de décryptage 10 sécurisé 420, un bus de code d'instruction 430, et une mémoire rapide 120, par exemple, une mémoire rapide intégrée qui comprend, en outre, du code d'application 130 et du code de librairie 144. Dans certains modes de réalisation, le code de librairie 144 a été crypté et comprend la propriété PI de logiciel. La mémoire cache 410 peut être une partie d'architecture de pastille 400 et 15 peut être couplée au noyau 402, par exemple, par l'intermédiaire d'un bus de code d'instruction 430, au moteur de décryptage 420 et à un contrôleur de mémoire rapide (non montré sur la figure 4). Le moteur de décryptage 420 peut être un moteur de décryptage rapide, sécurisé qui est intégré dans une pastille, par exemple, dans le contrôleur de mémoire rapide. Bien que, dans certains modes de 20 réalisation, le moteur de décryptage 420 soit un moteur de décryptage au standard AES, ceci n'est pas destiné à limiter la portée de la présente invention, puisqu'un procédé de décryptage quelconque et un moteur de décryptage quelconque peuvent être utilisés. En fonctionnement, dans certains modes de réalisation, la librairie cryptée 25 144 est programmée dans la mémoire rapide 120 à une ou plusieurs adresses définies par le registre LMR 450. Une application exécutée une fois peut amener le noyau 402 à appeler, de temps en temps, à partir d'une librairie 144 un sous-programme spécifique qui est mémorisé dans la plage d'adresses du registre LMR 450. Sur la figure 4, la partie de la librairie 144 qui comprend du code sous une 30 forme cryptée peut être mémorisée dans une mémoire rapide 120 à une plage d'adresses de mémoire rapide protégée, spécifiée, par exemple, entre deux 9 adresses 0x100249 et Ox10040F. Dans certains modes de réalisation, le noyau 402 peut accéder à la librairie cryptée 144 uniquement lorsqu'un code d'application 130 est exécuté. Une application peut, par exemple, appeler par l'intermédiaire d'une interface API (non 5 montrée) une fonction, qui peut être un jeu d'instructions qui représente du code à l'intérieur de la mémoire rapide 120. Dans certains modes de réalisation, du code de librairie crypté 144 peut être inaccessible et, ainsi, ne peut être commandé par un développeur d'application et néanmoins coexister avec le code d'application de client 130 qui peut être mémorisé dans une mémoire rapide 120 sous un format en 10 texte clair. Dans certains modes de réalisation, le dispositif 400 exécute des cryptages et décryptages sélectifs comme va être décrit ci-après. Une fois que le noyau 402 appelle du code, et qu'un compteur de programme pointe vers une zone d'une mémoire rapide 120 qui a été décryptée, est définie par le registre LMR 450 et comprend des instructions cryptées, un 15 moteur de décryptage 420 peut exécuter un décryptage sélectif de ces instructions. Le moteur de décryptage 420 peut être un moteur sécurisé conçu afin de recevoir des instructions à partir de la librairie 144 et de décrypter des instructions, par exemple, sur la base de la taille de bloc du moteur de décryptage 420 (par exemple, sur des tailles de bloc de 16 octets). 20 Dans certains modes de réalisation, des instructions décryptées peuvent d'abord être mémorisées dans la mémoire cache 410 avant d'être transmises au noyau 402, par exemple, par l'intermédiaire d'un bus de code d'instruction 430, afin d'assurer un traitement complémentaire. Dans certains modes de réalisation, une demande du noyau 402, qui peut être mise en oeuvre sous forme de matériel 25 qui accède à la plage d'adresses protégée dans la librairie 144, sert d'événement déclencheur qui conduit le moteur de décryptage 420 à commencer une opération de décryptage en temps-réel pour cette plage d'adresses protégée. Dans certains modes de réalisation, le décryptage se produit sur un bus d'instruction 430 au cours du transfert à partir de la mémoire rapide 120 et avant que les données 30 n'entrent dans la mémoire cache 410, c'est-à-dire, à l'extérieur de la mémoire rapide 120. - 10 - Dans des scénarios dans lesquels le compteur de programme ne pointe pas une zone cryptée, mais pointe plutôt une zone qui comprend des instructions non cryptées, les instructions non cryptées peuvent être chargées directement dans la mémoire cache 410 plutôt que de passer à travers le moteur de décryptage 420. 5 Dans l'un ou l'autre des scénarios, les instructions qui sont chargées dans la mémoire cache 410 peuvent être transmises, par l'intermédiaire du bus de code d'instruction 430, au noyau 402, qui exécute les instructions. Dans certains modes de réalisation, une image binaire d'une application finale peut intégrer l'application 130 sous un format en texte clair avec la librairie 10 cryptée 114 qui peut comprendre des fonctions utilisées par une application. Dans certains modes de réalisation, une table d'indirection peut être utilisée afin de lier des appels à une fonction et à une adresse dans la librairie 144. Il doit être compris que, dans le dispositif 400, lorsque le moteur de décryptage 420 exécute son décryptage, le contenu de la librairie 144 peut-être 15 exposé sous un format en texte clair ; toutefois, du fait qu'une attaque potentielle sur la mémoire cache 410 pourrait être sensiblement plus coûteuse que la valeur du contenu de la librairie 144 elle-même, de telles attaques sont effectivement rendues sans intérêt. Néanmoins, il doit être pris soin que des applications ne soient pas autorisées à lire le contenu de la mémoire cache 410. Dans certains 20 modes de réalisation, des contre-mesures, telles que des procédés anti-attaque par canal latéral, peuvent être utilisées afin de bloquer des attaquants potentiels, qui envisagent de lire le contenu de la mémoire cache 410, par exemple, en récupérant la valeur de clef de décryptage afin d'assurer le décryptage direct du code binaire. Dans certains modes de réalisation, pour augmenter davantage la sécurité et 25 empêcher des attaquants potentiels de pouvoir analyser le contenu de la librairie 144, par exemple, en observant le comportement de l'unité centrale de traitement ou par des attaques du type par programmation orientée retour, du matériel peut être utilisé afm de limiter les sauts vers des emplacements autorisés spécifiques, tels qu'une table de saut qui définit des fonctions ou des points d'entrée de la 30 librairie protégée 144 (qui peut être répartie à travers l'image binaire de la librairie 144). En outre, le logiciel peut être utilisé afin d'identifier des sauts autorisés et d'empêcher l'accès direct à la librairie 144. Enfin, la mémoire RAM 116 peut contenir les données qui sont traitées par la librairie protégée 144. En fonction d'observations faites concernant la mémoire RAM 116 (par exemple, un signal de validation de mise au point), des données 5 intermédiaires qui sont traitées en utilisant la librairie 144 peuvent être devinées dans le but d'obtenir des informations sur des fonctionnements internes de l'architecture de pastille 400. Toutefois, contrairement au code de librairie, des données traitées par code de librairie sont généralement sans valeur pour un attaquant. Par conséquent, la mémoire RAM 116 ne perdra de même aucune 10 information à protéger du monde extérieur. La figure 5 représente un dispositif protégé au cours du développement d'application, selon différents modes de réalisation de la présente invention. Pour des questions de clarté, des composants similaires à ceux montrés sur la figure 4 sont désignés de la même manière. Pour des questions de brièveté, une description 15 ou leur fonction ne sont pas répétées ici, en plus de celles des composants montrés sur la figure 4. La figure 5 comprend un dispositif de mise au point 504, des éléments de mise au point 530 et un signal de validation d'élément de mise au point 502. Les éléments de mise au point 530 permettent l'accès à la mémoire et, dans certains 20 modes de réalisation, assurent la mise au point du noyau 402, par exemple, en réponse à la détermination d'une adresse à laquelle un compteur de programme doit pointer. Dans certains modes de réalisation, le signal de validation d'élément de mise au point 502, par exemple, un signal DBGEN qui valide des événements de mise au point tels que des points d'arrêt qui peuvent arrêter une unité de 25 traitement ou déclencher une exception de moniteur de mise au point. En résultat, une fois que le signal de validation d'élément de mise au point 502 est inactif ou désactivé, la mise au point à travers un port d'interface de dispositif de mise au point 504 n'est plus disponible. Il doit être noté que le signal de validation d'élément de mise au point 502 30 n'est pas nécessairement lié à une architecture de microcontrôleur spécifique ou mise en oeuvre d'utilisateur quelconque et, dans certains modes de réalisation, - 12 - arrête l'ensemble des éléments de mise au point présents dans un microcontrôleur. En plus de valider un élément de mise au point, le signal de validation d'élément de mise au point 502 peut cibler un nombre quelconque de moteurs de mise au point indépendants dans un microcontrôleur, par exemple, un qui commande le 5 noyau d'unité CPU (points d'arrêt, exécution pas à pas, vidage de registre, etc...), un qui commande l'accès à la mémoire (indépendamment du noyau d'unité CPU), un qui commande certains périphériques, et analogue. Dans certains modes de réalisation, le signal de validation d'élément de mise au point 502 peut être fourni par un microcontrôleur ou différents sous-ensembles 10 de celui-ci, tel qu'un noyau 402 ou un contrôleur de mise au point qui peut assurer/valider l'accès direct à la mémoire pour le dispositif de mise au point 504. Le dispositif de mise au point 504 peut être un outil de mise au point quelconque connu dans la technique -- de manière classique un dispositif matériel qui exécute un certain type de logiciel de mise au point -- par exemple, une sonde JTAG qui 15 exécute des opérations de lecture et d'écriture dans une session JTAG au cours du développement d'application. D'une manière similaire au fonctionnement de l'architecture de la figure 4, lorsque le compteur de programme n'est pas dans une plage de la mémoire rapide 120 qui est définie par le registre LMR 450, des opérations normales sont mises 20 en oeuvre, comportant un code d'actualisation à partir de la mémoire rapide 120 par l'intermédiaire du bus de code d'instruction 430 et le déplacement de code vers la mémoire cache 410 et le noyau 402, c'est-à-dire, sans utiliser d'opérations de décryptage assurées par le moteur de décryptage 420. Dans certains modes de réalisation, une fois que le dispositif de mise au 25 point 504 est couplé au dispositif 500 et le compteur de programme est dans la plage de registre LMR 450, c'est-à-dire, dans une plage protégée qui comprend des instructions cryptées, le signal de validation d'élément de mise au point 502 est désactivé. En résultat, aucune information n'est rapportée au dispositif de mise au point 504, par exemple, lorsque du code de librairie à partir de la plage 30 protégée est exécuté. Dans certains modes de réalisation, des points d'arrêt à l'intérieur de la plage de registre LMR sont ignorés, désactivant, en effet, au cours - 13 - de l'exécution de code de librairie des éléments de mise au point quelconque et l'accès en lecture au contenu de mémoire de la librairie protégée 144 et permettant l'exécution sans interruption du code de librairie ou une exécution pas à pas par le dispositif de mise au point 504, qui peut sinon être utilisé afin d'extraire des 5 indices concernant les instructions exécutées. Par exemple, même si des instructions exécutées ne peuvent pas être lues, de nombreux registres peuvent être vidés, et les effets latéraux de l'instruction peuvent être observés et analysés par l'attaquant motivé. Dans certains modes de réalisation, lorsqu'une fonction qui a été appelée ne 10 tombe pas dans la plage protégée de la librairie 144 de telle sorte que le compteur de programme pointe à l'extérieur de la zone protégée, l'accès de mise au point peut être rétabli en validant de nouveau le signal de validation d'élément de mise au point 502. En résultat, un développeur d'application peut continuer à ajouter des points d'arrêt et reprendre l'exécution pas à pas de la mise au point de code. 15 Dans certains modes de réalisation, une fois que le moteur de décryptage 420 décrypte le code dans la librairie afin d'assurer l'exécution d'instruction, une application de client peut être mise au point comme cela est classique sans aucun impact ou pénalité sur les performances de dispositif (par exemple, le noyau ARM), alors que le code protégé peut s'exécuter dans un environnement opaque 20 ne pouvant être interrompu. Dans certains modes de réalisation, une taille de mémoire cache d'instruction 410 appropriée masque effectivement le coût de traitement de décryptage, par exemple, en réduisant le nombre de fois que certaines instructions doivent être chargées dans la mémoire cache 410 de manière à être décryptée. 25 Dans certains scénarios, lorsque le dispositif 500 commute entre un mode brut (c'est-à-dire, le dispositif de décryptage contourné) vers un mode protégé en désactivant le signal de validation d'élément de mise au point 502, la communication avec le dispositif de mise au point 504 peut être perdue. Par conséquent, le dispositif de mise au point 504 doit être consolidé afin de gérer une 30 telle perte de connexion potentielle et de récupérer à partir de celle-ci. Il va être apprécié par un spécialiste de la technique que les dispositifs et - 14 - procédés de protection présentés ici peuvent aussi être appliqués à du code protégé (par exemple, des librairies de logiciel) mémorisé dans des dispositifs de mémoire rapide externes. Il va être apprécié par un spécialiste de la technique que les mécanismes de protection peuvent être utilisés afin de protéger un code d'une 5 tierce partie. Par exemple, si la clef de décryptage est protégée dans la pastille plutôt que dans la mémoire rapide 120, alors, même si une mémoire rapide 120 est située à l'extérieur du dispositif 500 et, ainsi, facilement accessible à des attaquants potentiels, les données contenues dans la mémoire rapide 120 ne dévoilent aucune donnée utile à des adversaires sous ce format crypté. 10 La figure 6 représente un scénario dans lequel une application tente de lire des données à partir du dispositif protégé selon différents modes de réalisation de la présente invention. Certaine références numériques identiques à la figure 4 désignent des éléments similaires. En plus du bus de code d'instruction 430, le dispositif 600 sur la figure 6 comprend le bus de code de données 602 qui peut 15 coupler le noyau 402 à une mémoire rapide 120. Le noyau 402 peut être basé sur une architecture quelconque, par exemple, une architecture Harvard qui met en oeuvre deux bus, tel qu'un bus de code d'instruction 430 et un bus de code de données 602. Dans certains modes de réalisation, le bus de code de données 602 assure 20 l'accès au contenu de la mémoire rapide 120 dans un mode brut dans lequel aucun traitement de décryptage ne se produit sur le bus de code de données 602. Dans certains scénarios dans lesquels une application tente d'accéder à la librairie 144 et au code de librairie mémorisé à l'intérieur, par exemple, afin d'initier un vidage de mémoire, puisque les données vont avoir à passer par le bus de code de données 25 602, sautant, ainsi, un trajet à travers le moteur de décryptage 420, les données adressées dans la librairie 144 restent sous leur format crypté et sont lues en texte clair "en l'état" du fait que le texte de données n'a pas subi de décryptage par le moteur de décryptage 420. En résultat, un accès en lecture de mémoire quelconque pour les besoins de lecture de la mémoire rapide 120 par le trajet de 30 bus de code de données 602 conduit à un accès en texte clair qui ne va pas conduire à l'accès aux données décryptées. Ceci assure que le contenu à protéger - 15 - de la librairie 144 reste sécurisé. Dans certains modes de réalisation, le bus d'instruction 430 est dédié aux instructions d'actualisation à exécuter, de telle sorte que les instructions ne peuvent pas être extraites par ce canal, mais plutôt uniquement exécutées. Dans 5 certains modes de réalisation, un bus de code de données 602 est dédié aux données d'actualisation et à la mémorisation des données dans différents emplacements de mémoire ou registres du noyau interne. Au cours de l'exécution d'une instruction, le bus de code de données 602 peut être impliqué, par exemple, du fait que l'instruction peut impliquer un transfert de mémoire qui peut nécessiter 10 la lecture ou l'écriture sur le bus de code de données 602. Dans certains modes de réalisation, le bus de code de données 602 peut utiliser une mémoire cache de données qui n'est pas liée au moteur de décryptage 420 et est séparée d'une mémoire cache d'instruction (toutes deux non montrées sur la figure 6) utilisée par le bus de code d'instruction 430. 15 Dans certains modes de réalisation, la protection en écriture peut être utilisée afin de commander des opérations d'écriture dans la mémoire rapide 120, de telle sorte qu'il peut être empêché qu'un utilisateur reprogramme certaines zones de la mémoire rapide 120. De plus, la programmation de mise à jour peut être commandée par un mécanisme d'authentification. 20 Des aspects du présent document de brevet sont orientés vers des dispositifs de gestion d'informations. Pour les besoins de cette description, un dispositif de gestion d'informations peut comporter une instrumentation ou un agrégat d'instruments quelconque pouvant servir à compter, calculer, déterminer, classer, traiter, émettre, recevoir, extraire, initier, acheminer, commuter, mémoriser, 25 afficher, communiquer, manifester, détecter, enregistrer, reproduire, gérer ou utiliser une forme quelconque d'information, d'intelligence, ou de données pour des besoins commerciaux, scientifiques, de commande, ou autres. Par exemple, un dispositif de gestion d'informations peut être un ordinateur personnel (par exemple, un ordinateur de bureau ou ordinateur portatif), une tablette 30 informatique, un dispositif mobile (par exemple, un assistant numérique personnel (PDA) ou téléphone intelligent), un serveur (par exemple, serveur lame ou serveur - 16 - rack), un dispositif de mémorisation de réseau, ou tout autre dispositif approprié et dont la taille, la forme, les performances, les fonctionnalités et le prix peuvent varier. Le dispositif de gestion d'informations peut comporter une mémoire à accès aléatoire (mémoire RAM), une ou plusieurs ressources de traitement telles 5 qu'une unité centrale de traitement (unité CPU) ou des circuits logiques de commande matériels ou logiciels, de la mémoire ROM, et/ou autres types de mémoire non volatile. Des composants additionnels du dispositif de gestion d'informations peuvent comporter un ou plusieurs lecteurs de disque, un ou plusieurs ports de réseau afin d'assurer la communication avec des dispositifs 10 externes de même que différents dispositifs d'entrée et sortie (I/O), tels qu'un clavier, une souris, un pavé tactile et/ou un dispositif d'affichage vidéo. Le dispositif de gestion d'informations peut aussi comporter un ou plusieurs bus pouvant servir à transmettre des communications entre les différents composants matériels. 15 La figure 7 représente un schéma simplifié d'un dispositif informatique, selon des modes de réalisation de la présente invention. Il doit être compris que les fonctionnalités montrées pour le dispositif 700 peuvent servir à supporter différents modes de réalisation d'un dispositif de gestion d'informations -- bien qu'il doive être compris qu'un dispositif de gestion d'informations peut être 20 configuré différemment et comporter différents composants. Comme cela est représenté sur la figure 7, le dispositif 700 comporte une unité centrale de traitement (unité CPU) 701 qui comporte des ressources de calcul et commande l'ordinateur. L'unité centrale de traitement 701 peut être mise en oeuvre avec un microprocesseur ou analogues, et peut aussi comporter un processeur graphique 25 et/ou un coprocesseur en virgule flottante afin d'assurer des calculs mathématiques. Le dispositif 700 peut aussi comporter un dispositif de mémoire 702, qui peut être sous la forme d'une mémoire à accès aléatoire (mémoire RA1v1) et d'une mémoire à lecture seule (ROM). Un certain nombre d'unités de commande et de périphériques peuvent aussi 30 être prévus, comme cela est montré sur la figure 7. Une unité de commande d'entrée 703 représente une interface avec différents dispositifs d'entrée 704, tel - 17 - qu'un clavier, une souris, ou un stylet. Il peut aussi comporter un contrôleur de scanneur 705, qui communique avec un scanneur 706. Le dispositif 700 peut aussi comporter un contrôleur de mémoire 707 afin d'assurer l'interface avec un ou plusieurs dispositifs de mémorisation 708 chacun d'eux comporte un support de 5 mémorisation tel qu'une bande ou un disque magnétique, ou un support optique qui peut être utilisé afin d'enregistrer des programmes d'instructions pour des systèmes d'exploitation, des utilitaires et applications qui peuvent comporter des modes de réalisation de programmes qui mettent en oeuvre différents aspects de la présente invention. Un ou plusieurs dispositifs de mémorisation 708 peuvent aussi 10 être utilisés afin de mémoriser des données traitées ou des données à traiter selon l'invention. Le dispositif 700 peut aussi comporter un contrôleur d'affichage 709 afm de former une interface avec un dispositif d'affichage 711, qui peut être un tube à rayon cathodique (CRT), un dispositif d'affichage à transistor en couche mince (TFT), ou autre type de dispositif d'affichage. Le dispositif informatique 15 700 peut aussi comporter une unité de commande d'imprimante 712 afm de communiquer avec une imprimante 713. Une unité de commande de communication 714 peut assurer une interface avec un ou plusieurs dispositifs de communication 715, qui permet au dispositif 700 de se raccorder à des dispositifs externes par l'intermédiaire de l'un quelconque d'une variété de réseaux 20 comportant Internet, un réseau Ethernet en nuage, un canal à fibre sur Ethernet (FCoE)/réseau en nuage de jonction de centre informatique (DCB), un réseau local (LAN), un réseau étendu (WAN), un réseau de stockage (SAN) ou par l'intermédiaire de signaux électromagnétiques porteurs appropriés comportant des signaux à infrarouges. 25 Dans le dispositif représenté, tous les composants de dispositif principaux peuvent être raccordés à un bus 716, qui peut représenter plus d'un bus physique. Toutefois, différents composants de dispositif peuvent être à proximité physique l'un de l'autre ou peuvent ne pas l'être. Par exemple, des données d'entrée et/ou des données de sortie peuvent être transmises à distance à partir d'un emplacement 30 physique vers un autre. De plus, des programmes qui peuvent mettre en oeuvre différents aspects de la présente invention peuvent être accédés à partir d'un - 18 - emplacement distant (par exemple, un serveur) sur un réseau. De tels données et/ou programmes peuvent être transférés au moyen de l'un quelconque d'une variété de supports pouvant être lus par ordinateur comportant, mais sans être limités à cela : des supports magnétiques tels que des disques durs, disquettes et 5 bandes magnétiques ; des supports optiques tels que des CD-ROM et des dispositifs holographiques ; des supports magnéto-optiques ; et des dispositifs matériels qui sont configurés de manière spécifique afin de mémoriser ou de mémoriser et d'exécuter un code de programme, tels que des circuits intégrés spécifiques à l'application (ASICs), des dispositifs logiques programmables 10 (PLDs), des dispositifs de mémoire rapide et des dispositif de mémoire RAM et ROM. Des modes de réalisation de la présente invention peuvent être codés sur un ou plusieurs supports non transitoires pouvant être lus par ordinateur avec des instructions pour un ou plusieurs processeurs ou unités de traitement afin de 15 provoquer l'exécution des étapes. Il doit être noté que le ou les supports non transitoires pouvant être lus par ordinateur peuvent comporter une mémoire volatile et non volatile. Il doit être noté que des variantes de mise en oeuvre sont possibles, comportant une mise en oeuvre matérielle ou une mise en oeuvre logicielle/matérielle. Des fonctions mises en oeuvre de manière matérielle peuvent 20 être réalisées en utilisant des circuits ASIC, des réseaux programmables, des circuits de traitement de signal numérique ou analogues. Par conséquent, les termes "moyens" dans l'une quelconque des revendications sont destinés à couvrir à la fois des mises en oeuvre logicielles et matérielles. De manière similaire, les termes "support ou supports pouvant être lus par ordinateur" tel qu'utilisés ici 25 comportent du logiciel et/ou du matériel à l'intérieur duquel sont intégrés un programme et des instructions, ou une association de ceux-ci. Avec ces variantes de mises en oeuvre à l'esprit, il doit être compris que les figures et la description associée fournissent les informations fonctionnelles nécessaires à un spécialiste de la technique afin d'écrire un code informatique (c'est-à-dire, logiciel) et/ou de 30 fabriquer des circuits (c'est-à-dire, matériel) permettant de mettre en oeuvre le traitement requis. - 19 - Il doit être noté que les modes de réalisation de la présente invention peuvent, en outre, se rapporter à des produits informatiques avec un support tangible non transitoire pouvant être lu par ordinateur qui comporte, à l'intérieur, du code informatique permettant d'exécuter différentes opérations mises en oeuvre 5 sur ordinateur. Les supports et le code informatique peuvent être ceux spécialement conçus et construits pour les besoins de la présente invention, ou ils peuvent être du type connu ou disponible pour les spécialistes de la technique. Des exemples de supports tangibles pouvant être lus par ordinateur comportent, mais sans être limités à cela : des supports magnétiques tels que des disques durs, 10 disquettes et bandes magnétiques ; des supports optiques tels que des CD-ROM et des dispositifs holographiques ; des supports magnéto-optiques ; et des dispositifs matériels qui sont configurés de manière spécifique afin de mémoriser ou de mémoriser et d'exécuter un code de programme, tels que des circuits intégrés spécifiques à l'application (ASICs), des dispositifs logiques programmables 15 (PLDs), des dispositifs de mémoire rapide et des dispositif de mémoire RAM et ROM. Des exemples de code informatique comportent du code machine, tel que produit par un compilateur, et des fichiers contenant un code de niveau supérieur qui sont exécutés par un ordinateur en utilisant un interpréteur. Des modes de réalisation de la présente invention peuvent être mis en oeuvre globalement ou en 20 partie sous forme d'instructions pouvant être exécutées par ordinateur qui peuvent être dans des modules de programme qui sont exécutés par un dispositif de traitement. Des exemples de modules de programme comportent des librairies, des programmes, des sous-programmes, des codes objets, des composants et des structures numériques. Dans des environnements de calcul répartis, des modules 25 de programme peuvent être situés physiquement à des emplacements qui sont locaux, distants ou les deux. Il va être évident pour un spécialiste de la technique qu'aucun système informatique ou langage de programmation n'est critique pour la mise en oeuvre de la présente invention. Il va aussi être évident pour un spécialiste de la technique 30 qu'un certain nombre des éléments décrits précédemment peuvent être séparés physiquement et/ou fonctionnellement en modules secondaires ou associés entre - 20 - eux. Il doit être noté que des éléments, ci-dessous, de la présente invention peuvent être agencés différemment, comportant le fait de présenter de multiples dépendances, configurations et associations. Par exemple, dans certains modes de 5 réalisation, les particularités de différentes revendications peuvent être associées à celles d'autres revendications. Il va être apprécié par un spécialiste de la technique que les précédents exemples et modes de réalisation sont donnés à titre d'exemple et non de limitation de la portée de la présente invention. Il doit être considéré que 10 l'ensemble des permutations, renforcements, équivalents, combinaisons et améliorations sur ces derniers qui deviennent évidents pour les spécialistes de la technique à la lecture de la spécification et à l'étude des dessins sont contenus dans l'esprit REVENDICATIONS1. Procédé de protection de logiciel contre l'ingénierie inverse, le procédé comprenant : en réponse à l'appel d'un code par une application, la détermination du fait qu'un compteur de programme tombe dans une première plage d'adresses d'une mémoire non volatile qui comprend des instructions cryptées et est définie par un registre de mémoire de librairie (LMR), la mémoire non volatile comprenant, en outre, une seconde plage d'adresses destinée à mémoriser des instructions non cryptées ; en réponse à la détermination du fait que le compteur de programme tombe dans la première plage d'adresses, la communication des instructions cryptées à un moteur de décryptage afin d'obtenir des instructions décryptées ; le chargement des instructions décryptées dans une mémoire cache ; la communication des instructions décryptées, par l'intermédiaire d'un bus de code d'instruction, à un noyau afin d'exécuter le code décrypté ; et en réponse à la détermination du fait que le compteur de programme tombe dans la seconde zone, le chargement, par l'intermédiaire du bus de code d'instruction, des instructions non cryptées dans la mémoire cache.