FR 2935078 A1 20100219 FR 0855536 A 20080812 PROCEDE DE PROTECTION DU DECRYPTAGE DES FICHIERS DE CONFIGURATION DE CIRCUITS LOGIQUES PROGRAMMABLES ET CIRCUIT METTANT EN OEUVRE LE PROCEDE L'invention concerne un procédé de protection du décryptage des fichiers de configuration de circuits logiques programmables de type FPGA ainsi qu'un circuit mettant en oeuvre de procédé. L'invention s'applique notamment aux domaines de l'électronique et de la sécurité des circuits logiques programmables. Le modèle économique du marché des composants électroniques montre depuis plus d'une dizaine d'années une transformation de la valeur. Ainsi, la description haut-niveau du matériel à générer, en utilisant par exemple les langages VHDL ou Verilog, est la partie la plus stratégique et il est par conséquent nécessaire de la protéger contre la contrefaçon. Par ailleurs, certains circuits embarquent des implémentations secrètes. C'est le cas des segments de marché de la diffusion de contenu comme la télévision satellitaire ou du militaire avec des protocoles et des algorithmes confidentiels. Ainsi, pour des raisons de lutte contre le piratage, il est nécessaire de rendre la rétro-conception des circuits impossible, sinon difficile. Dans les produits conçus sur-mesure, comme les circuits ASIC, la rétro-conception devient de plus en plus délicate avec la diminution des dimensions caractéristiques, actuellement de l'ordre du nanomètre. Mais toujours est-il que les parties sensibles à forte valeur stratégiques, ou stockant/traitant des données confidentielles, sont protégées par des méthodes ad hoc, comme par exemple : le blindage par une couche de métallisation empêchant une observation directe au microscope ; l'éparpillement de la logique compliquant l'identification visuelle des ressources ; le brouillage des bus de données, ce qui nécessite des moyens de cryptanalyse légère pour procéder à l'interprétation des éventuelles ressources identifiées. 35 A l'inverse, dans les composants reconfigurables, comme par exemple les FPGA, les informations à protéger sont disponibles sous la forme d'un fichier de configuration qualifié habituellement par la terminologie anglo-saxonne de � bitstream �. Dans certaines familles de FPGA, ce fichier de configuration est stocké dans une mémoire non-volatile, une PROM par exemple, facilement extractible car soudée et donc entièrement lisible. Cette mémoire n'étant pas sur la chaîne de valeur des concepteurs de produits FPGA, il est impératif que son coût soit le plus faible possible. Par conséquent, ces composants sont généralement démunis de protection 1 o sécuritaire. Dans d'autres familles de FPGA, le fichier de configuration est sauvegardé directement au sein de la matrice FPGA rendant plus complexe son accès. Il existe néanmoins des moyens, en utilisant par exemple un registre à décalage, pour écrire et quelquefois aussi pour lire ce fichier. Comme les 15 FPGA sont particulièrement vulnérables aux attaques visant à retrouver leur fichier de configuration, les grands constructeurs proposent des solutions de contre-mesure intégrées au circuit. Dans les implémentations actuelles, la lecture des fichiers de configuration est rendue difficile en les chiffrant avec des méthodes 20 symétriques, comme par exemple avec les algorithmes 3DES et AES. De plus, la communication entre ladite mémoire et le circuit logique programmable est également protégée, car le décryptage est habituellement réalisé sur la puce dudit circuit. L'opération logique de décryptage, quant à elle, n'est pas protégée 25 contre les attaques sur son implémentation physique. Ainsi une attaque intelligente permet potentiellement de retrouver la clé de chiffrement et donc d'accéder ensuite aux données contenues dans le fichier de configuration. De manière à retrouver cette clé de chiffrement, deux familles d'attaques peuvent être mises en oeuvre : les attaques par observation et les 30 attaques par perturbation ou injection de fautes. La première famille d'attaques, c'est-à-dire les attaques par observation, exploite le fait que la consommation électrique instantanée du circuit réalisant le chiffrement dépend notamment des données traitées. Plusieurs types d'attaques par observation sont connus. La SPA (Simple 35 Power Analysis) tente de différencier les opérations exécutées par une unité centrale à partir d'une mesure de sa consommation électrique mesurée pendant une opération cryptographique. L'analyse différentielle de consommation DPA (Differential Power Analysis) utilise des opérations statistiques sur de nombreuses mesures de consommation électrique, effectuées lors d'opérations de cryptographie sur des messages aléatoires et avec une clé constante pour valider ou invalider une hypothèse faite sur une partie limitée de la clé. Les attaques de type � template � utilisent dans une première phase un dispositif identique au dispositif attaqué, à ceci près que ce dispositif identique ne contient aucun secret, pour construire des modèles de consommation indexés par la valeur d'une partie limitée de la clé et utilisent dans une deuxième phase quelques mesures de consommation du dispositif attaqué pour déterminer le modèle dont les consommations mesurées sont les plus proches et ainsi déterminer la valeur de cette sous-clé. Par ailleurs, tout courant électrique circulant dans un conducteur engendre un champ électromagnétique dont la mesure peut donner lieu à des attaques identiques dans leur principe aux attaques portant sur la consommation électrique, notamment par DPA. La seconde famille d'attaques, c'est-à-dire les attaques par perturbation ou injection de fautes, introduisent une perturbation dans le système grâce, par exemples, à une variation de température ou de tension, un signal parasite fort sur l'alimentation ou par champ électromagnétique, à un tir laser, etc. Les fautes générées ont pour conséquence de modifier la valeur d'un noeud du circuit attaqué. Elles peuvent être simples ou multiples, permanentes ou transitoires en fonction de l'impact sur le silicium. La souplesse des injections de fautes transitoires donne lieu à des attaques plus puissantes en faisant des essais multiples et augmente les chances de succès. Les attaques avec des fautes simples simplifient la procédure d'attaque. Les attaques en fautes sont basées sur l'analyse différentielle entre la sortie chiffrée non erronée et la sortie avec faute. Le modèle de sécurité des fichiers de configuration des composants programmables est défaillant : les attaques physiques sur la mémoire non volatile sur laquelle se trouve le fichier sont contrecarrées par du chiffrement, mais le circuit de déchiffrement sur le composant programmable n'est pas protégé et peut être quant à lui sujet à une attaque physique. Il est ainsi possible d'isoler potentiellement le chiffrement de blocs de données du fichier de configuration, par exemple grâce à un déclenchement sur l'horloge de configuration et de mesurer la signature magnétique instantanée. Cette analyse permet de remonter à la clé de chiffrement, et donc au fichier de configuration décrypté. Un but de l'invention est notamment de palier les inconvénients précités. A cet effet l'invention a pour objet un procédé de protection d'un circuit à logique programmable caractérisé en ce que le ou les fichiers de données utilisés pour la configuration des ressources programmables du circuit sont stockés dans une mémoire non volatile après avoir étés cryptés, un module de décryptage interne au circuit étant en charge de décrypter le ou les fichiers en utilisant une clé secrète stockée dans le circuit, le module de décryptage étant protégé contre les attaques visant à obtenir la clé pendant l'opération de décryptage en implémentant au moins une technique de contre-mesure. Le circuit à logique programmable est par exemple de type FPGA. Le module de décryptage peut être par exemple un circuit logique dédié interne au circuit à logique programmable ou bien instancié par programmation des ressources configurables du circuit à logique programmable. Le module de décryptage est protégé, par exemple, par logique différentielle contre les attaques par observation. Le module de décryptage est protégé, par exemple, par masquage contre les attaques par observation. Le module de décryptage comprend, par exemple, un ou plusieurs mécanismes de détection de fautes. L'invention a aussi pour objet un circuit à logique programmable de type FPGA caractérisé en ce qu'il comporte au moins un module de décryptage interne au circuit chargé de décrypter le ou les fichiers de configuration des ressources programmables dudit circuit en utilisant une clé secrète stockée dans le circuit, le module de décryptage étant protégé contre les attaques par observation et/ou injection de fautes pendant l'opération de décryptage en utilisant le procédé tel que décrit précédemment. D'autres caractéristiques et avantages de l'invention apparaitront à 5 l'aide de la description qui suit donnée à titre illustratif et non limitatif, faite en regard des dessins annexés parmi lesquels : la figure 1 illustre un exemple de procédure de configuration d'un circuit logique programmable de type FPGA ; 10 La figure 2 illustre un exemple de procédure d'initialisation d'un circuit logique programmable de type FPGA et la manière dont est protégé le circuit de décryptage selon l'invention. 15 La figure 1 illustre un exemple de procédure de configuration d'un circuit logique programmable de type FPGA. Dans cette exemple, le FPGA 100 est composé d'une zone de ressources programmables 101. Une fois programmée, celle-ci permet de réaliser les fonctions requises pour l'application ciblée par le concepteur. La zone de ressources programmables 20 est composée notamment de blocs logiques configurables et de ressources d'interconnexions entre ces blocs. La zone de ressources programmables comprend également des blocs d'entrées/sorties, habituellement qualifiés selon la terminologie anglo-saxonne d� Pour cela, le concepteur utilise par exemple un ordinateur 108 comprenant un logiciel de conception assistée par ordinateur (CAO). Le concepteur programme la ou lesdites fonctions 110 à l'aide d'un langage de description haut niveau du matériel, comme le langage VHDL. Les programmes et données correspondants 111 mènent à un fichier de configuration stocké 1 o dans la mémoire de l'ordinateur. Le concepteur a la possibilité de définir une clé de chiffrement K 109 de manière à protéger lesdites données de configuration. Cette clé est entrée en paramètre 113. Les données de configurations 111 regroupées dans le fichier de configuration sont cryptées en utilisant un algorithme de cryptage 112 comme par exemple AES ou 15 3DES utilisant la clé K 113. Le fichier de configuration crypté est alors placé 116 dans la mémoire non volatile 107. Une autre manière de faire est de placer directement le fichier de configuration crypté directement 117 dans la mémoire volatile 104 interne au FPGA via un port d'entrée 114, et ce pour des objectifs de test du système, par exemple. Pour que la zone de 20 ressources programmables 101 soit configurée, il est nécessaire que le fichier de configuration soit décrypté par le FPGA. Pour cela, la clé K est mémorisée 102 en interne du composant et est transmis 115 pendant la phase de conception via un port 106 du FPGA. 25 La figure 2 illustre un exemple de procédure d'initialisation d'un circuit logique programmable de type FPGA et la manière dont est protégé le circuit de décryptage selon l'invention. Comme décrit précédemment, le fichier de configuration crypté est habituellement stocké dans une mémoire non volatile externe 207 au FPGA 200. A la mise sous tension du système, le fichier de 30 configuration crypté est téléchargé 208 et est présenté en entrée du module de décryptage 203 interne au FPGA via, par exemple, un port d'entrée 213. La clé K 202 est utilisée 209 par le module 203 pour décrypter le fichier et celui-ci est transmis 210 à la mémoire volatile interne 205. Le fichier de configuration est ensuite utilisé 212 par le module logique de configuration 35 206 pour configurer 211 la zone de ressources programmables 201. La procédure d'initialisation décrite ci-dessus est déclenchée systématiquement à chaque mise sous tension du système. Un attaquant dont le but est d'identifier la clé K stockée 202 dans le FPGA puis de décrypter le fichier de configuration peut choisir d'étudier le fonctionnement du module de décryptage 203 pendant l'initialisation du système. Cette initialisation est contrôlée par l'attaquant grâce, par exemple, à l'utilisation de l'horloge de synchronisation utilisée par le protocole de communication entre la ROM 207 et le FPGA 200. Le module de décryptage est ensuite attaqué 204 par observation ou injection de perturbations. 1 o De manière à être protégé de ces attaques 204 le module de décryptage 203 peut implémenter diverses méthodes de contre-mesures. Par exemple, le module de décryptage est protégé contre les attaques par observations, notamment de type DPA, en utilisant la logique différentielle. Parmi les logique différentielles les plus courantes sont 15 notamment : - WDDL (Wave Dynamic Differential Logic) détaillée dans l'article de K. Tiri et I. Verbauwhede intitulé � A Logic Level Design Methodology for a Secure DPA Resistant ASIC or FPGA Implementation �, DATE'04, pages 246-251, février 2004, Paris. Le module de décryptage est dans ce cas composée de deux réseaux logiques duaux fonctionnant en logiques complémentaires de manière à rendre la consommation du module quasi constante ; - SECLIB (Secured Llbrary) décrite dans l'article de S. Guilley, P. Hoogvorst, Y. Mathieu, R. Pacalet, J. Provost � CMOS structures suitable for secured Hardware �, DATE'04, pages 1414-1415, février 2004, Paris ; - SABL décrite dans l'article de K. Tiri, M. Akmal et I. Verbauwhede intitulé � A dynamic and Differential CMOS Logic with Signal Independant Power Consumption to Withstand Differential Power Analysis on Smart Cards �, ESSCIRC, pages 403-406, Septembre 2002 ; - MCML décrite dans l'article de F. Regazzoni et al. intitulé � A Simulation-Based Methodology for Evaluating DPAResistance of Cryptographic Functional Units with Application 20 25 30 35 to CMOS and MCML Technologies �, SAMOS IC, juillet 2007 , - DyMCL décrite dans l'article de M. W. Allam et M. I. Elmasry intitulé � Dynamic Current Mode Logic (DyMCL), a new lowpower/hight-performance logic family �, 10.1109/CICC.2000.852699, pages 421-424, 2000 ; - TDPL décrite dans l'article de M. Burcci, L. Giancane, R. Luzzi et A. Trifiletti intitulé � Three-phase dual-rail pre-charge logic �, CHESS, volume 4249 de LNCS, pages 232-241, Springer 2006. Une autre façon de se prémunir contre les attaques sur les canaux cachés est d'utiliser un masque sur les variables. Ce masque a des valeurs aléatoires et peut être utilisé au niveau d'une fonction comme d'une porte 15 logique. Les techniques de contre-mesures par logique différentielle ou par masquage sont décrites notamment dans le livre de Mangard Stefan, Oswald Elisabeth et Popp Thomas intitulé � Power Analysis Attacks : Revealing the Secrets of Smart Cards �, Springer, 2007. 20 De manière à être protégé contre les attaques par perturbation de type injection de fautes, le circuit de décryptage peut être protégé en utilisant les technologies de détection de fautes décrites par exemple dans : - l'article de Y. Kim, R. Karri et K. Wu intitulé � Concurrent Error Detection Schemes for Fault Based Side-Channel Cryptanalysis of Symmetric Block Ciphers �, IEEE Transactions on Computer-Aided Design, 21(12), pages 1509-1517, décembre 2002 ; - l'article de M. Karpovsky, K. Kulikowski et A. Taubin intitulé � Robust Protection against Fault-Injection Attacks on Smart Cards Implementing the Advanced Encryption Standard �, IEEE Transactions on Computer-Aided Design, 21(2), mai 2004 ; - l'article de G. Bertoni, L. Breveglieri, I. Koren, P. Maistri, et V. Piuri intitulé � Error Analysis and Detection Procedures for a 10 25 30 35 Hardware Implementation of the Advanced Encryption Standard". IEEE Transactions on Computer-Aided Design, 52(4), avril 2003. En utilisant une ou plusieurs des techniques citées ci-dessus, la protection du module de décryptage est renforcée et ceci permet de combler la faille observée dans les FPGA existants. La spécification sécuritaire du mécanisme de protection des circuits logiques programmables est ainsi complétée avec une sécurisation du crypto-processeur embarqué de 1 o manière à faire face aux attaques physiques par observation ou par injection de fautes. REVENDICATIONS1- Procédé de protection d'un circuit à logique programmable (100, 200) caractérisé en ce que le ou les fichiers de données utilisés pour la configuration des ressources programmables du circuit sont stockés dans une mémoire non volatile (107, 207) après avoir étés cryptés (112), un module de décryptage interne au circuit (103, 203) étant en charge de décrypter le ou les fichiers en utilisant une clé secrète (102, 202) stockée dans le circuit, le module de décryptage étant protégé contre les attaques visant à obtenir la clé pendant l'opération de décryptage en implémentant au moins une technique de contre-mesure. 2- Procédé selon la revendication 1 caractérisé en ce que le circuit à logique programmable (100, 200) est de type FPGA. 3- Procédé selon l'une quelconque des revendications 1 ou 2 caractérisé en ce que le module de décryptage (103, 203) est un circuit logique dédié interne au circuit à logique programmable (100, 200). 4- Procédé selon l'une quelconque des revendications 1 ou 2 caractérisé en ce que le module de décryptage (103, 203) est instancié par programmation des ressources configurables du circuit à logique programmable (100, 200). 5- Procédé selon l'une quelconque des revendications précédentes caractérisé en ce que le module de décryptage (103, 203) est protégé par logique différentielle contre les attaques par observation. 6- Procédé selon l'une quelconque des revendications précédentes caractérisé en ce que le module de décryptage (103, 203) est protégé par masquage contre les attaques par observation. 7- Procédé selon l'une quelconque des revendications précédentes caractérisé en ce que le module de décryptage (103, 203) comprend un ou plusieurs mécanismes de détection de fautes. 8- Circuit à logique programmable (100, 200) de type FPGA caractérisé en ce qu'il comporte au moins un module de décryptage interne au circuit (103, 203) chargé de décrypter le ou les fichiers de configuration des ressources programmables dudit circuit en utilisant une clé secrète (102, 202) stockée dans le circuit, le module de décryptage étant protégé contre les attaques par observation et/ou injection de fautes pendant l'opération de décryptage en utilisant le procédé selon l'une des revendications précédentes.