FR3071350A1 - Controle d'acces a une memoire au moyen d'alias d'adresse - Google Patents

Controle d'acces a une memoire au moyen d'alias d'adresse Download PDF

Info

Publication number
FR3071350A1
FR3071350A1 FR1758564A FR1758564A FR3071350A1 FR 3071350 A1 FR3071350 A1 FR 3071350A1 FR 1758564 A FR1758564 A FR 1758564A FR 1758564 A FR1758564 A FR 1758564A FR 3071350 A1 FR3071350 A1 FR 3071350A1
Authority
FR
France
Prior art keywords
memory
address
processing device
marker
alias
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
FR1758564A
Other languages
English (en)
Inventor
Fabrice Romain
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 FR1758564A priority Critical patent/FR3071350A1/fr
Priority to EP18192657.7A priority patent/EP3457290B1/fr
Priority to US16/130,858 priority patent/US10783091B2/en
Priority to CN201811076728.7A priority patent/CN109508145B/zh
Publication of FR3071350A1 publication Critical patent/FR3071350A1/fr
Pending legal-status Critical Current

Links

Classifications

    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • 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/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • 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/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/006Identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Storage Device Security (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

L'invention concerne un système de contrôle d'accès à une mémoire comprenant : un dispositif de traitement (302) adapté à fonctionner dans plusieurs modes de fonctionnement et à accéder à une mémoire (200) au moyen de plusieurs alias d'adresse ; et un circuit de vérification (312) configuré pour : recevoir, en relation avec une première opération d'écriture dans un premier emplacement de mémoire de la mémoire (200), une indication d'un alias d'adresse desdits plusieurs alias d'adresse associés à la première opération d'écriture ; vérifier que le mode de fonctionnement courant du dispositif de traitement permet au dispositif de traitement d'écrire dans la mémoire au moyen dudit alias d'adresse ; recevoir, au cours de la première opération de lecture, un premier marqueur stocké dans le premier emplacement de mémoire ; et vérifier, à partir du premier marqueur et du premier alias d'adresse, que le dispositif de traitement est autorisé à accéder au premier emplacement de mémoire.

Description

CONTROLE D'ACCES A UNE MEMOIRE AU MOYEN D'ALIAS D'ADRESSE DOMAINE DE L'INVENTION
La présente invention concerne le domaine du contrôle d'accès à une mémoire.
EXPOSE DE L'ART ANTERIEUR
Le contrôle d'accès à une mémoire permet de restreindre l'accès à certaines zones d'une mémoire à partir du mode de fonctionnement d'un dispositif de traitement souhaitant accéder à la mémoire. Par exemple, un dispositif de traitement peut être adapté à fonctionner en mode utilisateur et en mode superviseur. Certains segments de la mémoire peuvent être lisibles, inscriptibles ou exécutables seulement quand le dispositif de traitement fonctionne en mode superviseur et d'autres segments de la mémoire peuvent être exécutables seulement quand le dispositif de traitement est en mode utilisateur. En outre, la modification de certains fichiers de programme de base relatifs au système d'exploitation peut n'être permise que lorsque le dispositif de traitement fonctionne en mode superviseur.
Le contrôle d'accès est généralement réalisé au moyen d'un module de protection de mémoire (MPU : Memory Protection unit) ou d'un module de gestion de mémoire (MMU : Memory Management Unit). Toutefois, les modules MPU et MMU sont relativement coûteux en termes de portes logiques (de façon caractéristique, plus de
B16137 17-RO-0155
000 portes) . Il est en effet nécessaire de prévoir des registres de stockage d'information concernant les règles d'accès à la mémoire à appliquer à chaque segment de mémoire et d'information identifiant l'adresse de départ et la taille de chaque segment de mémoire auquel s'appliquent les règles. En outre, on a également besoin de comparateurs d'adresse pour vérifier, pour chaque opération d'accès à la mémoire, si un segment de mémoire à accès restreint fait l'objet d'un accès. De tels comparateurs ajoutent à la consommation. Par ailleurs, la granularité des segments de mémoire est généralement médiocre, typiquement au minimum de 32 octets et souvent de 1 à 4 Ko.
Il existe donc le besoin dans la technique d'un système de contrôle d'accès à une mémoire présentant une surface relativement faible, une faible consommation et/ou permettant une granularité relativement fine.
RESUME
Un objet de modes de réalisation de la présente description est de répondre à un ou plusieurs besoins de 1 * art antérieur.
Selon un aspect, on prévoit un système de contrôle d'accès à une mémoire comprenant : un dispositif de traitement adapté à fonctionner dans plusieurs modes de fonctionnement et à accéder à une mémoire au moyen de plusieurs alias d'adresse ; et un circuit de vérification configuré pour : recevoir, en relation avec une première opération de lecture d'un premier emplacement de mémoire, une indication d'un premier desdits plusieurs alias d'adresse associés à la première opération de lecture ; vérifier que le mode de fonctionnement courant du dispositif de traitement permet au dispositif de traitement d'accéder à la mémoire au moyen du premier alias d'adresse ; recevoir, pendant la première opération de lecture, un premier marqueur stocké dans le premier emplacement de mémoire ; et vérifier, à partir du premier marqueur et du premier alias d'adresse, que le dispositif de traitement est autorisé à accéder au premier emplacement de mémoire.
Selon un mode de réalisation, le circuit de vérification est en outre configuré pour générer, en relation avec une première
B16137 17-RO-0155 opération d'écriture dans le premier emplacement de mémoire, le premier marqueur et pour stocker le premier marqueur dans le premier emplacement de mémoire.
Selon un mode de réalisation, le circuit de vérification est de plus configuré pour : recevoir, en relation avec la première opération d'écriture, une indication d'un alias d'adresse desdits plusieurs alias d'adresse associés à la première opération d'écriture ; et vérifier que le mode de fonctionnement courant du dispositif de traitement permet au dispositif de traitement d'écrire dans la mémoire au moyen dudit alias d'adresse associé à la première opération d'écriture.
Selon un mode de réalisation, le premier marqueur comprend un code de détection d'erreur ou un code de correction d'erreur.
Selon un mode de réalisation, le système de contrôle d'accès à une mémoire comprend en outre un circuit de code de détection d’erreur ou de code de correction d'erreur configuré pour vérifier que le premier alias d'adresse correspond à un alias d'adresse utilisé pour une opération d'écriture du premier marqueur.
Selon un mode de réalisation, le système de contrôle d'accès à une mémoire comprend en outre un décodeur d'adresse configuré pour extraire le premier alias d'adresse d'une adresse associée à la première opération de lecture.
Selon un mode de réalisation, le premier marqueur présente une longueur comprise entre 1 et 8 bits.
Selon un autre aspect, on prévoit un système de traitement de données comprenant : le système de contrôle d'accès à une mémoire ci-dessus ; et une mémoire couplée au dispositif de traitement par l'intermédiaire d'un bus d'adresse et d'un bus de données.
Selon encore un autre aspect, on prévoit un procédé de contrôle d'accès à une mémoire comprenant : la réception, par un circuit de vérification en relation avec une première opération de lecture d'un premier emplacement de mémoire d'une mémoire par un dispositif de traitement adapté à fonctionner dans plusieurs
B16137 17-RO-0155 modes de fonctionnement et à accéder à la mémoire au moyen de plusieurs alias d'adresse, une indication d'un premier des plusieurs alias d'adresse associés à la première opération de lecture; la vérification que le mode de fonctionnement courant du dispositif de traitement permet au dispositif de traitement d'accéder à la mémoire au moyen du premier alias d'adresse ; la réception, prenant la première opération de lecture, d'un premier marqueur stocké dans le premier emplacement de mémoire ; et la vérification, à partir du premier marqueur et du premier alias d'adresse, que le dispositif de traitement est autorisé à accéder au premier emplacement de mémoire.
Selon un mode de réalisation, le procédé consiste en outre, avant la première opération de lecture, à générer, en relation avec une première opération d'écriture dans le premier emplacement de mémoire, le premier marqueur et à stocker le premier marqueur dans le premier emplacement de mémoire.
Selon un mode de réalisation, le procédé comprend en outre : la réception par le circuit de vérification, en relation avec la première opération d'écriture, d'une indication d'un alias d'adresse desdits plusieurs alias d'adresse associés à la première opération d'écriture ; et la vérification que le mode de fonctionnement courant du dispositif de traitement permet au dispositif de traitement d'écrire dans la mémoire au moyen dudit alias d'adresse associé à la première opération d'écriture.
Selon un mode de réalisation, le premier marqueur comprend un code de détection d'erreur ou un code de correction d'erreur.
Selon un mode de réalisation, le procédé comprend en outre la vérification, par un circuit de code de détection d’erreur ou de code de correction d’erreur, que le premier alias d'adresse correspond à un alias d'adresse utilisé pour une opération d'écriture du premier marqueur.
Selon un mode de réalisation, le procédé comprend en outre l'extraction, par un décodeur d'adresse, du premier alias d'adresse d'une adresse associée à la première opération de lecture.
B16137 17-RO-0155
BREVE DESCRIPTION DES FIGURES
Ces caractéristiques et leurs 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 les figures jointes parmi lesquelles :
la figure 1 illustre schématiquement un exemple de mémoire comprenant des segments à accès restreint ;
la figure 2 illustre schématiquement une mémoire comprenant des emplacements de mémoire dans lesquels sont stockés des marqueurs selon un exemple de réalisation de la présente invention ;
la figure 3 illustre schématiquement un système de traitement de données comprenant un circuit de contrôle d'accès à une mémoire selon un exemple de réalisation de la présente invention ;
la figure 4 est un organigramme illustrant un procédé d'écriture dans un emplacement de mémoire utilisant le système de contrôle d'accès à une mémoire de la figure 3 selon un exemple de réalisation de la présente invention ;
la figure 5 est un organigramme illustrant un procédé de lecture d'un emplacement de mémoire utilisant le système de contrôle d'accès à une mémoire de la figure 3 selon un example de réalisation de la présente invention ;
la figure 6 illustre schématiquement un système de traitement de données comprenant un circuit de contrôle d'accès à une mémoire selon un autre exemple de réalisation de la présente invention ; et la figure 7 illustre schématiquement un système de traitement de données comprenant un système de contrôle d'accès à une mémoire selon encore un autre exemple de réalisation de la présente invention.
DESCRIPTION DETAILLEE
La figure 1 illustre schématiquement un exemple de mémoire 100 comprenant plusieurs segments disposant de droits d'accès différents. Dans l'exemple de la figure 1, la mémoire comprend des segments 102 et 104 correspondant respectivement à
B16137 17-RO-0155 une pile d'utilisateur (USER STACK R, W) et à des données d'utilisateur (USER DATA R, W) , dont chacun est accessible en lecture et en écriture pendant le mode de fonctionnement utilisateur, un segment 106 stockant le code d'utilisateur (USER CODE X, R), qui peut être exécuté ou lu pendant le mode de fonctionnement d'utilisateur, et des segments 108 et 110 stockant respectivement les données de superviseur (SUPERVISOR DATA R, W) et le code de superviseur (SUPERVISOR CODE X, R), auxquels il n' est possible d'accéder que pendant le mode de fonctionnement superviseur, le segment 108 permettant des opérations de lecture et d’écriture tandis que le segment 110 ne permet que des opérations d'exécution et de lecture.
On pourrait mettre en application les règles d'accès aux divers segments de mémoire de la figure 1 au moyen d'un module de gestion de mémoire (MMU) ou d'un module de protection de mémoire (MPU), mais comme on l'a décrit dans l'arrière-plan de 1'invention, ceci entraînerait des inconvénients en termes de surface, de consommation et de granularité des segments.
La figure 2 illustre une mémoire 200 selon un exemple de réalisation de la présente invention. Au lieu de diviser la mémoire en segments à la manière décrite ci-dessus en relation avec la figure 1, selon les modes de réalisation décrits ici, chaque emplacement de mémoire de la mémoire peut être attribué à l'une quelconque d'un certain nombre de différentes zones d'adresse d'alias, chacune étant accessible au moyen d'un alias d'adresse correspondant. Chaque emplacement de mémoire correspond à une partie adressable de la mémoire. Par exemple, la mémoire 200 comprend des emplacements d'adresse physique correspondant aux adresses 0x000 à OxFFF, où le préfixe « Ox » indique une valeur hexadécimale. Une première zone d'adresse d'alias dans la mémoire est associée à un alias d'adresse « 0 », et l'on peut donc y accéder au moyen des adresses 0x0000 à OxOFFF, où le premier chiffre 0 de la valeur hexadécimale est 1'alias d'adresse. Une deuxième zone d'adresse d'alias de la mémoire est associée à un alias d'adresse « 1 », et l'on peut donc y accéder au moyen des adresses 0x1000 à OxlFFF.
B16137 17-RO-0155
En outre, un marqueur est stocké dans chaque emplacement de mémoire en plus des données stockées. Par exemple, comme le représente la figure 2, un emplacement de mémoire 201 comprend une valeur de données DATAI et un marqueur associé MARKER1, et un emplacement de mémoire 202 comprend une valeur de données DATA2 et un marqueur associé MARKER2. Le marqueur indique 1'alias d'adresse utilisé au cours de l'opération d'écriture de la valeur de données stockée dans l'emplacement de mémoire correspondant. Dans certains modes de réalisation, chaque marqueur comprend un ou plusieurs bits de données indiquant directement 1’alias d'adresse. Par exemple, le marqueur est un bit « 0 » pour représenter un alias d'adresse correspondant à une zone d'adresse d'alias de la mémoire, et un bit « 1 » pour représenter un autre alias d'adresse correspondant à une autre zone d'adresse d'alias de la mémoire. Dans des variantes de réalisation décrites plus en détail ci-dessous, chaque marqueur se présente sous la forme d'un code de détection d'erreur EDC (« Error Détection Code ») ou d'un code de correction d'erreur ECC (« Error Correction Code ») partiellement généré à partir de 1'alias d'adresse utilisé au cours de l'opération d'écriture la plus récente dans l'emplacement de mémoire.
La figure 3 illustre schématiquement un système de traitement de données 300 selon un exemple de réalisation de la présente invention.
Le système 300 comprend un dispositif de traitement (P) 302 en communication avec une mémoire 200 par l'intermédiaire d'un bus d'adresse 304 et d'un bus de données 306. La mémoire 200 est par exemple une mémoire volatile, telle qu'une mémoire statique à accès aléatoire SRAM (« Static Random Access Memory ») ou une mémoire dynamique à accès aléatoire DRAM (« Dynamic Random Access Memory ») ou une mémoire non volatile programmable telle qu'une mémoire FLASH ou une mémoire morte effaçable et programmable électriquement EEPROM (« Electronically Erasable Programmable Read-Only Memory »). Le dispositif de traitement 302 comprend par exemple un ou plusieurs processeurs sous contrôle d'instructions stockées par exemple dans la mémoire 200 et/ou dans une mémoire
B16137 17-RO-0155 d'instructions séparée. Le dispositif de traitement 302 est par exemple adapté à fonctionner dans plusieurs modes de fonctionnement différents, tels qu'un mode utilisateur et un mode superviseur. De façon connue de l'homme de l'art, différents modes de fonctionnement d'un dispositif de traitement sont par exemple associés à différents niveaux de droits d'accès en relation avec la lecture, l'écriture ou l'exécution de données/instructions stockées dans une mémoire. Un circuit de contrôle d'accès à la mémoire 308 est prévu pour contrôler 1'accès à la mémoire 200 par le dispositif de traitement 302.
Le circuit de contrôle d'accès à la mémoire 308 comprend par exemple un décodeur d'adresse (ADDRESS DECODER) 310 et un circuit de vérification (VERFICATION CIRCUIT) 312. Le décodeur d'adresse 310 reçoit un ou plusieurs bits de l'adresse fournie sur le bus d'adresse 304 et détermine à partir de ces bits 1'alias d'adresse pour une opération courante d'accès à la mémoire par le dispositif de traitement. Cette information est par exemple fournie sous la forme d'un signal ALIAS au circuit de vérification 312. Le circuit de vérification 312 reçoit également une indication du type d'accès en fonction du mode de fonctionnement courant du dispositif de traitement 302 sur une ou plusieurs lignes 313, le type d'accès étant représenté par un ou plusieurs bits. Par exemple, le type d'accès pourrait être un « accès utilisateur » ou un « accès superviseur ». Le dispositif de traitement fournit également par exemple, sur une ou plusieurs lignes 314, une indication du type de fonctionnement, qui est par exemple soit une opération de lecture R, soit une opération d'écriture W, soit une opération d'exécution X. Ces une ou plusieurs lignes 314 sont par exemple couplées au circuit de vérification 312. En outre, la mémoire 200 reçoit également par exemple au moins l'une des lignes 314 indiquant si l'opération est une opération de lecture ou d'écriture.
De la sorte, le circuit de vérification 312 est en mesure de vérifier si le type d'accès du dispositif de traitement permet au dispositif de traitement d'utiliser 1'alias d'adresse de l'opération d'accès à la mémoire en relation avec le type
B16137 17-RO-0155 d'opération donné (lecture, écriture ou exécution). Le circuit de vérification 312 écrit et lit également les valeurs des marqueurs dans la mémoire 200 par l'intermédiaire d'un bus 315. Le circuit de vérification 312 délivre par exemple un signal d'alarme ALARM si l'accès à la mémoire n'est pas autorisé.
Le fonctionnement du circuit 300 de la figure 3 va à présent être décrit plus en détail en référence aux figures 4 et 5.
La figure 4 est un organigramme illustrant un procédé d'écriture de données dans un emplacement de mémoire dans la mémoire 200 selon un example de réalisation de la présente invention. Ce procédé est par exemple mis en œuvre par le circuit de contrôle d'accès à la mémoire 308 de la figure 3.
A une étape 401, 1'alias d'adresse demandé par le dispositif de traitement en association avec l'opération d'écriture est extrait de l'adresse de mémoire fournie par le dispositif de traitement. Par exemple, comme on l'a décrit en relation avec la figure 3, le circuit de contrôle d'accès à la mémoire 308 comprend un décodeur d'adresse 310, qui extrait 1'alias d'adresse de l'adresse fournie sur le bus d'adresse 304. A titre de variante, 1'alias d'adresse peut être directement représenté par un ou plusieurs bits de l'adresse, auquel cas on peut se passer du décodeur d'adresse 310.
A une étape 402, on détermine si un accès en écriture du dispositif de traitement 302 à la mémoire 200 au moyen de 1'alias d'adresse demandé par le dispositif de traitement est autorisé au vu du type d'accès courant du dispositif de traitement. Par exemple, le circuit de vérification 312 stocke des règles définissant les droits d'accès du dispositif de traitement 302 à partir de son type d'accès. A titre d'exemple, pendant un mode de fonctionnement utilisateur, le type d'accès correspond à un « accès utilisateur » et les règles stockées par le circuit de vérification 312 définissent si l'utilisateur est autorisé à accéder à la mémoire au moyen d'un ou plusieurs alias d'adresses pour des opérations de lecture, d'écriture ou d'exécution.
B16137 17-RO-0155
Si l'on détermine que le type d'accès du dispositif de traitement ne permet pas au dispositif de traitement d'accéder à la mémoire en utilisant 1'alias d'adresse demandé, à une étape 403, l'accès à la mémoire est par exemple refusé et un signal d'alarme peut être délivré par le circuit de vérification 312. Si au contraire l'on détermine que l'accès est autorisé, l'étape suivante est l'étape 404.
A l'étape 404, un marqueur correspondant à 1'alias d'adresse de l'opération d'écriture requise par le dispositif de traitement 302 est généré et est combiné avec les données à écrire en mémoire. Par exemple, comme l'illustre la figure 3, le marqueur d'une taille d’un ou plusieurs bits est fourni sur le bus 315 par le circuit de vérification 312 à un port d'accès de données de la mémoire 200, ce port d'accès de données étant assez large pour recevoir les données par le bus de données 306 et le marqueur par le bus 315.
A une étape 405, l'opération d'écriture en mémoire 200 des données sur le bus de données 306 et du marqueur sur le bus 315 est effectuée à l'adresse mémoire définie. Par exemple, l'adresse mémoire définie est l'adresse mémoire physique fournie sur le bus d'adresse 304, à l'exception des un ou plusieurs bits de 1'alias d'adresse. Dans certains modes de réalisation, les bits de 1'alias d'adresse ne sont pas fournis à la mémoire 200.
La figure 5 est un organigramme illustrant un procédé de lecture de données dans un emplacement de mémoire et/ou d'exécution d'instructions stockées dans la mémoire 200 selon un exemple de réalisation de la présente invention. Ce procédé est par exemple mis en œuvre par le circuit de contrôle d'accès à la mémoire 308 de la figure 3.
Aux étapes 501 à 503, on vérifie que le dispositif de traitement est autorisé à effectuer un accès à la mémoire à partir de l'alias d'adresse requis, de façon analogue à la vérification effectuée aux étapes correspondantes 401 à 403 de la figure 4 décrite ci-dessus. Cependant, dans le cas de la figure 5, 1’alias d'adresse concerne une opération de lecture ou d’exécution plutôt qu'une opération d'écriture et l'on vérifie donc si une opération
B16137 17-RO-0155 de lecture et/ou d'exécution est autorisée. L'alias d'adresse peut être extrait de l'adresse par le décodeur d'adresse 310 tel que décrit ci-dessus.
Si l'on détermine à l'étape 502 que l'accès est autorisé par le type d'accès courant du dispositif de traitement 302, à une étape 504, l'opération de lecture ou d'exécution en mémoire est effectuée, y compris la lecture du marqueur stocké à l'emplacement d'adresse, le marqueur étant fourni au circuit de vérification 312 par le bus 315.
A une étape 505, on détermine si la valeur du marqueur est compatible avec 1'alias d'adresse à présent utilisé pour accéder à la mémoire. Par exemple, le marqueur est fourni au circuit de vérification 312 qui le compare avec 1'alias d'adresse extrait de l'adresse de l'opération de lecture ou d'exécution. Si le marqueur est égal à ou compatible avec l'alias d'adresse, alors les données peuvent être utilisées à une étape 506 par le dispositif de traitement 302. A titre de variante, si la valeur du marqueur ne correspond pas à 1'alias d'adresse associé à l'opération de lecture ou d'exécution, les données sont par exemple rejetées à une étape 507 et/ou le circuit de vérification délivre par exemple un signal d'alarme ALARM. Dans certains modes de réalisation, les données lues dans la mémoire 200 peuvent être retardées d'un ou plusieurs cycles avant d'être fournies au dispositif de traitement 302, permettant ainsi d'empêcher l'accès à ces données par le dispositif de traitement 302 dans le cas où la valeur du marqueur ne correspond pas à 1'alias d'adresse. A titre de variante, les données peuvent être fournies au dispositif de traitement 302 mais l'alarme générée par le circuit de vérification entraîne par exemple l'interruption d'une exécution logicielle des données lues ou réalisé à partir de celles-ci par le dispositif de traitement 302.
La figure 6 représente schématiquement un système de traitement de données 600 selon une variante de réalisation de celui de la figure 3. Un certain nombre d'éléments du système 600 sont semblables à ceux du système 300 et ces éléments ont été
B16137 17-RO-0155 désignés par les mêmes références et ne seront pas décrits à nouveau ci-après.
Le circuit de contrôle d'accès à la mémoire 308 de la figure 3 a été remplacé à la figure 6 par un circuit de contrôle d'accès à la mémoire 602 qui comprend le décodeur d'adresse 310, le circuit de vérification 312 et par ailleurs un circuit de code de détection d'erreur/code de correction d'erreur (EDC/ECC) 604. Le circuit 604 est par exemple adapté à générer et à vérifier un code de détection d'erreur et/ou un code de correction d'erreur à partir des données présentes sur le bus de données 306 et également à partir de 1'alias d'adresse associé à l'opération d'accès à la mémoire. En particulier, le code EDC ou ECC est fourni à et en provenance de la mémoire 200 par un bus 605. Dans le cas où le circuit 604 génère un code ECC, un circuit de correction de données (CORRECTION) 606 est également par exemple prévu pour corriger, sous contrôle du circuit 604, les données lues à partir de la mémoire 202.
Pendant une opération d'écriture en mémoire 200, l'alias d'adresse utilisé par le dispositif de traitement 302 est extrait de l'adresse et vérifié par rapport au type d'accès, comme on l'a décrit ci-dessus en relation avec les étapes 401 à 403 de la figure 4. En outre, si l'accès en écriture à la mémoire est autorisé à partir du type d'accès du circuit de traitement, le circuit de vérification 312 génère un marqueur intermédiaire à partir de 1'alias d'adresse et fournit le marqueur intermédiaire au circuit EDC/ECC 604. Le circuit 604 génère par exemple alors un code EDC et/ou un code ECC à partir du marqueur intermédiaire et de la valeur de données et fournit le code à la mémoire 200 afin qu'il soit écrit dans l'emplacement de mémoire à côté des données. Ainsi, le code EDC et/ou le code ECC forment un nouveau marqueur qui est généré à partir du marqueur intermédiaire fourni au circuit de vérification 312 et de la valeur de données à stocker dans l'emplacement de mémoire.
Lors d'une opération de lecture dans la mémoire 200, 1'alias d'adresse utilisé par le dispositif de traitement est extrait de l'adresse et vérifié par rapport au type d'accès, comme
B16137 17-RO-0155 on l'a décrit ci-dessus en relation avec les étapes 501 à 503 de la figure 5. En outre, si l'accès en lecture à la mémoire est autorisé sur la base du type d'accès du circuit de traitement, le circuit de vérification 312 génère un marqueur intermédiaire à partir de 1'alias d'adresse fourni par le décodeur d'adresse et fournit le marqueur intermédiaire au circuit EDC/ECC 604. Le circuit 604 reçoit également le marqueur qui était stocké dans 1 'emplacement de mémoire sous la forme d'un code EDC et ou d'un code ECC. Le circuit 604 est donc en mesure de vérifier le code EDC/ECC par rapport aux données lues dans l'emplacement de mémoire et au marqueur intermédiaire fourni par le circuit de vérification 312.
Dans le cas où une erreur est détectée par le circuit EDC/ECC 604, ceci indique soit qu'il y a une erreur de valeur de données ou de code EDC/ECC lu à l'emplacement d'adresse, soit que le marqueur intermédiaire d'origine associé à l'opération d'écriture précédente dans 1 ' emplacement de mémoire ne correspond pas au marqueur intermédiaire courant associé à l'opération de lecture. Dans le cas où le code est un code EDC, le circuit 604 délivre par exemple un signal d'erreur ERROR et la valeur de données lue dans la mémoire peut être rejetée, ou bien une exécution logicielle des données ou réalisée à partir de cellesci peut être interrompue, comme décrit ci-dessus en relation avec la figure 5. Dans le cas où le code est un code ECC, le circuit 604 commande par exemple le circuit de correction (CORRECTION) 606 pour qu'il corrige toute erreur dans la valeur de données lue. Si aucune erreur n'a été détectée dans le marqueur intermédiaire, le circuit de vérification 312 en est par exemple informé et le signal d'alarme ALARM n'est pas émis. Si toutefois une erreur est détectée dans le marqueur intermédiaire, le circuit 604 fournit par exemple le marqueur corrigé au circuit de vérification 312, qui émet par exemple le signal d'alarme ALARM.
Un avantage d'un marqueur sous la forme d'un code EDC et/ou ECC est qu'un tel marqueur est en mesure d’assurer une détection et/ou une correction d'erreur ainsi que la vérification de 1'alias d'adresse sans augmenter le nombre de bits par rapport
B16137 17-RO-0155 à un code EDC ou ECC standard. En effet, un nombre de bits donné d'un code EDC ou ECC permet généralement de protéger un certain nombre de bits d'entrée. Par exemple, un code ECC à 6 bits mis en œuvre par un code de Hamming permet de protéger jusqu'à 57 bits de données d'entrée. Ainsi, si le bus de données 306 présente une largeur de 32 bits, le marqueur intermédiaire pourrait compter jusqu'à 25 bits sans augmenter le nombre de bits du code ECC. En pratique, le marqueur intermédiaire peut généralement être représenté par un nombre considérablement plus faible de bits, par exemple comprenant entre 1 et 8 bits, et peut être simplement égal à 1'alias d'adresse.
La figure 7 illustre schématiquement un système de traitement de données 700 selon encore un autre exemple de réalisation de la présente invention. Le système 700 présente de nombreux éléments communs avec le mode de réalisation de la figure 6, et ces éléments sont désignés par les mêmes références et ne seront pas décrits à nouveau en détail.
Dans le mode de réalisation de la figure 7, le circuit de vérification 312 vérifie simplement si l’accès est autorisé au moyen de 1'alias d'adresse demandé à partir du type d'accès courant du dispositif de traitement, comme on l'a décrit en relation avec les étapes 401 à 403 de la figure 4 et les étapes 501 à 503 de la figure 5. Le circuit de code EDC/ECC 604 reçoit par exemple l'adresse, y compris 1'alias d'adresse, directement à partir du bus d'adresse 304 et génère le marqueur intermédiaire correspondant à partir d'au moins une partie de l'adresse contenant 1'alias d'adresse. Le marqueur intermédiaire peut alors être pris en compte lors de la génération du code EDC/ECC au cours d'une opération d'écriture ou utilisé pour vérifier le code EDC/ECC au cours d'une opération de lecture.
Dans des variantes de réalisation par rapport au mode de réalisation de la figure 7, au lieu de recevoir les données d’adresse en provenance du bus d'adresse 304, le circuit de code EDC/ECC 604 pourrait recevoir le signal ALIAS à partir du décodeur d'adresse 310 et générer ou vérifier le marqueur intermédiaire à partir de cet alias d'adresse.
B16137 17-RO-0155
Un mode de réalisation des modes de réalisation décrits ici est qu'en définissant des alias d'adresse qui peuvent être utilisés par le dispositif de traitement 302 pour accéder à une mémoire ainsi qu'en stockant un marqueur dans les emplacements de mémoire d'une mémoire, on peut mettre en oeuvre de façon simple un contrôle d'accès sans nécessiter de module MPU ou de MMU. En outre, la granularité des zones d'adresse d'alias individuelles peut être très faible, égale par exemple à la taille de mot.
Au moins un mode de réalisation a été décrit à titre d'illustration, mais de nombreuses variantes et modifications apparaîtront à l'homme de l'art. Par exemple, il apparaîtra à l'homme de l'art que les circuits de contrôle d'accès à la mémoire 308, 602 et 702 décrits ici ne représentent que des exemples de mise en œuvre et que diverse variantes sont possibles. Par exemple, 1'alias d'adresse pourrait être extrait sans décodeur d'adresse si par exemple 1'alias d'adresse est simplement indiqué par un ou plusieurs bits de l'adresse, et soit le circuit de vérification 312, soit le circuit de code EDC/ECC 604 de la figure 6 pourraient être responsables de la génération d'un signal d'alarme à partir de la vérification du marqueur.

Claims (14)

  1. REVENDICATIONS
    1. Système de contrôle d'accès à une mémoire comprenant :
    un dispositif de traitement (302) adapté à fonctionner dans plusieurs modes de fonctionnement et à accéder à une mémoire (200) au moyen de plusieurs alias d'adresse ; et un circuit de vérification (312) configuré pour :
    - recevoir, en relation avec une première opération de lecture d'un premier emplacement de mémoire dans la mémoire (200), une indication d'un premier desdits plusieurs alias d'adresse associés à la première opération de lecture ;
    - vérifier que le mode de fonctionnement courant du dispositif de traitement permet au dispositif de traitement d'accéder à la mémoire en utilisant le premier alias d'adresse ;
    - recevoir, au cours de la première opération de lecture, un premier marqueur stocké dans le premier emplacement de mémoire ; et
    - vérifier, à partir du premier marqueur et du premier alias d'adresse, que le dispositif de traitement est autorisé à accéder au premier emplacement de mémoire.
  2. 2. Système de contrôle d'accès à une mémoire selon la revendication 1, dans lequel le circuit de vérification (312) est en outre configuré pour générer, en relation avec une première opération d'écriture dans le premier emplacement de mémoire, le premier marqueur et pour stocker le premier marqueur dans le premier emplacement de mémoire.
  3. 3. Système de contrôle d'accès à une mémoire selon la revendication 2, dans lequel le circuit de vérification (312) est en outre configuré pour :
    recevoir, en relation avec la première opération d'écriture, une indication d'un alias d'adresse desdits plusieurs alias d'adresse associés à la première opération d'écriture ; et
    B16137 17-RO-0155 vérifier que le mode de fonctionnement courant du dispositif de traitement permet au dispositif de traitement d'écrire dans la mémoire au moyen dudit alias d'adresse associé à la première opération d'écriture.
  4. 4. Système de contrôle d'accès à une mémoire selon l'une quelconque des revendications 1 à 3, dans lequel le premier marqueur comprend un code de détection d'erreur ou un code de correction d'erreur.
  5. 5. Système de contrôle d’accès à une mémoire selon la revendication 4, comprenant en outre un circuit de code de détection d’erreur ou de code de correction d’erreur (604) configuré pour vérifier que le premier alias d'adresse correspond à un alias d'adresse utilisé pour une opération d'écriture du premier marqueur.
  6. 6. Système de contrôle d'accès à une mémoire selon l'une quelconque des revendications 1 à 5, comprenant en outre un décodeur d’adresse (310) configuré pur extraire le premier alias d'adresse d’une adresse associée à la première opération de lecture.
  7. 7. Système de contrôle d'accès à une mémoire selon l'une quelconque des revendications 1 à 6, dans lequel le premier marqueur présente une longueur comprise entre 1 et 8 bits.
  8. 8. Système de traitement de données comprenant :
    un système de contrôle d’accès à une mémoire selon l’une quelconque des revendications 1 à 7 ; et une mémoire (200) couplée au dispositif de traitement (302) par l'intermédiaire d'un bus d'adresse (304) et d'un bus de données (306).
  9. 9. Procédé de contrôle d'accès à une mémoire comprenant :
    la réception, par un circuit de vérification (312) en relation avec une première opération de lecture d'un premier emplacement de mémoire d'une mémoire (200) par un dispositif de traitement (302) adapté à fonctionner dans plusieurs modes de fonctionnement et à accéder à la mémoire (200) au moyen de plusieurs alias d’adresse, une indication d’un premier des
    B16137 17-RO-0155 plusieurs alias d'adresse associés à la première opération de lecture ;
    - la vérification que le mode de fonctionnement courant du dispositif de traitement permet au dispositif de traitement d'accéder à la mémoire au moyen du premier alias d'adresse ;
    - la réception, pendant la première opération de lecture, d'un premier marqueur stocké dans le premier emplacement de mémoire ; et la vérification, à partir du premier marqueur et du premier alias d'adresse, que le dispositif de traitement est autorisé à accéder au premier emplacement de mémoire.
  10. 10. Procédé selon la revendication 9, consistant en outre, avant la première opération de lecture, à générer, en relation avec une première opération d'écriture dans le premier emplacement de mémoire, le premier marqueur et à stocker le premier marqueur dans le premier emplacement de mémoire.
  11. 11. Procédé selon la revendication 10, comprenant en outre :
    la réception par le circuit de vérification (312) en relation avec la première opération d'écriture d'une indication d'un alias d'adresse desdits plusieurs alias d'adresse associés à la première opération d'écriture ; et la vérification que le mode de fonctionnement courant du dispositif de traitement permet au dispositif de traitement d'écrire dans la mémoire au moyen dudit alias d'adresse associé à la première opération d'écriture.
  12. 12. Procédé selon l'une quelconque des revendications 9 à 11, dans lequel le premier marqueur comprend un code de détection d'erreur ou un code de correction d'erreur.
  13. 13. Procédé selon la revendication 12, comprenant en outre la vérification, par un circuit de code de détection d'erreur ou de code de correction d'erreur (604), que le premier alias d'adresse correspond à un alias d'adresse utilisé pour une opération d'écriture du premier marqueur.
  14. 14. Procédé selon l'une quelconque des revendications 9 à 13, comprenant en outre l'extraction, par un décodeur d'adresse
    B16137 17-RO-0155 (310), du premier alias d'adresse d'une adresse associée à la première opération de lecture.
FR1758564A 2017-09-15 2017-09-15 Controle d'acces a une memoire au moyen d'alias d'adresse Pending FR3071350A1 (fr)

Priority Applications (4)

Application Number Priority Date Filing Date Title
FR1758564A FR3071350A1 (fr) 2017-09-15 2017-09-15 Controle d'acces a une memoire au moyen d'alias d'adresse
EP18192657.7A EP3457290B1 (fr) 2017-09-15 2018-09-05 Contrôle d'accès à la mémoire par mutation d'adresses
US16/130,858 US10783091B2 (en) 2017-09-15 2018-09-13 Memory access control and verification using address aliasing and markers
CN201811076728.7A CN109508145B (zh) 2017-09-15 2018-09-14 使用地址别名的存储器访问控制

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1758564A FR3071350A1 (fr) 2017-09-15 2017-09-15 Controle d'acces a une memoire au moyen d'alias d'adresse
FR1758564 2017-09-15

Publications (1)

Publication Number Publication Date
FR3071350A1 true FR3071350A1 (fr) 2019-03-22

Family

ID=60450835

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1758564A Pending FR3071350A1 (fr) 2017-09-15 2017-09-15 Controle d'acces a une memoire au moyen d'alias d'adresse

Country Status (4)

Country Link
US (1) US10783091B2 (fr)
EP (1) EP3457290B1 (fr)
CN (1) CN109508145B (fr)
FR (1) FR3071350A1 (fr)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3071350A1 (fr) * 2017-09-15 2019-03-22 Stmicroelectronics (Rousset) Sas Controle d'acces a une memoire au moyen d'alias d'adresse
CN113568560A (zh) * 2020-04-29 2021-10-29 瑞昱半导体股份有限公司 存取一次性可编程记忆体的方法及相关的电路

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5148481A (en) * 1989-10-06 1992-09-15 International Business Machines Corporation Transaction system security method and apparatus
WO2015112126A1 (fr) * 2014-01-22 2015-07-30 Hewlett Packard Development Company, L.P. Mémoire vive principale non volatile, adressable par octet, partitionnée en régions comprenant une région de métadonnées
WO2016187029A1 (fr) * 2015-05-20 2016-11-24 Google Inc. Validation d'adresses à l'aide de signatures

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7509560B2 (en) * 2003-12-29 2009-03-24 Intel Corporation Mechanism for adjacent-symbol error correction and detection
US20070089032A1 (en) * 2005-09-30 2007-04-19 Intel Corporation Memory system anti-aliasing scheme
US20080141268A1 (en) * 2006-12-12 2008-06-12 Tirumalai Partha P Utility function execution using scout threads
US20160335562A1 (en) * 2014-01-21 2016-11-17 Hewlett-Packard Development Company, L.P. Likelihood of Success of a Remote Document Service
JP6605359B2 (ja) * 2016-03-02 2019-11-13 ルネサスエレクトロニクス株式会社 半導体装置及びメモリアクセス制御方法
US10108512B2 (en) * 2016-04-01 2018-10-23 Intel Corporation Validation of memory on-die error correction code
US10572343B2 (en) * 2017-01-19 2020-02-25 Intel Corporation Targeted aliasing single error correction (SEC) code
FR3071350A1 (fr) * 2017-09-15 2019-03-22 Stmicroelectronics (Rousset) Sas Controle d'acces a une memoire au moyen d'alias d'adresse

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5148481A (en) * 1989-10-06 1992-09-15 International Business Machines Corporation Transaction system security method and apparatus
WO2015112126A1 (fr) * 2014-01-22 2015-07-30 Hewlett Packard Development Company, L.P. Mémoire vive principale non volatile, adressable par octet, partitionnée en régions comprenant une région de métadonnées
WO2016187029A1 (fr) * 2015-05-20 2016-11-24 Google Inc. Validation d'adresses à l'aide de signatures

Also Published As

Publication number Publication date
EP3457290B1 (fr) 2023-05-10
CN109508145B (zh) 2022-03-15
US20190087355A1 (en) 2019-03-21
US10783091B2 (en) 2020-09-22
CN109508145A (zh) 2019-03-22
EP3457290A1 (fr) 2019-03-20

Similar Documents

Publication Publication Date Title
US9870829B2 (en) Flash memory apparatus for physical unclonable function and embodying method of the same
US9886340B2 (en) Memory system and method for error correction of memory
JP6399523B2 (ja) メモリ・デバイスの内容を保護するための方法およびメモリ・デバイス
US9535785B2 (en) ECC method for flash memory
US10971246B2 (en) Performing error correction in computer memory
FR3071350A1 (fr) Controle d'acces a une memoire au moyen d'alias d'adresse
US20150095740A1 (en) Error Detection and Correction in Binary Content Addressable Memory (BCAM)
US20160342508A1 (en) Identifying memory regions that contain remapped memory locations
US20100180183A1 (en) Circuit for reducing the read disturbance in memory
EP3789879A1 (fr) Détection d'erreurs
FR3100369A1 (fr) Procédé d’inversion sélective de mots à écrire dans une mémoire et dispositif pour sa mise en œuvre
EP3522020B1 (fr) Gestion d'une mémoire non volatile
US20160203065A1 (en) Memory sparing on memory modules
EP3382588A1 (fr) Procédé de protection d'un dispositif électronique contre des attaques par injection de faute pendant l'exécution d'un programme
EP3422233B1 (fr) Procédé de protection d'un dispositif électronique exécutant un programme contre des attaques par injection de faute
FR3065303B1 (fr) Procede d'ecriture dans un dispositif de memoire non volatile et dispositif de memoire non volatile correspondant
US20220261176A1 (en) Storage Device and Method for Modifying Memory Cells of a Storage Device
FR3026870A1 (fr) Dispositif de gestion du stockage de donnees.
JP2018045685A (ja) 異なる信頼性を有するメモリ
EP3422232B1 (fr) Procédé de protection d'un dispositif électronique exécutant un programme contre des attaques par injection de faute
EP2383746B1 (fr) Procédé d'écriture et de lecture dans une mémoire d'atomicité
FR3059119A1 (fr) Procede de protection d'un dispositif electronique executant un programme contre des attaques par injection de faute et par confusion de type.
FR3078463A1 (fr) Procede et dispositif de realisation d'operations en table de substitution
FR3096798A1 (fr) Dispositif de mémorisation
FR2884330A1 (fr) Protection de donnees contenues dans un circuit integre

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20190322

RX Complete rejection

Effective date: 20200224