Brevet FR3101980A1 — publié le 20210416

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 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. 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. 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. 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. 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. 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). 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. 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é. 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). 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. Procédé selon la revendication 8, dans lequel le premier type de masquage n'utilise que des opérations arithmétiques. 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. 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. 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. 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). Processeur (100) adapté à mettre en oeuvre le procédé selon l'une quelconque des revendications 1 à 13.