FR2766597A1 - Microprocesseur comportant un chemin d'adresses securise - Google Patents

Microprocesseur comportant un chemin d'adresses securise Download PDF

Info

Publication number
FR2766597A1
FR2766597A1 FR9709340A FR9709340A FR2766597A1 FR 2766597 A1 FR2766597 A1 FR 2766597A1 FR 9709340 A FR9709340 A FR 9709340A FR 9709340 A FR9709340 A FR 9709340A FR 2766597 A1 FR2766597 A1 FR 2766597A1
Authority
FR
France
Prior art keywords
address
microprocessor
signal
vlt
violation
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.)
Granted
Application number
FR9709340A
Other languages
English (en)
Other versions
FR2766597B1 (fr
Inventor
Sean Commercial
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.)
Inside Secure SA
Original Assignee
Inside Technologies SA
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 Inside Technologies SA filed Critical Inside Technologies SA
Priority to FR9709340A priority Critical patent/FR2766597B1/fr
Publication of FR2766597A1 publication Critical patent/FR2766597A1/fr
Application granted granted Critical
Publication of FR2766597B1 publication Critical patent/FR2766597B1/fr
Anticipated expiration legal-status Critical
Expired - Lifetime 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/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/145Protection 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 virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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

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)
  • Storage Device Security (AREA)

Abstract

L'invention concerne un microprocesseur (MP) comprenant un chemin d'adresses logiques (LADi ) ou physiques (PADi ) pour l'adressage d'un plan mémoire (PMEM), des moyens de test à logique câblé (CMP2, TAD2) agencés pour émettre un signal de violation d'adresse (VLT) lorsqu'une adresse physique ou logique ne se trouve pas comprise dans une plage de valeurs prédéterminée (LMEM, PMEM1, PMEM2), et un décodeur d'interruption (ID) agencé pour émettre un signal d'interruption (IT) du microprocesseur sur réception du signal de violation d'adresse (VLT).

Description

MICROPROCESSEUR COMPORTANT UN CHEMIN D'ADRESSES SÉCURISÉ
La présente invention concerne une unité de gestion mémoire de microprocesseur, pour convertir une adresse logique en une adresse physique. La présente invention concerne également un microprocesseur comprenant un chemin d' adresses logiques ou physiques pour l'adressage d'un plan mémoire.
De façon classique, on désigne par "adresse logique" une adresse qui transite dans le compteur ordinal PC ("Program Counter") d'un microprocesseur. Par "adresse physique", on désigne l'adresse "vraie" où se trouve, dans la mémoire d'un microprocesseur, la donnée ou le code instruction référencé par l'adresse logique.
La manipulation d'adresses logiques au lieu d'adresses physiques simplifie considérablement le travail des programneurs en faisant apparaître des zones mémoire virtuelles ayant des valeurs d'adresses plus simples à manipuler que les adresses physiques.
Notamment, une adresse logique peut être d'une longueur inférieure à une adresse physique (par exemple 8 bits contre 16 bits). Également, une zone mémoire virtuelle est généralement référencée à l'adresse zéro.
Classiquement, la transformation d'une adresse logique en une adresse physique est faite par concaténation d'une adresse de poids fort avec l'adresse logique, l'adresse logique représentant les bits de poids faible de l'adresse physique. Cette opération est réalisée de façon automatique au moyen d'un circuit logique appelé unité de gestion mémoire MMU ("Memory Management Unit") qui est un élément du microprocesseur.
Pour fixer les idées, la figure 1 représente très schématiquement une unité MMU classique disposée sur le chemin d'adresses allant du compteur ordinal PC au plan mémoire MEM d'un microprocesseur, prévue pour transformer une adresse logique LAD en adresse physique PAD. L'unité MMU comprend un registre RI contenant une première adresse de poids fort et un registre RD contenant une deuxième adresse de poids fort. L'une de ces deux adresses est sélectionnée par un multiplexeur MUX commandé par un signal de sélection SLCT pour former les bits de poids fort HPAD de 1 'adresse physique PAD. Les bits de poids faible LPAD de 1'adresse physique sont les bits de l'adresse logique LAD présentée à l'unité MMU.
Lorsque le programme d'une application doit être chargé dans la mémoire du microprocesseur, le système d'exploitation ("cperating
System") du microprocesseur charge dans le registre RI une adresse de poids fort pour le stockage des codes instructions et dans le registre RD une adresse de poids fort pour le stockage des données, ou variables du programme. Une application peut ainsi posséder au moins une zone mémoire pour les données et une zone mémoire pour les codes instructions, chaque zone mémoire étant appelée une "page mémoire".
Cette méthode de transformation des adresses logiques en adresses physiques de l'art antérieur présente divers inconvénients.
D'une part, la taille d'une page mémoire imposée par la concaténation d'adresses de poids fort et de poids faible peut être supérieure aux besoins réels d'une application. La réservation de pages mémoire de tailles prédéterminées est donc une méthode peu souple qui convient mal aux microprocesseurs ayant une mémoire de taille réduite, par exemple les microprocesseurs présents dans les cartes à puce ou des étiquettes électroniques.
D'autre part, il est nécessaire, pour générer le signal SLCT de commande du multiplexeur MUX, de savoir quelle est la zone mémoire à adresser. Une méthode connue consiste à procéder à un décodage préalable du code instruction associé à 1' adresse logique LAD, afin de déterminer si cette adresse correspond à un code instruction ou à une donnée. Par exemple, si l'instruction est du type JUMP, LADi (saut du compteur ordinal au code instruction présent à l'adresse LADi), le registre RI doit être sélectionné par le multiplexeur MLIX. Par contre, si l'instruction est du type LQAD,Ri,LADi (charger le contenu d'un registre Ri à l'adresse LADi), c'est le registre RD qui doit être sélectionné.
Ainsi, un premier objectif de la présente invention est de prévoir une unité de gestion mémoire qui ne présente pas de tels inconvénients.
Par ailleurs, un deuxième objectif de la présente invention, indépendant du premier, est de prévoir un moyen simple et pratique pour cloisonner le plan mémoire d'un microprocesseur et interdire l'accès à des zones de la mémoire qui ne doivent pas être lues par des personnes non autorisées.
Plus particulièrement, un objectif de la présente invention est d'offrir une alternative à la méthode classique qui consiste à surveiller au moyen d'un circuit à logique câblée les adresses circulant sur le chemin d'adresses d'un microprocesseur, et à bloquer l'accès à la mémoire en cas d'adresse illégitime, cette méthode étant peu souple. La présente invention vise également à offrir une alternative à la méthode classique entièrement logicielle qui consiste à surveiller au moyen d'un sous-programme chaque adresse utilisée par le programme d'une application en cours d'exécution, et qui présente l'inconvénient de ralentir considérablement 1' exécution du programme.
Ces objectifs sont atteints grâce à la prévision d'un microprocesseur comprenant un chemin d' adresses logiques ou physiques pour l'adressage d'un plan mémoire, et des moyens de test à logique câblé agencés pour émettre un signal de violation d'adresse lorsqu'une adresse physique ou logique ne se trouve pas comprise dans une plage de valeurs prédéterminée, et un décodeur d'interruption agencé pour émettre un signal d'interruption du microprocesseur sur réception du signal de violation d'adresse.
Selon un mode de réalisation, le microprocesseur comprend une unité de gestion mémoire pour convertir des adresses logiques en adresses physiques par concaténation ou addition des adresses logiques avec une adresse offset, des moyens pour protéger l'adresse offset au moins en écriture, des moyens pour comparer une adresse logique ou physique à un seuil de violation d'adresse, et délivrer le signal de violation d'adresse quand 1' adresse logique ou physique est supérieure au seuil de violation d'adresse.
Avantageusement, le décodeur d' interruption est agencé pour émettre, sur réception du signal de violation d'adresse, une adresse de secourus.
Selon un mode de réalisation, le microprocesseur comprend des moyens pour appliquer 1' adresse de secours en entrée de l'unité de gestion mémoire.
Avantageusement, 1 'adresse de secours est 1 'adresse d'un programme de traitement des cas de violation d'adresse.
Selon un mode de réalisation, le microprocesseur comporte un mode de fonctionnement superviseur et un mode de fonctionnement protégé, le décodeur d'interruption est agencé pour délivrer un signal de retour au mode superviseur sur réception du signal de violation d'adresse logique.
Selon un mode de réalisation, l'unité de gestion mémoire comprend des moyens d'inhibition agencés pour que l'unité de gestion mémoire délivre, sur réception d'un signal d'inhibition, l'adresse logique à convertir, ou agencés pour appliquer une adresse offset de consigne sur l'entrée d'adresse offset du circuit additionneur sur réception d'un signal d'inhibition.
Selon un mode de réalisation, le microprocesseur comprend des moyens pour inhiber l'unité de gestion mémoire sur réception du signal de violation d'adresse.
Ces caractéristiques et avantages ainsi que d'autres de la présente invention seront exposés plus en détail dans la description suivante d'un exemple de réalisation d'une unité de gestion mémoire selon l'invention, du procédé de conversion d'adresses selon l'invention, ainsi que de certains aspects d'un microprocesseur selon l'invention, faite à titre non limitatif en relation avec les figures jointes parmi lesquelles - la figure 1 précédemment décrite représente schématiquement une unité de gestion mémoire de l'art antérieur, - la figure 2 représente sous forme de blocs une unité de gestion mémoire selon 1' invention et certains aspects d'un microprocesseur selon l'invention comprenant l'unité de gestion mémoire, et - la figure 3 illustre le procédé de l'invention et représente la correspondance entre un plan mémoire virtuel selon l'invention et le plan mémoire physique dwun microprocesseur.
Description d'une unité de gestion mémoire selon l'invention
La figure 2 représente une unité de gestion mémoire MMU1 selon 1' invention, ainsi que certains éléments d'un microprocesseur MP ayant une relation fonctionnelle directe avec l'unité MMU1. Ces éléments du microprocesseur seront considérés comme optionnels dans un premier temps. Ils sont représentés en traits pointillés et seront décrits plus loin.
L'unité NMUl est disposée sur le chemin d'adresses du microprocesseur MP, entre le compteur ordinal PC et le plan mémoire physique PMEM du microprocesseur (représenté en figure 3). L'unité MMUE reçoit sur son entrée IM1 une adresse logique
LADi à convertir, fournie classiquement par le compteur ordinal PC, et délivre sur sa sortie IM2 une adresse physique PADi.
L'unité MMLII comprend un circuit additionneur ADD recevant sur sa première entrée Al 1 adresse logique à convertir LADi et sur sa deuxième entrée A2 une adresse offset délivrée par un multiplexeur MUX1. La sortie du circuit additionneur ADD forme la sortie de 1 'unité MMLII. Le multiplexeur MUX1 reçoit sur une première entrée El une adresse offset OAD1 stockée dans un registre OR1, sur une deuxième entrée E2 une adresse offset OAD2 stockée dans un registre OR2, et sur une troisième entrée E3 une adresse offset de consigne IOAD3, ici égale à zéro. Le multiplexeur MUX1 recopie à sa sortie l'une des adresses offset OAD1 ou OAD2 en fonction de la valeur d'un signal de sélection
SEL. Le signal de sélection SEL est délivré par un comparateur logique CMP1 recevant sur une entrée l'adresse logique LADi et sur une autre entrée une valeur de seuil TAD1 stockée dans un registre TR1. Le signal SEL est à 1 ou à 0 selon que 1' adresse logique LADi est supérieure ou inférieure au seuil TAD1. Par ailleurs, le multiplexeur MUX1 recopie sur sa sortie l'adresse offset de consigne IOAD3 sur réception d'un signal d'inhibition
INHIB prioritaire sur le signal SEL. Enfin, 1 unité MMLII comprend également un comparateur logique CMP2 recevant en entrée 1' adresse logique LADi et une valeur TAD2 représentant un seuil de violation d' adresse logique, stockée dans un registre TR2. Le comparateur délivre un signal de violation d'adresse logique VLT lorsque l'adresse logique LADi est supérieure au seuil TAD2.
Le fonctionnement de 1 'unité U1 est particulièrement simple, la conversion réalisée consistant à additionner 1' adresse logique
LADi avec l'adresse offset délivrée par le multiplexeur MUX1.
Selon le mode de réalisation décrit, trois cas peuvent se présenter, résumés par le tableau ci-après.
Figure img00070001
<tb>
<SEP> Cas <SEP> Signal <SEP> SEL <SEP> Signal <SEP> INHIB <SEP> PAD
<tb> LADi <SEP> < <SEP> TAD1 <SEP> 1 <SEP> O <SEP> LADi <SEP> + <SEP> CAD1 <SEP>
<tb> LADi <SEP> # <SEP> TAD1 <SEP> 0 <SEP> 0 <SEP> LAD <SEP> + <SEP> QAD2
<tb> <SEP> i <SEP> 1 <SEP> LADY <SEP> + <SEP> IOAD3
<tb> Exemple de mise en oeuvre dynamique de l'unité de gestion mémoire
On va maintenant décrire en relation avec la figure 3 un exemple de mise en oeuvre dynamique de 1 'unité MMLII, permettant de créer un plan mémoire virtuel continu comprenant deux zones mémoires adjacentes.
En pratique, cette mise en oeuvre est effectuée par le programme racine, ou système d'exploitation du microprocesseur, au moment où un espace de travail pour une application doit être créé dans la mémoire physique. Le système d'exploitation est par exemple disposé dans la mémoire ROM du microprocesseur, non accessible en écriture.
Comme illustré par la figure 3, le système d'exploitation définit tout d'abord un plan mémoire virtuel LMEM composé de deux zones LMEM1 et LMEM2 adjacentes, d'une taille spécifiée en fonction des besoins de l'application. La zone basse LMEM 1 comprend par exemple les codes instructions du programme de 1 'application et la zone haute LMEM2 est par exemple réservée au stockage des données de l'application (variables, paramètres, etc.). L'adresse logique la plus basse du plan mémoire virtuel LMEM est choisie égale à O. La taille de la zone basse LMEM1 est désignée LAD1 et la taille totale du plan mémoire virtuel est désignée LAD2. La valeur LAD1 représente également l'adresse la plus basse et la valeur LAD2 l'adresse la plus haute de la zone haute LMEM2.
La zone basse LMEM1 du plan mémoire virtuel étant ici réservée aux codes instructions, elle doit correspondre, dans le plan mémoire physique PMEM du microprocesseur, à une zone PMEM1 de la mémoire rémanente (ou permanente) du microprocesseur, par exemple une mémoire EEPRCK. Par ailleurs, la zone haute LMEM2 du plan mémoire virtuel étant ici réservée aux données de l'application, elle doit correspondre à une zone PMEM2 de la mémoire volatile du microprocesseur, par exemple une mémoire RAM.
Le système d'exploitation définit ainsi dans mémoire rémanente du plan mémoire physique une adresse physique PAD1 qui représente 1'adresse basse de la zone PMEM1. Également, le système d'exploitation définit dans la mémoire volatile du plan mémoire physique PMEM une adresse physique PAD2 qui représente l'adresse basse de la zone PMEM2.
Le système d'exploitation charge ensuite dans la zone PMEM1 de la mémoire physique le programme de l'application et réserve la zone
PMEM2 pour le stockage des données de l'application. Enfin, le système d'exploitation charge dans les registres de l'unité de gestion mémoire MMU1 les valeurs suivantes - dans le registre TR1 du comparateur CMP1 : TADl = LAD1, - dans le registre TR2 du comparateur CMP2 : TAD2 = LAD2, - dans le registre offset OR1 : OAD1 = PAD1, - dans le registre offset OR2 : 0AD2 = PAD2 - LAD1.
On peut noter ici que, lorsque le système d'exploitation à la main sur le microprocesseur, l'unité MMLII peut être maintenue dans l'état inhibé grâce au signal INHIB. Si l'adresse offset de consigne IOAD3 envoyée sur 1 'entrée A2 de l'additionneur ADD est l'adresse zéro, la sortie de l'unité MMLII recopie l'adresse LAD1 fournie en entrée. Le système d'exploitation travaille alors sur des adresses physiques. Par ailleurs, si le microprocesseur comporte de façon classique un mode de fonctionnement "superviseur" et un mode de fonctionnement "protégé", le signal classique SUP du mode superviseur peut être utilisé carirne signal d'inhibition.
Une fois l'unité MMU1 programmée, le système d'exploitation cède la main au programne de l'application. Par exemple, le microprocesseur passe du mode superviseur au mode protégé, le signal SUP étant mis à O. La première adresse logique LADi du programme de 1 'application, ici l'adresse zéro, est placée dans le compteur ordinal Pc et le signal INHIB mis à 0.
Pendant l'exécution du programme de l'application, 1 'unité MMU1 transforme les adresses logiques en adresse physique de la façon suivante - si 1 'adresse logique LADi est inférieure à LAD1, le signal SEL est à O et l'adresse physique PADi est égale à
PADi = LADi + PAD1 - si l'adresse logique LADi est supérieure ou égale à LAD1, le signal SEL est à 1 et l'adresse physique PADi est égale à
PADi = LADi + (PAD2 - LAD1)
On voit donc que 1unité MMU1 selon l'invention convertit toutes les adresses de la zone mémoire virtuelle LMEM1 en adresses de la zone mémoire physique PMEM1 et toutes les adresses de la zone virtuelle LMEM2 en adresses de la zone physique PMEM2.
Des objectifs de l'invention sont donc atteints, à savoir le fait que - 1 'espace mémoire total PMEM1 + PMEM2 occupé dans la mémoire physique PMEM correspond exactement à l'espace mémoire LMEM nécessaire à l'application. Il n'y a pas de place perdue.
- 1 'espace mémoire virtuel LMEM est continu et comprend deux zones adjacentes, l'une pour les codes programme, 1' autre pour les données, de sorte que le travail du programmeur (celui qui crée les prograes d' applications) est considérablement simplifié.
De plus, le choix de 1' adresse offset OAD1 (PAD1) ou OAD2 (PAD2-LAD1) à appliquer aux adresses logiques pour leur conversion se fait de façon simple et avantageuse grâce au test effectué par le comparateur CMP1, permettant de délivrer le signal SEL.
Variantes erwisagesbles de l'unité de gestion mémoire et domaines d' application
La présente invention est susceptible de ombreuses variantes de réalisation.
Par exemple, plusieurs registres de sélection du type CMP1 peuvent être prévus en combinaison avec plusieurs registres offset du type OR1, OR2 de manière à faire éclater le plan mémoire virtuel en plusieurs zones du type PMEM1, PMEM2 de la mémoire physique PMEM du microprocesseur. Inversement, un mode de réalisation simplifié de l'unité MMU1 consiste à appliquer une seule adresse offset sur 1' entrée A2 de l'additionneur ADD.
Également, quand 1' adresse offset de consigne IOAD3 est égale à zéro, l'inhibition de l'unité MMLII peut être obtenue de diverses manières, par exemple au moyen d'un bus d'adresse courtcircuitant le chemin d'adresse traversant l'unité MOU1. Enfin, bien que le comparateur CAMP2 ait été présenté ccmne un élément de l'unité MOU1, il doit être noté que ce moyen de test peut être agencé en tout autre point du microprocesseur où cheminent des adresses, comme cela sera décrit plus loin.
Par ailleurs, l'adresse offset de consigne ICAD3 appliquée sur l'entrée E3 du multiplexeur MUX1, prioritaire sur les autres adresses offset lorsque l'unité MMLII est placée dans l'état inhibé, peut être différente de zéro. Par exemple, l'adresse offset de consigne IOAD3 peut être choisie égale à zéro à la sortie d'usine du microprocesseur et être ensuite portée à une valeur prédéterminée irréversible, après que l'on ait chargé dans la mémoire PMEM une ou plusieurs applications. Cette valeur prédéterminée peut être rendue irréversible par claquage de fusibles, ou tout autre moyen connu.
D'autre part, bien que l'on ait proposé plus haut de prévoir une première zone mémoire virtuelle LMEM1 pour le stockage des codes instruction et une deuxième zone mémoire virtuelle LMEML! pour le stockage des données, il est bien évident que ces zones mémoires peuvent contenir chacune des codes instruction, ou des données, ou un mélange des deux. Par exemple, quand la mémoire physique
PMEM du microprocesseur est très encombrée et n'offre pas une zone continue de taille suffisante pour stocker le programme d'une application, une partie du programme peut être stockée dans cette zone, par exemple PMEM1, et la partie restante du programme stockée dans une deuxième zone, par exemple PMEM2. Également, bien que l'on ait proposé de localiser les zones mémoire PMEM1 et PMEM2 respectivement en mémoire rémanente et en mémoire volatile, il est bien évident que, selon les besoins, ces zones peuvent être localisées dans une mémoire de même nature, rémanente ou volatile.
Enfin, les termes "adresses logiques" et "adresses physiques" ne doivent pas être interprétés de façon limitative, comme signifiant uniquement que l'unité de gestion mémoire selon l'invention est en prise directe avec la mémoire physique d'un microprocesseur. En effet, plusieurs conversions d'adresses en cascade peuvent être envisagées. Par exemple, dans le cas d'un vaste plan mémoire comportant des adresses codes sur 16 ou 32 bits, ou plus, "adresse physique" délivrée par l'unité de gestion mémoire selon l'invention peut être choisie de 8 bits seuiement et être concaténée avec des bits de poids fort afin d'obtenir une adresse physique adaptée au plan mémoire. Ainsi, l'unité de gestion mémoire selon l'invention doit être considérée, de façon générale, comne un convertisseur d'adresses.
Aspect de 1'invention relatif à la protection de la mémoire physique d'un microprocesseur
Dans le cadre de l'exemple de mise en oeuvre dynamique décrit plus haut, on va maintenant décrire un exemple d'utilisation du signal de violation d'adresse logique VLT, qui est émis quand 1'adresse logique présentée par le compteur ordinal PC est supérieure à la valeur d'adresse la plus haute LAD2 de l'espace mémoire virtuel dédié à l'application.
Selon un aspect de l'invention, on considère que la violation de l'espace mémoire virtuel peut être accidentelle ou volontaire.
Par exemple, une violation volontaire peut permettre de sortir du programme de l'application en cours d'exécution afin de redonner la main au système d'exploitation. Une violation volontaire peut également être frauduleuse et être le fait d'une personne cherchant à pénétrer des zones mémoire interdites.
La présente invention propose qu'une violation d'adresse redonne la main au système d'exploitation ou envoie le microprocesseur dans un programme particulier, par exemple un programme de traitement des violations d'adresses. Ce programme particulier peut être prévu pour faire la distinction, selon l'adresse logique refusée, entre une violation accidentelle, une violation volontaire non frauduleuse et une violation volontaire frauduleuse ayant pour but d' accéder à une zone mémoire interdite. Selon le type de violation, ce programme peut redonner la main au système d'exploitation ou passer la main à encore un autre programme, spécifique au cas de violation rencontré. Par exemple, un programme spécifique aux traitement des violations frauduleuses pourrait permettre de détruire le programme de l'application responsable de la violation.
A cet effet, selon l'invention, le signal de violation VLT délivré par le comparateur CMP2 est utilisé pour générer un signal d'interruption. Plus particulièrement, le décodeur d'interruption ID ("Interrupt decoder") du microprocesseur, en lui-même connu, est agencé pour comporter une entrée de traitement du signal de violation VLT. Lorsque le signal VLT est reçu, le décodeur ID délivre d'une part un signal d'interruption
IT et d'autre part une adresse de secours EMAD correspondant à l'adresse d'un programne, par exemple le programme de traitement évoqué plus haut. Parallèlement, le contenu du compteur ordinal PC est sauvé dans un registre SVEPC.
Dans le mode de réalisation représenté en figure 2, l'adresse de secours EMxD est appliquée en entrée d'un multiplexeur MUX2 interposé entre le compteur ordinal PC et 1' entrée IMi de l'unité MMLII. Sur réception de du signal d'interruption IT, le multiplexeur MUX2 ferme le chemin d'adresses entre le compteur ordinal PC et l'unité MMU1 et applique à l'unité MMLII l'adresse de secours EMAD. Parallèlement, unité MMU1 est inhibée par le signal VLT, utilisé ici corme signal d'inhibition INHIB.
Si le microprocesseur comporte de façon classique un mode de fonctionnement superviseur et un mode de fonctionnement protégé, le décodeur ID délivre également un signal RQSUP de retour au mode superviseur, qui force le microprocesseur à quitter le mode protégé dans lequel s' exécute l'application. En mode superviseur, et de façon classique, le système d'exploitation a le contrôle exclusif du microprocesseur. Sur 1 entrée d' inhibition du multiplexeur MUNI, le signal du mode superviseur SUP est combiné au signal VLT par une porte logique afin de maintenir l'unité
MMU1 intubée pendant le mode superviseur.
En définitive, la présente invention offre un moyen simple et pratique pour cloisonner le plan mémoire d'un microprocesseur et interdire l'accès à des zones de la mémoire qui ne doivent pas être lues par des personnes non autorisées.
Ainsi, le contrôle par un circuit à logique câblée des adresses logiques, puis l'émission d'une interruption en cas de violation d'adresse et, accessoirement, le renvoi du microprocesseur dans un programme de traitement des violations d'adresses ainsi que, de façon optionnelle, le renvoi du microprocesseur au mode superviseur, est un aspect de la présente invention qui convient particulièrement bien aux applications où un haut niveau de sécurité est exigé, notamment dans le domaine des cartes à puces, des étiquettes électroniques,..
L'homme de l'art notera que cet aspect de l'invention est indépendant de la manière dont on convertit les adresses logiques.
Pour fixer les idées, considérons par exemple le cas où l'additionneur ADD de la figure 2 est supprimé et remplacé par une simple juxtaposition de la sortie du multiplexeur MUX1 et du chemin sur lequel circule les adresses logiques LADi. L'adresse physique PADi est dans ce cas le résultat de la concaténation de 1 'adresse offset OAD1, OAD2 ou IOAD3 présente à la sortie du multiplexeur MUNI, qui représente maintenant les bits de poids fort de 1' adresse physique, et de 1' adresse logique LADi présentée à l'unité MMU1, qui représente maintenant les bits de poids faible. On voit que le test réalisé par le comparateur CMP2 est toujours valable et que le signal d' interruption IT est émis par le décodeur ID quand l'adresse logique LADi dépasse la valeur de seuil TAD2. Bien entendu, on ne bénéficie pas, avec ce mode de réalisation, des avantages de l'additionneur ADD. Ainsi, en se référant à l'exemple de la figure 3, on doit placer dans le registre OR2 une adresse offset OAD2 égale aux poids forts de l'adresse PAD2, de sorte que l'on perd dans la zone PMEM2 un segment mémoire équivalent à la taille de la zone LMEM1, compris entre l'adresse PAD2//0 et PAD2//LAD1, "//" étant le symbole de la concaténation.
D'autre part, le comparateur CMP2 et le registre TR2 dépassement de l'adresse logique la plus haute du plan mémoire virtuel de l'application, ou un dépassement de la plus haute adresse de la zone mémoire la plus haute attribuée à l'application dans la mémoire physique.
Toutefois, si le système d'exploitation affecte à une application plusieurs plan mémoire virtuels, par exemple un plan mémoire virtuel pour les données et un plan mémoire virtuel pour les codes instruction, il faut tester chaque adresse relativement à la limite haute du plan mémoire concerné.
Enfin, le fait que la détection d'une violation d'adresse puisse reposer uniquement sur une détection d'un dépassement de zone mémoire par valeur supérieure est également un aspect de l'invention. En effet, selon l'invention, les registres OR1, OR2 contenant les adresses offset QAD1, OAD2 sont des registres protegés, au moins en écriture. Dans ces conditions, il n'est pas nécessaire de détecter un dépassement par valeur inférieure de la zone mémoire la plus basse réservée à l'application dans la mémoire physique.
La présente invention propose par exemple que 1' accès aux registres OR1, OR2 soit réservé au système d'exploitation, ou soumis au contrôle et à l'accord du système d'exploitation. Ceci peut être obtenu de diverses manières à la portée de l'home de l'art. Par exemple, si le microprocesseur comporte un mode superviseur, l'accès au registres OR1, OR2 peut être assujetti à la condition que le signal SUP du mode superviseur soit présent, seul le système d'exploitation étant actif en mode superviseur.
Sinon, la protection des registres OR1, OR2 peut être obtenue par le fait que l'utilisateur n'a pas accès au bas niveau de programmation du microprocesseur, et ne peut donc pas programmer le microprocesseur en code objet (ou code machine), la programmation se faisant par compilation d'un langage de haut niveau en un code dit "intermédiaire", ou "P-code", chargé dans la mémoire du microprocesseur et exécuté par un programne dit "interpréteur". Dans ce cas, les instructions relatives à la programmation des registres OR1, OR2 peuvent être supprimées du jeu d'instructions de haut niveau, de sorte que l'utilisateur n'a pas la possibilité de d' intervenir sur ces registres. Comme autre solution, la programnation des registres OR1, OR2 peut être placée sous le contrôle du programme interpréteur, qui autorise ou non l'écriture ou la lecture des registres OR1, OR2 selon la valeur d'adresse offset à y écrire ou y lire.
En définitive, la prévision d'adresses offset protégées au moins en écriture est également un aspect de l'invention qui permet de ramener la détection des violations d'adresses logiques à une simple détection d'un dépassement d'une limite haute, ce qui simplifie avantageusement la réalisation du circuit à logique câblée effectuant cette détection, ici le comparateur CMP2 et le registre TR2.

Claims (9)

REVENDICATIONS
1. Microprocesseur (MP) comprenant un chemin d'adresses logiques (LADi) ou physiques (PADi) pour l'adressage d'un plan mémoire (PMEM), et des moyens de test à logique câblé (CMP2, TR2) agencés pour émettre un signal de violation d'adresse (VLT) lorsqu'une adresse physique ou logique ne se trouve pas comprise dans une plage de valeurs prédéterminée (LMEM, PMEMl, PMEM2), caractérise en ce qu'il comprend un décodeur d'interruption (ID) agencé pour émettre un signal d'interruption (IT) du microprocesseur sur réception dudit signal de violation d'adresse (VLT).
2. Microprocesseur selon la revendication 1, comprenant - une unité de gestion mémoire (MMU1) pour convertir des adresses logiques (LADi) en adresses physiques (PADi) par concaténation ou addition des adresses logiques (LADi) avec une adresse offset (QAD1, OAD2, IOAD3), - des moyens (OR1, OR2) pour protéger l'adresse offset (CADl, OAD2, IOAD3) au moins en écriture, - des moyens (CMX2, TR2) pour comparer une adresse logique (LADi) ou physique (PADi) à un seuil de violation d'adresse (TAD2), et délivrer le signal de violation d'adresse (VLT) quand l'adresse logique ou physique est supérieure au seuil de violation d'adresse (TAD2).
3. Microprocesseur selon lune des revendications précédentes, dans lequel le décodeur d'interruption (ID) est agencé pour émettre, sur réception du signal de violation d'adresse (VLT), une adresse de secours (EMAD).
4. Microprocesseur selon la revendication 3, comprenant des moyens (MUX2) pour appliquer l'adresse de secours (EMAD) en entrée (IMl) de l'unité de gestion mémoire (MMU1).
5. Microprocesseur selon l'une des revendications 3 et 4, dans lequel l'adresse de secours (EMAD) est l'adresse d'un programme de traitement des cas de violation d'adresse.
6. Microprocesseur selon l'une des revendications précédentes, comportant un mode de fonctionnement superviseur et un mode de fonctionnement protégé, dans lequel le décodeur d'interruption (ID) est agencé pour délivrer un signal de retour au mode superviseur (RQ6UP) sur réception du signal de violation d'adresse logique (VLT).
7. Microprocesseur selon 1 'une des revendications 2 à 6, dans lequel 1 'unité de gestion mémoire comprend des mayens d'inhibition (MUX1, E3, ADD) agencés pour que l'unité de gestion mémoire délivre, sur réception d'un signal d'inhibition (INHIB,
VLT, SUP), l'adresse logique (LADi) à convertir.
8. Microprocesseur selon l'une des revendications 2 à 6, dans lequel 1 'unité de gestion mémoire comprend des moyens d'inhibition (MUXi, E3) agencés pour appliquer une adresse offset de consigne (IOAD3) sur l'entrée d'adresse offset (A2) du circuit additionneur (ADD) sur réception d'un signal d'inhibition (INHIB,
VLT, SUP).
9. Microprocesseur selon l'une des revendications 7 et 8, comprenant des moyens (ID, RQSUP, SUP, INHIB, VLT) pour inhiber l'unité de gestion mémoire sur réception du signal de violation d'adresse (VLT).
FR9709340A 1997-07-23 1997-07-23 Microprocesseur comportant un chemin d'adresses securise Expired - Lifetime FR2766597B1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR9709340A FR2766597B1 (fr) 1997-07-23 1997-07-23 Microprocesseur comportant un chemin d'adresses securise

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9709340A FR2766597B1 (fr) 1997-07-23 1997-07-23 Microprocesseur comportant un chemin d'adresses securise

Publications (2)

Publication Number Publication Date
FR2766597A1 true FR2766597A1 (fr) 1999-01-29
FR2766597B1 FR2766597B1 (fr) 2004-01-09

Family

ID=9509522

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9709340A Expired - Lifetime FR2766597B1 (fr) 1997-07-23 1997-07-23 Microprocesseur comportant un chemin d'adresses securise

Country Status (1)

Country Link
FR (1) FR2766597B1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1035475A1 (fr) * 1999-03-05 2000-09-13 Sun Microsystems Inc. Dispositif de gestion de mémoire simple à haute performance

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3815101A (en) * 1972-11-08 1974-06-04 Sperry Rand Corp Processor state and storage limits register auto-switch
US4851989A (en) * 1985-09-06 1989-07-25 Hitachi, Ltd. Data processing apparatus with a virtual storage address boundary check circuit
US4926316A (en) * 1982-09-29 1990-05-15 Apple Computer, Inc. Memory management unit with overlapping control for accessing main memory of a digital computer

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3815101A (en) * 1972-11-08 1974-06-04 Sperry Rand Corp Processor state and storage limits register auto-switch
US4926316A (en) * 1982-09-29 1990-05-15 Apple Computer, Inc. Memory management unit with overlapping control for accessing main memory of a digital computer
US4851989A (en) * 1985-09-06 1989-07-25 Hitachi, Ltd. Data processing apparatus with a virtual storage address boundary check circuit

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1035475A1 (fr) * 1999-03-05 2000-09-13 Sun Microsystems Inc. Dispositif de gestion de mémoire simple à haute performance
US6233667B1 (en) 1999-03-05 2001-05-15 Sun Microsystems, Inc. Method and apparatus for a high-performance embedded memory management unit
KR100705171B1 (ko) * 1999-03-05 2007-04-06 썬 마이크로시스템즈, 인코포레이티드 어드레스 변환 장치 및 방법

Also Published As

Publication number Publication date
FR2766597B1 (fr) 2004-01-09

Similar Documents

Publication Publication Date Title
EP0540095B1 (fr) Microcircuit pour carte à puce à mémoire programmable protégée
EP0430734B1 (fr) Procédé et système d&#39;exploitation sécurisée d&#39;un logiciel
EP1374018B1 (fr) Systeme et procede de controle d&#39;acces a des donnees protegees stockees dans une memoire
FR2646942A1 (fr) Carte a circuit integre
FR2609175A1 (fr) Carte a circuits integres et systeme pour verifier le bon fonctionnement de la carte
FR2977694A1 (fr) Microprocesseur protege contre un debordement de pile
EP1712976B1 (fr) Protection de données d&#39;une mémoire associée à un microprocesseur
FR2687812A1 (fr) Systeme de traitement de l&#39;information.
EP1391853A1 (fr) Diversification d&#39;un identifiant unique d&#39;un circuit intégré
EP1960934B1 (fr) Procede pour securiser l&#39;execution d&#39;un code logiciel en langage intermediaire dans un appareil portatif
EP1607878B1 (fr) Procédé de traitement d&#39;une adresse virtuelle pour la programmation d&#39;un contrôleur de DMA, système sur puce et programme d&#39;ordinateur associés
FR2841015A1 (fr) Controle d&#39;execution d&#39;un programme
EP0735489A1 (fr) Procédé de protection de zones de mémoires non volatiles
EP1316874A1 (fr) Blocage du fonctionnement d&#39;un circuit intégré
FR2766597A1 (fr) Microprocesseur comportant un chemin d&#39;adresses securise
EP0314530A1 (fr) Dispositif à mémoire de controle de l&#39;utilisation d&#39;un logiciel du type clé
FR2766596A1 (fr) Unite de gestion memoire
FR2811096A1 (fr) Microprocesseur securise comprenant un systeme d&#39;attribution de droits a des librairies
US20090327635A1 (en) Data security for use with a file system
EP1715436A2 (fr) Protection du déroulement d&#39;un programme exécuté par un circuit intégré ou de données contenues dans ce circuit
EP2901291B1 (fr) Procédé de gestion des ressources mémoire d&#39;un dispositif de sécurité, tel qu&#39;une carte à puce, et dispositif de sécurité mettant en oeuvre ledit procédé.
FR2689662A1 (fr) Procédé de protection d&#39;une carte à puce contre la perte d&#39;information.
EP1155389B1 (fr) Dispositif d&#39;acces securise a des applications d&#39;une carte a puce
FR2577332A1 (fr) Systeme de mesure de l&#39;utilisation de logiciel d&#39;application sur un ordinateur ou un micro-ordinateur
EP3188024A1 (fr) Stockage dans une mémoire flash

Legal Events

Date Code Title Description
CA Change of address
CD Change of name or company name
GC Lien (pledge) constituted
AU Other action affecting the ownership or exploitation of an industrial property right
GC Lien (pledge) constituted
RG Lien (pledge) cancelled
CA Change of address

Effective date: 20140129

CD Change of name or company name

Owner name: INSIDE SECURE, FR

Effective date: 20140129

PLFP Fee payment

Year of fee payment: 20