FR 2907236 A1 20080418 FR 0608916 A 20061011 PROCEDE DE SECURISATION LORS DE L'EXECUTION D'UNE FONCTION ET DISPOSITIF ASSOCIE La présente invention concerne la sécurisation lors de l'exécution d'une fonction. L'exécution d'une fonction comprend souvent une succession d'opérations manipulant des données. Chacune de ces opérations génère alors un résultat intermédiaire qui peut constituer une information sensible. Ce peut être le cas par exemple quand la fonction en question comprend une opération cryptographique utilisant une clé secrète (algorithme de chiffrement à clé secrète, calcul de signature, etc.). L'accès aux données intermédiaires générées par cette opération cryptographique pourrait en effet permettre de retrouver la clé secrète en question et compromettre ainsi la sécurité du système. On comprend donc qu'il est souhaitable d'éviter de rendre accessibles 15 les résultats intermédiaires sensibles lors de l'exécution d'une fonction. Or, un type d'attaque s'est développé dans le but précisément d'avoir accès à des données intermédiaires générées lors de l'exécution d'une fonction. Ce type d'attaque consiste par exemple à empêcher l'exécution d'une des opérations successives mises en oeuvre par la fonction ou bien à la 20 remplacer par une autre opération. Lorsque la fonction est exécutée par un dispositif de type carte à puce par exemple, l'attaque susmentionnée est typiquement réalisée à l'aide d'un laser appliqué sur la puce. On note qu'une telle attaque par laser ne permet actuellement d'empêcher la réalisai:ion que d'une seule opération parmi la 25 succession des opérations mises en oeuvre par la fonction. La figure 1 montre un exemple schématique de l'exécution d'une fonction selon une méthode classique de l'art antérieur. L'exécution de cette fonction comprend la mise en oeuvre de deux opérations successives o1 et 02. A un instant initial to, une zone mémoire m stocke une donnée A. 30 L'opération oi est alors appliquée à A de façon à obtenir la donnée B (étape 1). B est stocké dans la zone mémoire rn en remplacement de A à un instant t1. B 2907236 -2- sert ensuite de donnée d'entrée pour l'opération 02 (étape 2). La donnée de sortie C issue de l'opération 02, qui est aussi le résultat final de la fonction exécutée, est stockée dans la zone mémoire m en remplacement de C à un instant t2. 5 On notera que la zone mémoire m stockant provisoirement les données est généralement choisie de faible taille pour des raisons d'économie évidentes. C'est également ce qui justifie l'utilisation de cette même zone mémoire m pour accueillir à la fois les données d'entrée et de sortie des différentes opérations. 10 A titre d'exemple, l'opération o1 pourrait être l'algorithme de chiffrement DES décrit notamment dans la norme ISO/IEC FDIS 10116: Information technology - Security techniques - Modes of operation for an n-bit block cipher publiée par l'organisation internationale de normalisation ISO et la commission internationale électrotechnique IEC et dernièrement révisée en janvier 2005, ainsi que dans la norme FIPS PUB 46-3 : Data Encryption Standard (DES) , publiée en octobre 1999 par le Federal Information Processing standards. Cette opération utilise une clé KI de 56 bits répartis sur 8 octets. Par ailleurs, l'opération o2 pourrait être l'algorithme de chiffrement TDES (ou Triple DES) également décrite dans les documents susmentionnés. Cette opération utilise une clé K de 16 octets qui consiste en la concaténation de la clé K1 et d'une autre clé K2 de 8 octets. On peut montrer que le niveau de sécurité apporté par la succession de ces opérations est le même que celui fourni par la fonction TDES lorsqu'elle est mise en oeuvre seule. Si l'attaque effectuée a pour conséquence d'empêcher la réalisation de l'étape 2, c'est-à-dire la mise en oeuvre de l'opération o2, le résultat intermédiaire B reste alors dans la zone mémoire m, comme s'il s'agissait du résultat final de la fonction exécutée. L'attaquant pourrait alors avoir accès à B. Etant donnée la faible taille de la clé K1, l'attaquant pourrait retrouver celle-ci à partir de la valeur de B, par une attaque par force brutale (essai de toutes les valeurs de clé possibles) par exemple. Par la suite, il pourrait 2907236 -3- également retrouver la clé K2, puisque celle-ci est de même taille que K1. Sans cette attaque, c'est-à-dire lorsqu'on ne dispose que du résultat final C, la sécurité du système ne peut être déjouée qu'en retrouvant la clé K dans son ensemble, ce qui est largement plus difficile que dans le cas 5 précédent, du fait de sa grande taille. Un but de la présente invention est de limiter les inconvénients susmentionnés, et notamment les risques qu'un attaquant puisse avoir accès à des données intermédiaires sensibles lors de l'exécution d'une fonction. L'invention propose ainsi un procédé de sécurisation lors de l'exécution 10 d'une fonction, ladite fonction mettant en oeuvre une succession d'opérations s'appliquant chacune à des données d'entrée pour obtenir des données de sortie, les données de sortie de chaque opération servant de données d'entrée pour l'opération suivante de ladite succession d'opérations. Le procédé comprend les étapes suivantes, relativement à l'une au 15 moins des opérations de ladite succession d'opérations, les données d'entrée de ladite opération étant placées dans une première zone mémoire : appliquer ladite opération auxdites données d'entrée pour obtenir des données de sortie ; placer lesdites données de sortie dans une deuxième zone mémoire 20 distincte de la première zone mémoire ; copier dans une troisième zone mémoire distincte de la deuxième zone mémoire, les données de sortie placées dans la deuxième zone mémoire ; et - remplacer, dans la deuxième zone mémoire, lesdites données de sortie 25 par des données distinctes desdites données de sortie. Ainsi, l'utilisation de zones mémoires distinctes pour les données d'entrée et de sortie respectivement, ainsi que le remplacement, après une opération donnée, des données de sortie par d'autres données dans la deuxième zone mémoire, permet d'éviter qu'un attaquant puisse avoir accès 30 auxdites données de sortie par simple consultation de la deuxième zone mémoire. 2907236 -4- La troisième zone mémoire peut être éventuellement confondue avec la première zone mémoire, lorsque celle-ci stocke les données d'entrée de plusieurs opérations successives de ladite succession d'opérations. Le remplacement, dans la deuxième zone mémoire, desdites données 5 de sortie par des données distinctes desdites données de sortie peut comprendre une mise à zéro des données présentes dans ladite deuxième zone mémoire. En variante, les données distinctes desdites données de sortie peuvent correspondre à une valeur sensiblement aléatoire. Avantageusement, au moins une opération de ladite succession 10 d'opérations est une opération cryptographique utilisant une clé secrète. Il y a, en effet, intérêt à éviter la divulgation de données intermédiaires qui pourraient permettre de retrouver la clé secrète dans ce cas. L'invention propose aussi un dispositif agencé pour effectuer une sécurisation lors de l'exécution d'une fonction, ladite fonction mettant en oeuvre 15 une succession d'opérations s'appliquant chacune à des données d'entrée pour obtenir des données de sortie, les données de sortie de chaque opération servant de données d'entrée pour l'opération suivante de ladite succession d'opérations. Le dispositif comprend, relativement à l'une au moins des opérations 20 de ladite succession d'opérations, les données d'entrée de ladite opération étant placées dans une première zone mémoire : des moyens pour appliquer ladite opération auxdites données d'entrée pour obtenir des données de sortie ; des moyens pour placer lesdites données de sortie dans une deuxième 25 zone mémoire distincte de la première zone mémoire ; des moyens pour copier dans une troisième zone mémoire distincte de la deuxième zone mémoire, les données de sortie placées dans la deuxième zone mémoire ; et - des moyens pour remplacer, dans la deuxième zone mémoire, lesdites 30 données de sortie par des données distinctes desdites données de sortie. 2907236 -5- Le dispositif en question peut par exemple comprendre une carte à puce ou un composant électronique dédié à l'exécution de ladite fonction. D'autres particularités et avantages de la présente invention apparaîtront dans la description ci-après d'exemples de réalisation non 5 limitatifs, en référence aux dessins annexés, dans lesquels : - la figure 1, déjà commentée, est un schéma représentant l'exécution d'une fonction selon l'art antérieur ; et - la figure 2 est un schéma représentant l'exécution d'une fonction selon l'invention. 10 Des zones mémoires distinctes sont utilisées pour mettre en oeuvre les opérations successives d'une fonction. Au moins une de ces zones mémoires est utilisée pour stocker les données d'entrée de chaque opération, tandis qu'une autre zone mémoire est utilisée pour stocker les données de sortie de chaque opération. A l'issue d'une des opérations, les données de sortie 15 présentes dans la zone mémoire stockant les données de sortie sont copiées dans la zone mémoire stockant les données d'entrée, pour permettre à l'opération suivante de s'appliquer sur le résultat de l'opération précédente. Ce mode opératoire peut être répété pour plusieurs opérations voire chacune des opérations mises en oeuvre par la fonction exécutée. 20 En outre, le contenu de la zone mémoire stockant les données de sortie est modifié, pour éviter qu'un attaquant puisse disposer de celui-ci et puisse ainsi avoir accès à des résultats intermédiaires potentiellement sensibles. On note que l'utilisation de zones mémoires distinctes constitue une 25 augmentation de l'espace mémoire consacré au stockage temporaire des données lors de l'exécution d'une fonction, par rapport au mode de réalisation classique rappelé en introduction. Ceci va à l'encontre du souci habituel d'économie de la mémoire. Autrement dit, l'économie de la mémoire est un peu sacrifiée en faveur de la sécurité du système. 30 On note que les zones mémoires utilisées peuvent être de tout type. Il peut par exemple s'agir de simples mémoires tampons capables de stocker quelques éléments binaires, voire quelques octets au maximum. Leur taille 2907236 -6- peut bien sûr dépendre de la capacité de mémoire totale du système. La figure 2 montre un exernple d'exécution d'une fonction selon la présente invention. A un instant initial t'l, une première zone mémoire d'entrée m; stocke la 5 valeur A qui constitue la donnée d'entrée pour la première opération o, mise en oeuvre dans la fonction en question. A l'étape 3, cette opération o, est alors appliquée à A pour obtenir la donnée de sortie B. B est stocké dans une deuxième zone mémoire de sortie mo distincte de m;. La valeur B contenue dans mo est ensuite copiée dans la zone 10 mémoire m; (étape 4). A l'instant t'2, la valeur B est ainsi présente dans la zone mémoire d'entrée m;. Dans cet exemple, la même zone mémoire m; stocke les données d'entrée pour les différentes opérations successives mises en oeuvre dans la fonction exécutée. Cependant, dans un autre exemple, la valeur B contenue 15 dans mo pourrait être copiée dans une troisième zone mémoire distincte de m0, mais aussi distincte de la zone mérnoire m;. Autrement dit, on comprendra que, dans l'exemple illustré sur la figure 2, cette troisième zone mémoire est confondue avec la première zone mémoire d'entrée m;. Le contenu de la zone mémoire de sortie mo est modifié, de façon à ce 20 que la valeur B soit remplacée par une nouvelle valeur v à un instant t'3. L'instant t'3 peut être simultané ou ultérieur à t'2. A un instant ultérieur t'4, la deuxième opération 02 mise en oeuvre dans la fonction exécutée est appliquée à la valeur B comprise dans la zone mémoire d'entrée m;, de façon à obtenir une valeur de sortie C qui est alors 25 mémorisée dans la zone mémoire de sortie mo (étape 6). C constitue donc le résultat final de la fonction exécutée. Lorsque l'exécution de la fonction s'effectue de manière correcte, ce résultat peut être présenté à un utilisateur qui est typiquement celui qui a requis l'exécution de la fonction. Cette présentation du résultat final à l'utilisateur peut être faite à l'aide 30 d'une interface utilisateur quelconque. On note qu'en l'absence d'attaque, seul ce résultat final C est rendu accessible. Ni le contenu de la zone mémoire m;, 2907236 -7- ni, à des instants antérieurs à t'4, celui de la zone mémoire mo ne sont rendus accessibles. On prend désormais l'hypothèse qu'un attaquant tente d'empêcher l'exécution d'une des opérations, ou plus généralement d'une des étapes, 5 mises en oeuvre lors de l'exécution de la fonction considérée. Comme mentionné en introduction, une telle attaque peut par exemple être réalisée par application d'un laser sur le circuit en charge de l'exécution de la fonction (par exemple sur la puce d'une carte à puce). Si l'attaque empêche la réalisation de l'étape 6 dans l'exemple illustré 10 sur la figure 2, l'opération 02 n'est pas mise en oeuvre. Il en résulte que la valeur v reste présente dans la zone mémoire de sortie mo. Cette valeur v pourrait ainsi être considérée à tort: comme le résultat final de la fonction exécutée et l'attaquant pourrait y avoir accès. Toutefois, cette valeur v est choisie distincte de B (précédemment 15 présent dans la zone mémoire rno et qui peut constituer un résultat intermédiaire potentiellement sensible), si bien que v ne donne aucune information utile qui pourrait compromettre la sécurité du système. La valeur v peut par exemple être choisie indépendante de l'opération O.. 20 Selon un exemple avantageux, la valeur v qui remplace B dans la zone mémoire mo peut être une valeur par défaut, par exemple une valeur nulle correspondant à une remise à zéro du contenu de mo. En variante, cette valeur v peut être une valeur aléatoire ou pseudo aléatoire. Ce dernier cas est particulièrement intéressant, dans la mesure où 25 une valeur aléatoire pourrait constituer une valeur crédible pour une donnée de sortie de la fonction o1. De ce fait, l'attaquant pourrait considérer que la valeur v correspond bien à un résultat intermédiaire de la fonction exécutée. II pourrait ainsi être poussé à réaliser des opérations vaines pour tenter de retrouver des informations sensibles, telles qu'une clé secrète utilisée par l'opération o, 30 lorsque celle-ci est une opération cryptographique. A la lumière de l'exemple décrit ci-dessus, on comprend que l'accès 2907236 -8- aux résultats intermédiaires de la fonction exécutée est évité grâce à l'utilisation de deux zones mémoires distinctes et à l'effacement des résultats intermédiaires obtenus dans le cadre de cette exécution. Si, selon une autre hypothèse, l'attaque effectuée a pour conséquence 5 d'empêcher la réalisation de l'étape 4, c'est-à-dire la copie de la valeur B contenue dans la zone mémoire de sortie mo dans la zone mémoire d'entrée m;, la valeur A reste alors présente dans la zone mémoire m; à l'instant t'2. L'opération o2 est alors appliquée à la valeur A (et non à la valeur B comme dans le cas normal illustré sur la figure 2). Il en résulte une valeur finale 10 erronée différente de C et dont l'accès par l'attaquant ne pose aucun problème pour la sécurité du système. Selon une autre hypothèse encore, l'attaque pourrait entraîner la non réalisation de l'étape 5, c'est-à-dire du remplacement, dans la zone mémoire de sortie mo, de la valeur B par la valeur v. Dans ce cas, toutefois, l'opération 15 02 est tout de même mise en oeuvre à l'étape 6, si bien que la valeur B est remplacée par le résultat final C dans la zone mémoire de sortie m0. Ceci est du au fait, mentionné en introduction, que l'on considère qu'une telle attaque ne peut empêcher la réalisation que d'une seule étape, lors de l'exécution de la fonction. Ainsi, on prend pour hypothèse que la non réalisation de l'étape 5 20 implique nécessairement que l'étape 6 sera effectuée. L'attaquant n'a alors accès qu'au résultat final C de la fonction exécutée, qui ne lui donne pas d'information sensible pouvant être exploitée pour compromettre la sécurité du système. Ainsi, quelle que soit l'étape empêchée par l'attaque, aucune 25 information sensible n'est fournie à l'attaquant. Lorsque la fonction exécutée comporte une opération cryptographique utilisant une clé secrète, le mode de fonctionnement décrit en référence à la figure 2 permet d'éviter que l'attaquant puisse exploiter le résultat intermédiaire B de la fonction pour retrouver la clé secrète. Le secret mis en oeuvre par cette 30 opération cryptographique est ainsi préservé. Le procédé décrit ci-dessus peut être mis en oeuvre sur un dispositif tel qu'une carte à puce par exemple. D'autres dispositifs, tels que des composants 2907236 -9- électroniques dédiés à l'exécution d'une fonction peuvent également mettre en oeuvre ce procédé. On note que, dans de tels dispositifs, les différentes étapes mises en oeuvre lors de l'exécution de la fonction, sont généralement codées sous la 5 forme d'instructions aléatoirement distantes dans le temps. Grâce à cette caractéristique, l'attaque complexe qui consisterait à appliquer un laser à deux endroits distincts du dispositif successivement, dans l'espoir d'empêcher la réalisation de deux opérations, n'a que très peu de chances de pouvoir être réalisée avec succès. 10 Si l'on reprend l'exemple décrit en introduction dans lequel, l'opération o1 désigne l'algorithme de chiffrement DES et l'opération 02 désigne l'algorithme de chiffrement TDES, on comprend donc que l'inhibition de l'opération o2 par un attaquant ne permettra à ce dernier que d'obtenir une valeur v ne donnant donc aucune information susceptible de l'aider à retrouver 15 la clé K1 utilisée par l'algorithme DES. A fortiori, la clé K=(K1,K2) de l'algorithme TDES ne pourra être retrouvée par l'attaquant. REVENDICATIONS 1. Procédé de sécurisation lors de l'exécution d'une fonction, ladite fonction mettant en oeuvre une succession d'opérations (01,02) s'appliquant chacune à des données d'entrée (A,B) pour obtenir des données de sortie (B,C), les données de sortie de chaque opération servant de données d'entrée pour l'opération suivante de ladite succession d'opérations, le procédé comprenant les étapes suivantes, relativement à l'une (o1) au moins des opérations de ladite succession d'opérations, les données d'entrée (A) de ladite opération étant placées dans une première zone mémoire (mi) : appliquer ladite opération (o.1) auxdites données d'entrée (A) pour obtenir des données de sortie (B) ; placer lesdites données de sortie dans une deuxième zone mémoire (mo) distincte de la première zone mémoire (m;) ; copier dans une troisième zone mémoire (mi) distincte de la deuxième 15 zone mémoire (mo), les données de sortie (B) placées dans la deuxième mémoire (mo) ; et remplacer, dans la deuxième zone mémoire (mo), lesdites données de sortie (B) par des données (v) distinctes desdites données de sortie. 2. Procédé selon la revendication 1, dans lequel les données (v) 20 distinctes desdites données de sortie correspondent à une valeur par défaut, telle qu'une valeur nulle. 3. Procédé selon la revendication 1, dans lequel les données (v) distinctes desdites données de sortie correspondent à une valeur sensiblement aléatoire. 25 4. Procédé selon l'une quelconque des revendications précédentes, dans lequel au moins une opération de ladite succession d'opérations est une opération cryptographique utilisant une clé secrète. 2907236 -.11- 5. Dispositif agencé pour effectuer une sécurisation lors de l'exécution d'une fonction, ladite fonction mettant en oeuvre une succession d'opérations (01,02) s'appliquant chacune à des données d'entrée (A,B) pour obtenir des données de sortie (B,C), les données de sortie de chaque opération servant de 5 données d'entrée pour l'opération suivante de ladite succession d'opérations, le dispositif comprenant, relativement: à l'une au moins des opérations (o,) de ladite succession d'opérations, les données d'entrée (A) de ladite opération étant placées dans une première zone mémoire (m;) : - des moyens pour appliquer ladite opération (o1) auxdites données 10 d'entrée (A) pour obtenir des données de sortie (B) ; - des moyens pour placer lesdites données de sortie dans une deuxième zone mémoire (m0) distincte de la première zone mémoire (m;) ; - des moyens pour copier dans une troisième zone mémoire (mi) distincte de la deuxième zone mémoire (mo), les données de sortie (B) placées 15 dans la deuxième zone mémoire (mo) ; et des moyens pour remplacer, dans la deuxième zone mémoire (mo), lesdites données de sortie (13) par des données (v) distinctes desdites données de sortie. 6. Dispositif selon la revendication 5, dans lequel les données (v) 20 distinctes desdites données de sortie correspondent à une valeur par défaut, telle qu'une valeur nulle. 7. Dispositif selon la revendication 5, dans lequel les données (v) distinctes desdites données de sortie correspondent à une valeur sensiblement aléatoire. 25 8. Dispositif selon l'une quelconque des revendications 5 à 7, dans lequel au moins une opération de ladite succession d'opérations est une opération cryptographique utilisant une clé secrète. 9. Dispositif selon l'une quelconque des revendications 5 à 8, comprenant une carte à puce. 2907236 -. 12 - 10. Dispositif selon l'une quelconque des revendications 5 à 8, comprenant un composant électronique dédié à l'exécution de ladite fonction.