Brevet FR3071082A1 (20190315)

REVENDICATIONS1. Procédé d'exécution d'un code binaire d'une fonction sécurisée par un 5 microprocesseur, ce procédé comportant : a) la fourniture (150) du code binaire, ce code binaire contenant : - une instruction arithmétique et logique comportant un opcode et un ou plusieurs opérandes qui, lorsqu'elle est exécutée par une unité arithmétique et logique du microprocesseur, provoque la réalisation de l'opération Di*D2*...*Dn et 10 l'enregistrement du résultat de cette opération dans un registre Rres, OÙ : - D1 à Dn sont des données enregistrées, respectivement, dans des registres R1 à Rn du microprocesseur, - les registres R1 à Rn sont les registres désignés par les opérandes de l'instruction arithmétique et logique, 15 - le symbole « * » est l'opération arithmétique et logique désignée par l'opcode de l'instruction arithmétique et logique, et - l'indice n est un entier supérieur ou égal à un, - pour chaque registre R1 à Rn, une instruction de chargement qui, lorsqu'elle est exécutée par le microprocesseur, provoque le chargement d'une donnée D, dans le 20 registre Ri, où l'indice i est un identifiant du registre R, parmi les registres R1 à Rn, b) caractérisé en ce que lors de l'exécution (152) du code binaire par le microprocesseur, le procédé comporte les opérations suivantes :\n<CLM>\1\tà chaque fois qu'une instruction de chargement d'une donnée D, dans le registre R, est exécutée par le microprocesseur, un module matériel de 25 sécurisation du microprocesseur calcule (202) un code C,,* à l'aide d'une relation C,,* = F*(D,), et la donnée chargée D, est enregistrée dans le registre R, et le code C,,* calculé est enregistré dans le même registre R, ou dans un registre associé au registre Ri, la fonction F. étant une fonction préprogrammée du module matériel de sécurisation, 30 - dans le cas où n est supérieur ou égal à deux, cette fonction F. étant un homomorphisme d'un ensemble A de nombres munis de l'opération « * » vers un ensemble B de nombres munis de l'opération « # », qui vérifie la relation : F*(Di * D2 * * Dn) = F*(Di) # F*(D2) # # F*(Dn) = Ci,* # C2,* # # Cn,*, - dans le cas où n est égal à un, cette fonction F* est telle que F*(Di) = 35 T*(F*(Di)), où la fonction T. est une fonction préprogrammée dans le module matériel de sécurisation,\n<CLM>\1\tl'exécution (190) par l'unité arithmétique et logique de l'instruction arithmétique et logique contenue dans le code binaire et l'enregistrement du résultat Dres-p de cette exécution dans le registre Rres, puis 40\n<CLM>\1\tle module matériel de sécurisation : 38 - calcule (210,\n<CLM>\1\tun code Cres_p à l'aide de la relation Cr'_p = F*(Dres-p) si n est supérieur à un et, sinon, à l'aide de la relation Cres_p =T*(Dres-p) si n est égal à un, et - calcule un code Cres_r (218,\n<CLM>\1\tà l'aide de la relation Cres_r = # 02* # # Cn,*, puis - compare (220) les codes Cr'-p et Cr'-t et déclenche (172) le signalement d'une faute d'exécution si le code Cr'-p ne correspond pas au code Cr'-t et, dans le cas contraire, inhibe ce signalement.\n<CLM>\1\tProcédé selon la revendication 1 dans lequel la fonction F* est choisie dans le 10 groupe constitué de : - une fonction qui calcule un code détecteur d'erreur permettant de détecter une erreur dans la donnée D, - une fonction logarithmique, - une fonction qui retourne un bit de parité qui indique si la donnée D, est paire ou 15 impaire.\n<CLM>\1\tProcédé selon l'une quelconque des revendications précédentes, dans laquelle l'opération « # » est choisie dans le groupe constitué des opérations suivantes : - l'opération arithmétique d'addition, 20 - l'opération arithmétique de soustraction, - l'opération arithmétique de multiplication, - l'opération arithmétique de division, - l'opération logique « OU », - l'opération logique « OU exclusif », 25 - l'opération logique « ET ».\n<CLM>\1\tProcédé selon l'une quelconque des revendications précédentes, dans lequel l'opération « # » est identique à l'opération « * ». 30\n<CLM>\1\tProcédé selon l'une quelconque des revendications précédentes, dans lequel l'opération « * » est choisie dans le groupe constitué des opérations suivantes : - l'opération arithmétique d'addition, - l'opération arithmétique de soustraction, - l'opération arithmétique de multiplication, 35 - l'opération arithmétique de division, - l'opération logique « OU », - l'opération logique « OU exclusif », - l'opération logique « ET », - l'opération arithmétique de décalage à droite des bits, 39 - l'opération arithmétique de décalage à gauche des bits.\n<CLM>\1\tMicroprocesseur pour l'exécution d'un procédé conforme à l'une quelconque des revendications précédentes, ce microprocesseur comportant : 5 - une unité arithmétique et logique (10) apte à exécuter l'opération\n<CLM>\1\tdu procédé conforme à la revendication 1, et - un module matériel (28) de sécurisation, caractérisé en ce que le module matériel (28) de sécurisation est configuré pour exécuter les opérations\n<CLM>\1\tet\n<CLM>\1\tdu procédé conforme à la revendication 1.