FR3069935A1 - Dispositifs et procedes de protection de propriete intellectuelle de logiciel pour des plates-formes integrees - Google Patents

Dispositifs et procedes de protection de propriete intellectuelle de logiciel pour des plates-formes integrees Download PDF

Info

Publication number
FR3069935A1
FR3069935A1 FR1757380A FR1757380A FR3069935A1 FR 3069935 A1 FR3069935 A1 FR 3069935A1 FR 1757380 A FR1757380 A FR 1757380A FR 1757380 A FR1757380 A FR 1757380A FR 3069935 A1 FR3069935 A1 FR 3069935A1
Authority
FR
France
Prior art keywords
instructions
memory
code
library
software
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
FR1757380A
Other languages
English (en)
Inventor
Yann Yves Rene LOISEL
Frank Lhermet
Stephane Di Vito
Vincent Albanese
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Maxim Integrated Products Inc
Original Assignee
Maxim Integrated Products Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Maxim Integrated Products Inc filed Critical Maxim Integrated Products Inc
Priority to FR1757380A priority Critical patent/FR3069935A1/fr
Priority to US16/038,998 priority patent/US11023567B2/en
Priority to CN201810862498.0A priority patent/CN109325322B/zh
Publication of FR3069935A1 publication Critical patent/FR3069935A1/fr
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms

Abstract

Un 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.

Description

- 1 DISPOSITIFS ET PROCEDES DE PROTECTION DE PROPRIETE INTELLECTUELLE DE LOGICIEL POUR DES PLATES-FORMES
INTEGREES
Dans son domaine technique, la présente invention se rapporte à des dispositifs sécurisés. Plus particulièrement, la présente invention à se rapporte à 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é 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 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 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
-2nombreux 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 differents 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
-3compris 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 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 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.
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.
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 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 œuvre 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 œuvre suivant une variété de 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.
-4Des 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 qui peuvent comprendre des imité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 œuvre sous la forme de composants. Des composants peuvent être mis en œuvre 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 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.
La référence, dans la description à rm 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 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 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 à
-5un 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 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 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 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 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.
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 œuvre, 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 œuvre comme une pluralité de librairies dans la mémoire 120 ou comme 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.
-6II 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é à 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.
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 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.
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 comprendre une image différente.
La figure 2 représente l'effet intrusif d'un dispositif de mise au point sur tm 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 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.
-7Comme 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, rutilisation du 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 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 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 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 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.
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
-8vers 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 é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 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 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 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 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 sousprogramme 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 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
-9adresses 0x100249 et Οχ10040F.
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 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 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 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).
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 œuvre sous forme de matériel 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 n'entrent dans la mémoire cache 410, c'est-à-dire, à l'extérieur de la mémoire rapide 120.
- 10Dans 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. 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 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 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 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 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é afin 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 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
- 11 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 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 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 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 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 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 n'est pas nécessairement lié à une architecture de microcontrôleur spécifique ou mise en œuvre d'utilisateur quelconque et, dans certains modes de réalisation,
- 12arrê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 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 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 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 en œuvre, 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 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 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 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 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.
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 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.
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 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
- 14procé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 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é.
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 coupler le noyau 402 à mie mémoire rapide 120. Le noyau 402 peut être basé sur une architecture quelconque, par exemple, une architecture Harvard qui met en œuvre 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 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 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 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 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 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.
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.
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, 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 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
- 16rack), 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 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 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.
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 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 œuvre avec un microprocesseur ou analogues, et peut aussi comporter un processeur graphique 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 RAM) et d'une mémoire à lecture seule (ROM).
Un certain nombre d'unités de commande et de périphériques peuvent aussi ê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
- 17qu'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 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 œuvre différents aspects de la présente invention. Un ou plusieurs dispositifs de mémorisation 708 peuvent aussi ê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 afin 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 700 peut aussi comporter une unité de commande d'imprimante 712 afin de communiquer avec une imprimante 713. Une imité 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 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.
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 physique vers un autre. De plus, des programmes qui peuvent mettre en œuvre différents aspects de la présente invention peuvent être accédés à partir d'un
- 18emplacement 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 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 (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 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 œuvre sont possibles, comportant une mise en œuvre matérielle ou une mise en œuvre logicielle/matérielle. Des fonctions mises en œuvre de manière matérielle peuvent ê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 œuvre logicielles et matérielles. De manière similaire, les termes support ou supports pouvant être lus par ordinateur tel qu'utilisés ici 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 œuvre à 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 fabriquer des circuits (c'est-à-dire, matériel) permettant de mettre en œuvre le traitement requis.
- 19II 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 œuvre 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, 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 (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 œuvre globalement ou en 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 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 œuvre de la présente invention. Il va aussi être évident pour un spécialiste de la technique 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
-20eux.
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 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 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 réel et la portée de la présente invention.

Claims (1)

  1. REVENDICATIONS
    1. Procédé de protection de logiciel contre l'ingénierie inverse, le 5 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
    10 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 ;
    15 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 20 d'instruction, des instructions non cryptées dans la mémoire cache.
    Plate-forme intégrée
FR1757380A 2017-08-01 2017-08-01 Dispositifs et procedes de protection de propriete intellectuelle de logiciel pour des plates-formes integrees Pending FR3069935A1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
FR1757380A FR3069935A1 (fr) 2017-08-01 2017-08-01 Dispositifs et procedes de protection de propriete intellectuelle de logiciel pour des plates-formes integrees
US16/038,998 US11023567B2 (en) 2017-08-01 2018-07-18 Software intellectual property protection systems and methods for embedded platforms
CN201810862498.0A CN109325322B (zh) 2017-08-01 2018-08-01 用于嵌入式平台的软件知识产权保护系统和方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1757380A FR3069935A1 (fr) 2017-08-01 2017-08-01 Dispositifs et procedes de protection de propriete intellectuelle de logiciel pour des plates-formes integrees
FR1757380 2017-08-01

Publications (1)

Publication Number Publication Date
FR3069935A1 true FR3069935A1 (fr) 2019-02-08

Family

ID=60955118

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1757380A Pending FR3069935A1 (fr) 2017-08-01 2017-08-01 Dispositifs et procedes de protection de propriete intellectuelle de logiciel pour des plates-formes integrees

Country Status (3)

Country Link
US (1) US11023567B2 (fr)
CN (1) CN109325322B (fr)
FR (1) FR3069935A1 (fr)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3087020A1 (fr) * 2018-10-09 2020-04-10 Stmicroelectronics (Grenoble 2) Sas Procede d'acces a une memoire
US11443071B2 (en) * 2020-02-13 2022-09-13 SiFive, Inc. Secure debug architecture
CN112069506B (zh) * 2020-09-16 2024-02-23 地平线(上海)人工智能技术有限公司 一种安全启动方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4525599A (en) * 1982-05-21 1985-06-25 General Computer Corporation Software protection methods and apparatus
US20120216049A1 (en) * 2011-02-23 2012-08-23 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
US20160085695A1 (en) * 2014-09-24 2016-03-24 Intel Corporation Memory initialization in a protected region
US20160140057A1 (en) * 2012-10-31 2016-05-19 Renesas Electronics Corporation Semiconductor device and encryption key writing method

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558176A (en) * 1982-09-20 1985-12-10 Arnold Mark G Computer systems to inhibit unauthorized copying, unauthorized usage, and automated cracking of protected software
US4573119A (en) * 1983-07-11 1986-02-25 Westheimer Thomas O Computer software protection system
US6272637B1 (en) * 1997-04-14 2001-08-07 Dallas Semiconductor Corporation Systems and methods for protecting access to encrypted information
US6983374B2 (en) * 2000-02-14 2006-01-03 Kabushiki Kaisha Toshiba Tamper resistant microprocessor
US7987510B2 (en) * 2001-03-28 2011-07-26 Rovi Solutions Corporation Self-protecting digital content
US7089419B2 (en) * 2002-04-18 2006-08-08 International Business Machines Corporation Control function with multiple security states for facilitating secure operation of an integrated system
JP4073913B2 (ja) * 2002-07-09 2008-04-09 富士通株式会社 開放型汎用耐攻撃cpu及びその応用システム
EP1717723A1 (fr) * 2005-04-29 2006-11-02 ST Incard S.r.l. Une machine virtuelle améliorée ou un processeur hardware pour dispositifs électroniques portables avec carte à puce
US20070074046A1 (en) * 2005-09-23 2007-03-29 Czajkowski David R Secure microprocessor and method
WO2008054456A2 (fr) 2006-02-22 2008-05-08 Luna Innovations Inc. Environnement d'exécution de logiciel sécurisé facilité par un matériel
WO2008020389A2 (fr) * 2006-08-15 2008-02-21 Koninklijke Philips Electronics N.V. circuit d'accès de mémoire flash
US8307215B2 (en) * 2008-01-23 2012-11-06 Noam Camiel System and method for an autonomous software protection device
US8736626B2 (en) * 2008-08-26 2014-05-27 Matrox Graphics Inc. Method and system for cryptographically securing a graphics system
US8555015B2 (en) * 2008-10-23 2013-10-08 Maxim Integrated Products, Inc. Multi-layer content protecting microcontroller
US8914648B1 (en) * 2009-08-17 2014-12-16 Sandia Corporation Stateless and stateful implementations of faithful execution
US9892283B2 (en) * 2010-05-25 2018-02-13 Via Technologies, Inc. Decryption of encrypted instructions using keys selected on basis of instruction fetch address
US9967092B2 (en) * 2010-05-25 2018-05-08 Via Technologies, Inc. Key expansion logic using decryption key primitives
US8645714B2 (en) * 2010-05-25 2014-02-04 Via Technologies, Inc. Branch target address cache for predicting instruction decryption keys in a microprocessor that fetches and decrypts encrypted instructions
US9881161B2 (en) 2012-12-06 2018-01-30 S-Printing Solution Co., Ltd. System on chip to perform a secure boot, an image forming apparatus using the same, and method thereof
CN103761456B (zh) * 2013-10-12 2016-05-11 利尔达科技集团股份有限公司 一种单片机核心代码防破解的方法
JP6476098B2 (ja) 2015-09-15 2019-02-27 ルネサスエレクトロニクス株式会社 半導体装置
CN105227565B (zh) * 2015-10-13 2019-02-22 北京娜迦信息科技发展有限公司 用于安卓系统的防逆向破解共享对象文件的方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4525599A (en) * 1982-05-21 1985-06-25 General Computer Corporation Software protection methods and apparatus
US20120216049A1 (en) * 2011-02-23 2012-08-23 International Business Machines Corporation Secure object having protected region, integrity tree, and unprotected region
US20160140057A1 (en) * 2012-10-31 2016-05-19 Renesas Electronics Corporation Semiconductor device and encryption key writing method
US20160085695A1 (en) * 2014-09-24 2016-03-24 Intel Corporation Memory initialization in a protected region

Also Published As

Publication number Publication date
US20190042712A1 (en) 2019-02-07
CN109325322B (zh) 2024-01-02
US11023567B2 (en) 2021-06-01
CN109325322A (zh) 2019-02-12

Similar Documents

Publication Publication Date Title
US11303432B2 (en) Label-based double key encryption
FR3069935A1 (fr) Dispositifs et procedes de protection de propriete intellectuelle de logiciel pour des plates-formes integrees
EP0720098B1 (fr) Dispositif de sécurisation de systèmes d'information organisés autour de microprocesseurs
Khan et al. Utilizing and extending trusted execution environment in heterogeneous SoCs for a pay-per-device IP licensing scheme
US9239933B2 (en) Piracy prevention and usage control system using access-controlled encrypted data containers
US10789338B2 (en) Software algorithm security
US6675297B1 (en) Method and apparatus for generating and using a tamper-resistant encryption key
CN112805698A (zh) 呈现由多个drm保护的内容
Aljwari Challenges of Privacy in Cloud Computing
EP3214565B1 (fr) Procédé de modulation d'accès à une ressource, dispositif et programme correspondant
FR3069993A1 (fr) Dispositifs et procedes de masquage d'operations de chiffrement rsa
Kieseberg et al. Real-time forensics through endpoint visibility
FR3074933A1 (fr) Systeme et procede de licence et de mesure d'utilisation d'un bloc ip
FR2974919A1 (fr) Protection d'une memoire volatile contre des virus par changement d'instructions
Mohammad Blockchain and Bitcoin Security in IT Automation
Chau et al. Why Johnny Can't Make Money With His Contents: Pitfalls of Designing and Implementing Content Delivery Apps
EP3547602A1 (fr) Procédé de mise en oeuvre d'une fonction cryptographique pour une clé secrète
FR3106909A1 (fr) Circuit intégré configuré pour réaliser des opérations de chiffrement symétrique avec protection de clé secrète
EP3745638A1 (fr) Procedes de mise en uvre et d'obfuscation d'un algorithme cryptographique a cle secrete donnee
EP2075733B1 (fr) Dispositif et un procédé de protection contre la rétro conception
Bove A Large-Scale Study on the Prevalence and Usage of TEE-based Features on Android
WO2022129467A1 (fr) Methode d'association d'un programme logiciel executable avec une plateforme informatique
EP2889855B1 (fr) Procédé de conception d'une architecture reconfigurable de traitement d'un ensemble d'opérations multi-niveau de sécurité
Herbert Solving a Global Piracy Problem
FR3112643A1 (fr) Dispositif, méthode et programme pour une communication sécurisée entre boîtes blanches

Legal Events

Date Code Title Description
PLSC Publication of the preliminary search report

Effective date: 20190208

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6