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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 230000004224 protection Effects 0.000 title description 17
- 230000004044 response Effects 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 description 13
- 238000012545 processing Methods 0.000 description 12
- 238000011161 development Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000000523 sample Substances 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012407 engineering method Methods 0.000 description 1
- 230000001747 exhibiting effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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/6281—Protecting 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/002—Countermeasures against attacks on cryptographic mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution 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)
- REVENDICATIONS1. 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, en10 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
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)
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)
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)
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 | 北京娜迦信息科技发展有限公司 | 用于安卓系统的防逆向破解共享对象文件的方法和装置 |
-
2017
- 2017-08-01 FR FR1757380A patent/FR3069935A1/fr active Pending
-
2018
- 2018-07-18 US US16/038,998 patent/US11023567B2/en active Active
- 2018-08-01 CN CN201810862498.0A patent/CN109325322B/zh active Active
Patent Citations (4)
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 |