FR 2964278 A1 20120302 FR 1056886 A 20100831 B10571 - 10-RO-291 1 EXTRACTION DE CLÉ DANS UN CIRCUIT INTÉGRÉ Domaine de l'invention La présente invention concerne de façon générale les circuits électroniques et, plus particulièrement, les circuits mettant en oeuvre des processus cryptographiques requérant le stockage de clés d'identification ou d'authentification. L'invention s'applique plus particulièrement à la génération d'une ou plusieurs clés dans un circuit intégré. Exposé de l'art antérieur Dans de nombreuses applications, on a recours à des clés utilisées dans des algorithmes de chiffrement où, plus simplement, à des clés d'identification d'un circuit intégré. Il peut s'agir de clés utilisées dans des échanges avec d'autres circuits du même produit ou d'un produit distant, de clés d'authentification servant à garantir l'origine d'un circuit intégré, de clés d'identification d'un produit, ou de n'importe quelles clés de chiffrement ou de signature. Le plus souvent, des clés sont dérivées d'une clé principale ou maître de façon à réduire les risques de découverte de la clé maître. Les clés (dont la clé maître) sont généralement enregistrées dans une mémoire non volatile du circuit intégré et sont lues à la demande. Toutefois, le simple fait qu'une clé B10571 - 10-RO-291 2 soit contenue dans une mémoire non volatile présente un risque de piratage de cette clé. Pour éviter de mémoriser une clé en mémoire non volatile, une solution est d'extraire cette clé à partir d'une fonction non duplicable physiquement (Physical Unclonable Function - PUF). Une telle méthode consiste à provoquer l'extraction de la clé à partir de caractéristiques physiques intrinsèques au circuit intégré qui sont liées à sa fabrication. Les informations extraites pour obtenir la clé sont reproductibles sur un même circuit mais différentes d'un circuit à l'autre avec une dispersion suffisante pour être en mesure de générer des clés différentes. Les caractéristiques physiques sur lesquelles se base l'obtention de la clé peuvent être de diverses natures. Le caractère non duplicable vient du fait que les caractéristiques physiques exploitées varient d'un circuit à l'autre en fonction des dispersions aléatoires pendant le procédé de fabrication du circuit et ne sont pas non plus contrôlables lors de la fabrication. La clé secrète est ainsi extrêmement difficile à pirater. De plus, en cas de retro- ingénierie, soit le circuit dupliqué ne sera pas en mesure de fournir la même clé, soit une tentative de lecture intrusive modifiera la clé. L'invention s'applique plus particulièrement à une fonction non duplicable physiquement qui utilise l'état de cellules d'une mémoire volatile suite à la mise sous tension de cette mémoire. Ce phénomène exploite, comme paramètre physique, principalement les tensions de seuil des transistors constituant chaque cellule et les dispersions entre ces tensions de seuil. De façon moindre, les courants de saturation des transistors influent également. En fonctionnement, la programmation des cellules de la mémoire force l'état 0 ou 1 de la cellule. Toutefois, à la mise sous tension du plan mémoire (par exemple suite à une réinitialisation du produit), chaque cellule se place dans un B10571 - 10-RO-291 3 état 0 ou 1 en fonction du déséquilibre entre les tensions de seuil des transistors de cette cellule. La reproductibilité des états des cellules d'une mémoire lors de mises sous tension successives n'est pas la même pour toutes les cellules d'une telle mémoire. Cela conduit habituellement à équiper les circuits d'extraction de la clé de codes correcteurs d'erreur complexes pour assurer la reproductibilité de la clé extraite en fonction de taux d'erreur affectés à chaque cellule. Par ailleurs, l'état fourni par une cellule à la mise sous tension peut évoluer au cours de la vie du produit. Résumé Un objet d'un mode de réalisation de la présente invention est de pallier tout ou partie des inconvénients des fonctions non duplicables physiquement basées sur l'utilisation de mémoires volatiles. Selon un premier aspect, un objet d'un mode de réalisation de la présente invention est d'améliorer la reproductibilité des extractions pour utiliser un code correcteur d'erreur plus simple. Selon un deuxième aspect, un objet d'un mode de réalisation de la présente invention est de proposer une solution au problème d'évolution, au cours du temps, des états fournis par les cellules. Pour atteindre tout ou partie de ces objets ainsi que d'autres, il est prévu un procédé d'extraction d'une clé par une fonction non duplicable physiquement exploitant les états présentés par des cellules d'une mémoire volatile suite à une mise sous tension de cette mémoire, dans lequel : des cellules sont lues en fonction d'adresses stockées en mémoire non volatile ; un code correcteur d'erreur corrige les états lus ; et en cas d'erreur corrigée, l'adresse de la cellule fournissant un état erroné est remplacée, en mémoire non 30 B10571 - 10-RO-291 4 volatile, par celle d'une autre cellule fournissant l'état non erroné. Selon un mode de réalisation de la présente invention, les états extraits de la mémoire volatile sont soumis à un 5 masque pour fournir la clé. Selon un mode de réalisation de la présente invention, les adresses sont initialement déterminées à partir de tests successifs des états fournis par les cellules mémoire de façon à sélectionner des cellules stables. 10 Selon un mode de réalisation de la présente invention, les cellules fournissant lesdits états sont choisies parmi un ensemble de cellules constitué à l'issue d'une phase de test dans laquelle des lectures successives de la mémoire sont effectuées suite à des mises sous tension successives, 15 l'ensemble comprenant les cellules ayant fourni des mêmes états lors de ces lectures. Selon un mode de réalisation de la présente invention, les adresses des cellules de l'ensemble sont mémorisées en mémoire non volatile. 20 Selon un mode de réalisation de la présente invention, l'ensemble exclut des bits à la périphérie du plan mémoire. On prévoit également un circuit intégré comportant des moyens adaptés à la mise en oeuvre de ce procédé. Brève description des dessins 25 Ces objets, caractéristiques et avantages, ainsi que d'autres seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 représente, de façon très schématique et 30 sous forme de blocs, un mode de réalisation d'un circuit intégré du type auquel s'applique à titre d'exemple la présente invention ; la figure 2 est un schéma bloc illustrant l'extraction d'une clé à partir de la mémoire volatile du circuit de la 35 figure 1 ; B10571 - 10-RO-291 la figure 3 illustre le fonctionnement du circuit de la figure 2 ; la figure 4 représente un exemple de cellule mémoire de type SRAM ; 5 la figure 5 est un schéma bloc illustrant le premier aspect de la présente invention ; la figure 6 est un schéma bloc illustrant un mode de mise en oeuvre du processus d'extraction de clé ; et la figure 7 est un schéma bloc illustrant un autre 10 mode de mise en oeuvre du processus d'extraction de clé. Description détaillée De mêmes éléments ont été désignés par de mêmes références aux différentes figures. Par souci de clarté, seuls les étapes et éléments utiles à la compréhension des modes de 15 réalisation ont été représentés et seront décrits. En particulier, l'utilisation faite par le circuit intégré de la clé extraite à partir de la fonction non duplicable physiquement n'a pas été détaillée, l'invention étant compatible avec les utilisations habituelles de telles clés. De plus, les mécanismes 20 de réinitialisation et de lecture des cellules d'une mémoire volatile n'ont pas non plus été détaillés, l'invention étant là encore compatible avec les différentes mémoires volatiles usuelles. La figure 1 représente un schéma bloc d'un mode de 25 réalisation d'un circuit intégré. Un tel circuit 1 comporte une unité de traitement 11 (PU - Processing Unit), diverses mémoires parmi lesquelles au moins une mémoire non volatile 12 (NVM) et une mémoire volatile 13 (SRAM), une unité 2 (KEY EXTRACT) d'extraction ou de 30 génération d'au moins une clé à partir d'une fonction non duplicable physiquement et divers autres composants en fonction de l'application à laquelle est destiné le circuit 1, par exemple des circuits logiques ou une mémoire morte contenant un programme exécuté par l'unité de traitement. Ces divers 35 composants ont été illustrés par un bloc 14 (FCT). B10571 - 10-RO-291 6 Les différents blocs du circuit 1 communiquent entre eux par un ou plusieurs bus 15 d'adresses, de données et de commandes. Diverses configurations de bus partagés ou dédiés entre les blocs peuvent être prévues. Le circuit 1 est en outre susceptible de communiquer avec l'extérieur par une interface d'entrée/sortie 16 (I/0). La figure 2 est un schéma bloc partiel du circuit 1 illustrant les circuits impliqués dans l'extraction d'une clé K. On utilise l'état des cellules de la mémoire volatile 13 suite à une mise sous tension de cette mémoire (par exemple suite à une réinitialisation) ainsi qu'un masque 22 de sélection et/ou de combinaison de ces cellules. Le masque 22 est, par exemple, stocké en mémoire non volatile NVM et est propre au circuit intégré. Le masque et les états de la mémoire volatile sont exploités par le circuit 2 d'extraction de clé qui met en oeuvre un code correcteur d'erreur ainsi que la sélection des états en fonction du masque. La figure 3 illustre de façon très simplifiée le fonctionnement d'une fonction non duplicable physiquement du 20 type de celle de la figure 2. On suppose l'exploitation de 8 octets de la mémoire 13. En figure 3, les états respectifs des cellules ont été illustrés par une case vide pour un premier état (par exemple 0) et une croix pour un second état (par exemple 1). Le masque 22 25 est formé d'un octet identifiant une colonne dans chaque ligne de la mémoire pour extraire un bit. Par exemple, la clé K est constituée, pour les lignes successives 1 à 8 de la mémoire 13, des états des cellules des première, cinquième, deuxième, septième, deuxième, troisième, quatrième et sixième colonnes. 30 Cela fournit une clé K valant 01000010. Il s'agit là d'un exemple très simplifié. La clé K n'est stockée que de façon volatile (dans des registres ou en mémoire 13, de sorte qu'elle disparaît à chaque extinction ou réinitialisation du circuit 1. B10571 - 10-RO-291 7 Dans certaines applications, on souhaite décider de la valeur de la clé. Dans ce cas, on choisit le masque de sorte que sa combinaison avec les bits issus du plan mémoire fournisse la clé souhaitée. Le cas échéant, un masque supplémentaire dérive une clé à utiliser à partir de la clé générée. D'un circuit intégré à un autre, la répartition des cellules présentant un état ou un autre suite à une réinitialisation est très proche de l'équiprobabilité de par la structure du point mémoire SRAM. On notera que la connaissance du masque par un circuit tiers ne lui permet pas de reconstituer la clé dans la mesure où, même en reproduisant le circuit par retro-ingénierie, les états de la mémoire suite à une initialisation ne pourront pas être reproduits. Par conséquent, le masque peut en variante provenir de l'extérieur du circuit. La figure 4 représente un exemple d'une cellule mémoire 3 de type SRAM du type susceptible d'être utilisé dans la mémoire 13. Dans cet exemple, il s'agit d'une cellule à six transistors. Cette cellule 3 comporte, entre deux lignes 32 et 34 d'application d'une tension d'alimentation VDD, deux branches parallèles comportant chacune un transistor MOS à canal P PL, PR en série avec un transistor MOS à canal N NL, NR. Les grilles des transistors de la branche de gauche L sont reliées au point milieu 36 de l'association en série des transistors de la branche de droite R. Les grilles des transistors de la branche de droite sont reliées au point milieu 38 des transistors de la branche de gauche. Les noeuds 36 et 38 présentent respectivement l'état de la cellule et son inverse (complément à un). Ces points 36 et 38 sont reliés à des lignes de bits BL et BLC par des transistors de sélection AXL et AXR, respectivement. Les grilles des transistors de sélection sont reliées à une ligne de mot WL. Le fonctionnement d'une cellule telle qu'illustrée par la figure 3 est usuel. B10571 - 10-RO-291 8 Les modes de réalisation décrits exploitent le fait que les tensions de seuil des transistors de chaque branche ne sont pas rigoureusement identiques en raison des dispersions technologiques lors de la fabrication. Ce phénomène n'est pas gênant lors du fonctionnement de la mémoire dans la mesure où, s'agissant d'une mémoire volatile, les états sont nécessairement programmés avant d'être lus et utilisés. La fonction non duplicable physiquement tire profit du fait que, lors de la mise sous tension (application de la tension VDD au plan mémoire), les états présentés par les points 36 et 38 vont dépendre de la relation entre les tensions seuil des transistors NL, NR, PL et PR. Par exemple, en supposant pour simplifier que les transistors PL et PR aient des tensions seuil identiques, si la tension seuil du transistor NR est inférieure à celle du transistor NL, l'état de la cellule va se stabiliser avec un état bas (0) au noeud 36 et un état haut (1) au noeud 38. A l'inverse, si la tension seuil du transistor NL est inférieure à celle du transistor NR, le point 36 va présenter un état haut et le point 38 un état bas. La photographie du plan mémoire après réinitalisation et avant programmation va donc être différente d'un circuit à un autre. Toutefois, la reproductibilité de l'état d'une cellule à chaque réinitialisation dépend de l'importance de la différence entre les tensions seuil de ses transistors. En effet, plus cette différence est faible, moins la cellule est stable, c'est-à-dire qu'au cours du temps, le sens de la différence entre les tensions seuil risque de s'inverser. On constate donc que, dans un plan mémoire, certaines cellules sont stables (bonne reproductibilité de l'état à chaque réinitialisation), d'autres moyennement stables, et d'autres instables. C'est ce qui conduit à devoir utiliser un code correcteur d'erreur dans le circuit d'extraction de la clé. D'autres types de cellules existent et peuvent également être utilisés. Les modes de réalisation décrits B10571 - 10-RO-291 9 s'appliquent dès que l'état de chaque cellule suite à une mise sous tension ou réinitialisation dépend d'une différence entre les seuils de conduction des transistors de cette cellule. La figure 5 est un schéma bloc d'une phase préparatoire d'un premier aspect du procédé d'extraction de clé, à partir d'une fonction non duplicable physiquement basée sur l'utilisation d'une mémoire de type SRAM. On prévoit de présélectionner les cellules de la mémoire à prendre en compte parmi les cellules considérées comme les plus stables. Pour cela, on effectue, dans une phase préparatoire, plusieurs réinitialisations successives de la mémoire 13 (TEST). On en déduit une cartographie 41 (MAP) de la mémoire dans laquelle on identifie les cellules les plus stables. Cette cartographie est mémorisée en mémoire non- volatile 12 du circuit intégré de façon à pouvoir être exploitée ultérieurement lors des extractions de la clé à partir de la mémoire. Les opérations ci-dessus s'effectuent en fin de fabrication (FAB) du circuit intégré ou lors d'un processus d'initialisation (INIT), lors d'une phase de personnalisation, etc. Le cas échéant, cette phase peut aussi être effectuée sur une zone de la mémoire non encore utilisée par une application au cours de la vie du produit pour un stockage de nouvelles clés ou pour sélectionner de nouveaux bits stables. La figure 6 illustre, de façon très schématique et sous forme de blocs, un mode de réalisation d'une extraction d'une clé lorsque le circuit est en utilisation. A chaque réinitialisation du circuit, on effectue une lecture (READ) du plan mémoire 13 en fonction de la cartographie 41. En d'autres termes, seules les cellules sélectionnées par la cartographie sont lues. En variante, toutes les cellules sont lues et seules celles identifiées par la cartographie sont soumises à la suite du traitement, c'est-à-dire sélectionnables par le masque. B10571 - 10-RO-291 10 Le résultat de la lecture est exploité par une fonction de combinaison 45 (COMB) ou de sélection avec le masque 22. Le résultat de la combinaison est soumis à un code correcteur d'erreur 43 (EEC). L'objectif de ce code correcteur d'erreur est de corriger des états qui seraient erronés. Tout code correcteur d'erreur peut être utilisé. Le résultat fourni par le code correcteur d'erreur fournit la clé K. Le code correcteur d'erreur est mémorisé en mémoire non volatile. Comme une présélection d'un ensemble de cellules ou bits de la mémoire a été effectuée à partir des tests (figure 5), le code correcteur d'erreur employé peut être simplifié, et les lectures engendreront beaucoup moins d'erreurs que les solutions usuelles. En variante, le code correcteur d'erreur est mis en oeuvre avant la combinaison, mais il est alors légèrement plus complexe en raison du nombre de bits vérifiés, mais reste simplifié en raison de la stabilité améliorée des bits. Le nombre de tests à effectuer pour obtenir la cartographie 41 dépend notamment de la résistance du code correcteur d'erreur, c'est-à-dire du nombre d'erreurs qu'il est capable de corriger. Plus le nombre de tests est important, plus la détermination des cellules stables sera fiable et plus le code correcteur d'erreur pourra être simple. A titre d'exemple particulier de réalisation, le nombre de tests est compris entre 10 et 500, de préférence environ 100. Comme cette détermination n'est en principe effectuée qu'une fois, on peut y consacrer un peu de temps. Selon une variante de réalisation, la série de tests (figure 5) est effectuée après une polarisation de tout le plan mémoire dans un même état. Cette polarisation peut décaler légèrement les tensions seuil des cellules et donc leurs valeurs d'initialisation lorsque celles-ci sont proches de l'insta- bilité. Plus les cellules sont polarisées longtemps, plus les transistors risquent de voir leur tension de seuil changer dans une direction. Cela fait évoluer certains bits vers l'état B10571 - 10-RO-291 11 opposé. Cela permet d'éliminer lors de la phase d'initialisation des bits proches de l'état d'instabilité. Une fois cette polarisation initiale effectuée, les réinitialisations successives de test sont effectuées. Les mêmes tests sont ensuite réalisés en polarisant les cellules dans l'autre état. Selon une autre variante, le masque ou la cartographie exclut une partie des bits à la périphérie du plan mémoire. En effet, ces bits périphériques sont les plus sensibles à des dérives liées à la lithographie. Ils ont donc le plus chance de développer un biais et donc de perdre l'équiprobabilité d'un circuit à l'autre. Selon un deuxième aspect, illustrée par un pointillé en figure 6, la sélection des bits (cartographie 41) est mise à jour au cours de la vie du produit si une cellule de la mémoire devient instable. Pour cela, en cas de correction d'une erreur par le code 43, on utilise les bits qu'il a reçus pour déterminer quelle cellule de la mémoire a changé d'état par rapport à la création de la cartographie. On modifie alors le code de la cartographie et le masque pour sélectionner un autre bit qui a la même valeur que le bit perdu. La figure 7 est un schéma bloc illustrant un mode de réalisation d'une extraction de clé selon le deuxième aspect seul. Tout ou partie de la mémoire 13 est lue (READ) puis soumise à une combinaison avec un masque 22. Cette étape peut correspondre à une sélection des cellules lues d'après le masque 22. Puis, le résultat est soumis à un code correcteur d'erreur 43 qui fournit la clé K. Lorsque des erreurs sont corrigées, les bits correspondant de la mémoire sont exclus du processus de sélection ultérieur. Cela est illustré par une modification du masque 22. De préférence, on considère qu'un bit devient instable dès que le code correcteur d'erreur est obligé d'effectuer une correction. Par exemple, si on utilise un code correcteur d'erreur de type par vote majoritaire en prenant 3 bits de la B10571 - 10-RO-291 12 mémoire pour coder un bit pris en compte par le combineur, dès que l'un des trois bits présente un état différent des deux autres, on considère que ce bit est devenu instable. Le code de correcteur d'erreur fournit alors l'information que le bit erroné parmi les trois doit être supprimé de la cartographie 41 et remplacé par un autre. Si le code correcteur d'erreur est plus résistant, par exemple un code par mode majoritaire sur 5 bits, on peut attendre que deux bits parmi les cinq fournissent un résultat différent des autres pour intervenir sur la cartographie. Bien entendu, d'autres codes correcteurs d'erreur sont utilisables, par exemple utilisant les codes de Hamming ou autres fonctions d'une combinaison des bits. Le deuxième aspect peut être mis en oeuvre 15 indépendamment du premier, par exemple en utilisant les méthodes d'extraction et les codes correcteurs usuels. Si les deux aspects sont combinés, cela requiert que le nombre de bits pris en compte pour la génération de la clé soit inférieur au nombre total de bits stables déterminés dans 20 la cartographie, de façon à être en mesure de remplacer les bits qui deviennent instables. Divers modes de réalisation ont été décrits. Diverses variantes et modifications apparaîtront à l'homme de l'art. En particulier, la cartographie de sélection des bits stables et le 25 masque de sélection lors de la génération pourront être regroupés en un seul masque de sélection de bits stables dans le plan mémoire. Dans ce cas, le masque ne peut pas provenir de l'extérieur du circuit intégré mais doit être stocké dans sa mémoire non volatile. De plus, cela suppose que la clé soit 30 fixée lors des tests et exclut donc, si la clé doit être choisie à une valeur donnée, de dissocier la phase d'établissement de la cartographie de celle choisissant la clé. De plus, bien que l'on ait fait référence à l'extraction d'une clé, on comprendra que les modes de 35 réalisation décrits se transposent à l'extraction de plusieurs B10571 - 10-RO-291 13 clés, par exemple en utilisant plusieurs masques pour des applications du type challenges/réponses. Enfin, la mise en oeuvre pratique de l'invention est à la portée de l'homme du métier à partir des indications fonctionnelles données ci-dessus, les différentes opérations étant effectuées sous commande de l'unité de traitement 11 ou d'un autre bloc par exemple le bloc 2 intégrant alors la logique programmable d'exécution de l'algorithme d'extraction de clé. La cartographie correspond en pratique à l'ensemble des adresses des cellules, ces adresses étant stockées en mémoire non volatile et accédées par la fonction d'extraction 2. REVENDICATIONS1. Procédé d'extraction d'une clé par une fonction non duplicable physiquement exploitant les états présentés par des cellules d'une mémoire volatile (13) suite à une mise sous tension de cette mémoire, dans lequel : des cellules sont lues en fonction d'adresses stockées en mémoire non volatile ; un code correcteur d'erreur (43) corrige les états lus ; et en cas d'erreur corrigée, l'adresse de la cellule fournissant un état erroné est remplacée, en mémoire non volatile, par celle d'une autre cellule fournissant l'état non erroné. 2. Procédé selon la revendication 1, dans lequel les états extraits de la mémoire volatile sont soumis à un masque (22) pour fournir la clé (K). 3. Procédé selon la revendication 1 ou 2, dans lequel les adresses sont initialement déterminées à partir de tests successifs des états fournis par les cellules mémoire de façon à sélectionner des cellules stables. 4. Procédé selon l'une quelconque des revendications 1 à 3, dans lequel les cellules fournissant lesdits états sont choisies parmi un ensemble (41) de cellules constitué à l'issue d'une phase de test dans laquelle des lectures successives de la mémoire sont effectuées suite à des mises sous tension successives, l'ensemble comprenant les cellules ayant fourni des mêmes états lors de ces lectures. 5. Procédé selon la revendication 4, dans lequel les adresses des cellules de l'ensemble sont mémorisées en mémoire non volatile (12). 6. Procédé selon la revendication 4 ou 5, dans lequel l'ensemble exclut des bits à la périphérie du plan mémoire. 7. Circuit intégré comportant des moyens adaptés à la mise en oeuvre du procédé selon l'une quelconque des revendications précédentes.