FR3096798A1 - Dispositif de mémorisation - Google Patents

Dispositif de mémorisation Download PDF

Info

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
Application number
FR1905583A
Other languages
English (en)
Inventor
Julien MONTMASSON
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics Rousset SAS
Original Assignee
STMicroelectronics Rousset SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by STMicroelectronics Rousset SAS filed Critical STMicroelectronics Rousset SAS
Priority to FR1905583A priority Critical patent/FR3096798A1/fr
Priority to US16/870,760 priority patent/US20200379685A1/en
Publication of FR3096798A1 publication Critical patent/FR3096798A1/fr
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection 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/1425Protection 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/1441Protection 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting 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/79Protecting 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security 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

Dispositif de mémorisation
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 :
la figure 1 représente schématiquement un mode de réalisation d'un dispositif de mémorisation.
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)

  1. 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).
  2. Dispositif selon la revendication 1, dans lequel les emplacements (111, 112, 116) ont une même taille.
  3. Dispositif selon la revendication 2, dans lequel la taille de chaque portion (114) est strictement inférieure à la taille des emplacements (111, 112, 116).
  4. 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.
  5. 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.
  6. 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.
  7. 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).
  8. 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.
  9. 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).
  10. 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.
  11. Dispositif selon l'une quelconque des revendications 1, à 10, dans lequel la donnée correspond à une information non accessible à un utilisateur.
  12. Procédé de mémorisation d'une donnée dans un dispositif selon l'une quelconque des revendications 1 à 11.
  13. 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).
FR1905583A 2019-05-27 2019-05-27 Dispositif de mémorisation Pending FR3096798A1 (fr)

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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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