FR3094513A1 - Procédé d'authentification d'un processeur - Google Patents

Procédé d'authentification d'un processeur Download PDF

Info

Publication number
FR3094513A1
FR3094513A1 FR1903346A FR1903346A FR3094513A1 FR 3094513 A1 FR3094513 A1 FR 3094513A1 FR 1903346 A FR1903346 A FR 1903346A FR 1903346 A FR1903346 A FR 1903346A FR 3094513 A1 FR3094513 A1 FR 3094513A1
Authority
FR
France
Prior art keywords
arithmetic
instruction
logic unit
result
processor
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
FR1903346A
Other languages
English (en)
Other versions
FR3094513B1 (fr
Inventor
Michael Peeters
Fabrice Marinet
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.)
Proton World International NV
Original Assignee
Proton World International NV
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 Proton World International NV filed Critical Proton World International NV
Priority to FR1903346A priority Critical patent/FR3094513B1/fr
Priority to US16/833,012 priority patent/US11379238B2/en
Publication of FR3094513A1 publication Critical patent/FR3094513A1/fr
Priority to US17/721,193 priority patent/US11853765B2/en
Application granted granted Critical
Publication of FR3094513B1 publication Critical patent/FR3094513B1/fr
Priority to US18/532,946 priority patent/US20240103873A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/2129Authenticate client device independently of the user
    • 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/30098Register arrangements
    • G06F9/30105Register structure

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Storage Device Security (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)

Abstract

Procédé d'authentification d'un processeur La présente description concerne un procédé (200) d'authentification d'un processeur (2000), comportant une unité arithmétique et logique (2060), comprenant les étapes suivantes : la réception, sur une première borne de l'unité arithmétique et logique (2060), d'au moins un opérande (OP1, ..., OPN) décodé d'un code opératoire à exécuter (OPCODE) ; et la réception, sur une deuxième borne de l'unité arithmétique et logique (2060), d'une première instruction (ISNTR-SIG) combinant une deuxième instruction (INSTR) du code opératoire à exécuter (OPCODE) et au moins un résultat (R) précédent de ladite unité arithmétique et logique (2060), ledit au moins un résultat (R) précédent étant stocké dans une banque de registres de résultats (2040). Figure pour l'abrégé : Fig. 3

Description

Procédé d'authentification d'un processeur
La présente description concerne de façon générale les dispositifs électroniques et plus particulièrement les processeurs. La présente description concerne plus particulièrement un mode de fonctionnement d'un processeur.
Un processeur, compris dans la plupart des dispositifs électroniques actuels, est une unité de traitement qui exécute des codes opératoires.
Les processeurs sont fréquemment sujets à des tentatives de clonage et d'émulation des codes opératoires qu'ils doivent exécuter.
Il serait souhaitable d'améliorer au moins en partie certains aspects des procédés de mise en oeuvre connus des processeurs, et, plus particulièrement, d'améliorer au moins en partie les procédés d'authentification exécutés par un processeur.
Un mode de réalisation pallie tout ou partie des inconvénients des procédés de mise en oeuvre de processeur connus.
Un mode de réalisation pallie tout ou partie des inconvénients des procédés d'authentification connus mis en oeuvre par un processeur.
Un mode de réalisation prévoit un procédé d'authentification d'un processeur, comportant une unité arithmétique et logique, comprenant les étapes suivantes : la réception, sur une première borne de l'unité arithmétique et logique, d'au moins un opérande décodé d'un code opératoire à exécuter ; et la réception, sur une deuxième borne de l'unité arithmétique et logique, d'une première instruction combinant une deuxième instruction du code opératoire à exécuter et au moins un résultat précédent de ladite unité arithmétique et logique, ledit au moins un résultat précédent étant stocké dans une banque de registres de résultats.
Selon un mode de réalisation, la banque de registres de résultat est adaptée à fonctionner comme un registre à décalage dans lequel la dernière information stockée est la première information à être supprimée, ou comme un registre à décalage à réaction linéaire.
Selon un mode de réalisation, la banque de registres de résultat est adaptée à fournir un signal de sortie dépendant d'au moins un résultat précédent de ladite unité arithmétique.
Selon un mode de réalisation, ladite première instruction est fournie par une sortie d'un circuit de combinaison.
Selon un mode de réalisation, le circuit de combinaison reçoit en entrée ladite deuxième instruction du code opératoire à exécuter et des données prenant en compte ledit au moins un résultat précédent de ladite unité arithmétique et logique.
Selon un mode de réalisation, le procédé comprend en outre le traitement, par l'unité arithmétique et logique, de ladite première instruction et du au moins un opérande.
Selon un mode de réalisation, ladite première instruction combine ladite deuxième instruction, ledit au moins un résultat précédent de ladite unité arithmétique et logique, et au moins un code opératoire exécuté précédemment par le processeur.
Un autre mode de réalisation prévoit un processeur dans lequel une unité arithmétique et logique comprend : une première borne adaptée à recevoir au moins un opérande décodé d'un code opératoire à exécuter ; et une deuxième borne adaptée à recevoir une première instruction combinant une deuxième instruction d'un code opératoire à exécuter et au moins un résultat précédent de ladite unité arithmétique et logique, ledit au moins un résultat précédent étant stocké dans une banque de registres de résultats.
Selon un mode de réalisation, le processeur comprend en outre un circuit de combinaison adapté à fournir ladite première instruction à la deuxième borne de l'unité arithmétique et logique.
Selon un mode de réalisation, le circuit de combinaison est adapté à recevoir en entrée, ladite deuxième instruction du code opératoire à exécuter et des données prenant en compte ledit au moins un résultat précédent.
Selon un mode de réalisation, le processeur comprend en outre une banque de registres de résultats adaptée à stocker ledit au moins un résultat précédent.
Selon un mode de réalisation, l'unité arithmétique et logique est adaptée à traiter ladite première instruction reçue sur sa première borne et ledit au moins un opérande reçu sur sa deuxième borne.
Selon un mode de réalisation, ladite première instruction combine ladite deuxième instruction décodée du code opératoire à exécuter, ledit au moins un résultat précédent de ladite unité arithmétique et logique et au moins un code opératoire exécuté précédemment par le processeur.
Selon un mode de réalisation, le processeur comprend en outre un circuit de décodage adapté à décoder le code opératoire en ledit au moins un opérande et en ladite deuxième instruction.
Selon un mode de réalisation, le processeur comprend en outre un multiplexeur adapté à recevoir ledit au moins un opérande et à le fournir à la première borne de l'unité arithmétique et logique.
Un autre mode de réalisation prévoit une instruction mise en oeuvre par un processeur décrit précédemment, comprenant une unité arithmétique et logique prenant en compte au moins un résultat précédant de ladite unité arithmétique et logique, ce résultat étant stocké dans une banque de registres de résultats.
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 les figures jointes parmi lesquelles :
la figure 1 représente un organigramme illustrant un procédé de mise en oeuvre d'un processeur ;
la figure 2 représente un organigramme (a) illustrant un mode de mise en oeuvre d'un procédé d'authentification exécuté par un processeur, et un schéma bloc (b) illustrant l'architecture d'un processeur ;
la figure 3 représente un organigramme (a) illustrant un autre mode de mise en oeuvre d'un procédé d'authentification exécuté par un processeur, et un schéma bloc (b) illustrant l'architecture d'un autre processeur ; et
la figure 4 représente un organigramme (a) illustrant un autre mode de mise en oeuvre d'un procédé d'authentification exécuté par un processeur, et un schéma bloc (b) illustrant l'architecture d'un autre processeur.
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, tous les éléments composant l'architecture d'un processeur ne seront pas décrits, seuls les éléments relatifs aux modes de réalisation décrits seront détaillés, ces éléments s'adaptant aux architectures de processeur usuelles.
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.
On appelle :
- code opératoire : une opération à exécuter par un processeur et comportant une instruction et un ou plusieurs opérandes ;
- opérande d'un code opératoire : une valeur numérique, logique, alphanumérique, etc., que contient le code opératoire ;
- instruction d'un code opératoire : une opération mathématique ou logique effective que l'on applique à un ou plusieurs opérandes du code opératoire ; et
- commande : un ensemble ou une succession de codes opératoires.
La figure 1 est un organigramme illustrant un procédé de traitement, par un processeur, d'un code opératoire à exécuter. Ce procédé de traitement est un procédé de traitement classique utilisé par un processeur usuel. A titre d'exemple, le processeur est un processeur de type RISC ("Reduced Instruction Set Computing").
A une étape 10 (IF, "Intruction Fetch"), un code opératoire est fourni, par exemple par un bus, au processeur. A titre d'exemple, le code opératoire est chargé à partir d'une mémoire.
A une étape 12 (ID, "Instruction Decode"), le code opératoire est décodé par une unité de décodage du processeur. Plus particulièrement, le code opératoire est converti en une instruction et un ou plusieurs opérandes.
A une étape 14 (EX, "Execution"), le code opératoire décodé, c'est-à-dire l'instruction et le ou les opérandes, est fourni à une unité arithmétique et logique comprise dans le processeur. L'unité arithmétique et logique est chargée de mettre en oeuvre le code opératoire, en réalisant des calculs sur les opérandes du code opératoire conformément à l'instruction du code opératoire à exécuter.
A une étape 16 (MEM, "Memory Access"), l'unité arithmétique et logique demande accès à un registre d'une banque de registres ou pile, pour y stocker le résultat des calculs du code opératoire exécuté. A cette étape, le processeur peut, en outre, accéder à une mémoire externe pour, par exemple, y lire et/ou écrire une ou plusieurs données.
A une étape 18 (WB, "Write Back"), l'unité arithmétique et logique fournit le résultat de ses calculs à la banque de registres pour les stocker dans un registre.
La figure 2 illustre un mode de mise en oeuvre d'un procédé 100 d'authentification d'un processeur 1000. La figure 2 comprend un organigramme (a) illustrant les étapes du procédé d'authentification 100, et un schéma (b), sous forme de blocs, illustrant une architecture simplifiée du processeur 1000.
Le procédé d'authentification 100 comprend :
- une étape 110 de chargement, par le processeur 1000, d'un code opératoire à exécuter ;
- une étape 120 de décodage du code opératoire à exécuter ; et
- une étape 130 de traitement du code opératoire à exécuter.
L'étape 110 est identique à l'étape 10 décrite en relation avec la figure 1. Un code opératoire OPCODE est reçu et chargé par le processeur 1000.
L'étape 120 est identique à l'étape 12 décrite en relation avec la figure 1. Le code opératoire OPCODE est décodé, par une unité de décodage 1010 (DEC), en un ou plusieurs opérandes OP1, ..., OPN, et en une instruction INSTR.
L'étape 130 comprend des étapes similaires aux étapes 14, 16 et 18 décrites en relation avec la figure 1 mais comprend en outre l'utilisation d'un ou plusieurs codes opératoires précédemment exécutés par le processeur 1000. Le détail de l'étape 130 sera décrit ci-après en relation avec la description de l'architecture du processeur 1000.
Le processeur 1000 comprend :
- l'unité de décodage 1010 ;
- un multiplexeur 1020 (MUX) ;
- une banque de registres 1030 (REGLIST) ;
- une banque de registres de contexte 1040 (CONTEXT) ;
- un circuit de combinaison 1050 (COMB) ; et
- une unité arithmétique et logique 1060 (ALU).
Comme indiqué précédemment, l'unité de décodage 1010 permet de décoder le code opératoire OPCODE en plusieurs opérandes OP1, ..., OPN, et en une instruction INSTR. Ainsi, l'unité de décodage 1010 reçoit, en entrée, le code opératoire OPCODE chargé à l'étape 110, et fournit, en sortie, les opérandes OP1, ..., OPN, et l'instruction INSTR (étape 120). Plus particulièrement, l'unité de décodage 1010 fournit les opérantes OP1, ..., OPN à des entrées du multiplexeur 1020, et l'instruction INSTR à une entrée du circuit de combinaison 1050.
Le multiplexeur 1020 permet de choisir et de diriger les opérandes OP1, ..., OPN, nécessaires au traitement du code opératoire OPCODE vers l'unité arithmétique et logique 1060. En variante, le multiplexeur 1020 dirige tout ou partie des opérandes vers le circuit de combinaison 1050. Ainsi, le multiplexeur 1020 reçoit, en entrée, les opérandes OP1, ..., OPN et par exemple une sortie de la banque de registres 1030. Le multiplexeur 1020 transmet, en sortie, les opérandes OP1, ..., OPN à l'unité arithmétique et logique 1060 et à une entrée du circuit de combinaison 1050.
La banque de registres 1030 permet de stocker temporairement, dans des registres, des données, par exemple des opérandes OP1, ..., OPN du code opératoire OPCODE, des résultats de l'unité arithmétique et logique 1060, etc. La banque de registres 1030 peut permettre en outre de fournir d'autres opérandes, par exemple directement ou alors via le multiplexeur 1020, à l'unité arithmétique et logique 1060. La banque de registres 1030 reçoit, en entrée, une sortie de l'unité arithmétique et logique 1060 et par exemple la sortie du multiplexeur 1020. La banque de registres 1030 fournit, en sortie, des données à l'unité arithmétique et logique 1060 et, par exemple, au multiplexeur 1020.
La banque de registres de contexte 1040 est une banque de registres stockant, dans des registres, les codes opératoires précédemment exécutés par le processeur 1000. A titre d'exemple, la banque de registres de contexte 1040 peut stocker tout ou partie des codes opératoires précédemment exécutés dans une pile, ou dans une mémoire tampon circulaire, et/ou elle peut leur appliquer, pour les stocker, une fonction mathématique, par exemple une permutation. A titre d'exemple, la banque de registres de contexte 1040 peut prendre en compte le code opératoire à exécuter ou en cours d'exécution. La banque de registres de contexte 1040 reçoit, en entrée, le code opératoire OPCODE afin de le stocker. La banque de registres de contexte 1040 fournit, en sortie, des données au circuit de combinaison 1050.
Le circuit de combinaison 1050 permet de combiner l'instruction INSTR décodée du code opératoire OPCODE avec les données de la sortie de la banque de registres de contexte 1040. En d'autres termes, le circuit de combinaison 1050 permet de fournir, à l'unité arithmétique et logique 1060, une nouvelle instruction comportant une signature de données dépendant des codes opératoires précédemment exécutés par le processeur 1000. Le circuit de combinaison 1050 peut être, par exemple, commandé par un des opérandes décodés du code opératoire OPCODE. On appellera dans la suite de la description cette nouvelle instruction, une instruction signée INSTR-SIG. Ainsi, le circuit de combinaison 1050 reçoit, en entrée, l'instruction INSTR et la sortie de la banque de registres de contexte 1040. Le circuit de combinaison 1050 fournit, en sortie, l'instruction signée INSTR-SIG à l'unité arithmétique et logique 1060. Selon une variante de réalisation, le circuit de combinaison 1050 peut ne combiner que certaines instructions INSTR décodées avec les données de la sortie de la banque de registres de contexte 1040, et transmettre les autres instructions INSTR décodées, sans les signer, directement à l'unité arithmétique et logique 1060.
L'unité arithmétique et logique 1060 permet de mettre en oeuvre le traitement et les calculs du code opératoire OPCODE. En d'autres termes, l'unité arithmétique et logique 1060 applique l'instruction signée INSTR-SIG aux opérandes fournis par le multiplexeur 1020. A titre d'exemple, l'unité arithmétique et logique 1060 peut aussi prendre en compte des données fournies par la banque de registres 1030. L'unité arithmétique et logique 1060 reçoit, en entrée, l'instruction INSTR-SIG du circuit de combinaison 1050, la sortie du multiplexeur 1040 et la sortie de la banque de registres 1030. L'unité arithmétique et logique 1060 fournit, en sortie, un signal de résultat R à l'entrée de la banque de registres 1030.
Le déroulement de l'étape 130 est le suivant. Le circuit de combinaison 1050 combine l'instruction INSTR avec des données provenant de la banque de registres de contexte 1040 pour fournir à l'unité arithmétique et logique 1060 l'instruction signée INSTR-SIG. L'unité arithmétique et logique 1060 effectue les calculs relatifs à l'instruction signée ISNTR-SIG et aux opérandes fournis par le multiplexeur 1020. L'unité arithmétique et logique demande ensuite accès à la banque de registres 1030 pour y stocker le signal de résultat R.
Un avantage de ce mode de réalisation est que, pour un code opératoire OPCODE identique, l'unité arithmétique et logique d'un processeur usuel produira des signaux de résultats R différents de ceux produits par l'unité arithmétique et logique 1060 du processeur 1000 du mode de réalisation. Le signal de résultat R pourrait par exemple servir de signal de contrôle utilisé comme moyen d'authentifier un dispositif lors de son utilisation.
Un exemple d'application de ce mode de réalisation est le suivant. Un processeur reçoit généralement une ou plusieurs commandes comprenant chacune plusieurs codes opératoires. Pour utiliser le procédé de ce mode de réalisation, il suffit qu'une seule instruction relative à un de ces codes opératoires soit signée par le circuit de combinaison 1050. A titre d'exemple, une commande peut ne comprendre qu'une seule instruction signée permettant l'authentification du dispositif. Selon un autre exemple, la totalité des instructions liées à une même commande peuvent être signée par le circuit de combinaison 1050.
Un exemple d'application plus particulier peut être le suivant. On considère une imprimante comprenant un processeur du type du processeur 1000 et une cartouche d'encre adaptée à communiquer des données à l'imprimante. Ces données sont, par exemple, des niveaux de remplissage ou des données d'authentification de la cartouche d'encre. L'installation de la cartouche dans l'imprimante peut être suivie par une série de commandes envoyée par la cartouche à l'imprimante. Si la cartouche est destinée à être installée dans l'imprimante en question, le concepteur de la cartouche aura prévu de préparer les codes opératoires de la série de commandes pour qu'ils soient adaptés à l'architecture du processeur de l'imprimante. En d'autres termes, dans ce cas, les codes opératoires seront adaptés à prendre en compte les données de la banque de registres de contexte 1040. Cependant, si les codes opératoires de la série de commande ne sont pas adaptés à l'architecture du processeur 1000, les résultats R fournis par l'unité arithmétique et logique 1060 ne seront pas ceux attendus par les autres circuits de l'imprimante qui pourront par exemple se mettre en défaut. On notera qu'il suffit qu'une seule instruction de la série de commandes soit signée pour actionner par exemple un mode défaut des autres circuits de l'imprimante. On pourra aussi décider de signer toutes les instructions de la série de commande.
La figure 3 illustre un mode de mise en oeuvre d'un procédé 200 d'authentification d'un processeur 2000. La figure 3 comprend un organigramme (a) illustrant les étapes du procédé d'authentification et un schéma (b), sous forme de blocs, illustrant une architecture simplifiée du processeur 2000. Le procédé 200 et le processeur 2000 sont similaires au procédé 100 et au processeur 1000 décrits en relation avec la figure 2, les différences les séparant seront décrites ci-après.
Le procédé d'authentification 200 comprend :
- une étape 210 de chargement d'un code opératoire à exécuter ;
- une étape 220 de décodage du code opératoire à exécuter ; et
- une étape 230 de traitement du code opératoire à exécuter.
L'étape 210 est identique à l'étape 10 décrite en relation avec la figure 1. Un code opératoire OPCODE est reçu et chargé par le processeur 2000.
L'étape 220 est identique à l'étape 12 décrite en relation avec la figure 1. Le code opératoire OPCODE est décodé, par l'unité de décodage 1010 (DEC) du processeur 2000, en un ou plusieurs opérandes OP1, ..., OPN, et en une instruction INSTR.
L'étape 230 diffère de l'étape 130 décrite en relation avec la figure 2 en ce que l'utilisation de codes opératoires précédemment exécutés est remplacé l'utilisation d'un ou plusieurs résultats précédents de l'unité arithmétique et logique 2060 du processeur 2000. Le détail de l'étape 230 sera décrit ci-après en relation avec la description de l'architecture du processeur 2000.
Le processeur 2000 comprend des éléments en commun avec le processeur 1000, ces éléments ne seront pas décrits à nouveau. Ainsi, le processeur 2000 comprend :
- l'unité de décodage 1010 ;
- le multiplexeur 1020 (MUX) ;
- la banque de registres 1030 (REGLIST) ;
- une banque de registres de résultats 2040 (RESULT) ;
- un circuit de combinaison 2050 (COMB) ; et
- l'unité arithmétique et logique 2060 (ALU).
La banque de registres de résultats 2040 est une banque de registres stockant les résultats précédents de l'unité arithmétique et logique 2060. A titre d'exemple, la banque de registres de résultats 2040 peut stocker les résultats précédents dans une pile, et/ou elle peut leur appliquer, pour les stocker, une fonction mathématique, par exemple une permutation. La banque de registres de résultats 2040 reçoit, en entrée, le résultat R de l'unité arithmétique et logique 2060 afin de le stocker. La banque de registres de résultats 2040 fournit, en sortie, des données au circuit de combinaison 2050, ces données dépendant donc des résultats précédents de l'unité arithmétique et logique 2060. La banque de registre de résultats 2040 est par exemple un registre adapté à fonctionner comme un registre à décalage dans lequel la dernière information stockée est la première information à être supprimée, ou comme un registre à décalage à réaction linéaire.
Le circuit de combinaison 2050 est similaire au circuit de combinaison 1050 décrit en relation avec la figure 2. Le circuit de combinaison 2050 combine l'instruction INSTR décodée du code opératoire OPCODE avec les données de la sortie de la banque de registres de résultats 2040. En d'autres termes, le circuit de combinaison 2050 fournit une instruction signée INSTR-SIG par les résultats précédents de l'unité arithmétique et logique 2060. Ainsi, le circuit de combinaison reçoit, en entrée, l'instruction INSTR et la sortie de la banque de registres de résultats 2040. Le circuit de combinaison 2050 fournit, en sortie, la nouvelle instruction INSTR-SIG à l'unité arithmétique et logique 2060. Selon une variante de réalisation, le circuit de combinaison 2050 peut ne combiner que certaines instructions INSTR décodées avec les données de la sortie de la banque de registres de résultats 2040, et transmettre les autres instructions INSTR, sans les signer, directement à l'unité arithmétique et logique 2060.
L'unité arithmétique et logique 2060 diffère de l'unité arithmétique et logique 1060 décrite en relation avec la figure 2 en ce qu'elle fournit en plus, en sortie, le signal de sortie R à la banque de registres 1030 et à la banque de registres de résultats 2040.
Le déroulement de l'étape 230 se différencie donc du déroulement de l'étape 130 décrite en relation à la figure 1, par le fait que les instructions qui sont signées sont signées avec des données prenant en compte les résultats précédents de l'unité arithmétique et logique 2060.
Ce mode de réalisation présente le même avantage que le mode de réalisation décrit en relation avec la figure 2.
La figure 4 illustre un mode de mise en oeuvre d'un procédé 300 d'authentification d'un processeur 3000. La figure 4 comprend un organigramme (a) illustrant les étapes du procédé d'authentification et un schéma (b), sous forme de blocs, illustrant une architecture simplifiée du processeur 3000.
Les modes de réalisation décrits ci-après sont une combinaison des modes de réalisation décrits en relation avec les figures 2 et 3.
Le procédé d'authentification 300 comprend :
- une étape 310 de chargement d'un code opératoire à exécuter ;
- une étape 320 de décodage du code opératoire à exécuter ; et
- une étape 330 de traitement du code opératoire à exécuter.
L'étape 310 est identique à l'étape 10 décrite en relation avec la figure 1. Un code opératoire OPCODE est reçu et chargé par le processeur 3000.
L'étape 320 est identique à l'étape 12 décrite en relation avec la figure 1. Le code opératoire OPCODE est décodé, par une unité de décodage 1010, en un ou plusieurs opérandes OP1, ..., OPN, et en une instruction INSTR.
L'étape 330 est une combinaison des étapes 130 et 230 décrites en relation avec les figures 2 et 3. Plus particulièrement, l'étape 330 comprend l'utilisation d'un ou plusieurs résultats précédents de l'unité arithmétique et logique 3060 du processeur 3000, et l'utilisation d'un ou plusieurs codes opératoires précédemment exécutés par le processeur 3000. Le détail de l'étape 330 sera décrit ci-après en relation avec la description de l'architecture du processeur 3000.
Le processeur 3000 comprend des éléments en commun avec les processeurs 1000 et 2000, ces éléments ne seront pas décrits à nouveau. Ainsi, le processeur 3000 comprend :
- l'unité de décodage 1010 (DEC) ;
- le multiplexeur 1020 (MUX) ;
- la banque de registres 1030 (REGLIST) ;
- une banque de registres de contexte et de résultats 3040 (CONTEXT RESULT) ;
- un circuit de combinaison 3050 (COMB) ; et
- une unité arithmétique et logique 3060 (ALU).
La banque de registres de contexte et de résultats 3040 est une combinaison de la banque de registres de contexte 1040 décrite en relation avec la figure 2 et de la banque de registres de résultats 2040 décrite en relation avec la figure 3. Plus particulièrement, la banque de registres de contexte et de résultats 3040 est adaptée à stocker des codes opératoires précédemment exécutés par le processeur 3000 et des résultats précédents de l'unité arithmétique et logique 3060. A titre d'exemple, la banque de registres de contexte et de résultats 3040 peut stocker les données dans une pile, et/ou elle peut leur appliquer, pour les stocker une fonction mathématique, par exemple une permutation. La banque de registres de contexte et de résultats 3040 reçoit, en entrée, le résultat R de l'unité arithmétique et logique 3060 et le code opératoire OPCODE afin de les stocker. La banque de registres de contexte et de résultats 3040 fournit, en sortie, des données au circuit de combinaison 3050.
Le circuit de combinaison 3050 est similaire aux circuits de combinaison 1050 et 2050 décrits en relation avec les figures 1 et 2. Le circuit de combinaison 3050 combine l'instruction INSTR décodée du code opératoire OPCODE avec les données de la sortie de la banque de registres de contexte et de résultats 3040. En d'autres termes, le circuit de combinaison 3050 fournit une instruction signée INSTR-SIG par les codes opératoires précédemment exécutés par le processeur 3000 et par les résultats précédents de l'unité arithmétique et logique 3060. Ainsi, le circuit de combinaison reçoit, en entrée, l'instruction INSTR et la sortie de la banque de registres de contexte et de résultats 3040. Le circuit de combinaison 3050 fournit, en sortie, la nouvelle instruction INSTR-SIG à l'unité arithmétique et logique 3060. Selon une variante de réalisation, le circuit de combinaison 3050 peut ne combiner que certaines instructions INSTR décodées avec les données de la sortie de la banque de registres de contexte 3040, et transmettre les autres instructions INSTR décodées, sans les signer, directement à l'unité arithmétique et logique 3060.
L'unité arithmétique et logique 3060 est identique à l'unité arithmétique et logique 2060 décrite en relation avec la figure 3. Ainsi, l'unité arithmétique et logique 3060 fournit le signal de sortie R à la banque de registres 1030 et à la banque de registres de contexte et de résultats 3040.
Le déroulement de l'étape 330 se différencie du déroulement des étapes 130 et 230 décrites en relation avec la figure 2 et 3, par le fait que les instructions qui sont signées sont signées avec des données prenant en compte les codes opératoires précédemment exécutés par le processeur 3000 et prenant en compte les résultats précédents de l'unité arithmétique et logique 3060.
Ce mode de réalisation présente le même avantage que les modes de réalisation décrits en relation avec les figures 2 et 3.
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 (16)

  1. Procédé (200, 300) d'authentification d'un processeur (2000, 3000), comportant une unité arithmétique et logique (2060, 3060), comprenant les étapes suivantes :
    la réception, sur une première borne de l'unité arithmétique et logique (2060, 3060), d'au moins un opérande (OP1, ..., OPN) décodé d'un code opératoire à exécuter (OPCODE) ; et
    la réception, sur une deuxième borne de l'unité arithmétique et logique (2060, 3060), d'une première instruction (ISNTR-SIG) combinant une deuxième instruction (INSTR) du code opératoire à exécuter (OPCODE) et au moins un résultat (R) précédent de ladite unité arithmétique et logique (2060, 3060), ledit au moins un résultat (R) précédent étant stocké dans une banque de registres de résultats (2040).
  2. Procédé selon la revendication 1, dans lequel la banque de registres de résultat (2040) est adaptée à fonctionner comme un registre à décalage dans lequel la dernière information stockée est la première information à être supprimée, ou comme un registre à décalage à réaction linéaire.
  3. Procédé selon la revendication 1 ou 2, dans lequel la banque de registres de résultat (2040) est adaptée à fournir un signal de sortie dépendant d'au moins un résultat (R) précédent de ladite unité arithmétique (2040).
  4. Procédé selon l'une quelconque des revendications 1 à 3, dans lequel ladite première instruction (INSTR-SIG) est fournie par une sortie d'un circuit de combinaison (2050, 3050).
  5. Procédé selon la revendication 4, dans lequel le circuit de combinaison (2050, 3050) reçoit en entrée ladite deuxième instruction (INSTR) du code opératoire à exécuter (OPCODE) et des données prenant en compte ledit au moins un résultat (R) précédent de ladite unité arithmétique et logique (2060, 3060).
  6. Procédé selon l'une quelconque des revendications 1 à 5, comprenant en outre le traitement, par l'unité arithmétique et logique (1060, 3060), de ladite première instruction (INSTR-SIG) et du au moins un opérande (OP1, ..., OPN).
  7. Procédé selon l'une quelconque des revendications 1 à 6, dans lequel ladite première instruction (INSTR-SIG) combine ladite deuxième instruction (INSTR), ledit au moins un résultat (R) précédent de ladite unité arithmétique et logique (2060, 3060), et au moins un code opératoire exécuté précédemment par le processeur (3000).
  8. Processeur (2000, 3000) dans lequel une unité arithmétique et logique (2060, 3060) comprend :
    une première borne adaptée à recevoir au moins un opérande (OP1, ..., OPN) décodé d'un code opératoire à exécuter (OPCODE) ; et
    une deuxième borne adaptée à recevoir une première instruction (INSTR-SIG) combinant une deuxième instruction (INSTR) d'un code opératoire à exécuter (OPCODE) et au moins un résultat (R) précédent de ladite unité arithmétique et logique (2060, 3060), ledit au moins un résultat (R) précédent étant stocké dans une banque de registres de résultats (2040).
  9. Processeur selon la revendication 8, comprenant en outre un circuit de combinaison (2050, 3050) adapté à fournir ladite première instruction (INSTR-SIG) à la deuxième borne de l'unité arithmétique et logique (2060, 3060).
  10. Processeur selon la revendication 9, dans lequel le circuit de combinaison (2050, 3050) est adapté à recevoir, en entrée, ladite deuxième instruction (INSTR) du code opératoire à exécuter (OPCODE) et des données prenant en compte ledit au moins un résultat (R) précédent.
  11. Processeur selon l'une quelconque des revendications 8 à 10, comprenant en outre une banque de registres de résultats (2040) adaptée à stocker ledit au moins un résultat (R) précédent.
  12. Processeur selon l'une quelconque des revendications 8 à 11, dans lequel l'unité arithmétique et logique (2060, 3060) est adaptée à traiter ladite première instruction (INSTR-SIG) reçue sur sa première borne et ledit au moins un opérande reçu sur sa deuxième borne.
  13. Processeur selon l'une quelconque des revendications 8 à 12, dans lequel ladite première instruction (INSTR-SIG) combine ladite deuxième instruction (INSTR) décodée du code opératoire à exécuter (OPCODE), ledit au moins un résultat (R) précédent de ladite unité arithmétique et logique (3060) et au moins un code opératoire exécuté précédemment par le processeur (3000).
  14. Processeur selon l'une quelconque des revendications 8 à 13, comprenant en outre un circuit de décodage (1010) adapté à décoder le code opératoire (OPCODE) en ledit au moins un opérande et en ladite deuxième instruction.
  15. Processeur selon l'une quelconque des revendications 8 à 14, comprenant en outre un multiplexeur (1020) adapté à recevoir ledit au moins un opérande (OP1, ..., OPN) et à le fournir à la première borne de l'unité arithmétique et logique (1060, 3060).
  16. Instruction mise en oeuvre par un processeur selon l'une quelconque des revendications 8 à 15, comprenant une unité arithmétique et logique (2060) prenant en compte au moins un résultat (R) précédant de ladite unité arithmétique et logique (2060), ce résultat (R) étant stocké dans une banque de registres de résultats (2040).
FR1903346A 2019-03-29 2019-03-29 Procédé d'authentification d'un processeur Active FR3094513B1 (fr)

Priority Applications (4)

Application Number Priority Date Filing Date Title
FR1903346A FR3094513B1 (fr) 2019-03-29 2019-03-29 Procédé d'authentification d'un processeur
US16/833,012 US11379238B2 (en) 2019-03-29 2020-03-27 Processor authentication method through signed instruction
US17/721,193 US11853765B2 (en) 2019-03-29 2022-04-14 Processor authentication method
US18/532,946 US20240103873A1 (en) 2019-03-29 2023-12-07 Processor authentication method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1903346 2019-03-29
FR1903346A FR3094513B1 (fr) 2019-03-29 2019-03-29 Procédé d'authentification d'un processeur

Publications (2)

Publication Number Publication Date
FR3094513A1 true FR3094513A1 (fr) 2020-10-02
FR3094513B1 FR3094513B1 (fr) 2023-07-14

Family

ID=67660260

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1903346A Active FR3094513B1 (fr) 2019-03-29 2019-03-29 Procédé d'authentification d'un processeur

Country Status (2)

Country Link
US (3) US11379238B2 (fr)
FR (1) FR3094513B1 (fr)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2957438B1 (fr) 2010-03-09 2012-03-30 Proton World Int Nv Detection d'un deroutement d'un canal de communication d'un dispositif de telecommunication couple a un circuit nfc
FR2969341B1 (fr) 2010-12-20 2013-01-18 Proton World Int Nv Gestion de canaux de communication dans un dispositif de telecommunication couple a un circuit nfc

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0825528A2 (fr) * 1996-08-23 1998-02-25 Matsushita Electric Industrial Co., Ltd. Processeur de signaux numériques
US20100070953A1 (en) * 2008-09-18 2010-03-18 Infineon Technologies Ag Compiler system and a method of compiling a source code into an encrypted machine language code

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594752B1 (en) 1995-04-17 2003-07-15 Ricoh Company, Ltd. Meta-address architecture for parallel, dynamically reconfigurable computing
US5974529A (en) * 1998-05-12 1999-10-26 Mcdonnell Douglas Corp. Systems and methods for control flow error detection in reduced instruction set computer processors
US6574728B1 (en) * 1999-08-10 2003-06-03 Cirrus Logic, Inc. Condition code stack architecture systems and methods
US6308256B1 (en) 1999-08-18 2001-10-23 Sun Microsystems, Inc. Secure execution of program instructions provided by network interactions with processor
US7941651B1 (en) * 2002-06-27 2011-05-10 Intel Corporation Method and apparatus for combining micro-operations to process immediate data
GB0215028D0 (en) 2002-06-28 2002-08-07 Critical Blue Ltd Microarchitecture description
US7035891B2 (en) * 2002-08-27 2006-04-25 Intel Corporation Reduced-hardware soft error detection
US20060095975A1 (en) * 2004-09-03 2006-05-04 Takayoshi Yamada Semiconductor device
US7581079B2 (en) 2005-03-28 2009-08-25 Gerald George Pechanek Processor composed of memory nodes that execute memory access instructions and cooperate with execution nodes to execute function instructions
US9177111B1 (en) 2006-11-14 2015-11-03 Hitachi Global Storage Technologies Netherlands B.V. Systems and methods for protecting software
US8452934B2 (en) * 2008-12-16 2013-05-28 Sandisk Technologies Inc. Controlled data access to non-volatile memory
US20110167496A1 (en) 2009-07-07 2011-07-07 Kuity Corp. Enhanced hardware command filter matrix integrated circuit
DE102011005209B4 (de) * 2011-03-07 2016-06-23 Infineon Technologies Ag Programmanweisungsgesteuerte Instruktionsflusskontrolle
US8892851B2 (en) * 2011-11-02 2014-11-18 International Business Machines Corporation Changing opcode of subsequent instruction when same destination address is not used as source address by intervening instructions
US9652246B1 (en) * 2012-12-20 2017-05-16 Marvell International Ltd. Banked physical register data flow architecture in out-of-order processors
US11468168B1 (en) * 2017-04-11 2022-10-11 Apple Inc. Systems and methods for optimizing authentication branch instructions
FR3076923A1 (fr) * 2018-01-16 2019-07-19 Stmicroelectronics (Rousset) Sas Procede et circuit d'authentification
US11269986B2 (en) * 2018-10-26 2022-03-08 STMicroelectronics (Grand Ouest) SAS Method for authenticating a program and corresponding integrated circuit

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0825528A2 (fr) * 1996-08-23 1998-02-25 Matsushita Electric Industrial Co., Ltd. Processeur de signaux numériques
US20100070953A1 (en) * 2008-09-18 2010-03-18 Infineon Technologies Ag Compiler system and a method of compiling a source code into an encrypted machine language code

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ROBERT PHILIP LEE: "Schemes and Applications for Binding Hardware and Software in Computing Devices", 31 December 2018 (2018-12-31), XP055632559, Retrieved from the Internet <URL:https://pure.royalholloway.ac.uk/portal/files/33904810/2019LeeRPPhD.pdf> [retrieved on 20191015] *
WERNER MARIO ET AL: "Sponge-Based Control-Flow Protection for IoT Devices", 2018 IEEE EUROPEAN SYMPOSIUM ON SECURITY AND PRIVACY (EUROS&P), IEEE, 24 April 2018 (2018-04-24), pages 214 - 226, XP033373207, DOI: 10.1109/EUROSP.2018.00023 *

Also Published As

Publication number Publication date
US20220244961A1 (en) 2022-08-04
US11853765B2 (en) 2023-12-26
US20240103873A1 (en) 2024-03-28
US11379238B2 (en) 2022-07-05
FR3094513B1 (fr) 2023-07-14
US20200310805A1 (en) 2020-10-01

Similar Documents

Publication Publication Date Title
EP3716119A1 (fr) Procédé d&#39;authentification d&#39;un processeur
FR3094513A1 (fr) Procédé d&#39;authentification d&#39;un processeur
FR2635601A1 (fr) Processeur de donnees a fonctions multiples
CN102377988A (zh) 车辆信息显示装置和方法
EP2988243A1 (fr) Dispositif et procédé pour assurer des services de module de plateforme sécurisée
EP3008604A1 (fr) Pilote d&#39;interface micrologicielle extensible unifiee (uefi) et protocole
US9870200B2 (en) Decimal and binary floating point rounding
US7840622B2 (en) Method and floating point unit to convert a hexadecimal floating point number to a binary floating point number
JPH1196021A (ja) 数を表している二つの組の電気信号を比較する方法
EP4068128A1 (fr) Démarrage sécurisé d&#39;une unité de traitement
FR3101980A1 (fr) Processeur
EP0760119B1 (fr) Dispositif de mise en uvre numerique d&#39;une operation de division
EP0678807A1 (fr) Dispositif de calcul arithmétique et logique et procédé de commande
US6745318B1 (en) Method and apparatus of configurable processing
WO2016085679A1 (fr) Système et procédé pour gérer des pipelines dans des architectures de circuits intégrés reconfigurables
FR2804523A1 (fr) Procede et dispositif pour mettre en oeuvre deux architectures dans une puce
FR3101983A1 (fr) Détermination d&#39;un bit indicateur
US20030229659A1 (en) Bit exactness support in dual-MAC architecture
FR2805361A1 (fr) Procede d&#39;acquisition de parametres d&#39;arrondissement de fmac
US11080054B2 (en) Data processing apparatus and method for generating a status flag using predicate indicators
US20140136582A1 (en) Method and apparatus for digital automatic gain control
EP0947913A1 (fr) Procédé de réalisation amélioré d&#39;une division entière
EP4068680A1 (fr) Stockage sécurisé de clefs de chiffrement
US20220206747A1 (en) Efficient Dual-path Floating-Point Arithmetic Operators
KR100315303B1 (ko) 디지탈 신호 처리기

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20201002

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6