FR3096798A1 - Dispositif de mémorisation - Google Patents
Dispositif de mémorisation Download PDFInfo
- Publication number
- FR3096798A1 FR3096798A1 FR1905583A FR1905583A FR3096798A1 FR 3096798 A1 FR3096798 A1 FR 3096798A1 FR 1905583 A FR1905583 A FR 1905583A FR 1905583 A FR1905583 A FR 1905583A FR 3096798 A1 FR3096798 A1 FR 3096798A1
- Authority
- FR
- France
- Prior art keywords
- data
- locations
- location
- instruction
- bits
- 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
- 230000015654 memory Effects 0.000 claims description 39
- 238000000034 method Methods 0.000 claims description 6
- 239000004020 conductor Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1441—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- 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
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
Dispositif de mémorisation La présente description concerne un dispositif de mémorisation comprenant un élément de mémorisation à exécution seule (104), l'élément de mémorisation comprenant une pluralité d'emplacements (111, 112, 116) stockant chacun une instruction, dans lequel une donnée à stocker est divisée en plusieurs portions (114), chaque portion (114) complétant un des emplacements (112). Figure pour l'abrégé : Fig. 1
Description
La présente description concerne de façon générale les dispositifs de mémorisation et plus particulièrement les dispositifs comprenant une mémoire à exécution seule.
Il existe des mémoires de plusieurs types, chacune plus ou moins accessible par un utilisateur. Par exemple, les mémoires mortes (read-only) sont des mémoires non volatiles dans lesquelles il n'est pas possible d'écrire. Il existe des mémoires dans lesquelles un utilisateur peut écrire et lire. Il existe aussi des mémoires à exécution seule (execute-only), configurées, par exemple par le fabriquant, pour qu'un utilisateur ne puisse qu'exécuter les instructions qui sont stockées dans ces mémoires, et non les lire ou les écrire.
Les mémoires à exécution seule peuvent par exemple permettre de stocker des logiciels confidentiels.
Un mode de réalisation pallie tout ou partie des inconvénients des dispositifs de mémorisation connus.
Un mode de réalisation prévoit un dispositif de mémorisation comprenant un élément de mémorisation à exécution seule, l'élément de mémorisation comprenant une pluralité d'emplacements stockant chacun une instruction, dans lequel une donnée à stocker est divisée en plusieurs portions, chaque portion complétant un des emplacements.
Un mode de réalisation prévoit un procédé de mémorisation d'une donnée dans un élément de mémorisation à exécution seule, l'élément de mémorisation comprenant une pluralité d'emplacements stockant chacun une instruction, le procédé comprenant la division de la donnée en plusieurs portions, et la mémorisation de chaque portion en complétant un emplacement.
Selon un mode de réalisation, les emplacements ont une même taille.
Selon un mode de réalisation, la taille de chaque portion est strictement inférieure à la taille des emplacements.
Selon un mode de réalisation, les portions de la donnée n'ont pas d'impact sur les résultats de l'exécution des instructions.
Selon un mode de réalisation, au moins certains des emplacements comprenant les portions de la donnée comprennent des instructions invalides.
Selon un mode de réalisation, chaque emplacement comprenant une portion de la donnée comprend des bits inutilisés par l'instruction stockée dans l'emplacement complété par une portion de la donnée.
Selon un mode de réalisation, les emplacements comprenant les portions de la donnée sont des emplacements successifs de l'élément de mémorisation.
Selon un mode de réalisation, les emplacements successifs sont précédés d'au moins un emplacement comprenant une instruction invalide.
Selon un mode de réalisation, les portions de la donnée ne sont pas situées sur les bits de poids fort des emplacements.
Selon un mode de réalisation, un circuit est configuré pour pouvoir lire et écrire dans l'élément de mémorisation à exécution seule.
Selon un mode de réalisation, la donnée correspond à une information non accessible à un utilisateur.
Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en relation avec la figure jointe :
De mêmes éléments ont été désignés par de mêmes références dans les différentes figures. En particulier, les éléments structurels et/ou fonctionnels communs aux différents modes de réalisation peuvent présenter les mêmes références et peuvent disposer de propriétés structurelles, dimensionnelles et matérielles identiques.
Par souci de clarté, seuls les étapes et éléments utiles à la compréhension des modes de réalisation décrits ont été représentés et sont détaillés. En particulier, les différents circuits pouvant avoir accès à la mémoire ne sont pas décrits, la mémoire pouvant être associée à tout type de circuit usuel.
Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments reliés ou couplés entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés ou couplés par l'intermédiaire d'un ou plusieurs autres éléments.
Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures.
Sauf précision contraire, les expressions "environ", "approximativement", "sensiblement", et "de l'ordre de" signifient à 10 % près, de préférence à 5 % près.
La figure 1 représente schématiquement un mode de réalisation d'un dispositif de mémorisation 100.
Le dispositif de mémorisation 100 comprend une mémoire MEM 102 non volatile. La mémoire 102 est par exemple une mémoire de type Flash.
Le dispositif de mémorisation 100 comprend un élément de mémorisation à exécution seule. Par élément de mémorisation, on entend une mémoire ou une partie de mémoire.
Plus particulièrement, dans l'exemple de la figure 1, la mémoire 102 comprend au moins une partie à exécution seule 104. Par mémoire ou partie d'une mémoire à exécution seule, on entend une mémoire, ou une partie d'une mémoire, comprenant des informations, ou instructions, ne pouvant qu'être exécutées, et ne pouvant pas être lues ou écrites par les utilisateurs du dispositif. La partie 104 comprend par exemple les codes de logiciels confidentiels ou des bibliothèques de données, programmés et stockés dans la mémoire par le fabriquant.
Le seul moyen pour un utilisateur de modifier une mémoire ou une partie d'une mémoire à exécution seule serait d'effacer entièrement cette mémoire ou partie de mémoire pour retirer les restrictions. L'utilisateur n'aurait cependant pas accès aux données stockées dans cette mémoire ou partie de mémoire qui auraient alors été effacées.
La mémoire peut comprendre au moins une autre partie 106, n'étant par exemple pas à exécution seule. La partie 106 est par exemple accessible aux utilisateurs. La partie 106 est par exemple une mémoire morte (read-only), c'est-à-dire une partie dans laquelle il est possible de lire des informations, et d'exécuter des instructions, mais pas d'écrire. Alternativement, la partie 106 peut être une partie dans laquelle il est possible pour un utilisateur de lire, d'écrire et d'exécuter des informations ou des instructions.
La partie 106 comprend par exemple des logiciels 108 (APPLICATION) pouvant lire et/ou écrire et/ou exécuter les informations stockées dans la partie 106. Les logiciels 108 peuvent exécuter les instructions stockées dans la partie 104. Les logiciels 108 ne peuvent cependant pas lire ou écrire dans la partie 104. Ainsi, il n'est pas possible pour un utilisateur d'obtenir les informations contenues dans la partie 104.
La mémoire 102, et en particulier la partie 104, comprend des emplacements 111 dans lesquels peuvent être stockées des informations, par exemple des instructions et des codes opérationnels. De préférence, tous les emplacements 111 de la partie 104 ont une même taille. De préférence, tous les emplacements de la mémoire 102 ont une même taille. La taille des emplacements est par exemple égale à 16 ou 32 bits.
Le dispositif 100 comprend un circuit 110 (SECRET ENGINE). Le circuit 110 est configuré pour pouvoir lire et écrire dans la partie 104.
Le circuit 110 n'est pas accessible et, de préférence, n'est pas visible, par les utilisateurs. Le circuit 110 n'est pas accessible et, de préférence, n'est pas visible, par les logiciels 108 compris dans la partie 106 de la mémoire. Les logiciels 108 ne peuvent donc pas commander le circuit 110. Les logiciels 108 ne peuvent donc pas utiliser le circuit 110 pour lire ou écrire dans la partie 104 et pour avoir accès aux logiciels confidentiels stockés dans la partie 104 de la mémoire 102.
Le circuit 110 est par exemple uniquement accessible par le fabriquant. Par exemple, le circuit 110 reçoit des mises à jour logiciel de la part du fabricant.
La partie 104 peut comprendre au moins une donnée secrète ou confidentielle, c'est-à-dire qui ne doit pas être accessible aux utilisateurs ou aux logiciels 108, mais doit pouvoir être accessible au circuit 110. La donnée est par exemple une clé de cryptage, ou un mot de passe. Il s'agit d'une valeur sous forme binaire.
On pourrait choisir de stocker la donnée secrète dans un des emplacements 111 qui ne comprendrait alors que cette donnée. La donnée serait alors stockée comme s'il s'agissait d'une instruction. La donnée serait alors accessible par le circuit 110 en lisant cet emplacement. Cependant, il serait alors possible pour un utilisateur d'exécuter la donnée comme une instruction et de déterminer quel est la valeur de la donnée à partir de l'impact de l'exécution de la donnée sur le dispositif.
Par exemple, on considère que la donnée est la valeur hexadécimale 0x1C58. Cette valeur, lorsqu'elle est exécutée peut correspondre à l'instruction "ADD R0 R1 #1", c'est-à-dire l'instruction qui entraîne la somme des valeurs stockées dans des registres R0 et R1 et stocke la valeur obtenue par la somme dans le registre R0. Il serait alors possible, en observant l'état du dispositif et en particulier l'état des registres, de déterminer quelle instruction a été exécutée. Il serait donc ensuite possible, à partir de la donnée sous forme d'instruction, de déterminer quelle est la valeur de la donnée confidentielle sous forme binaire.
Une telle manière de stocker la donnée secrète n'est donc pas sécurisée et ne permet pas de garder la donnée confidentielle.
Dans un mode de réalisation d'un procédé de mémorisation d'une donnée, la donnée secrète est divisée en portions 114, chacune de ces portions 114 étant située dans un emplacement 112, parmi les emplacements 111 de la partie 104 de la mémoire 102. Les emplacements 112 sont donc des emplacements 111 comprenant une portion de la donnée. Chaque emplacement 112 comprend une instruction. Chacune des portions 114 complète au moins partiellement un des emplacements 112 comprenant une instruction.
Lorsqu'on parle d'un premier emplacement situé avant, ou devant, un deuxième emplacement, cela signifie que le premier emplacement à une adresse de valeur inférieure.
De préférence, toutes les portions 114 de la donnée ont une même taille, par exemple 4 bits.
Chaque instruction stockée dans un emplacement 112 est située de préférence sur les bits de poids fort de l'emplacement.
Les instructions stockées dans les emplacements 112 complétés au moins partiellement par une des portions 114 de la donnée sont telles que la présence de la portion de la donnée secrète n'a pas d'impact sur le résultat de l'exécution de l'instruction.
Chaque emplacement 112 dans lequel est stockée une portion 114 de la donnée est de préférence un emplacement ayant des bits inutilisés par l'instruction ou des bits dont le changement n'entraîne pas un résultat différent à l'exécution de l'instruction.
Par exemple, si la taille de l'emplacement 112 est 16 bits, et si la taille de l'instruction est 12 bits, les 4 bits restants, par exemple les bits de poids faible, peuvent comprendre une des portions 114 de la donnée.
Ainsi, la portion 114 peut compléter tous les bits inutilisés de l'emplacement 112.
Alternativement, la portion peut ne compléter qu'une partie des bits inutilisés.
Par exemple, si la taille de l'emplacement 112 est 16 bits, et si la taille de l'instruction est 8 bits, l'emplacement comprend 8 bits inutilisés, par exemple les bits de poids faible. Ainsi, si la portion 114 de la donnée confidentielle comprend 4 bits, cette portion peut être située sur n'importe lesquels des 8 bits inutilisés de l'emplacement 112.
Chaque portion 114 de la donnée est de préférence située sur des bits successifs de l'emplacement 112 correspondant. Le circuit 110 est autorisé à lire directement les emplacements 112.
Les instructions associées à une portion 114 de la donnée sont de préférence des instructions invalides. Par instruction invalide, on entend une instruction qui a un impact sur le système tel que, par exemple, prévenir l'utilisateur de la présence d'une erreur et/ou arrêter l'exécution d'une suite d'instructions. Toutefois, la portion 114 est quant à elle valide et n'a pas d'impact. Le résultat d'une instruction invalide est le même quel que soit le contenu de l'emplacement après les bits de l'instruction invalide et quel que soit le contenu de l'emplacement suivant l'emplacement comprenant l'instruction invalide.
Des exemples d'instructions invalides ou de code opérationnels invalides comprennent, sous forme hexadécimale : 0xF87y, y représentant des bits dont la valeur n'a pas d'impact sur les résultats instruction. D'autres exemples concernent les codes 0xF8Fy, 0xF97y et 0xF9Fy. En pratique, il s'agit d'instructions de 32 bits (par exemple 0xF87yXXXX) mais on ne peut utiliser les 16 derniers bits pour stocker la donnée secrète car un attaquant pourrait n'exécuter que ces 16 derniers bits.
Chaque portion 114 de la donnée peut être située sur les bits de poids faible de l'emplacement 112 ou sur des bits internes, c'est-à-dire des bits ne comprenant pas le bit de poids fort et le bit de poids faible. L'instruction stockée dans un des emplacements 112 est située sur les bits de poids fort.
De préférence, les emplacements 112 dans lesquels sont situées les portions 114 de la donnée sont des emplacements successifs de la mémoire.
De préférence, chaque emplacement 112 comprenant une portion 114 est précédé :
d'au moins un emplacement 112 comprenant une autre portion 114 de la donnée, ou
d'au moins un emplacement 116 ne comprenant pas de portion 114 de la donnée.
Les emplacements 116 comprennent une instruction qui a le même résultat lorsqu'elle est exécutée quels que soient les bits de poids faibles non utilisés, et quel que soit le contenu de l'emplacement suivant. Plus précisément, si un circuit exécute le contenu de plusieurs emplacements pour une même instruction invalide, en commençant par l'emplacement comprenant l'instruction invalide, le résultat sera le même quel que soit le contenu du ou des autres emplacements.
De préférence, les instructions stockées dans les emplacements 116 sont des instructions invalides.
Lorsqu'un emplacement 112 est précédé d'au moins un emplacement 116, le nombre d'emplacements 116 dépend des possibilités de lecture des circuits pouvant exécuter des instructions de la partie 104. Plus précisément, le nombre d'emplacements 116 situés avant les emplacements 112 successifs dépend du nombre de bits pouvant être exécutés lors de l'exécution d'une instruction.
On considère dans les exemples suivants qu'un emplacement comprend x bits, par exemple x = 16.
Si les circuits et/ou logiciels accessibles par l'utilisateur, par exemple les logiciels situés dans la partie 106, ne peuvent exécuter qu'un emplacement à la fois, c'est-à-dire peuvent exécuter des instructions ayant au maximum x bits, on peut choisir de ne pas ajouter d'emplacement 116 directement devant les emplacements 112.
Si les circuits et/ou logiciels accessibles par l'utilisateur, par exemple les logiciels situés dans la partie 106, peuvent exécuter deux emplacements à la fois, c'est-à-dire peuvent exécuter des instructions ayant au maximum 2x bits, on peut choisir d'ajouter au moins un emplacement 116 directement devant les emplacements 112.
De manière plus générale, si les circuits et/ou logiciels accessibles par l'utilisateur, par exemple les logiciels situés dans la partie 106, peuvent exécuter n emplacements à la fois, n étant un nombre entier supérieur ou égal à 1, c'est-à-dire peuvent exécuter des instructions ayant au maximum nx bits, on peut choisir d'ajouter au moins n-1 emplacements 116 directement devant les emplacements 112.
On pourrait choisir de ne pas placer d'emplacements 116 avant des emplacements 112.
Cependant, dans le cas où les circuits et/ou logiciels accessibles par l'utilisateur, par exemple les logiciels situés dans la partie 106, peuvent exécuter deux emplacements à la fois, si l'emplacement 111 précédant un emplacement 112 comprend une instruction pour laquelle les bits suivants, en particulier les bits de la portion de la donnée de l'emplacement 112 suivant, ont un impact, il serait alors possible de déterminer au moins partiellement la donnée de la manière décrite précédemment.
On peut choisir, par exemple, de ne pas ajouter d'emplacement 116 si la ou les portions 114 pouvant être connues de cette manière ne sont pas suffisantes pour connaître la donnée entière ou pour être problématiques.
Divers modes de réalisation et variantes ont été décrits. L’homme de l’art comprendra que certaines caractéristiques de ces divers modes de réalisation et variantes pourraient être combinées, et d’autres variantes apparaitront à l’homme de l’art.
Enfin, la mise en oeuvre pratique des modes de réalisation et variantes décrits est à la portée de l’homme du métier à partir des indications fonctionnelles données ci-dessus.
Claims (13)
- Dispositif de mémorisation comprenant un élément de mémorisation à exécution seule (104), l'élément de mémorisation comprenant une pluralité d'emplacements (111, 112, 116) stockant chacun une instruction, dans lequel une donnée à stocker est divisée en plusieurs portions (114), chaque portion (114) complétant un des emplacements (112).
- Dispositif selon la revendication 1, dans lequel les emplacements (111, 112, 116) ont une même taille.
- Dispositif selon la revendication 2, dans lequel la taille de chaque portion (114) est strictement inférieure à la taille des emplacements (111, 112, 116).
- Dispositif selon l'une quelconque des revendications 1 à 3, dans lequel les portions (114) de la donnée n'ont pas d'impact sur les résultats de l'exécution des instructions.
- Dispositif selon l'une quelconque des revendications 1 à 4, dans lequel au moins certains des emplacements (112) comprenant les portions (114) de la donnée comprennent des instructions invalides.
- Dispositif selon l'une quelconque des revendications 1 à 5, dans lequel chaque emplacement (112) comprenant une portion de la donnée (114) comprend des bits inutilisés par l'instruction stockée dans l'emplacement (112) complété par une portion (114) de la donnée.
- Dispositif selon l'une quelconque des revendications 1 à 6, dans lequel les emplacements (112) comprenant les portions de la donnée sont des emplacements successifs de l'élément de mémorisation (104).
- Dispositif selon à la revendication 7, dans lequel les emplacements (112) successifs sont précédés d'au moins un emplacement (116) comprenant une instruction invalide.
- Dispositif selon l'une quelconque des revendications 1 à 8, dans lequel les portions (114) de la donnée ne sont pas situées sur les bits de poids fort des emplacements (112).
- Dispositif selon l'une quelconque des revendications 1 à 9, dans lequel un circuit (110) est configuré pour pouvoir lire et écrire dans l'élément de mémorisation à exécution seule.
- Dispositif selon l'une quelconque des revendications 1, à 10, dans lequel la donnée correspond à une information non accessible à un utilisateur.
- Procédé de mémorisation d'une donnée dans un dispositif selon l'une quelconque des revendications 1 à 11.
- Procédé de mémorisation d'une donnée dans un élément de mémorisation à exécution seule (104), l'élément de mémorisation comprenant une pluralité d'emplacements (111, 112, 116) stockant chacun une instruction, le procédé comprenant la division de la donnée en plusieurs portions (114), et la mémorisation de chaque portion en complétant un emplacement (112).
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1905583A FR3096798A1 (fr) | 2019-05-27 | 2019-05-27 | Dispositif de mémorisation |
US16/870,760 US20200379685A1 (en) | 2019-05-27 | 2020-05-08 | Storage device |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1905583A FR3096798A1 (fr) | 2019-05-27 | 2019-05-27 | Dispositif de mémorisation |
FR1905583 | 2019-05-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
FR3096798A1 true FR3096798A1 (fr) | 2020-12-04 |
Family
ID=68424975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1905583A Pending FR3096798A1 (fr) | 2019-05-27 | 2019-05-27 | Dispositif de mémorisation |
Country Status (2)
Country | Link |
---|---|
US (1) | US20200379685A1 (fr) |
FR (1) | FR3096798A1 (fr) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160378490A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | Protecting confidential data with transactional processing in execute-only memory |
EP3147811A1 (fr) * | 2015-09-24 | 2017-03-29 | STMicroelectronics (Rousset) SAS | Stockage et lecture d'un code d'authentification de message dans une memoire externe |
-
2019
- 2019-05-27 FR FR1905583A patent/FR3096798A1/fr active Pending
-
2020
- 2020-05-08 US US16/870,760 patent/US20200379685A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160378490A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | Protecting confidential data with transactional processing in execute-only memory |
EP3147811A1 (fr) * | 2015-09-24 | 2017-03-29 | STMicroelectronics (Rousset) SAS | Stockage et lecture d'un code d'authentification de message dans une memoire externe |
Also Published As
Publication number | Publication date |
---|---|
US20200379685A1 (en) | 2020-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
FR2964278A1 (fr) | Extraction de cle dans un circuit integre | |
EP1605333B1 (fr) | Contrôle de l'exécution d'un programme | |
FR3098319A1 (fr) | Procédé d'exécution d'un code binaire d'une fonction sécurisée par un microprocesseur | |
EP2453356B1 (fr) | Procédé, programme d'ordinateur et dispositif de sécurisation de code intermédiaire de programmation pour son exécution par une machine virtuelle | |
EP1983436B1 (fr) | Contrôle d'intégrité d'une mémoire externe à un processeur | |
WO2006000584A1 (fr) | Module de sécurité et méthode de personnalisation d'un tel module de sécurité | |
EP1573541A2 (fr) | Procede de memorisation de donnees avec correction d'erreur | |
FR2841015A1 (fr) | Controle d'execution d'un programme | |
FR3096798A1 (fr) | Dispositif de mémorisation | |
EP1880387B1 (fr) | Dispositif de protection d'une memoire contre les attaques par injection d'erreur | |
EP3667503B1 (fr) | Procédé de gestion de l'espace mémoire d'un dispositif de mémoire et système correspondant | |
CN111666082B (zh) | 一种外设固件加载方法、控制设备及计算机可读存储介质 | |
EP3789879A1 (fr) | Détection d'erreurs | |
US20160127792A1 (en) | Online video playing system and method | |
FR3071350A1 (fr) | Controle d'acces a une memoire au moyen d'alias d'adresse | |
EP3392791B1 (fr) | Procédé d'exécution d'un programme destiné à être interprété par une machine virtuelle protégée contre des attaques par injection de faute | |
EP3637266A1 (fr) | Procédé d'accès à une mémoire | |
EP0838053B1 (fr) | Procede et dispositif permettant a un programme fige de pouvoir evoluer | |
EP1486986A1 (fr) | Memoire flash programmable par mot | |
EP2860660A1 (fr) | Système et méthode de chargement sécurisé de données dans une mémoire cache associée à un processeur sécurisé | |
EP3522020B1 (fr) | Gestion d'une mémoire non volatile | |
EP1770524A2 (fr) | Détection d'erreur de séquencement dans l'exécution d'un programme | |
EP3324324B1 (fr) | Procédé de protection d'un dispositif électronique exécutant un programme contre des attaques par injection de faute et par confusion de type | |
EP3792771A1 (fr) | Test de programme | |
EP2252978B1 (fr) | Carte a circuit integre ayant un programme d'exploitation modifiable et procede de modification correspondant |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 2 |
|
PLSC | Publication of the preliminary search report |
Effective date: 20201204 |
|
RX | Complete rejection |
Effective date: 20210412 |