Brevet FR3072477A1 (20190419)

REVENDICATIONS1. Procédé de sécurisation d'un programme informatique (102) en langage intermédiaire exécutable par une unité de traitement (106), le programme informatique comprenant des instructions formées chacune d'un code d'opération suivi de paramètres optionnels, le procédé comprenant une étape de mémorisation (406) des instructions en mémoire (111) où chaque code d'opération mémorisé est suivi de champs optionnels de paramètres pour stocker les paramètres optionnels correspondants, le procédé étant caractérisé en ce que : une pluralité de paramètres (205) d'une même première instruction (Instr.1, Instr.2) du programme informatique est stockée (402) dans une zone mémoire cible (112) autre que les champs optionnels de paramètres (205) qui font suite immédiate, dans la mémoire, au code d'opération (200) de la première instruction, au moins l'un des champs optionnels de la première instruction comporte une information d'adresse mémoire (210) désignant la zone mémoire cible (112) où la pluralité de paramètres (205) est stockée.\n<CLM>\1\tProcédé de sécurisation selon la revendication 1, dans lequel les autres champs optionnels de paramètres (205) prévus pour stocker la pluralité de paramètres comportent des codes octaux de substitution (220) non liés auxdits paramètres et en nombre équivalent aux codes octaux formant les paramètres (205) qu'ils remplacent.\n<CLM>\1\tProcédé de sécurisation selon la revendication 2, les codes octaux de substitution comprennent une ou plusieurs instructions de détection d'une attaque (220) dont l'exécution est indicatrice d'une erreur d'exécution du programme informatique.\n<CLM>\1\tProcédé de sécurisation selon l'une des revendications 1 à 3, dans lequel tous les paramètres (205) de ladite première instruction (Instr.1, Instr.2) sont stockés (402) dans la zone mémoire cible (112), et tous les champs optionnels de paramètres (205) prévus pour les stocker en mémoire contiennent un nombre équivalent de codes octaux de substitution (220), incluant l'information d'adresse mémoire (210).\n<CLM>\1\tProcédé de sécurisation selon l'une des revendications 1 à 4, dans lequel les instructions du programme informatique sont mémorisées (406) dans une première zone mémoire logique continue (111) et la zone mémoire cible (112) est distincte de la première zone mémoire logique au sein de la même mémoire physique (105).\n<CLM>\1\tProcédé de sécurisation selon la revendication 5, dans lequel la première zone mémoire (111) est une zone mémoire exécutable par l'unité de traitement (106) et la zone mémoire cible (112) est une zone mémoire non-exécutable par l'unité de traitement.\n<CLM>\1\tProcédé de sécurisation selon l'une des revendications 1 à 6, dans lequel ladite première instruction (Instr.1, Instr.2) est une instruction de branchement conditionnel composé. 20\n<CLM>\1\tProcédé de sécurisation selon l'une des revendications 1 à 7, dans lequel l'information d'adresse mémoire (210) est mémorisée (403) dans le premier champ optionnel de paramètres faisant suite immédiate, en mémoire, au code d'opération (200) de la première instruction. 5\n<CLM>\1\tProcédé de sécurisation selon l'une des revendications 1 à 8, dans lequel l'information d'adresse mémoire (210) est une adresse mémoire de la zone mémoire cible (112), masquée à l'aide d'une valeur aléatoire.\n<CLM>\1\tProcédé de sécurisation selon l'une des revendications 1 à 9, dans lequel une ou plusieurs pluralités de paramètres d'une ou plusieurs deuxièmes instructions du programme 10 informatique sont également stockées dans la zone mémoire cible (112), à la suite des paramètres de la première instruction.\n<CLM>\1\tProcédé de sécurisation selon l'une des revendications 1 à 10, réalisé lors du chargement du programme informatique en mémoire non volatile (105) d'une entité électronique (103). 15\n<CLM>\1\tProcédé d'exécution, par une unité de traitement (106), d'un programme informatique (110) stocké en mémoire (105) dans un langage intermédiaire, le programme informatique comprenant des instructions dans une première zone mémoire (111) où, pour chaque instruction (Instr.1, Instr.2), un code d'opération (200) est suivi de champs optionnels de paramètres (205) pour stocker des paramètres optionnels (205) de 20 l'instruction, le procédé étant caractérisé en ce qu'il comprend, lors de l'exécution du code d'opération d'une première instruction du programme informatique, les étapes suivantes : obtenir (503), d'un des champs optionnels de paramètres (205) qui font suite immédiate audit code d'opération (200), une information d'adresse mémoire (210) désignant une zone mémoire cible (112) autre que ces champs optionnels de paramètres, 25 lire (504), dans la zone mémoire cible (112) à l'aide de l'information d'adresse mémoire obtenue (210), une pluralité de paramètres (205) associés à la première instruction, et exécuter (505) ladite première instruction à l'aide des paramètres ainsi lus.\n<CLM>\1\tProcédé d'exécution selon la revendication 12, dans lequel au moins un des champs optionnels de paramètres (205) de la première instruction comprend une instruction de 30 détection d'une attaque (220), et si l'unité de traitement accède et exécute ledit champ optionnel comprenant l'instruction de détection d'une attaque, une erreur d'exécution du programme informatique est générée.\n<CLM>\1\tDispositif informatique (103) comprenant une unité de traitement (106), une mémoire (104,105) qui lui est reliée et un programme informatique (102) en langage 35 intermédiaire exécutable par l'unité de traitement, le programme informatique comprenant des instructions formées chacune d'un code d'opération suivi de paramètres optionnels, le dispositif étant configurée pour : 21 mémoriser des instructions en mémoire (111) où chaque code d'opération mémorisé est suivi de champs optionnels de paramètres pour stocker les paramètres optionnels correspondants, stocker une pluralité de paramètres (205) d'une même première instruction (Instr.1, 5 Instr.2) du programme informatique (102) dans une zone mémoire cible (112) autre que les champs optionnels de paramètres (205) qui font suite immédiate, dans la mémoire, au code d'opération (200) de la première instruction, et écrire au moins l'un des champs optionnels pour qu'il comporte une information d'adresse mémoire (210) désignant la zone mémoire cible (112) où la pluralité de paramètres 10 (205) est stockée.\n<CLM>\1\tDispositif informatique (103) comprenant une unité de traitement (106), une mémoire (105) qui lui est reliée et un programme informatique (110) en langage intermédiaire exécutable par l'unité de traitement, le programme informatique comprenant des instructions (Instr.1, Instr.2) dans une première zone mémoire (111) où, pour chaque instruction, un code 15 d'opération (200) est suivi de champs optionnels de paramètres (205) pour stocker des paramètres optionnels de l'instruction, le dispositif étant configurée pour effectuer les actions suivantes, lors de l'exécution du code d'opération d'une première instruction du programme informatique : obtenir, d'un des champs optionnels de paramètres (205) qui font suite immédiate 20 audit code d'opération (200), une information d'adresse mémoire (210) désignant une zone mémoire cible (112) autre que ces champs optionnels de paramètres, lire, dans la zone mémoire cible (112) à l'aide de l'information d'adresse mémoire obtenue (210), une pluralité de paramètres (205) associés à la première instruction, et exécuter ladite première instruction à l'aide des paramètres ainsi lus.