FR3101980A1 - Processeur - Google Patents

Processeur Download PDF

Info

Publication number
FR3101980A1
FR3101980A1 FR1911348A FR1911348A FR3101980A1 FR 3101980 A1 FR3101980 A1 FR 3101980A1 FR 1911348 A FR1911348 A FR 1911348A FR 1911348 A FR1911348 A FR 1911348A FR 3101980 A1 FR3101980 A1 FR 3101980A1
Authority
FR
France
Prior art keywords
data
masked
mask
circuit
masking
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
FR1911348A
Other languages
English (en)
Other versions
FR3101980B1 (fr
Inventor
Rene Peyrard
Fabrice Romain
Jean-Michel Derien
Christophe Eichwald
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
STMicroelectronics Grenoble 2 SAS
Original Assignee
STMicroelectronics Rousset SAS
STMicroelectronics Grenoble 2 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, STMicroelectronics Grenoble 2 SAS filed Critical STMicroelectronics Rousset SAS
Priority to FR1911348A priority Critical patent/FR3101980B1/fr
Priority to US17/038,774 priority patent/US11922133B2/en
Priority to CN202011079492.XA priority patent/CN112650471A/zh
Publication of FR3101980A1 publication Critical patent/FR3101980A1/fr
Application granted granted Critical
Publication of FR3101980B1 publication Critical patent/FR3101980B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/764Masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Image Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Advance Control (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

Processeur La présente description concerne un procédé de traitement de données masquées (Data_M, Data_S) par un processeur (100) comprenant une unité (104) arithmétique et logique, dans lequel lesdites données masquées (Data_M, Data_S) restent masquées pendant leur traitement dans ladite unité arithmétique et logique. Figure pour l'abrégé : Fig. 1

Description

Processeur
La présente description concerne de façon générale les systèmes et circuits électroniques, et, de façon plus particulière, les processeurs. La présente description traite plus précisément de processeurs adaptés à traiter des données masquées.
Un processeur est un composant électronique, présent dans de nombreux systèmes et circuits électroniques, qui est adapté à traiter des données en exécutant des commandes et des instructions de programmes informatiques.
Dans certains cas, un processeur peut avoir à traiter des données secrètes. Ces données secrètes sont généralement chiffrées, par exemple par masquage.
Il serait souhaitable de pouvoir améliorer, au moins en partie, certains aspects des processeurs connus.
Il existe un besoin dans la technique pour des processeurs plus fiables.
Il existe un besoin dans la technique pour des processeurs adaptés à traiter des données masquées.
Il existe un besoin dans la technique pour des processeurs adaptés à traiter des données masquées sans mettre en oeuvre d'opérations de démasquage de ces données masquées.
Un mode de réalisation pallie tout ou partie des inconvénients des processeurs connus.
Un mode de réalisation prévoit un procédé de traitement de données masquées par un processeur comprenant une unité arithmétique et logique, dans lequel lesdites données masquées restent masquées pendant leur traitement dans ladite unité arithmétique et logique.
Selon un mode de réalisation, le processeur comprend, en outre, une unité de génération d'adresses, dans laquelle lesdites données masquées restent masquées pendant leur traitement dans ladite unité de génération d'adresses.
Selon un mode de réalisation, le processeur comprend, en outre, des banques de registres, dans lesquelles lesdites données masquées sont stockées et restent masquées pendant tout leur stockage.
Selon un mode de réalisation, les banques de registres comprennent au moins une banque de registres pour lesdites données et au moins une banque de registres pour des masques desdites données.
Selon un mode de réalisation, le processeur comprend, en outre, des registres stockant des pointeurs masqués.
Selon un mode de réalisation, lesdits registres stockent au moins un pointeur de registre masqué et au moins un pointeur de programme masqué.
Selon un mode de réalisation, lesdits registres comprennent des pointeurs référençant des données, et des masques de pointeurs.
Selon un mode de réalisation, les données masquées peuvent être masquées selon un premier et un deuxième type de masquage.
Selon un mode de réalisation, le premier type de masquage n'utilise que des opérations arithmétiques.
Selon un mode de réalisation, une donnée masquée par le premier type de masquage est égale à l'addition d'une donnée à masquer et d'un masque.
Selon un mode de réalisation, le deuxième type de masquage n'utilise que des opérations logiques.
Selon un mode de réalisation, une donnée masquée par le deuxième type de masquage est égale à l'application de l'opération OU EXCLUSIF bit à bit entre la donnée à masquer et le masque.
Selon un mode de réalisation, l'unité arithmétique et logique comprend un circuit de masquage adapté à modifier le type de masquage desdites données masquées.
Un autre mode de réalisation prévoit un processeur adapté à mettre en oeuvre le procédé décrit précédemment.
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, schématiquement et sous forme de blocs, un mode de réalisation d'un processeur ;
la figure 2 représente, schématiquement et sous forme de blocs, un mode de réalisation d'une unité arithmétique et logique et de génération d'adresses du processeur de la figure 1 ;
la figure 3 représente un organigramme illustrant une opération de l'unité de la figure 2 ;
la figure 4 représente un organigramme illustrant une autre opération de l'unité de la figure 2 ;
la figure 5 représente, schématiquement et sous forme de blocs, un mode de réalisation d'un circuit logique d'addition ;
la figure 6 représente, schématiquement et sous forme de blocs, un autre mode de réalisation d'un circuit logique du calcul d'un complémentaire ;
la figure 7 représente, schématiquement et sous forme de blocs, un autre mode de réalisation d'un circuit logique de décalage de bit dans un mot binaire ;
la figure 8 représente, schématiquement et sous forme de blocs, un mode de réalisation d'un circuit logique de multiplication ;
la figure 9 représente, schématiquement et sous forme de blocs, un autre mode de réalisation d'un circuit logique de multiplication ;
la figure 10 représente, schématiquement et sous forme de blocs, un autre mode de réalisation d'un circuit logique de multiplication ;
la figure 11 représente, schématiquement et sous forme de blocs, un mode de réalisation d'un circuit logique de calcul d'un ET logique bit à bit ;
la figure 12 représente, schématiquement et sous forme de blocs, un mode de réalisation d'un circuit logique de calcul d'un OU logique bit à bit ; et
la figure 13 représente, schématiquement et sous forme de blocs, un mode de réalisation d'un circuit logique de calcul d'un OU EXCLUSIF logique bit à bit.
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. Le fonctionnement complet d'un processeur ne sera pas décrit ici, les modes de réalisation décrits ci-après étant compatibles avec la plupart des procédés de fonctionnement usuels d'un processeur.
Sauf précision contraire, lorsque l'on fait référence à deux éléments connectés entre eux, cela signifie directement connectés sans éléments intermédiaires autres que des conducteurs, et lorsque l'on fait référence à deux éléments reliés ou couplés entre eux, cela signifie que ces deux éléments peuvent être connectés ou être reliés ou couplés par l'intermédiaire d'un ou plusieurs autres éléments.
Dans la description qui suit, lorsque l'on fait référence à des qualificatifs de position absolue, tels que les termes "avant", "arrière", "haut", "bas", "gauche", "droite", etc., ou relative, tels que les termes "dessus", "dessous", "supérieur", "inférieur", etc., ou à des qualificatifs d'orientation, tels que les termes "horizontal", "vertical", etc., il est fait référence sauf précision contraire à l'orientation des figures.
Sauf précision contraire, les expressions "environ", "approximativement", "sensiblement", et "de l'ordre de" signifient à 10 % près, de préférence à 5 % près.
La figure 1 représente, schématiquement et sous forme de blocs, l'architecture d'un mode de réalisation d'un processeur 100 (CPU).
Le processeur 100 est un processeur adapté à traiter des données masquées et des instructions masquées. Plus particulièrement, le processeur 100 reçoit, en entrée, des données masquées Data_M, et leurs masques Mask_D, et des instructions masquées Instr_M, et leurs masques Mask_I. Le processeur fournit en sortie, des adresses masquées Add_M, et leurs masques Mask_A, des données de résultat masquées Result_M, et leur masques Mask_R, et, peut fournir également des données masquées Data_S qu'il stocke, et leurs masques Mask_S. Selon une variante de réalisation, le processeur 100 peut fournir, en sortie, des adresses directement démasquées.
Le processeur 100 est constitué de plusieurs circuits électroniques parmi les suivants :
- une banque de registres 101 (DATA REG) adaptée à stocker des données masquées ;
- une banque de registres 102 (MASK REG) adaptée à stocker des masques des données masquées stockées dans la banque de registre 101 ;
- un circuit 103 (INSTRUCTION DECODE EXECUTE) de décodage et d'exécution d'instructions  ;
- une unité 104 (ALU AGU) arithmétique et logique et de génération d'adresses ;
- des registres 105 (SP/PC DATA) adaptés à stocker des pointeurs de données et de programmes ; et
- des registres 106 (SP/PC MASK) adaptés à stocker des masques de pointeurs.
La banque de registres 101 reçoit, en entrée, les données masquées Data_M ou les résultats masqués Result_M, et fournit, en sortie, les données masquées Data_S. La banque de registres 101 est adaptée à stocker les données masquées Data_M et les résultats masqués Result_M pendant leur traitement par le processeur 100.
La banque de registres 102 reçoit, en entrée, les masques de données Mask_D et les masques de résultat Mask_R, et fournit, en sortie, les masques Mask_S. La banque de registres 102 est adaptée à stocker les masques de données Mask_D et les masques de résultat Mask_R pendant leur traitement par le processeur 100.
Le circuit 103 de décodage et d'exécution d'instructions reçoit, en entrée, les instructions masquées Instr_M et les masques d'instruction Mask_I, et fournit, en sortie, un code opératoire Opcode. Le code opératoire Opcode n'est pas masqué. Le circuit 103 démasque les instructions Instr_M pour déterminer le code opératoire Opcode.
L'unité 104 arithmétique et logique et de génération d'adresses reçoit, en entrée, les données masquées Data_S, les masques Mask_S, des pointeurs de données Point_D masqués, des masques de pointeurs Mask_P, et le code opératoire Opcode. L'unité 104 fournit, en sortie, les adresses masquées Add_M, les masques d'adresse Mask_A, les données de résultat masquées Result_M, et les masques de résultat Mask_R. L'unité 104 a deux fonctions. Une première fonction est celle d'exécuter le code opératoire Opcode en appliquant des opérations arithmétiques et/ou logiques aux données masquées Data_S et aux masques Mask_S pour fournir les données de résultat masquées Result_M et leurs masques Mask_R. Une deuxième fonction est celle d'exécuter le code opératoire Opcode pour calculer les adresses Add_M et leurs masques Mask_A. Selon une variante, l'unité 104 peut être constituée d'une unité arithmétique et logique et d'une unité de génération d'adresses.
Les registres 105 reçoivent, en entrée, les données de résultat masquées Result_M, et fournissent, en sortie les pointeurs de données Point_D masqués. Les registres 105 sont, par exemple, composés d'un registre stockant un pointeur de registre masqué, ou pointeur de pile (Stack Pointer, SP) masqué, et d'un autre registre stockant un pointeur de programme (Program pointer, PC) masqué. Le pointeur de pile est un pointeur qui référence l'adresse de la dernière donnée stockée dans un registre ou l'adresse de la prochaine donnée à stocker dans un registre. Le pointeur de programme est un pointeur référençant l'adresse du dernier code opératoire utilisé ou l'adresse du prochain code opératoire à utiliser. Dans le cas décrit ici, les pointeurs de données Point_D masqués sont composés d'un pointeur de registre masqué référençant l'adresse de la dernière donnée écrite en mémoire, et d'un pointeur de programme masqué référençant l'adresse du dernier code opératoire Opcode utilisé par l'unité 104.
Les registres 106 reçoivent, en entrée, les masques de résultat Mask_R, et fournissent, en sortie les masques de pointeurs Mask_P. Les registres 106 sont similaires aux registres 105 mais sont associés aux masques. Ainsi, les registres 106 sont, par exemple, composés d'un registre stockant un masque du pointeur de registre, et d'un autre registre stockant un masque de pointeur de programme. Dans le cas décrit ici, les masques de pointeurs Mask_P sont les masques des pointeurs de données Point_D masqués stockés dans les registres 105.
Un mode de fonctionnement du processeur 100 est le suivant. Le processeur 100 reçoit, en entrée, les instructions Instr_M et les données masquées à traiter Data_M, ainsi que leur masques Mask_I et Mask_M. Les instructions Instr_M sont démasquées puis converties pour fournir le code opératoire Opcode par le circuit 103. Les données masquées Data_M et leurs masques Mask_M sont stockés, respectivement dans les banques de registres 101 et 102. L'unité 104 reçoit le code opératoire Opcode et les données masquées à traiter Data_S, et leurs masques Mask_S, ainsi que les pointeurs de données Point_D masqués et leurs masques Mask_P. L'unité 104 effectue différentes opérations arithmétiques et/ou logiques pour fournir les données de résultat masquées Result_M, et leurs masques Mask_R, et les adresses Add_M, et leurs masques Mask_A. L'unité 104 effectue toutes ses opérations sans jamais effectuer d'opération de démasquage des données masquées qu'elles traitent. Autrement dit, les données masquées restent masquées pendant tout leur traitement par l'unité 104. Une unité 104 sera décrite plus en détails en relation avec la figure 2. Les données de résultat masquées Result_M peuvent être stockées dans la banque de registres de données 101, et sont utilisées pour obtenir les pointeurs de données Point_D masqués. Les masques de résultat Mask_R peuvent être stockés dans la banque de registres 102, et sont utilisés pour obtenir les masques de pointeurs Mask_P.
La figure 2 représente, schématiquement et sous forme de blocs, plus en détails un exemple d'une partie de l'architecture de l'unité 104 (ALU AGU) décrite en relation avec la figure 1. La partie décrite ici est adaptée à appliquer des opérations arithmétiques et/ou logiques aux données masquées Data_S et aux masques Mask_S fournis à l'unité 104.
L'unité 104 comprend :
- deux circuits de masquage 1041 et 1044 (TRANSMASKING) ;
- des circuits 1042 (ARITH OPERATIONS) adaptés à exécuter des opérations arithmétiques ; et
- des circuits 1043 (LOGIC OPERATIONS) adaptés à exécuter des opérations logiques.
Le circuit de masquage 1041 est un circuit adapté à modifier le type de masquage utilisé pour masquer les données masquées Data_S. En effet, les données masquées Data_S peuvent être masquées de deux façons différentes. Une première façon de masquer les données masquées Data_S est d'utiliser une ou plusieurs opérations arithmétiques pour combiner la donnée et son masque, et ainsi obtenir une donnée masquée. A titre d'exemple, les données masquées Data_S sont masquées en utilisant une opération d'addition, et plus particulièrement, en ajoutant, le masque à la donnée que l'on veut masquer. Une deuxième façon de masquer les données masquées Data_S est d'utiliser une ou plusieurs opérations logiques pour combiner la donnée et son masque, et ainsi obtenir une donnée masquée. A titre d'exemple, les données masquées Data_S sont masquées en utilisant une opération OU EXCLUSIF bit à bit, et plus particulièrement, en effectuant l'opération OU EXCLUSIF bit à bit entre la donnée et son masque.
Selon un mode de réalisation préféré, les données masquées stockées dans la banque de registres 101 présentent, de préférence, un même type de masquage. Selon un mode de réalisation, le type de masquage utilisé est le masquage arithmétique. A titre de variante, ces données masquées peuvent présenter des types de masquage différents.
Le circuit de masquage 1041 est tout particulièrement adapté à modifier le type de masquage utilisé pour adapter le type de masquage la donnée masquée Data_S en fonction des opérations qui lui seront appliquées par la suite. Plus précisément, le circuit 1041 est adapté à mettre en oeuvre deux opérations de conversion de masquage, une première opération permettant de convertir un masquage de type logique en un masquage de type arithmétique, et une deuxième opération permettant de convertir un masquage de type arithmétique en un masquage de type logique. Les deux opérations de conversion de masquage ne comprennent pas d'opération de démasquage des données masquées. Dans l'exemple décrit ici, les deux opérations de conversion de masquage ne modifient pas le masque utilisé, elles permettent seulement de modifier la donnée masquée. A titre de variante, les opérations de conversion de masquage pourraient modifier les masques associés aux données masquées. Des exemples d'opérations de conversion de masquage sont décrits en relation avec les figures 3 et 4. Ainsi, le circuit 1041 reçoit, en entrée, les données masquées Data_S et les masques Mask_S, et fournit en sortie des données masquées Data_A et leurs masques Mask_S, et des données masquées Data_L et leurs masques Mask_S. Les données masquées Data_A sont masquées par un masquage de type arithmétique. Les données masquées Data_L sont masquées par un masquage de type logique.
Le circuit de masquage 1044 est un circuit ayant des fonctions similaires aux circuits de 1041. Le circuit de masquage 1044 est différent du circuit 1041 en ce qu'il reçoit en entrée les données masquées, et leurs masques, en sortie des circuits 1042 et 1043. Le circuit de masquage 1044 permet d'adapter le type de masquage des données masquées qu'il reçoit pour le stockage futur des données masquées dans les registres de la banque de registres 101. Le circuit 1044 fournit en sortie, les données de résultat masquées Result_M et leurs masques Mask_R.
Il est à noter que si les données arrivant au niveau du circuit 1041, ou du circuit 1044, ont déjà le type de masquage correspondant aux opérations qui sont requises ensuite, les circuits 1041 et 1044 ne modifient par leur type de masquage.
Les circuits 1042 reçoivent, en entrée, les données masquées Data_A et leurs masques Mask_S, et fournissent, en sortie, des données de résultat masquées ResultA_M et leurs masques Mask_RA. Les circuits 1042 sont des circuits mettant en oeuvre des opérations arithmétiques telles que l'addition, le calcul d'un complémentaire, la multiplication, une opération de décalage (shift) de bit, etc. Des exemples de circuits permettant de mettre en oeuvre ces opérations sont décrits en relation avec les figures 5 à 10.
Les circuits 1043 reçoivent, en entrée, les données masquées Data_L et leurs masques Mask_S, et fournissent, en sortie, des données de résultat masquées ResultL_M et leurs masques Mask_RL. Les circuits 1043 sont des circuits mettant en oeuvre des opérations logiques telles que le ET bit à bit, le OU bit à bit, le OU EXCLUSIF (XOR) bit à bit, etc. Des exemples de circuits permettant de mettre en oeuvre ces opérations sont décrits en relation avec les figures 11 à 13.
Dans certains cas, des opérations logiques et des opérations arithmétiques peuvent être appliquées pour réaliser une même instruction, ainsi les données de résultat masquées ResultA_M et ResultL_M peuvent être réutilisées pendant un même cycle en étant renvoyées au circuit de masquage 1041 ou au circuit de masquage 1044 pour adapter leur type de masquage en fonction des opérations qui leur seront appliquées.
Les figures 3 et 4 sont des organigrammes illustrant des exemples d'opérations de conversion de masquage utilisées dans le circuit 1041 décrit en relation dans la figure 2.
Une donnée masquée A_M représente une donnée A masquée par le masque MA. Les données A et A_M et le masque MA sont tous des mots binaires comprenant n bits, n étant un entier naturel. A titre de variante, les données A, A_M et le masque MA sont des mots binaires de nombre de bits différents.
Dans les exemples des figures 3 et 4, le masquage arithmétique est un masquage de type additif dans lequel le masque est ajouté à la donnée à masquer. Plus particulièrement, une donnée masquée A_M est donnée par la formule suivante : dans lequel :
- "+" représente l'opération d'addition ; et
- "mod" représente l'opération modulo.
Le masquage logique est un masquage utilisant l'opération OU EXCLUSIF bit à bit. Plus particulièrement, la donnée masquée A_M est donnée par la formule suivante :
dans lequel "xor" représente l'opération OU EXCLUSIF bit à bit.
La figure 3 illustre une opération ArithToLogic de conversion de masquage d'une donnée masquée résultat d'une opération de masquage arithmétique en une donnée masquée résultant d'une opération de masquage logique.
Une donnée B_M représente une donnée B masquée par un masque MB avec une opération de masquage arithmétique. Les données B et B_M et le masque MB sont tous des mots binaires comprenant n bits, n étant un entier naturel.
L'opération ArithToLogic prend, en entrée, la donnée masquée B_M et son masque MB, et fournit, en sortie, la nouvelle donnée masquée B_M'. La donnée B_M représente la donnée B masquée par le masque MB avec une opération de masquage logique.
A une étape 21 (Comp), on calcule le complémentaire !B_M de la donnée masquée B_M. Cette étape ne nécessite pas l'utilisation de la donnée B, un exemple de circuit mettant en oeuvre cette opération est décrit en relation avec la figure 6.
A une étape 22 (Carry), on calcule une retenue CarryB à partir de la donnée masquée B_M et du masque MB. Plus particulièrement, la retenue CarryB est donnée par la formule suivante :
dans lequel :
- "i" est un entier naturel variant de 0 à n-1 ;
- "x[i]" représente le bit de rang i du mot binaire x ;
- "." représente l'opération logique ET bit à bit ; et
- "!x" représente le complémentaire du mot binaire x.
L'étape 22 ne nécessite pas l'utilisation de la donnée démasquée B. Des exemples de circuits adaptés à mettre en oeuvre les opérations utilisées par cette formule sont décrits en relation avec les figures 5 à 13. Les étapes 21 et 22 peuvent, à titre d'exemple, être réalisées simultanément.
A une étape 23 (XOR), on calcule la nouvelle donnée masquée B_M' en réalisant l'opération suivante :
Un exemple de circuit mettant en oeuvre l'opération OU EXCLUSIF bit à bit est décrit en relation avec la figure 13.
Un avantage de l'opération ArithToLogic est qu'elle n'utilise pas la donnée démasquée B pour convertir la donnée B_M en la donnée B_M'.
La figure 4 illustre une opération LogicToArith de conversion de masquage d'une donnée masquée avec un masquage logique en une donnée masquée avec un masquage arithmétique.
Une donnée C_M représente une donnée C masquée par le masque MC par une opération de masquage logique. Les données C et C_M et le masque MC sont tous des mots binaires comprenant n bits.
L'opération LogicToArith prend, en entrée, la donnée masquée C_M et un masque MC, et fournit, en sortie, la nouvelle donnée masquée C_M'. La donnée C_M' représente une donnée C masquée par le masque MC par une opération de masquage arithmétique.
A une étape 31 (Carry), on calcule une retenue CarryC à partir de la donnée masquée C_M et du masque MC. Plus particulièrement, la retenue CarryC est donnée par la formule suivante :
A une étape 32 (XOR), on calcule la nouvelle donnée masquée C_M' en réalisant, bit à bit, l'opération suivante :
Un avantage de l'opération LogicToArith est qu'elle n'utilise pas la donnée démasquée C pour convertir la donnée C_M en la donnée C_M'.
Les figures 5 à 10 représentent des exemples de circuits adaptés à mettre en oeuvre des opérations arithmétiques des circuits 1042 décrits en relation avec la figure 2.
Dans les exemples décrits dans ces figures, l'opération de masquage arithmétique est identique à celle décrite en relation avec les figures 3 et 4.
La figure 5 représente, schématiquement et sous forme de blocs, un circuit logique adapté à mettre en oeuvre une opération d'addition symbolisée par un bloc 41 (+).
Dans l'exemple représenté en figure 5, l'opération d'addition prend, en entrée, deux données masquées D_M et E_M, et leurs masques MD et ME, et fournit, en sortie, une donnée masquée F_M, et son masque MF. La donnée D_M, respectivement E_M, F_M, est le résultat du masquage arithmétique d'une donnée D, respectivement E, F, par le masque MD respectivement ME, MF. La donnée masquée F_M et le masque MF sont donnés par les relations suivantes :
A titre de variante, l'opération d'addition pourrait comprendre plus de données en entrée.
Un avantage de cette opération est que les données D et E ne sont pas nécessaires pour le calcul de la donnée masquée F_M.
La figure 6 représente, schématiquement et sous forme de blocs, un circuit logique 42 (Comp) adapté à mettre en oeuvre une opération de calcul d'un complémentaire à 1.
Dans l'exemple représenté en figure 6, l'opération de calcul de complémentaire à 1 comprend, en entrée, une donnée masquée G_M, et son masque MG, et fournit, en sortie, une donnée masquée H_M, et son masque MH. La donnée G_M, respectivement H_M, est le résultat du masquage arithmétique d'une donnée G, respectivement H, par le masque MG, respectivement MH. La donnée masquée H_M et le masque MH sont données par les relations suivantes 
Un avantage de cette opération est que la donnée G n'est pas nécessaire pour le calcul de la donnée masquée H_M.
Selon une variante de réalisation, la donnée masquée H_M et le masque MH sont donnés par les relations suivantes 
dans lequel – représente l'opération soustraction.
La figure 7 représente, schématiquement et sous forme de blocs un circuit logique 43 (Shift) adapté à mettre en oeuvre une opération de décalage de bits.
Dans l'exemple représenté en figure 7, l'opération de décalage de bits prend, en entrée, une donnée masquée I_M, et son masque MI, et fournit, en sortie, une donnée masquée J_M, et son masque MJ. La donnée I_M, respectivement J_M, est le résultat du masquage arithmétique d'une donnée I, respectivement J, par le masque MI, respectivement MJ. Les mots binaires I_M, J_M, I, J, MI, MJ sont, par exemple, des mots binaires de n bits, n étant un entier naturel. L'opération de décalage de bits prend, en outre, en entrée, un mot binaire SelectLR lui indiquant s'il l'opération effectuer est un décalage de bit vers la droite ou vers la gauche. La donnée masquée J_M et le masque MJ sont, dans le cas d'un décalage de bits à gauche, donnés par les relations suivantes :
dans lequel "*" représente l'opération de multiplication.
dans lesquelles, m est le décalage souhaité des bits de la donnée masquée en entrée, m étant un entier naturel inférieur ou égal à n.
Un avantage de cette opération est que la donnée I n'est pas nécessaire pour le calcul de la donnée masquée J_M.
Les figures 8 et 9 représentent, schématiquement et sous forme de blocs, des modes de réalisation de circuits logiques adaptés à mettre en oeuvre une opération de multiplication.
L'opération de multiplication prend en entrée, deux données masquées K_M et L_M et leurs masques respectifs MK et ML, et fournit en sortie une donnée masquée M_M et son masque MM. La donnée K_M, respectivement L_M, M_M est le résultat du masquage arithmétique d'une donnée K, respectivement L, M par le masque MK, respectivement ML, MM. Les mots binaires K_M, L_M, M_M, K, L, M, MK, ML, et MM sont des mots binaires de n bits, n étant un entier naturel. La donnée masquée M_M et le masque MM sont, par exemple, donnés par les formules suivantes :
D'autres expressions de la donnée masquée M_M et du masque MM peuvent être envisagées.
La figure 8 représente un circuit 51 mettant en oeuvre l'opération de multiplication. Le circuit 51 comprend :
- quatre circuits de multiplication 511, 512, 513 et 514 (X) ; et
- deux circuits d'addition 515 et 516 (+).
Le circuit de multiplication 511 reçoit, en entrée, la donnée masquée K_M et la donnée masquée L_M, et fournit en sortie la multiplication de ces données K_M*L_M.
Le circuit de multiplication 512 reçoit, en entrée, la donnée masquée K_M et le masque ML, et fournit, en sortie, le résultat K_M*ML de cette multiplication.
Le circuit de multiplication 513 reçoit, en entrée, la donnée masquée L_M et le masque MK, et fournit, en sortie, le résultat L_M*MK de cette multiplication.
Le circuit de multiplication 514 reçoit, en entrée, le masque MK et le masque ML, et fournit, en sortie, le résultat MK*ML de cette multiplication.
Le circuit d'addition 515 reçoit, en entrée, le résultat K_M*L_M de la multiplication du circuit 511 et le résultat MK*ML de la multiplication du circuit 514, et fournit, en sortie, la donnée masquée M_M.
Le circuit d'addition 516 reçoit, en entrée, le résultat K_M*ML de la multiplication du circuit 512 et le résultat L_M*MK de la multiplication du circuit 513, et fournit, en sortie, le masque MM.
Un avantage du circuit 51 est qu'il n'utilise pas les données démasquées K et L pour calculer la donnée masquée M_M et son masque MM.
Un autre avantage du circuit 51 est qu'il permet de mettre en oeuvre une opération de multiplication de deux données masquées en un seul cycle d'horloge.
La figure 9 représente un circuit 52 mettant en oeuvre l'opération de multiplication. Le circuit 52 comprend :
- trois sélecteurs 521, 522 et 523 ;
- un circuit de multiplication 524 (X) ;
- un circuit d'addition 525 (+) ;
- un circuit aiguilleur 526 ; et
- un registre 527 (REG).
Le sélecteur 521 reçoit, en entrée, la donnée masquée K_M et le masque MK, et fournit, en sortie, un premier mot binaire select1.
Le sélecteur 522 reçoit, en entrée, la donnée masquée L_M et le masque ML, et fournit, en sortie, un deuxième mot binaire select2.
Le circuit de multiplication 524 reçoit, en entrée, les deux mots binaires select1 et select2, et fournit, en sortie, le résultat Prod de cette multiplication.
Le sélecteur 523 reçoit, en entrée, le mot binaire correspondant à zéro (0), appelée ensuite donnée nulle, et une donnée de temporisation Temp, et fournit, en sortie, un troisième mot binaire select3.
Le circuit d'addition 525 reçoit, en entrée, le résultat Prod de la multiplication et le mot binaire select3, et fournit, en sortie, le résultat Sum de cette addition.
Le circuit aiguilleur 526 reçoit, en entrée, le résultat Sum du circuit d'addition 525, et utilise, en sortie, ce résultat Sum pour former soit la donnée masquée M_M, le masque MM ou la donnée de temporisation Temp.
Le registre 527 reçoit, en entrée, la donnée de temporisation Temp, et fournit, en sortie, cette même donnée de temporisation Temp. Le registre 527 permet de stocker la donnée de temporisation Temp entre les différents cycles de l'opération.
Le circuit 52 permet de réaliser l'opération de multiplication en utilisant quatre cycles d'horloge. Des exemples d'étapes de calculs utilisés pendant les quatre cycles d'horloge sont les suivants.
A un premier cycle d'horloge, le sélecteur 521 sélectionne la donnée masquée K_M, et le mot binaire select1 est alors égal à la donnée masquée K_M. Le sélecteur 522 sélectionne la donnée masquée L_M, et le mot binaire select2 est alors égal à la donnée masquée L_M. Le circuit de multiplication 524 fournit le résultat Prod du produit des mots binaires select1 et select2. Le résultat Prod est alors égal au produit de la donnée masquée K_M par la donnée masquée L_M. Le sélecteur 523 sélectionne la donnée nulle, et le mot binaire select3 est alors égal à la donnée nulle. Le circuit d'addition 525 fournit le résultat Sum de la somme du produit Prod et du mot binaire select3. Le résultat Sum est alors égal au produit de la donnée masquée K_M par la donnée masquée L_M. Le circuit aiguilleur 526 fournit le résultat Sum à la donnée de temporisation Temp pour la stocker dans le registre 527.
A un deuxième cycle d'horloge, le sélecteur 521 sélectionne le masque MK, et le mot binaire select1 est alors égal au masque MK. Le sélecteur 522 sélectionne le masque ML, et le mot binaire select2 est alors égal au masque ML. Le circuit de multiplication 524 fournit le résultat Prod du produit des mots binaires select1 et select2. Le résultat Prod est alors égal au produit du masque MK et du masque ML. Le sélecteur 523 sélectionne la donnée de temporisation Temp à partir du registre 527, et le mot binaire select3 est alors égal à la donnée de temporisation Temp. Le circuit d'addition 525 fournit le résultat Sum de la somme du produit Prod et du mot binaire select3. Le résultat Sum est alors égal à :
Le circuit aiguilleur 526 fournit le résultat Sum à la donnée masquée M_M.
A un troisième cycle d'horloge, le sélecteur 521 sélectionne la donnée masquée K_M, et le mot binaire select1 est alors égal à la donnée masquée K_M. Le sélecteur 522 sélectionne le masque ML, et le mot binaire select2 est alors égal au masque ML. Le circuit de multiplication 524 fournit le résultat Prod du produit des mots binaires select1 et select2. Le résultat Prod est alors égal au produit de la donnée masquée K_M par le masque ML. Le sélecteur 523 sélectionne la donnée nulle, et le mot binaire select3 est alors égal à la donnée nulle. Le circuit d'addition 525 fournit le résultat Sum de la somme du produit Prod et du mot binaire select3. Le résultat Sum est alors égal au produit de la donnée masquée K_M par le masque ML. Le circuit aiguilleur 526 fournit le résultat Sum à la donnée de temporisation Temp pour la stocker dans le registre 527.
A un quatrième cycle d'horloge, le sélecteur 521 sélectionne la donnée masquée L_M, et le mot binaire select1 est alors égal à la donnée masquée L_M. Le sélecteur 522 sélectionne le masque MK, et le mot binaire select2 est alors égal au masque MK. Le circuit de multiplication 524 fournit le résultat Prod du produit des mots binaires select1 et select2. Le résultat Prod est alors égal au produit de la donnée masquée L_M et du masque MK. Le sélecteur 523 sélectionne la donnée de temporisation Temp, et le mot binaire select3 est alors égal à la donnée de temporisation Temp. Le circuit d'addition 525 fournit le résultat Sum de la somme du produit Prod et du mot binaire select3. Le résultat Sum est alors égal à :
Le circuit aiguilleur 526 fournit le résultat Sum au masque MM.
Un avantage du circuit 52 est qu'il permet de mettre en oeuvre une opération de multiplication en utilisant un seul circuit de multiplication et un seul circuit d'addition. Le circuit 52 peut alors présenter un encombrement moindre.
La figure 10 représente, schématiquement et sous forme de blocs, un mode de réalisation d'un circuit logique adapté à mettre en oeuvre une opération de multiplication avec accumulation (Multiply ACcumulate operation, MAC). La figure 10 représente plus particulièrement un circuit 53.
L'opération de multiplication avec accumulation prend en entrée, les deux données masquées K_M et L_M et leurs masques respectifs MK et ML, et une donnée masquée N_M et son masque MN. L'opération fournit en sortie la donnée masquée M_M et son masque MM. La donnée N_M est le résultat du masquage arithmétique d'une donnée N, par le masque MN. Les mots binaires N_M, N et MN sont des mots binaires de n bits, n étant un entier naturel. L'opération de multiplication avec accumulation est définie par la formule suivante :
La donnée M_M et le masque MM sont donnés par les formules suivantes :
D'autres expressions de la donnée masquée M_M et du masque MM pourront être envisagées.
Le circuit 53 de la figure 10 comprend des éléments communs avec le circuit 52 de la figure 9. Dans la suite, ces éléments communs ne seront pas détaillés à nouveau, et seules les différences entre les deux circuits 52 et 53 seront mises en exergue. Le circuit 52 comprend :
- quatre sélecteurs 521, 522, 523, et 531 ;
- le circuit de multiplication 524 ;
- le circuit d'addition 525 ;
- le circuit aiguilleur 526 ; et
- le registre 527.
La différence entre le circuit 53 et le circuit 52, est que, dans le circuit 53, le sélecteur 523 reçoit, non pas la donnée nulle, mais un mot binaire select4 et la donnée de temporisation Temp.
Le mot binaire select4 est une sortie du sélecteur 531. Le sélecteur 531 reçoit, en entrée, la donnée masquée N_M et son masque MN.
Le circuit 53 permet de réaliser l'opération de multiplication avec accumulation en utilisant quatre cycles d'horloge. Des exemples d'étapes de calculs utilisés pendant les quatre cycles d'horloge sont les suivants.
A un premier cycle d'horloge, le sélecteur 521 sélectionne la donnée masquée K_M, et le mot binaire select1 est alors égal à la donnée masquée K_M. Le sélecteur 522 sélectionne la donnée masquée L_M, et le mot binaire select2 est alors égal à la donnée masquée L_M. Le circuit de multiplication 524 fournit le résultat Prod du produit des mots binaires select1 et select2. Le résultat Prod est alors égal au produit de la donnée masquée K_M par la donnée masquée L_M. Le sélecteur 531 sélectionne la donnée masquée N_M, et le mot binaire select4 est alors égal à la donnée masquée N_M. Le sélecteur 523 sélectionne le mot binaire select4, et le mot binaire select3 est alors égal à la donnée masquée N_M. Le circuit d'addition 525 fournit le résultat Sum de la somme du produit Prod et du mot binaire select3. Le résultat Sum est alors donnée par la formule suivante :
Le circuit aiguilleur 526 fournit le résultat Sum à la donnée de temporisation Temp en le stockant dans le registre 527.
A un deuxième cycle d'horloge, le sélecteur 521 sélectionne le masque MK, et le mot binaire select1 est alors égal au masque MK. Le sélecteur 522 sélectionne le masque ML, et le mot binaire select2 est alors égal au masque ML. Le circuit de multiplication 524 fournit le résultat Prod du produit des mots binaires select1 et select2. Le résultat Prod est alors égal au produit du masque MK et du masque ML. Le sélecteur 523 sélectionne la donnée de temporisation Temp stockée dans le registre 527, et le mot binaire select3 est alors égal à la donnée de temporisation Temp. Le circuit d'addition 525 fournit le résultat Sum de la somme du produit Prod et du mot binaire select3. Le résultat Sum est alors égal à :
Le circuit aiguilleur 526 fournit le résultat Sum à la donnée masquée M_M.
A un troisième cycle d'horloge, le sélecteur 521 sélectionne la donnée masquée K_M, et le mot binaire select1 est alors égal à la donnée masquée K_M. Le sélecteur 522 sélectionne le masque ML, et le mot binaire select2 est alors égal au masque ML. Le circuit de multiplication 524 fournit le résultat Prod du produit des mots binaires select1 et select2. Le résultat Prod est alors égal au produit de la donnée masquée K_M par le masque ML. Le sélecteur 531 sélectionne le masque MN, et le mot binaire select4 est alors égal au masque MN. Le sélecteur 523 sélectionne le mot binaire select4, et le mot binaire select3 est alors égal au masque MN. Le circuit d'addition 525 fournit le résultat Sum de la somme du produit Prod et du mot binaire select3. Le résultat Sum est alors égal à :
Le circuit aiguilleur 526 fournit le résultat Sum à la donnée de temporisation Temp.
A un quatrième cycle d'horloge, le sélecteur 521 sélectionne la donnée masquée L_M, et le mot binaire select1 est alors égal à la donnée masquée L_M. Le sélecteur 522 sélectionne le masque MK, et le mot binaire select2 est alors égal au masque MK. Le circuit de multiplication 524 fournit le résultat Prod du produit des mots binaires select1 et select2. Le résultat Prod est alors égal au produit de la donnée masquée L_M et du masque MK. Le sélecteur 523 sélectionne la donnée de temporisation Temp, et le mot binaire select3 est alors égal à la donnée de temporisation Temp. Le circuit d'addition 525 fournit le résultat Sum de la somme du produit Prod et du mot binaire select3. Le résultat Sum est alors égal à :
Le circuit aiguilleur 526 fournit le résultat Sum au masque MM.
A titre de variante, le sélecteur 523 pourrait recevoir, en outre, la donnée nulle, pour pouvoir réaliser une opération de multiplication comme celle décrite en relation avec la figure 9.
Un avantage du circuit 53 est qu'il permet de mettre en oeuvre une opération de multiplication avec accumulation en utilisant un seul circuit de multiplication et un seul circuit d'addition. Le circuit 53 peut alors présenter un encombrement moindre.
Un autre avantage du circuit 53 est qu'il permet de réaliser une opération de multiplication avec accumulation sans utiliser les données démasquées K, L et N.
Les figures 11 à 13 représentent des exemples de circuits adaptés à mettre en oeuvre des opérations logiques des circuits 1043 décrits en relation avec la figure 2.
Dans les exemples décrits dans ces figures, l'opération de masquage logique est identique à celle décrite en relation avec les figures 3 et 4.
La figure 11 représente, schématiquement et sous forme de blocs, un circuit logique 61 (OR) adapté à mettre en oeuvre une opération logique OU bit à bit.
Dans l'exemple représenté en figure 11, l'opération logique OU bit à bit prend, en entrée, deux données masquées O_M et P_M, et leurs masques respectifs MO et MP, et fournit, en sortie, une donnée masquée Q_M et son masque MQ. La donnée masquée O_M, respectivement P_M, Q_M, est le résultat du masquage logique d'une donnée O, respectivement P, Q, par un masque MO, respectivement MP, MQ. La donnée masquée Q_M et son masque MQ sont donnés par les relations, exécutés bit à bit, suivantes :
dans lequel "or" désigne l'opération logique OU bit à bit.
Le circuit 61 peut être mis en oeuvre en utilisant, par exemple, une porte OU à quatre entrées, et quatre portes ET à trois entrées.
Un avantage du circuit 61 est qu'il n'utilise pas les données démasquées O et P pour calculer la donnée masquée Q_M.
La figure 12 représente, schématiquement et sous forme de blocs, un circuit logique 62 (AND) adapté à mettre en oeuvre une opération logique ET bit à bit.
Dans l'exemple représenté en figure 12, l'opération logique ET bit à bit prend, en entrée, deux données masquées R_M et S_M, et leurs masques respectifs MR et MS, et fournit, en sortie, une donnée masquée T_M et son masque MT. La donnée masquée R_M, respectivement S_M, T_M, est le résultat du masquage logique d'une donnée R, respectivement S, T, par un masque MR, respectivement MS, MT. La donnée masquée T_M et son masque MT sont donnés par les relations suivantes :
Le circuit 62 peut être mis en oeuvre en utilisant, par exemple, une porte OU à quatre entrées, et quatre portes ET à trois entrées. A titre d'exemple, les circuits 61 et 62 des figures 11 et 12 peuvent être mis en oeuvre par des circuits similaires.
Un avantage du circuit 62 est qu'il n'utilise pas les données démasquées R et S pour calculer la donnée masquée T_M.
La figure 13 représente, schématiquement et sous forme de blocs, un circuit logique 63 (XOR) adapté à mettre en oeuvre une opération logique OU EXCLUSIF bit à bit.
Dans l'exemple représenté en figure 13, l'opération logique OU EXCLUSIF bit à bit prend, en entrée, deux données masquées U_M et V_M, et leurs masques MU et MV et fournit, en sortie, une donnée masquée W_M, et son masque MW. La donnée masquée U_M, respectivement V_M, W_M, est le résultat du masquage logique d'une donnée U, respectivement V, W, par un masque MU, respectivement MV, MW. La donnée masquée W_M et son masque MW sont donnés par les relations suivantes :
Un avantage du circuit 62 est qu'il n'utilise pas les données démasquées U et V pour calculer la donnée masquée W_M.
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. En particulier, d'autres opérations arithmétiques et logiques pourront être envisagées. De plus, les exemples de masquage logique et arithmétique évoqués dans la description ne sont que des exemples, d'autres opérations de masquage pourront être envisagées.
De plus, un autre exemple d'une partie de l'architecture de l'unité arithmétique et logique 104 pourrait être de comprendre un premier circuit de masquage devant les circuits mettant en oeuvre des opérations logiques et un deuxième circuit de masquage devant les circuits mettant en oeuvre les opérations arithmétiques, chaque circuit de masquage permettant d'adapter le type de masquage avant l'opération demandée.
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 (14)

  1. Procédé de traitement de données masquées (Data_M, Data_S) par un processeur (100) comprenant une unité (104) arithmétique et logique, dans lequel lesdites données masquées (Data_M, Data_S) restent masquées pendant leur traitement dans ladite unité arithmétique et logique.
  2. Procédé selon la revendication 1, dans lequel le processeur (100) comprend, en outre, une unité (104) de génération d'adresses, dans laquelle lesdites données masquées (Data_M, Data_S) restent masquées pendant leur traitement dans ladite unité de génération d'adresses.
  3. Procédé selon la revendication 1 ou 2, dans lequel le processeur (100) comprend, en outre, des banques de registres (101, 102), dans lesquelles lesdites données masquées (Data_M, Data_S) sont stockées et restent masquées pendant tout leur stockage.
  4. Procédé selon la revendication 3, dans lequel les banques de registres (101, 102) comprennent au moins une banque de registres (101) pour lesdites données (Data_M, Data_S) et au moins une banque de registres (102) pour des masques desdites données (Mask_D, Mask_S).
  5. Procédé selon l'une quelconque des revendications 1 à 4, dans lequel le processeur (100) comprend, en outre, des registres (105, 106) stockant des pointeurs masqués.
  6. Procédé selon la revendication 5, dans lequel lesdits registres (105, 106) stockent au moins un pointeur de registre masqué et au moins un pointeur de programme masqué.
  7. Procédé selon la revendication 5 ou 6, dans lequel lesdits registres (105, 106) comprennent des pointeurs (Point_D) référençant des données, et des masques de pointeurs (Mask_P).
  8. Procédé selon l'une quelconque des revendications 1 à 7, dans lequel les données masquées (Data_M, Data_S) peuvent être masquées selon un premier et un deuxième type de masquage.
  9. Procédé selon la revendication 8, dans lequel le premier type de masquage n'utilise que des opérations arithmétiques.
  10. Procédé selon la revendication 9, dans lequel une donnée masquée par le premier type de masquage est égale à l'addition d'une donnée à masquer et d'un masque.
  11. Procédé selon l'une quelconque des revendications 8 à 10, dans lequel le deuxième type de masquage n'utilise que des opérations logiques.
  12. Procédé selon la revendication 11, dans lequel une donnée masquée par le deuxième type de masquage est égale à l'application de l'opération OU EXCLUSIF bit à bit entre la donnée à masquer et le masque.
  13. Procédé selon l'une quelconque des revendications 8 à 12, dans lequel l'unité (104) arithmétique et logique comprend un circuit de masquage (1041) adapté à modifier le type de masquage desdites données masquées (Data_M, Data_S).
  14. Processeur (100) adapté à mettre en oeuvre le procédé selon l'une quelconque des revendications 1 à 13.
FR1911348A 2019-10-11 2019-10-11 Processeur Active FR3101980B1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
FR1911348A FR3101980B1 (fr) 2019-10-11 2019-10-11 Processeur
US17/038,774 US11922133B2 (en) 2019-10-11 2020-09-30 Processor and method for processing mask data
CN202011079492.XA CN112650471A (zh) 2019-10-11 2020-10-10 用于处理掩蔽数据的处理器和方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1911348A FR3101980B1 (fr) 2019-10-11 2019-10-11 Processeur
FR1911348 2019-10-11

Publications (2)

Publication Number Publication Date
FR3101980A1 true FR3101980A1 (fr) 2021-04-16
FR3101980B1 FR3101980B1 (fr) 2021-12-10

Family

ID=69810935

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1911348A Active FR3101980B1 (fr) 2019-10-11 2019-10-11 Processeur

Country Status (3)

Country Link
US (1) US11922133B2 (fr)
CN (1) CN112650471A (fr)
FR (1) FR3101980B1 (fr)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3101983B1 (fr) 2019-10-11 2021-11-12 St Microelectronics Grenoble 2 Détermination d'un bit indicateur
FR3101982B1 (fr) 2019-10-11 2024-03-08 St Microelectronics Grenoble 2 Détermination d'un bit indicateur
FR3129011B1 (fr) * 2021-11-10 2023-11-10 St Microelectronics Rousset Multiplication

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080040414A1 (en) * 2006-08-09 2008-02-14 Infineon Technologies Ag Standard cell for arithmetic logic unit and chip card controller
US20150278555A1 (en) * 2014-03-31 2015-10-01 Stmicroelectronics S.R.L. Method for performing an encryption with look-up tables, and corresponding encryption apparatus and computer program product

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173393B1 (en) 1998-03-31 2001-01-09 Intel Corporation System for writing select non-contiguous bytes of data with single instruction having operand identifying byte mask corresponding to respective blocks of packed data
FR2820914A1 (fr) 2001-02-15 2002-08-16 Bull Cp8 Procede de securisation d'un ensemble electronique mettant en oeuvre en algorithme cryptographique utilisant des operations booleennes et des operations arithmetiques, et systeme embarque correspondant
US20040254966A1 (en) 2003-05-16 2004-12-16 Daewoo Educational Foundation Bit manipulation operation circuit and method in programmable processor
US8156343B2 (en) 2003-11-26 2012-04-10 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
US7370180B2 (en) 2004-03-08 2008-05-06 Arm Limited Bit field extraction with sign or zero extend
EP1836554B1 (fr) * 2004-12-01 2008-04-16 Telecom Italia S.p.A. Procede et dispositif de conversion orientee materiel entre un masquage aleatoire arithmetique et booleen
JP4783104B2 (ja) * 2005-09-29 2011-09-28 株式会社東芝 暗号化/復号装置
US20100281092A1 (en) 2006-08-09 2010-11-04 Thomas Kuenemund Standard cell for arithmetic logic unit and chip card controller
KR101566408B1 (ko) 2009-03-13 2015-11-05 삼성전자주식회사 불 마스크와 산술 마스크의 변환 회로 및 변환 방법
US8392494B2 (en) 2009-06-26 2013-03-05 Intel Corporation Method and apparatus for performing efficient side-channel attack resistant reduction using montgomery or barrett reduction
WO2012127572A1 (fr) 2011-03-18 2012-09-27 富士通株式会社 Procédé, programme et dispositif de traitement de données secrètes
CN105955704B (zh) 2011-11-30 2018-12-04 英特尔公司 用于提供向量横向比较功能的指令和逻辑
CN104115114B (zh) 2011-12-23 2018-06-12 英特尔公司 经改进的提取指令的装置和方法
US9542154B2 (en) 2013-06-25 2017-01-10 Intel Corporation Fused multiply add operations using bit masks
EP2884387B1 (fr) 2013-12-13 2016-09-14 Thomson Licensing Ajout modulaire efficace résistant aux attaques par canaux auxiliaires
EP3001307B1 (fr) 2014-09-25 2019-11-13 Intel Corporation Processeurs, procédés, systèmes et instructions de mélange binaire
CN108604987B (zh) 2016-03-03 2022-03-29 密码研究公司 将布尔掩码值转换为用于加密操作的算术掩码值
JP7272363B2 (ja) 2017-08-30 2023-05-12 インファー,インク. 高精度プライバシ保護実数値関数評価
EP3503460A1 (fr) 2017-12-22 2019-06-26 Secure-IC SAS Système et procédé d'addition arithmétique de données avec masque booléen
EP3557813A1 (fr) * 2018-04-17 2019-10-23 Gemalto Sa Procédé protégé contre les attaques par canaux auxiliaires effectuant une opération arithmétique d'un algorithme cryptographique mélangeant des opérations booléennes et arithmétiques
DE102018113475A1 (de) * 2018-06-06 2019-12-12 Infineon Technologies Ag Rechenwerk zum rechnen mit maskierten daten
CN109255967B (zh) 2018-09-12 2022-04-22 三星电子(中国)研发中心 用于发布信息的方法和装置
US11507699B2 (en) * 2019-09-27 2022-11-22 Intel Corporation Processor with private pipeline
FR3101981B1 (fr) 2019-10-11 2021-11-12 St Microelectronics Grenoble 2 Extraction et insertion de mots binaires
FR3101982B1 (fr) 2019-10-11 2024-03-08 St Microelectronics Grenoble 2 Détermination d'un bit indicateur
FR3101983B1 (fr) 2019-10-11 2021-11-12 St Microelectronics Grenoble 2 Détermination d'un bit indicateur

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080040414A1 (en) * 2006-08-09 2008-02-14 Infineon Technologies Ag Standard cell for arithmetic logic unit and chip card controller
US20150278555A1 (en) * 2014-03-31 2015-10-01 Stmicroelectronics S.R.L. Method for performing an encryption with look-up tables, and corresponding encryption apparatus and computer program product

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ELKE DE MULDER ET AL: "Protecting RISC-V against Side-Channel Attacks", 20190602; 20190602 - 20190606, 2 June 2019 (2019-06-02), pages 1 - 4, XP058435200, ISBN: 978-1-4503-6725-7, DOI: 10.1145/3316781.3323485 *
GOUBIN L ED - KOC C K ET AL: "A SOUND METHOD FOR SWITCHING BETWEEN BOOLEAN AND ARITHMETIC MASKING", CRYPTOGRAPHIC HARDWARE AND EMBEDDED SYSTEMS. 3RD INTERNATIONAL WORKSHOP, CHES 2001, PARIS, FRANCCE, MAY 14 - 16, 2001 PROCEEDINGS; [LECTURE NOTES IN COMPUTER SCIENCE], BERLIN : SPRINGER, DE, vol. VOL. 2162, 14 May 2001 (2001-05-14), pages 3 - 15, XP001061156, ISBN: 978-3-540-42521-2 *
NAKATSU DAISUKE ET AL: "Combination of SW Countermeasure and CPU Modification on FPGA against Power Analysis", 24 August 2010, INTERNATIONAL CONFERENCE ON FINANCIAL CRYPTOGRAPHY AND DATA SECURITY; [LECTURE NOTES IN COMPUTER SCIENCE; LECT.NOTES COMPUTER], SPRINGER, BERLIN, HEIDELBERG, PAGE(S) 258 - 272, ISBN: 978-3-642-17318-9, XP047428751 *

Also Published As

Publication number Publication date
CN112650471A (zh) 2021-04-13
FR3101980B1 (fr) 2021-12-10
US11922133B2 (en) 2024-03-05
US20210109711A1 (en) 2021-04-15

Similar Documents

Publication Publication Date Title
FR3101980A1 (fr) Processeur
EP2490144B1 (fr) Circuit intégré programmable de cryptographie
US6601077B1 (en) DSP unit for multi-level global accumulation
US8271571B2 (en) Microprocessor
EP0712072B1 (fr) Procédé de mise en oeuvre de réduction modulaire selon la méthode de Montgomery
EP3660849A1 (fr) Circuit mémoire adapté à mettre en oeuvre des opérations de calcul
FR2726667A1 (fr) Procede de mise en oeuvre de multiplication modulaire selon la methode montgomery
EP1368747B1 (fr) Procede et dispositif pour reduire le temps de calcul d'un produit, d'une multiplication et d'une exponentiation modulaire selon la methode de montgomery
EP0692762B1 (fr) Circuit logique de multiplication parallèle
KR20190024701A (ko) 동시 멀티 비트 가산기
EP2000904A1 (fr) Procédé de multiplication modulaire de Montgomery masquée et dispositif associé
EP3803636B1 (fr) Processeur ntt incluant une pluralite de bancs de memoires
FR2849512A1 (fr) Multiplieur modulaire de montgomery et procede de multiplication correspondant
EP0793165B1 (fr) Coprocesseur d'arithmétique modulaire permettant de réaliser rapidement des opération non modulaires
FR2678400A1 (fr) Processeur de protocole destine a l'execution d'un ensemble d'instructions en un nombre reduit d'operation.
FR3101982A1 (fr) Détermination d'un bit indicateur
FR3101983A1 (fr) Détermination d'un bit indicateur
EP0319421B1 (fr) Comparateur binaire et opérateur de tri de nombres binaires
US7590235B2 (en) Reduction calculations in elliptic curve cryptography
EP0947913B1 (fr) Procédé de réalisation amélioré d'une division entière
EP0778518B1 (fr) Procédé de production d'un paramètre J0 associé à la mise en oeuvre d'opérations modulaires selon la méthode de Montgomery
FR2805361A1 (fr) Procede d'acquisition de parametres d'arrondissement de fmac
US6941448B2 (en) Data-driven processor having multiple-precision data processing function and data processing method thereof
CN103970503B (zh) 能够支持加法和减法的加法器和支持加法和减法的方法
US9250898B2 (en) VLIW processor, instruction structure, and instruction execution method

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20210416

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5