Brevet FR3047100A1 (20170728)
REVENDICATIONS1. Méthode de chiffrement d'un flux d'instructions d'un programme au moyen d'un chiffrement par flot utilisant un générateur de séquence pseudo-aléatoire paramétré par une clé secrète (K) et initialisé par un vecteur d'initialisation ( IV ) , caractérisé en ce que : le flux d'instructions est traduit par un compilateur en un code binaire, ledit code binaire étant sommé bit à bit avec la séquence pseudo-aléatoire, pour fournir un flux d'instructions chiffrées ; lorsque le programme comporte une instruction de branchement à une adresse de branchement, on insère dans le programme une instruction d'initialisation correspondante pour initialiser le générateur pseudo-aléatoire avec un vecteur d'initialisation spécifique à l'adresse de branchement, les instructions à partir de l'adresse de branchement étant chiffrées au moyen d'une séquence pseudo-aléatoire générée par le générateur pseudo-aléatoire initialisé par ledit vecteur d'initialisation spécifique.\n<CLM>\1\tMéthode de chiffrement d'un flux d'instructions selon la revendication 1, caractérisée en ce que l'instruction d'initialisation est insérée juste avant l'instruction de branchement.\n<CLM>\1\tMéthode de chiffrement d'un flux d'instructions selon la revendication 2, caractérisée en ce que l'instruction d'initialisation est insérée en clair dans le flux d'instructions chiffrées.\n<CLM>\1\tMéthode de chiffrement d'un flux d'instructions selon la revendication 2, caractérisée en ce que l'instruction d'initialisation est chiffrée avec ladite séquence pseudoaléatoire avant d'être insérée. 3047100 16\n<CLM>\1\tMéthode de chiffrement d'un flux d'instructions selon la revendication 1, caractérisée en ce que l'instruction d'initialisation est insérée en clair à l'adresse de branchement dans le flux d'instructions chiffrées. 5\n<CLM>\1\tMéthode d'exécution d'un flux d'instructions d'un programme, chiffré par la méthode de chiffrement selon la revendication 1, caractérisé en ce que: on génère une séquence pseudo-aléatoire au moyen du générateur de séquence pseudo-aléatoire paramétré par ladite clé secrète et initialisé par ledit vecteur d'initialisation ; 10 - on somme le flux d'instructions chiffrées bit à bit avec la séquence pseudo- aléatoire, chaque instruction chiffrée étant déchiffrée et exécutée avant de passer à la suivante; on détecte chaque instruction d'initialisation dans le flux d'instructions chiffrées et, lorsqu'une telle instruction d'initialisation est détectée, on extrait le vecteur 15 d'initialisation qu'elle contient et on initialise le générateur de séquence pseudo-aléatoire avec le vecteur d'initialisation ainsi extrait en cas de branchement à l'adresse de branchement.\n<CLM>\1\tMéthode d'exécution d'un flux d'instructions selon la revendication 6, 20 caractérisée en ce qu'une instruction d'initialisation est détectée, le cas échéant après déchiffrement, au moyen d'un préfixe spécifique.\n<CLM>\1\tMéthode d'exécution d'un flux d'instructions selon la revendication 6, caractérisée en ce que, dans le cas où une instruction d'initialisation est insérée avant une 25 instruction de branchement à une adresse de branchement, on stocke dans un registre intermédiaire le vecteur d'initialisation extrait de l'instruction d'initialisation lorsque celle-ci est détectée et l'on initialise le générateur pseudo-aléatoire avec le contenu dudit registre lorsque l'on saute à l'adresse de branchement. 3047100 17\n<CLM>\1\tMéthode d'exécution d'un flux d'instructions selon la revendication 6 à 8, caractérisée en ce que le programme comprend au moins une instruction de branchement conditionnel. 5\n<CLM>\1\tMéthode d'exécution d'un flux d'instructions selon la revendication 6 à 8, caractérisée en ce que le programme comprend au moins une instruction de branchement inconditionnel.