Brevet FR3071122A1 (20190315)

REVENDICATIONS1. Procédé d'exécution d'un code binaire d'une fonction sécurisée par un 5 microprocesseur, caractérisé en ce que ce procédé comporte : a) l'enregistrement (150) dans une mémoire principale à une adresse ©- d'une ligne de code, cette ligne de code contenant : - une donnée D, à traiter par le microprocesseur ou un cryptogramme de cette donnée D,, et 10 - un premier code détecteur d'erreur (ECCD,, MAC,, ECCE;) permettant de détecter une erreur dans la donnée D, ou dans son cryptogramme si cette donnée D, ou son cryptogramme est modifié après son enregistrement dans la mémoire principale, au moins l'un de la donnée D,, de son cryptogramme et du premier code détecteur d'erreur étant chiffré en fonction d'un vecteur d'initialisation iv,, ce vecteur 15 d'initialisation iv, variant en fonction de l'adresse © à laquelle la ligne de code est enregistrée selon une relation iv, = F,,(©), où la fonction F,, est une fonction préprogrammée d'un module matériel de sécurisation du microprocesseur qui associe un vecteur d'initialisation iv; différent à chaque adresse © différente de la mémoire principale, 20 b) lors de l'exécution (152) du code binaire par le microprocesseur, le procédé comporte les opérations suivantes :\n<CLM>\1\tl'exécution d'une instruction de chargement par le microprocesseur qui provoque le chargement dans les registres du microprocesseur de la ligne de code enregistrée à l'adresse ©, puis 25\n<CLM>\1\tle module matériel de sécurisation calcule (278) le vecteur d'initialisation iv, à l'aide de la relation iv, = F,'(©), où © est l'adresse à partir de laquelle la ligne de code a été chargée, puis\n<CLM>\1\tle module matériel de sécurisation déchiffre (278) la ligne de code chargée à l'aide du vecteur d'initialisation iv, calculé pour obtenir : 30 - la donnée D, ou son cryptogramme, et - le premier code détecteur d'erreur, puis\n<CLM>\1\tle module matériel de sécurisation vérifie (284), à l'aide du premier code détecteur d'erreur obtenu, s'il existe une erreur dans la donnée D, ou son cryptogramme et, si une telle erreur existe, déclenche (172) le signalement 35 d'une faute d'exécution et, si une telle erreur n'existe pas, inhibe ce signalement d'une faute d'exécution.\n<CLM>\1\tProcédé selon la revendication 1, dans lequel : - lors de l'étape a), le procédé comporte : 40 - la mise à jour (256) d'un second code détecteur d'erreur (EDCm) en fonction 40 de la ligne de code enregistrée à l'adresse ©,, ce second code détecteur d'erreur permettant de détecter une erreur si une ligne de code quelconque, contenue dans un bloc (BDm) de plusieurs lignes de code enregistrées dans une plage prédéterminée d'adresses de la mémoire principale, est modifiée après la mise à jour de ce second code détecteur d'erreur, la plage prédéterminée d'adresses comportant l'adresse ©,, et - l'enregistrement (256) du second code détecteur d'erreur mis à jour, - juste avant ou après l'opération 1), le module matériel de sécurisation vérifie (260), à l'aide du second code détecteur d'erreur mis à jour lors de l'étape a), s'il existe une erreur dans le bloc de données contenant la ligne de code enregistrée à l'adresse ©,, et, si une telle erreur existe, déclenche (172) le signalement d'une faute d'exécution et, si une telle erreur n'existe pas, inhibe ce signalement d'une faute d'exécution.\n<CLM>\1\tProcédé selon la revendication 2, dans lequel lors de l'étape a) : - chaque ligne de code du bloc de données contient, en plus d'une donnée ou de son cryptogramme, un code d'authentification de message (MAC,) permettant de vérifier l'intégrité et l'authenticité de la donnée ou du cryptogramme contenu dans cette ligne, et - le second code détecteur d'erreur est mis à jour (256) uniquement à l'aide des 20 codes d'authentification de message des lignes de code contenues dans ce bloc de données.\n<CLM>\1\tProcédé selon la revendication 3, dans lequel : - lors de l'opération a), le second code détecteur d'erreur est mis à jour à l'aide de la 25 relation suivante : EDCm = EDCm 0 MAC, old - GD ---- mAr inew, où - les symboles EDCm à droite et à gauche du symbole « » sont, respectivement, la précédente valeur et la valeur mise à jour du second code détecteur d'erreur, - le symbole CD est l'opération « OU exclusif », et 30 - les symboles MAC,old et MAC,new sont les valeurs des codes d'authentification de message, respectivement, de l'ancienne et de la nouvelle lignes de code enregistrée à l'adresse ©,.\n<CLM>\1\tProcédé selon l'une quelconque des revendications 2 à 4, dans lequel le 35 second code détecteur d'erreur mis à jour est enregistré dans une mémoire sécurisée du module matériel de sécurisation, cette mémoire sécurisée étant seulement accessible par le module matériel de sécurisation.\n<CLM>\1\tProcédé selon l'une quelconque des revendications précédentes, dans lequel : 41 - lors de l'étape a), le premier code détecteur d'erreur est un code correcteur d'erreur qui permet en plus de corriger une erreur dans la donnée D, ou dans son cryptogramme, - lors de l'opération 4), si une erreur existe, alors le module matériel de sécurisation 5 corrige (286) la donnée D, ou son cryptogramme à l'aide du code correcteur d'erreur puis, le microprocesseur traite la donnée D, corrigée ou son cryptogramme corrigé.\n<CLM>\1\tProcédé selon l'une quelconque des revendications précédentes, dans lequel lors de l'étape a) : 10 - la ligne de code contient un cryptogramme CD;* d'une concaténation CD; de la donnée D; et du premier code détecteur d'erreur, ce cryptogramme CD;* étant obtenu à l'aide d'une relation CD;* = fka(CD; ; iv;), où la fonction fka est une fonction prédéterminée de chiffrement correspondant à une fonction fka-1 de déchiffrement préprogrammé dans le module matériel de sécurisation, le cryptogramme CD;* codant 15 ainsi la donnée D; et le premier code détecteur d'erreur en fonction du vecteur d'initialisation iv;, - lors de l'opération 3), le déchiffrement (278) de la ligne de code par le module matériel de sécurisation comporte le déchiffrement du cryptogramme CD;* à l'aide de la relation CD; = fka-1(CD;* ; iv;) pour obtenir la donnée D; déchiffrée et le premier code 20 détecteur d'erreur déchiffré.\n<CLM>\1\tProcédé selon l'une quelconque des revendications précédentes, dans lequel : - lors de l'étape a), la ligne de code contient un cryptogramme CD;* construit à partir de la donnée D; et le premier code détecteur d'erreur permet de détecter une erreur 25 dans le cryptogramme CD;*, ce premier code détecteur d'erreur ou le cryptogramme CD;* étant chiffré fonction du vecteur d'initialisation iv;, - lors de l'opération 3), le déchiffrement de la ligne de code par le module matériel de sécurisation comporte le déchiffrement, à l'aide du vecteur d'initialisation iv; calculé, du cryptogramme CD;* ou du premier code détecteur d'erreur chiffré en fonction du 30 vecteur d'initialisation iv;.\n<CLM>\1\tCode binaire d'une fonction sécurisée exécutable par un microprocesseur pour la mise en oeuvre d'un procédé d'exécution conforme à l'une quelconque des revendications précédentes, ce code binaire étant enregistré dans une mémoire 35 principale lisible par le microprocesseur, caractérisé en ce que le code binaire comprend une ligne de code contenant : - une donnée D, à traiter par le microprocesseur ou un cryptogramme de cette donnée D,, et - un premier code détecteur d'erreur (ECCD,, MAC], ECCE;) permettant de détecter une 40 erreur dans la donnée D, ou dans son cryptogramme si cette donnée D, ou son 42 cryptogramme est modifié après son enregistrement dans la mémoire principale, au moins l'un de la donnée Di, de son cryptogramme et du premier code détecteur d'erreur étant chiffré en fonction d'un vecteur d'initialisation iv;, ce vecteur d'initialisation iv; variant en fonction de l'adresse e à laquelle la ligne de code est 5 enregistrée dans la mémoire principale selon une relation iv; = Fiv(e), où la fonction Fi, est une fonction qui associe un vecteur d'initialisation iv; différent à chaque adresse e différente de la mémoire principale.\n<CLM>\1\tSupport d'enregistrement d'informations lisible par un microprocesseur, 10 caractérisé en ce qu'il comporte un code binaire conforme à la revendication\n<CLM>\1\t11. Microprocesseur (2) pour la mise en oeuvre d'un procédé conforme à l'une quelconque des revendications 1 à 8, ce microprocesseur comportant : - une unité arithmétique et logique (10) apte à exécuter l'opération\n<CLM>\1\tdu procédé 15 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\n<CLM>\1\t12. Compilateur (300) apte à transformer automatiquement un code source d'une fonction sécurisée en un code binaire de cette fonction sécurisée, caractérisé en ce que le compilateur est apte à transformer automatiquement le code source en un code binaire conforme à revendication 9.