FR2996659A1 - Procede d'execution d'un programme par un processeur et entite electronique equipee d'un tel processeur - Google Patents
Procede d'execution d'un programme par un processeur et entite electronique equipee d'un tel processeur Download PDFInfo
- Publication number
- FR2996659A1 FR2996659A1 FR1259664A FR1259664A FR2996659A1 FR 2996659 A1 FR2996659 A1 FR 2996659A1 FR 1259664 A FR1259664 A FR 1259664A FR 1259664 A FR1259664 A FR 1259664A FR 2996659 A1 FR2996659 A1 FR 2996659A1
- Authority
- FR
- France
- Prior art keywords
- address
- parameter
- data
- stored
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/556—Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Un procédé d'exécution d'un programme par un processeur comprend les étapes suivantes : - initialisation (I) d'une donnée située à un emplacement prédéfini dans une structure mémorisée à une adresse en mémoire ; - appel (E2) à partir d'un programme principal (P), d'un sous-programme (SP) avec passage de l'adresse (A) en paramètre ; - traitement (T) par le sous-programme, de données de la structure mémorisée à l'adresse reçue en paramètre par le sous-programme. Le procédé comprend également une étape de vérification (C) de la valeur de la donnée située à l'emplacement prédéfini dans la structure mémorisée à l'adresse passée en paramètre et une étape de mise en œuvre d'une contre-mesure en cas de résultat négatif à l'étape de vérification. Une entité électronique équipée d'un tel processeur et mémorisant un tel programme est également proposée.
Description
L'invention concerne un procédé d'exécution d'un programme par un processeur, ainsi qu'une entité électronique équipée d'un tel processeur. On connaît les attaques par injection de fautes, qui visent à perturber physiquement (au moyen d'un faisceau laser par exemple) un composant électronique, tel qu'un microprocesseur équipant une entité électronique, afin de modifier le déroulement d'un programme exécuté par le microprocesseur ou les variables manipulées par celui-ci, généralement dans le but de porter atteinte au fonctionnement sécurisé de l'entité électronique concernée. Une attaque particulière de ce type vise les appels à des sous-programmes (par exemple à des fonctions) pour lesquels on passe en paramètre un pointeur sur une variable impliquée dans le sous-programme, c'est-à-dire que l'appel au sous-programme est accompagné par la transmission de l'adresse où est stockée en mémoire la variable concernée. Ce type d'attaque consiste à perturber la valeur du pointeur au moment où il est passé en paramètre de la fonction. Par exemple, dans le cas de l'appel à une fonction (sous-programme) de chiffrement avec passage en paramètre d'un pointeur vers la clé de chiffrement, la perturbation de ce pointeur aura pour effet que le chiffrement sera réalisé avec une clé qui ne correspond pas à celle souhaitée, mais qui sera en général une clé nulle (notamment si l'attaque a lieu peu après l'initialisation de l'entité électronique, auquel cas le pointeur perturbé vise généralement une zone vierge de la mémoire). Dans ce contexte, l'invention propose un procédé d'exécution d'un programme par un processeur, le procédé comprenant les étapes suivantes : - initialisation d'une donnée située à un emplacement prédéfini dans une structure mémorisée à une adresse en mémoire ; - appel, à partir d'un programme principal, d'un sous-programme avec passage de l'adresse en paramètre ; - traitement, par le sous-programme, de données de la structure mémorisée à l'adresse reçue en paramètre par le sous-programme ; le procédé étant caractérisé par les étapes suivantes : - vérification de la valeur de la donnée située à l'emplacement 5 prédéfini dans la structure mémorisée à l'adresse passée en paramètre ; - mise en oeuvre d'une contre-mesure en cas de résultat négatif à l'étape de vérification. Selon un premier mode de réalisation, le procédé comprend une étape de modification par le sous-programme de la donnée située à 10 l'emplacement prédéfini dans la structure ; l'étape de vérification peut dans ce cas être mise en oeuvre après retour du sous-programme au programme principal (et donc être effectuée par le programme principal) et viser une vérification de la modification de la donnée. En fonctionnement normal, la donnée située à l'emplacement 15 prédéfini est correctement modifiée par le sous-programme et la vérification effectuée par le programme principal est donc positive. En revanche, si une attaque vise l'adresse passée en paramètre, la modification effectuée par le sous-programme ne vise pas la structure, comme cela était prévu, et la vérification de la modification effectuée par le sous-programme sera donc 20 négative, ce qui permet de détecter l'attaque. L'emplacement prédéfini correspond par exemple à un mot unique (typiquement un octet unique) dans la structure concernée, ce qui permet en outre à la solution proposée d'être peu consommatrice d'espace mémoire. Selon un mode de réalisation envisageable, l'étape de vérification 25 inclut une étape de comparaison de la donnée située à l'emplacement prédéfini dans la structure mémorisée à l'adresse passée en paramètre à une valeur prédéfin ie. L'étape de modification peut quant à elle comprendre une incrémentation de la valeur de la donnée située à l'emplacement prédéfini dans 30 la structure mémorisée à l'adresse reçue en paramètre. Une telle modification est simple à mettre en oeuvre ; il est en outre simple de vérifier qu'elle a bien été appliquée.
Le procédé peut comprendre une étape, préalable à l'étape d'appel, de mémorisation d'une valeur prédéterminée à l'emplacement prédéfini dans la structure mémorisée à l'adresse passée en paramètre. Ceci simplifie la méthode de vérification ultérieure, puisque l'emplacement prédéfini est initialisé à une valeur connue. L'étape de modification peut par ailleurs comprendre une écriture, à l'emplacement prédéfini dans la structure mémorisée à l'adresse reçue en paramètre, d'une valeur prédéfinie distincte de la valeur prédéterminée. La vérification consiste dans ce cas à s'assurer que la valeur mémorisée à l'emplacement prédéfini a bien été modifiée (ce qui n'est le cas que lorsque l'adresse de la structure a effectivement été passée en paramètre et qu'il n'y a donc pas eu d'attaque visant cette adresse). Selon un second mode de réalisation, on peut prévoir que l'étape de vérification soit mise en oeuvre par le sous-programme. Dans ce cas, l'étape de traitement peut n'être réalisée qu'en cas de vérification positive. On peut prévoir par ailleurs que les données de la structure autres que celle située à l'emplacement prédéfini sont utilisées au cours de l'étape de traitement tandis que la donnée située à l'emplacement prédéfini n'est pas utilisée au cours de l'étape de traitement.
Lorsque la structure est un tableau ordonné, l'emplacement prédéfini est par exemple le dernier emplacement du tableau. Ceci simplifie le traitement puisqu'il peut être réalisé de manière classique sur les premiers éléments du tableau (ce qui est pratique par exemple lorsqu'on parcourt la structure, i.e. le tableau, au moyen d'un indice, typiquement incrémenté à chaque sous-étape du traitement). Les données de la structure mémorisée à l'adresse passée en paramètre représentent par exemple un message ou une clé de chiffrement. Le traitement peut être dans ce cas un chiffrement de message. Les données de la structure mémorisée à l'adresse passée en paramètre peuvent en variante représenter un code d'identification personnel. Le traitement est par exemple une vérification de code d'identification personnel.
Selon d'autres formes de réalisations envisageables, le traitement peut être la génération d'un nombre aléatoire pour mémorisation à l'adresse reçue en paramètre ou la modification d'un compteur mémorisé à l'adresse reçue en paramètre (par exemple une incrémentation d'un compteur du nombre de codes d'identification personnels faux reçus par l'entité électronique). L'invention propose également une entité électronique équipée d'un processeur et mémorisant un programme apte à mettre en oeuvre un procédé comme exposé ci-dessus lorsque le programme est exécuté par le processeur. Ainsi, l'invention propose selon un premier aspect un procédé 10 d'exécution d'un programme par un processeur, caractérisé en ce qu'il comprend les étapes suivantes : - appel, à partir d'un programme principal, d'un sous-programme avec passage d'une adresse en paramètre ; - traitement, par le sous-programme, de données d'une structure 15 mémorisée à l'adresse reçue en paramètre par le sous-programme ; - modification par le sous-programme d'une donnée située à un emplacement prédéfini dans la structure ; - retour au programme principal ; - vérification par le programme principal de la modification de la 20 donnée située à l'emplacement prédéfini dans la structure mémorisée à l'adresse passée en paramètre ; - mise en oeuvre d'une contre-mesure en cas de résultat négatif à l'étape de vérification. Selon un second aspect, l'invention propose un procédé d'exécution 25 d'un programme par un processeur, caractérisé en ce qu'il comprend les étapes suivantes : - initialisation (par exemple par modification) par un programme principal d'une donnée située à un emplacement prédéfini dans une structure ; - appel, à partir du programme principal, d'un sous-programme 30 avec passage en paramètre d'une adresse de mémorisation de la structure ; - vérification par le sous-programme de la valeur de la donnée située à l'emplacement prédéfini dans la structure mémorisée à l'adresse reçue en paramètre ; - mise en oeuvre d'une contre-mesure en cas de résultat négatif à l'étape de vérification ; - traitement, par le sous-programme, de données de la structure mémorisée à l'adresse reçue en paramètre en cas de résultat positif à l'étape de vérification ; - retour au programme principal.
D'autres caractéristiques et avantages de l'invention apparaîtront mieux à la lumière de la description qui suit, faite en référence aux dessins annexés dans lesquels : - la figure 1 représente un exemple d'entité électronique conforme aux enseignements de l'invention ; - la figure 2 représente les éléments principaux de l'entité électronique de la figure 1 ; - la figure 3 illustre l'exécution d'un programme conformément à un premier mode de réalisation de l'invention ; - la figure 4 illustre l'exécution d'un programme selon un second mode de réalisation de l'invention. La figure 1 représente schématiquement un exemple d'entité électronique auquel est appliquée la présente invention, ici une carte à microcircuit 2 munie de contacts électriques 4. Comme visible en figure 2, les contacts électriques 4 permettent la connexion d'un processeur 6 de l'entité électronique 2 à des dispositifs extérieurs (non représentés). L'entité électronique comprend également une mémoire 8 connectée au processeur 6. La mémoire 8 mémorise d'une part des instructions d'un programme destinées à être exécutées par le processeur 6, et d'autre part des variables destinées à être manipulées lors de l'exécution du programme, par exemple sur réception de commandes reçues de la part d'un dispositif extérieur. L'exécution peut notamment comprendre la mémorisation de données dans la mémoire 8 ou l'émission de messages de sortie à destination d'un dispositif extérieur (au moyen des contacts électriques 4). Les commandes et les réponses (messages) de sortie peuvent être respectivement sous la forme de commandes APDU ("Application Protocol Data 5 Unir) et de réponse APDU, tel que conformément à la norme IS07816. La mémoire 8 est par exemple une mémoire volatile ; en variante, il pourrait s'agir d'une mémoire non volatile réinscriptible (par exemple de type EEPROM). Par ailleurs, bien que la mémoire de l'entité électronique soit représentée sous forme d'un élément unique en figure 2, la mémoire accessible 10 au microprocesseur 6 peut être réalisée sous forme de plusieurs mémoires physiques, comme par exemple une mémoire morte (mémoire non volatile nonréinscriptible) et une mémoire non-volatile réinscriptible. On a représenté en figure 3 une première zone Z1 de la mémoire 8 dans laquelle sont mémorisées les instructions du programme et une seconde 15 zone Z2 de la mémoire 8 dans laquelle est mémorisée notamment une variable (ici un tableau) à l'adresse A. La première zone Z1 est par exemple située physiquement dans une mémoire morte tandis que la seconde zone Z2 est située par exemple dans une mémoire non-volatile réinscriptible. La zone de mémoire Z1 mémorise un programme principal à partir 20 d'une adresse (en mémoire) P et un sous-programme à partir d'une adresse SP. Ce sous-programme est par exemple une fonction de chiffrement d'un message au moyen d'une clé secrète également mémorisée dans la mémoire 8, par exemple dans la mémoire non-volatile réinscriptible. La mise en oeuvre du programme commence par l'exécution par le 25 microprocesseur 6 de l'instruction mémorisée à l'adresse P (qui correspond au début du programme principal). Cette opération est par exemple réalisée automatiquement lorsque le microprocesseur 6 est mis sous tension par connexion, à travers les contacts 4, à un dispositif extérieur. La mise en oeuvre du programme se poursuit par l'exécution 30 successive des instructions mémorisées dans la zone Z1 à partir de l'adresse P. Après exécution de plusieurs instructions (qui peuvent par exemple correspondre à une initialisation de certaines variables), on arrive à une instruction El qui commande l'initialisation I d'une variable A[N] à une valeur prédéterminée V. La variable A[N] est un élément prédéfini (ici le dernier élément, situé en (N+1)ème position) dans un tableau mémorisé à l'adresse A. Comme expliqué ci-après, les N premiers éléments du tableau (référencés A[0] à A[N-1]) sont utilisés au cours du traitement par la fonction mise en oeuvre par le sous- programme mémorisé à l'adresse SP, tandis que le dernier élément du tableau A[N] est destiné à vérifier l'absence d'attaque par faute, comme cela sera expliqué plus amplement dans la suite. La mise en oeuvre du programme principal continue par l'exécution des instructions suivant l'instruction El jusqu'à arriver à une instruction E2 qui provoque un appel au sous-programme mémorisé à l'adresse SP avec passage en paramètre de l'adresse A. On note ici que d'autres variables ou adresses pourraient être passées en paramètre mais que l'exposé est ici limité à la mention de l'adresse A dans un souci de concision.
Du fait de l'appel du sous-programme, le déroulement se poursuit par l'exécution par le microprocesseur 6 des instructions mémorisées à partir de l'adresse SP. Ces instructions comprennent notamment une (ou plusieurs) instructions E3 qui mettent en oeuvre un traitement T utilisant les variables de la structure mémorisée à l'adresse A passée en paramètre (ici un tableau de données A[0] à A[N-1]). On remarque que le traitement effectué n'affecte pas l'élément prédéfini A[N] (ici le dernier élément du tableau). Il s'agit par exemple de la lecture dans le tableau mémorisé à l'adresse A de chacun des octets formant la clé de chiffrement qui doit être appliquée au message traité par la fonction mémorisée à l'adresse SP. On propose ici en revanche de ne pas lire à cette étape de traitement la valeur de l'élément prédéfini A[N] (puisque cet élément ne mémorise pas une partie de la clef de chiffrement mais une variable de vérification comme expliqué ci-dessous). En variante, dans les modes de réalisation où l'exécution du sous- programme vise à produire un résultat, les variables de la structure (autres que l'élément prédéfini déjà mentionné, soit ici les N premiers éléments du tableau) sont utilisées pour produire le résultat.
Le traitement réalisé par le sous-programme se poursuit jusqu'à une instruction E4 qui met en oeuvre une modification M prédéterminée de l'élément prédéfini A[N] (ici N+lème élément, mémorisé à l'adresse A+N) de la structure mémorisée à l'adresse A.
La modification prédéfinie par l'instruction E4 est par exemple l'incrémentation de la valeur mémorisée dans l'élément prédéfini A[N]. En variante, il pourrait s'agir de l'écriture d'une valeur prédéterminée distincte de la valeur V écrite lors de l'étape d'initialisation I (exécution de l'instruction E1). On peut remarquer que, dans les modes de réalisation où l'exécution du sous-programme vise à produire un résultat, l'élément prédéfini A[N] (ici le dernier élément du tableau) n'est pas utilisé dans la production de ce résultat. Le déroulement du sous-programme se poursuit jusqu'à une instruction E5 qui commande le retour au programme principal (fin du sous-programme).
Cette instruction E5 a pour conséquence l'exécution par le microprocesseur 6 de l'instruction mémorisée immédiatement après l'instruction E2 d'appel du sous-programme, comme bien visible en figure 3. Le déroulement du programme principal se poursuit alors jusqu'à l'exécution d'une instruction E6 au moyen de laquelle on vérifie que la modification prédéfinie de la structure mémorisée à l'adresse A a bien été effectuée par le sous-programme : dans le cas qui vient d'être décrit, cette vérification est réalisée en comparant la valeur de la variable A[N] (N+lème élément du tableau mémorisé à l'adresse A) à la valeur prédéterminée inscrite par l'instruction El incrémentée de 1, c'est-à-dire en comparant A[N] à V+1.
En fonctionnement normal, c'est-à-dire notamment lorsque l'adresse A a été correctement passée en paramètre au sous-programme mémorisé à l'adresse SP, la valeur mémorisée dans le dernier élément A[N] du tableau vaut effectivement V+1 du fait de l'initialisation par l'instruction El et de l'incrémentation par l'instruction E4 et le programme peut se poursuivre normalement. En revanche, si une attaque par faute a permis à un attaquant de perturber l'adresse passée en paramètre lors de l'appel au sous-programme voire d'empêcher cet appel (instruction E2), ni le traitement T, ni la modification M n'ont alors été appliqués comme il se devait à la structure mémorisée à l'adresse A, et la variable A[N], mémorisée en tant qu'élément prédéfini du tableau de l'adresse A, n'a donc pas été modifiée comme prévu : elle est restée à la valeur V à laquelle elle avait été initialisée par l'instruction Et Par conséquent, si la comparaison C effectuée par l'instruction E6 indique que la valeur A[N] n'est pas celle attendue (ici V+1), cela peut être dû au fait que l'adresse passée en paramètre lors de l'exécution de l'instruction E2 a été perturbée et on considère dès lors qu'un risque d'attaque est présent et qu'une contre-mesure doit être mise en oeuvre. Par conséquent, en cas de vérification négative (à l'étape de comparaison C) de la modification normalement effectuée par le sous-programme (lors de l'étape M), on met en oeuvre une contre-mesure, tel que par exemple le blocage du fonctionnement de l'entité électronique. En variante, notamment lorsque le programme est exécuté suite à la réception d'une commande (par exemple de type APDU), la contre-mesure comprend par exemple l'émission d'un code d'erreur en sortie (message de sortie). On donne ci-après deux exemples de programme en langage C aptes à mettre en oeuvre l'invention lorsqu'ils sont exécutés.
Les dénominations d'étapes utilisées en figure 3 et ci-dessus sont reprises dans ces annexes pour faciliter la compréhension. L'annexe A présente un programme de chiffrement d'un message (mémorisé dans un tableau « message ») au moyen d'une clé de chiffrement (mémorisée dans un tableau « clé ») qui permet d'obtenir un message chiffré (mémorisé en sortie dans un tableau « chiffré »). Le message de sortie (résultat) produit par l'exécution du programme est ainsi le message chiffré mémorisé dans le tableau « chiffré ». On remarque que la modification d'un élément préféfini du tableau par le sous-programme et la vérification de cette modification par le programme principal, telles que proposées par l'invention, sont ici appliquées à chacun des trois tableaux traités (« message », « clé », « chiffré »).
On remarque à ce propos que le traitement effectuée peut consister en une lecture et/ou une écriture des données de la structure mémorisée à l'adresse passée en paramètre. Dans cet exemple, le sous-programme produit le message chiffré 5 mémorisé dans le tableau « chiffré ». Ce message chiffré constitute donc le résultat du traitement effectué par le sous-programme. Dans ce cadre, les 16 premiers éléments des tableaux « message » et « clé » (soit respectivement les éléments message[0] à message[15] et les éléments clé[0] à clé[15]) sont utilisés pour effectuer le traitement (ici chiffrer le 10 message au moyen de la clé), tandis que les éléments prédéfinis message[16] et clé[16] ne sont pas utilisés pour le traitement (chiffrement) mais pour modification par le sous-programme et vérification par le programme principal. L'annexe B présente un programme de comparaison d'un code d'identification personnel (PIN) entré à un code d'identification personnel (PIN) 15 mémorisé. On remarque que, dans le sous-programme « compare », les adresses A et C reçues en paramètre sont incrémentées (instructions « A++ » et « C++ ») à chaque étape de la boucle « for». Par conséquent, en sortie de la boucle « for», l'adresse A pointe sur le 20 'Hème élément de la structure mémorisée à l'adresse reçue en paramètre par le sous-programme (adresse du tableau PIN_input en fonction normal) et l'instruction *A++ incrémente la valeur de 1 1 ème élément (étape de modification M présentée plus haut en référence à la figure 3). Les 10 premiers éléments des tableaux « PIN input » et 25 « PIN inmemoty» (soit respectivement les éléments PIN_input[0] à PIN_input[9] et les éléments PIN_inmemory[0] à PIN_inmemory[15]) sont utilisés pour effectuer le traitement (ici vérifier le code PIN), tandis que les éléments prédéfinis PIN_input[10] et PIN_inmemory[10] ne sont pas utilisés pour le traitement (vérification du code PIN) mais pour modification par le sous-programme et 30 vérification par le programme principal. Les annexes A et B ne présentent naturellement que les parties de programme relatives à la mise en oeuvre de l'invention.
La figure 4 illustre un second mode de réalisation de l'invention. Y sont figurées une première zone Z11 de la mémoire 8 dans laquelle sont mémorisées les instructions du programme et une seconde zone Z12 de la mémoire 8 dans laquelle est mémorisée notamment une structure (ici un tableau) à l'adresse A'. La première zone Z11 est par exemple située physiquement dans une mémoire morte tandis que la seconde zone Z12 est située par exemple dans une mémoire non-volatile réinscriptible. La zone de mémoire Z11 mémorise un programme principal à partir d'une adresse (en mémoire) P' et un sous-programme à partir d'une adresse SP'.
Ce sous-programme est par exemple une fonction de chiffrement d'un message au moyen d'une clé secrète également mémorisée dans la mémoire 8, par exemple dans la mémoire non-volatile réinscriptible. La mise en oeuvre du programme commence par l'exécution par le microprocesseur 6 de l'instruction mémorisée à l'adresse P' (qui correspond au début du programme principal). Cette opération est par exemple réalisée automatiquement lorsque le microprocesseur 6 est mis sous tension par connexion, à travers les contacts 4, à un dispositif extérieur. La mise en oeuvre du programme se poursuit par l'exécution successive des instructions mémorisées dans la zone Z11 à partir de l'adresse P'.
Après exécution de plusieurs instructions, on arrive à une instruction E11 qui commande l'initialisation l' d'une variable A'[N'] à une valeur prédéterminée V'. La variable A'[N'] est un élément prédéfini (ici le dernier élément, situé en (N+1)ème position) dans le tableau mémorisé à l'adresse A'. Comme expliqué ci-après, les N premiers éléments du tableau (référencés A[0] à A[N-1]) sont utilisés au cours du traitement par la fonction mise en oeuvre par le sous-programme mémorisé à l'adresse SP', tandis que le dernier élément du tableau A'[N'] est destiné à vérifier l'absence d'attaque par faute, comme cela sera expliqué plus amplement dans la suite. La mise en oeuvre du programme principal continue par l'exécution des instructions suivant l'instruction E11 jusqu'à arriver à une instruction E12 qui provoque un appel au sous-programme mémorisé à l'adresse SP' avec passage en paramètre de l'adresse A'. Comme indiqué à propos du premier mode de réalisation, d'autres variables ou adresses pourraient être passées en paramètre. Du fait de l'appel du sous-programme, le déroulement se poursuit par l'exécution par le microprocesseur 6 des instructions mémorisées à partir de l'adresse SP'. On arrive ainsi à une instruction E13 au moyen de laquelle on vérifie que la valeur de l'élément prédéfini A'[N'] du tableau mémorisé à l'adresse A' (reçue en paramètre) est bien la valeur V' à laquelle l'élément prédéfini a été initialisé par le programme principal à l'étape l' : cette vérification est ici réalisée en comparant (étape C' en figure 4) la valeur de la variable A'[N'] à la valeur prédéterminée V' inscrite par l'instruction E11. En fonctionnement normal, c'est-à-dire notamment lorsque l'adresse A' a été correctement passée en paramètre au sous-programme mémorisé à l'adresse SP', la valeur mémorisée dans le dernier élément A'[N'] du tableau vaut effectivement V' du fait de l'initialisation par l'instruction El 1 et le programme peut se poursuivre normalement, comme indiqué ci-dessous (voir l'étape E14). En revanche, si une attaque par faute a permis à un attaquant de perturber l'adresse passée en paramètre lors de l'appel au sous-programme, le sous-programme n'accède pas en réalité à la structure mémorisé à l'adresse A' lors de l'étape de vérification, mais à une autre adresse (qui dépend de la perturbation). Par conséquent, si la comparaison C' effectuée par l'instruction E13 indique que la valeur A'[N'] n'est pas celle attendue (ici V'), cela peut être dû au fait que l'adresse passée en paramètre lors de l'exécution de l'instruction E12 a été perturbée et on considère dès lors qu'un risque d'attaque est présent et qu'une contre-mesure doit être mise en oeuvre. Par conséquent, en cas de vérification négative (à l'étape de comparaison C'), on met en oeuvre une contre-mesure, tel que par exemple le blocage du fonctionnement de l'entité électronique.
Lorsque la vérification a été positive et que le sous-programme peut se poursuivre, on arrive alors à une (ou plusieurs) instructions E14 qui mettent en oeuvre un traitement T' utilisant les variables de la structure mémorisée à l'adresse A' passée en paramètre (ici un tableau de données A10] à A[N'-1]). On remarque que le traitement effectué n'affecte pas l'élément prédéfini A'[N'] (ici le dernier élément du tableau). Il s'agit par exemple de la lecture dans le tableau mémorisé à l'adresse 5 A' de chacun des octets formant la clé de chiffrement qui doit être appliquée au message traité par la fonction mémorisée à l'adresse SP'. Le déroulement du sous-programme se poursuit jusqu'à une instruction E15 qui commande le retour au programme principal (fin du sous-programme).
10 Cette instruction E15 a pour conséquence l'exécution par le microprocesseur 6 de l'instruction mémorisée immédiatement après l'instruction E12 d'appel du sous-programme, comme bien visible en figure 4. Les exemples qui précèdent ne sont que des modes de réalisation envisageables pour la présente invention, qui ne s'y limite pas.
15 ANNEXE A #define INIT VALUE 0 void fonctionAppelante(void) { unsigned char message[16+1], clé[16+1], chiffré[16+1]; // Initialisation des 16 premiers octets du message et de la clé // Initialisation du 17ème octet : étape I message[16] = clé[16] = chiffré[16] = INIT_VALUE; // Appel à la fonction de chiffrement et passage des 3 pointeurs : instruction E2 fonctionChiffrement(message, clé, chiffré); // Vérification de la modification : étape C if((message[16] != INIT_VALUE+1) Il (clé[16] != INIT_VALUE+1) Il (chiffré[16] != INIT_VALUE +1) ) securityAction(); } void fonctionChiffrement( unsigned char*message, unsigned char*clé, unsigned char*chiffré) { // Chiffrement du message avec la clé et stockage dans chiffré : étape T // Modification d'un octet prédéfini : étape M message[16] ++; clé[16] ++; chiffré[16] ++; }45 ANNEXE B #define INIT_VALUE 100 Void functionappelante (void) { unsigned char PIN input[10+1], PIN inmemory[10]; PIN_input[10] = IN-IT_VALUE (étape I) compare (PIN input, PIN inmemory) if(PIN input71011= INIT VALUE+1) securityAction(); (étape C) } void compare(unsigned char *A, unsigned char *C) { for(i=0 ; i<10 ; i++) (étape T) *A A= *C A++ (étape M) c++ *A ++ } 30
Claims (17)
- REVENDICATIONS1. Procédé d'exécution d'un programme par un processeur, le procédé comprenant les étapes suivantes : - initialisation (I ; l') d'une donnée située à un emplacement prédéfini dans une structure mémorisée à une adresse en mémoire ; - appel (E2 ; E12), à partir d'un programme principal (P ; P'), d'un sous-programme (SP ; SP') avec passage d'une adresse (A ; A') en paramètre ; - traitement (T ; T'), par le sous-programme, de données de la 10 structure mémorisée à l'adresse reçue en paramètre par le sous-programme ; le procédé étant caractérisé en ce qu'il comprend les étapes suivantes : - vérification (C ; C') de la valeur de la donnée située à l'emplacement prédéfini dans la structure mémorisée à l'adresse passée en 15 paramètre ; - mise en oeuvre d'une contre-mesure en cas de résultat négatif à l'étape de vérification.
- 2. Procédé selon la revendication 1, caractérisé en ce que l'étape 20 de vérification inclut une étape de comparaison de la donnée située à l'emplacement prédéfini dans la structure mémorisée à l'adresse passée en paramètre à une valeur prédéfinie.
- 3. Procédé selon la revendication 1 ou 2, caractérisé en ce qu'il 25 comprend une étape de modification (M) par le sous-programme de la donnée située à l'emplacement prédéfini (A[N]) dans la structure et en ce que l'étape de vérification (C) est mise en oeuvre par le programme principal, après retour du sous-programme au programme principal, et vise une vérification de la modification de la donnée. 30
- 4. Procédé selon la revendication 3, caractérisé en ce que l'étape de modification comprend une incrémentation de la valeur de la donnée située à l'emplacement prédéfini dans la structure mémorisée à l'adresse reçue en paramètre.
- 5. Procédé selon la revendication 3, caractérisé en ce que l'étape de modification comprend une écriture, à l'emplacement prédéfini dans la structure mémorisée à l'adresse reçue en paramètre, d'une valeur prédéfinie distincte de la valeur d'initialisation.
- 6. Procédé selon la revendication 1 ou 2, caractérisé en ce que l'étape de vérification (C') est mise en oeuvre par le sous-programme (SP').
- 7. Procédé selon la revendication 6, caractérisé en ce que l'étape de 15 traitement (T') n'est réalisée qu'en cas de vérification positive.
- 8. Procédé selon l'une des revendications 1 à 7, caractérisé en ce que les données de la structure autres que celle située à l'emplacement prédéfini sont utilisées au cours de l'étape de traitement et en ce que la donnée 20 située à l'emplacement prédéfini n'est pas utilisée au cours de l'étape de traitement.
- 9. Procédé selon l'une des revendications 1 à 8, caractérisé en ce que la structure est un tableau ordonné et en ce que l'emplacement prédéfini 25 est le dernier emplacement du tableau.
- 10. Procédé selon l'une des revendications 1 à 9, caractérisé en ce que les données de la structure mémorisée à l'adresse passée en paramètre représentent un message. 10 30 2 9966 5 9 18
- 11. Procédé selon l'une des revendications 1 à 9, caractérisé en ce que les données de la structure mémorisée à l'adresse passée en paramètre représentent une clé de chiffrement. 5
- 12. Procédé selon l'une des revendications 1 à 11, caractérisé en ce que le traitement est un chiffrement de message.
- 13. Procédé selon l'une des revendications 1 à 9, caractérisé en ce que les données de la structure mémorisée à l'adresse passée en paramètre représentent un code d'identification personnel.
- 14. Procédé selon l'une des revendications 1 à 9 et 13, caractérisé en ce que le traitement est une vérification de code d'identification personnel.
- 15. Procédé selon l'une des revendications 1 à 9, caractérisé en ce que le traitement est la génération d'un nombre aléatoire pour mémorisation à l'adresse reçue en paramètre.
- 16. Procédé selon l'une des revendications 1 à 9, caractérisé en ce que le traitement est la modification d'un compteur mémorisé à l'adresse reçue en paramètre.
- 17. Entité électronique équipée d'un processeur et mémorisant un programme apte à mettre en oeuvre un procédé selon l'une des revendications 1 à 16 lorsque le programme est exécuté par le processeur.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1259664A FR2996659B1 (fr) | 2012-10-10 | 2012-10-10 | Procede d'execution d'un programme par un processeur et entite electronique equipee d'un tel processeur |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1259664A FR2996659B1 (fr) | 2012-10-10 | 2012-10-10 | Procede d'execution d'un programme par un processeur et entite electronique equipee d'un tel processeur |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2996659A1 true FR2996659A1 (fr) | 2014-04-11 |
FR2996659B1 FR2996659B1 (fr) | 2016-01-08 |
Family
ID=48050822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1259664A Expired - Fee Related FR2996659B1 (fr) | 2012-10-10 | 2012-10-10 | Procede d'execution d'un programme par un processeur et entite electronique equipee d'un tel processeur |
Country Status (1)
Country | Link |
---|---|
FR (1) | FR2996659B1 (fr) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2864658A1 (fr) * | 2003-12-30 | 2005-07-01 | Trusted Logic | Controle d'acces aux donnees par verification dynamique des references licites |
EP1739519A1 (fr) * | 2005-06-30 | 2007-01-03 | Axalto SA | Procédé de sécurisation de l'exécution d'un programme contre les attaques par rayonnement ou autres |
-
2012
- 2012-10-10 FR FR1259664A patent/FR2996659B1/fr not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2864658A1 (fr) * | 2003-12-30 | 2005-07-01 | Trusted Logic | Controle d'acces aux donnees par verification dynamique des references licites |
EP1739519A1 (fr) * | 2005-06-30 | 2007-01-03 | Axalto SA | Procédé de sécurisation de l'exécution d'un programme contre les attaques par rayonnement ou autres |
Also Published As
Publication number | Publication date |
---|---|
FR2996659B1 (fr) | 2016-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1964307B1 (fr) | Procédé pour la réalisation d'un compteur sécurisé sur un système informatique embarqué disposant d'une carte a puce. | |
EP1605333B1 (fr) | Contrôle de l'exécution d'un programme | |
EP1616242A1 (fr) | Procede et dispositif pour controler l'acces a un periferique | |
EP2447835B1 (fr) | Procédé de configuration d'une entité électronique | |
CA2575143C (fr) | Procede et dispositif de traitement de donnees | |
WO2005109742A1 (fr) | Procédé de traitement de données sécurisé et dispositif associé | |
FR3051579A1 (fr) | Procede de securisation d'un dispositif electronique, et dispositif electronique correspondant | |
FR2996659A1 (fr) | Procede d'execution d'un programme par un processeur et entite electronique equipee d'un tel processeur | |
FR3070076B1 (fr) | Procede de protection d'un dispositif electronique contre des attaques par injection de faute | |
WO2002027500A1 (fr) | Protection contre l'exploitation abusive d'une instruction dans une memoire | |
EP3032451B1 (fr) | Procédé d'exécution d'un programme par un processeur et entité électronique comportant un tel processeur | |
FR3090158A1 (fr) | Sécurisation d’une transaction au moyen d’une carte à puce et carte à puce | |
EP2252978B1 (fr) | Carte a circuit integre ayant un programme d'exploitation modifiable et procede de modification correspondant | |
EP1770524A2 (fr) | Détection d'erreur de séquencement dans l'exécution d'un programme | |
EP2195793A1 (fr) | Procede de generation de masques dans un objet communiquant et objet communiquant correspondant | |
EP4078418A1 (fr) | Système électronique et procédés d'activation dynamique de contre-mesures | |
EP3358493A1 (fr) | Procédé pour la sécurité d'une opération électronique | |
EP3514749B1 (fr) | Procede de controle de regles de dependances d'objets mis a jour dans un microcircuit, et dispositif correspondant | |
FR3147397A1 (fr) | Système informatique configuré pour exécuter un programme d’ordinateur | |
EP3032450B1 (fr) | Procédé de contrôle d'une authenticité d'un terminal de paiement et terminal ainsi sécurisé | |
EP3317832B1 (fr) | Procede de controle mis en oeuvre par un dispositif electronique au cours d'une transaction, et dispositif correspondant | |
EP1713023A1 (fr) | Protection de données contenues dans un circuit intégré | |
EP2630605B1 (fr) | Procede de securisation de l'execution d'un code informatique par redondance dynamique | |
EP3179400B1 (fr) | Procédé de chargement d'une ressource informatique au sein d'un dispositif électronique, module électronique et programme d'ordinateur correspondant | |
EP4307143A1 (fr) | Procede et circuit pour la verification de l'integrite d'un logiciel |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 4 |
|
PLFP | Fee payment |
Year of fee payment: 5 |
|
PLFP | Fee payment |
Year of fee payment: 6 |
|
PLFP | Fee payment |
Year of fee payment: 7 |
|
PLFP | Fee payment |
Year of fee payment: 8 |
|
CA | Change of address |
Effective date: 20200218 |
|
CD | Change of name or company name |
Owner name: IDEMIA FRANCE, FR Effective date: 20200218 |
|
CJ | Change in legal form |
Effective date: 20200218 |
|
PLFP | Fee payment |
Year of fee payment: 9 |
|
ST | Notification of lapse |
Effective date: 20220605 |