Brevet FR2831739A1 — publié le 20030502

PROCÉDÉ DE MISE EN OEUVRE SÉCURISÉE D'UN MODULE FONCTIONNEL, DANS UN COMPOSANT ÉLECTRONIQUE ET COMPOSANT CORRESPONDANT La présente invention concerne un procédé de mise en oeuvre sécurisée d'un module-fonctionnel dans un composant électronique. L'invention se rapporte également au composant électronique correspondant. On entend par module fonctionnel, un module matériel dédié à l'exécution d'une fonction qui peut être un algorithme, ce module matériel étant inclus dans un composant électronique ; ce peut être également un module logiciel constitué d'un programme visant à réaliser une fonction qui peut être un algorithme, ce module logiciel étant mis en oeuvre dans un composant électronique.' De tels composants sont notamment utilisés dans des applications où l'accès à des services ou à des données est sévèrement contrôlé, telles que les applications de cryptographie. Ils ont une architecture dite logicielle, c'est-àdire programmable formée autour d'un microprocesseur et de mémoires, dont une mémoire programme non volatile qui contient un ou plusieurs nombre (s) secret (s) ; il s'agit d'une architecture généraliste apte à exécuter n'importe quel algorithme. Ils peuvent aussi être complétés par une architecture dite matérielle, c'est- à-dire comportant un (ou plusieurs) coprocesseur (s) dédié (s) à l'exécution de calculs spécifiques ou d'un seul algorithme qui présente l'avantage d'exécuter l'algorithme beaucoup plus rapidement que dans le cas d'une architecture logicielle. Dans le cas par exemple de l'algorithme de cryptographie à clé secrète DES, acronyme anglo-saxon pour"Data Encryption Standard", qui peut être utilisé pour chiffrer un message, l'exécution est de 1000 à 10000 fois plus rapide lorsqu'elle est effectuée par un coprocesseur. Ces composants sont utilisés dans des systèmes informatiques, embarqués ou non ; ils sont notamment utilisés dans les cartes à puce, pour certaines applications de celles-ci. Ce sont par exemple des applications d'accès à certaines banques de données, des applications bancaires, des applications de télépéage, par exemple pour la télévision, la distribution d'essence ou encore le passage de péages d'autoroutes. Ces composants ou ces cartes mettent donc en oeuvre un algorithme de cryptographie pour assurer le chiffrement, l'authentification ou la signature numérique d'un message lorsque celui-ci doit demeurer confidentiel. A partir de ce message appliqué en entrée à la carte par un système hôte (serveur, distributeur bancaire...) et de nombres secrets contenus dans la carte, la carte fournit en retour au système hôte ce message chiffré, authentifié ou signé, ce qui permet par exemple au système hôte d'authentifier le composant ou la carte, d'échanger des données, Les caractéristiques des algorithmes de cryptographie peuvent être connues : calculs effectués, paramètres utilisés. La seule inconnue est le ou les nombres secrets. Toute la sécurité de ces algorithmes de cryptographie tient dans ce (s) nombre (s) secret (s) contenu (s) dans la carte et inconnu (s) du monde extérieur à cette carte. Ce nombre secret ne peut être déduit de la seule connaissance du message appliqué en entrée et du message chiffré fourni en retour. Or il est apparu que des attaques externes basées sur des grandeurs physiques mesurables à l'extérieur du composant lorsque celui-ci est en train de dérouler l'algorithme de cryptographie, permettent à des tiers mal intentionnés de trouver le (s) nombre (s) secret (s) contenu (s) dans cette carte. Ces attaques sont appelées attaques à canaux cachés ("Side channel attacks"en anglais) ; on distingue parmi ces attaques à canaux cachés, les attaques'SPA acronyme anglo-saxon pour Single Power Analysis basées sur une voire quelques mesures et les attaques DPA, acronyme anglo-saxon pour Differential Power Analysis basées sur des analyses statistiques issues de nombreuses mesures. Le principe de ces attaques à canaux cachés repose par exemple sur le fait que la consommation en courant du microprocesseur et/ou du coprocesseur exécutant des instructions varie selon l'instruction ou la donnée manipulée. Ce type d'attaque est notamment envisageable avec les algorithmes de cryptographie à clé secrète comme par exemple l'algorithme DES ou à clé publique comme par exemple l'algorithme RSA du nom de ses auteurs (Rivest, Shamir et Adleman). Certains procédés de contre-mesure permettant de parer les attaques visant à obtenir la clé secrète, consistent à ne pas manipuler directement la clé secrète. Une autre contre-mesure consiste à brouiller temporellement la consommation en courant du composant, en utilisant le module fonctionnel sensible à des instants aléatoires ; l'attaquant ne peut alors repérer facilement le début de l'utilisation du module sensible. Cette contre-mesure est dite non déterministe. On peut aussi brouiller en amplitude la consommation en courant du composant, en activant puis désactivant divers éléments de la carte qui consomment également du courant. Le signal intéressant se trouve alors enfoui parmi les signaux de ces éléments de la carte. Le but de la présente invention est donc de protéger un module fonctionnel sensible d'une architecture logicielle et/ou matérielle contre des attaques intervenant lors de son exécution, notamment contre les attaques à canaux cachés telles que les attaques DPA. L'invention a pour objet un procédé de mise en oeuvre sécurisée d'un module fonctionnel, dans un composant électronique, principalement caractérisé en ce qu'il consiste, pour chaque mise en oeuvre dudit module, à réaliser dans un ordre aléatoire, m exécutions correctes et n exécutions factices dudit module, m et n étant des entiers positifs non nuls. Avantageusement m Selon un mode de réalisation préférentiel de l'invention, les n exécutions factices sont identiques. Selon une caractéristique de l'invention, les n exécutions factices sont déterminées en fonction de l'exécution correcte. Selon une caractéristique additionnelle de l'invention, le nombre P de mises en oeuvre des m+n exécutions du module est limité. Selon une autre caractéristique de l'invention, les m+n exécutions du module fonctionnel sont à code constant et à temps constant. Selon un mode de réalisation de l'invention, les m+n exécutions débutent chacune à un instant aléatoire et/ou, le composant comprenant des éléments consommateurs de courant, un ou plusieurs de ces éléments sont activés puis désactivés de manière à brouiller la consommation en courant du composant. Le module fonctionnel peut avoir pour fonction un algorithme de cryptographie. Selon un mode de réalisation de l'invention, l'algorithme de cryptographie utilise une clé K et chacune des m exécutions correctes consiste à exécuter ledit algorithme en utilisant la clé K et chacune des n exécutions factices consiste à exécuter ledit algorithme en utilisant respectivement une fausse clé K'1,..., K'n- Les fausses clés sont de préférence identiques, y 1 K'1 =... =K' n=K'. L'invention a également pour objet un composant électronique comportant des moyens de mise en oeuvre sécurisée d'un module fonctionnel tels que décrits précédemment. Il comporte avantageusement un coprocesseur dédié à la mise en oeuvre du module fonctionnel. L'invention concerne aussi une carte à puce comportant un composant électronique tel que décrit. D'autres particularités et avantages de l'invention apparaîtront clairement à la lecture de la description faite à titre d'exemple non limitatif et en regard des dessins annexés sur lesquels : la figure 1 représente schématiquement divers éléments d'un algorithme de cryptographie de type DES, la figure 2 représente schématiquement un mode de réalisation de l'invention, le figure 3 représente schématiquement des déroulements successifs du procédé selon l'invention. Le procédé selon l'invention vise à protéger un module fonctionnel contre des attaques intervenant lors de son exécution, notamment contre les attaques à canaux cachés telles que les attaques DPA. Lorsque la fonction du module fonctionnel est un algorithme, celui-ci peut être un algorithme de vérification du code"PIN"au travers d'un terminal, ou un algorithme de cryptographie comme par exemple l'algorithme DES. Dans la suite de la description, on va plus particulièrement considérer comme module fonctionnel, un module matériel dédié à l'exécution d'un algorithme de cryptographie de type DES ; on le désigne dans la suite par DES. Comme représenté figure 1, à partir du message M fourni en entrée au module matériel, en l'occurrence un coprocesseur désigné par"CoDES", celui-ci fournit en sortie le message MC chiffré au moyen d'une clé secrète K. Selon l'invention, à chaque fois que le DES doit être mis en oeuvre, le DES est exécuté plusieurs fois, dans un ordre aléatoire, m fois de façon correcte, c'est-à-dire en utilisant la clé secrète K et n fois de façon factice en utilisant de fausses clés K'1, K'2,..., K'n de manière à leurrer un attaquant. A partir d'une architecture matérielle, une exécution du DES est très rapide : celle-ci peut alors être répétée plusieurs fois, par exemple 8 fois, sans que cela soit réellement pénalisant. On choisit de préférence m n, par exemple m=l et n=7. Exécuter le DES m+n fois dans un ordre aléatoire signifie que pour chaque exécution du DES, la clé est choisie de manière aléatoire parmi les clés restantes, c'est-à-dire parmi les clés n'ayant pas encore été utilisées. Comme on le verra plus loin pour divers modes de réalisation de l'invention, l'ordre aléatoire peut aussi consister à choisir la première clé de manière aléatoire, le choix des clés suivantes étant déterminé ou encore à déterminer une séquence aléatoire. Selon un mode de réalisation de l'invention, représenté figure 2, les vraie et fausses clés K, K'1, ..., K'-7 sont stockées dans une table Clés et repérées par un index i variant de 0 à 7 et les résultats correspondant à chacune des clés sont stockés dans une table Rés dans un emplacement repéré par exemple par le même index i. L'index de la première clé est choisi de façon aléatoire. La première clé a par exemple l'index 2 (représenté par une flèche sur la figure 2) ; il s'agit donc de K'z. Le DES est alors exécuté une première fois avec cette première clé K'2 pour chiffrer par exemple le message M et le résultat obtenu Rs est stocké dans la table Rés à l'index 2. Le DES est ensuite exécuté avec la clé suivante, la clé K'3 pour chiffrer le message M et le résultat R3 est stocké dans la table Rés à l'index 3, etc. La 7ième exécution du DES est effectuée avec la clé K'l pour chiffrer le message M et la dernière avec la clé K. L'emplacement du bon résultat R dans la table Rés qui correspond à celui de la bonne clé dans la table Clés, est connu d'avance : dans notre exemple, il s'agit de l'emplacement repéré par l'index 1. Mais bien sûr, l'instant auquel ce résultat R est stocké n'est pas connu. Lorsque les fausses clés sont différentes comme c'est le cas dans le mode de réalisation qui vient d'être décrit, les signaux de consommation en courant leur correspondant sont difficilement repérables : chacun de ces signaux sont quasiment équivalents car ils ont en quelque sorte le même poids. Mais ils ne constituent pas un leurre vis-à-vis d'attaques de type DPA. C'est pourquoi, selon un autre mode de réalisation préférentiel de l'invention, les n utilisations factices sont identiques, c'est-à-dire que les fausses clés K'1, K'2,..., K'n sont identiques et égales à K'. Ainsi, dans le cas d'attaques statistiques telles que les attaques DPA, le signal correspondant à la clé K'est plus accentué (n fois) que celui correspondant à la clé K ; le signal correspondant à la vraie clé K est noyé dans le bruit de calcul de celui de la fausse clé K'. Dans ce cas, la table Clés ne comporte que deux clés, la vraie clé K et la fausse clé K'. De même la table Rés ne comporte que deux résultats. Le DES est également exécuté 8 fois, 7 fois avec la fausse clé et une fois avec la vraie clé. Lorsque la clé K est repérée par l'index 0, et la clé K'par l'index 1, le choix aléatoire des clés peut être obtenu de la manière suivante. On choisit un nombre aléatoire de 8 bits comportant 7 bits à 1 et un bit à zéro, par exemple 11101111. Les trois premières et quatre dernières exécutions du DES sont effectuées avec la clé repérée par l'index 1, c'est-à-dire la fausse clé et la quatrième exécution est effectuée avec la varie clé, repérée par l'index 0. D'autres variantes peuvent être réalisées comme par exemple celle qui consiste à ce que quelques fausses clés soient identiques tandis que les autres fausses clés diffèrent les unes des autres. Par ailleurs, selon un mode de réalisation particulier, l'algorithme de cryptographie est à code constant et à temps constant, c'est-à-dire qu'il exécute toujours les mêmes instructions et que les données manipulées n'interagissent pas sur la durée de l'algorithme. En outre, d'une fois sur l'autre, c'est-à-dire d'une mise en oeuvre des m+n exécutions à l'autre, l'ordre des exécutions correctes et factices est aléatoire, comme représenté figure 3. Sur cette figure m=l ; lors d'une première mise en oeuvre des n+1 DES, débutant au temps ti, l'exécution correcte (avec la clé K) intervient en 3è position, les n autres exécutions étant des exécutions factices avec les fausses clés K'i, K'2,..., K'n (éventuellement égales à K') ; lors de la seconde mise en oeuvre des n+1 DES, débutant au temps t2, l'exécution correcte (avec la clé K) intervient en 1ère position, les n autres exécutions étant des exécutions factices avec les fausses clés K'1, K'2,..., K'n (éventuellement égales à K') ;... ; lors de la Pième mise en oeuvre des n+1 DES, débutant au temps tp, l'exécution correcte (avec la clé K) intervient en 2è position, les n autres exécutions étant des exécutions factices avec les fausses clés K'1, K'2,..., K'n (éventuellement égales à K'). Avantageusement, on limite le nombre P de mises en oeuvre des m+n exécutions du DES de manière à contrecarrer les tentatives de l'attaquant qui dans le cas d'une attaque de type DPA, consisteraient à augmenter le nombre d'acquisitions de signaux. Selon un mode de réalisation préférentiel, les fausses clés K'1, K'2,..., K'n (éventuellement égales à K') sont déterminées en fonction de la vraie clé K. Lorsque la clé K est changée, les fausses clés K'i, K'2, ..., K'n (éventuellement égales à K') sont régénérées. Les fausses clés K'i, K'2,..., K'n (éventuellement égales à K') sont généralement stockées en mémoire comme on l'a vu dans les exemples de réalisation précédents ; elles peuvent néanmoins être recalculées ou tirées au hasard d'une fois sur l'autre. Lorsque m > l, par exemple m=2, il est possible de comparer les m résultats corrects obtenus afin de détecter une attaque par faute, c'est-à-dire dans le cas d'une erreur injectée. Il s'agit alors de détecter une attaque par faute tout en se protégeant des attaques à canaux cachés. Selon un autre mode de réalisation, on ajoute un brouillage temporel de la consommation en courant du composant, en utilisant le DES à des instants aléatoires et/ou on ajoute un brouillage en amplitude, en activant puis désactivant divers éléments de la carte qui consomment également du courant. REVENDICATIONS 1. Procédé de mise en oeuvre sécurisée d'un module fonctionnel, dans un composant électronique, caractérisé en ce qu'il consiste, pour chaque mise en oeuvre dudit module, à réaliser dans un ordre aléatoire, m exécutions correctes et n exécutions factices dudit module, m et n étant des entiers positifs non nuls. 2. Procédé selon la revendication précédente, caractérisé en ce que m 3. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que les n exécutions factices sont identiques. 4. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que les n exécutions factices sont déterminées en fonction de l'exécution correcte. 5. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que le nombre P de mises en oeuvre des m+n exécutions dudit module est limité. 6. Procédé selon la revendication précédente, caractérisé en ce que les m+n exécutions dudit module fonctionnel sont à code constant et à temps constant. 7. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que lesdites m+n exécutions débutent chacune à un instant aléatoire et/ou, ledit composant comprenant des éléments consommateurs de courant, un ou plusieurs desdits éléments sont activés puis désactivés de manière à brouiller la consommation en courant du composant. 8. Procédé selon la revendication précédente, caractérisé en ce que le module fonctionnel a pour fonction un algorithme de cryptographie. 9. Procédé selon la revendication précédente, caractérisé en ce que l'algorithme de cryptographie utilise une clé K et en ce que chacune des m exécutions correctes consiste à exécuter ledit algorithme en utilisant ladite clé K et chacune des n exécutions factices consiste à exécuter ledit algorithme en utilisant respectivement une fausse clé K'1,..., K'n. 10. Procédé selon la revendication précédente, caractérisé en ce que les fausses clés sont identiques, K'i=... =K'n=K'. 11. Composant électronique comportant des moyens de mise en oeuvre sécurisée d'un module fonctionnel selon l'une quelconque des revendications précédentes. 12. Composant électronique selon la revendication précédente, caractérisé en ce qu'il comporte un coprocesseur dédié à la mise en oeuvre dudit module fonctionnel. 13. Carte à puce comportant un composant électronique selon l'une quelconque des revendications 11 ou 12.