FR 2963455 A1 20120203 FR 1056177 A 20100727 B10225 - 10-RO-033 1 PROTECTION DE CLÉS SECRÈTES Domaine de l'invention La présente invention concerne de façon générale les circuits électroniques et, plus particulièrement, la protection de données manipulées par un circuit électronique intégrant un processeur et au moins une mémoire non volatile. L'invention s'applique notamment aux cartes à puce et autres circuits intégrés sécurisés. Exposé de l'art antérieur Les cartes à puce, ou plus généralement les circuits intégrés dit sécurisés, sont généralement équipés d'un circuit intégré incluant un microprocesseur et plusieurs mémoires parmi lesquelles des mémoires non volatiles et volatiles. Ces dispositifs manipulent des données dites secrètes, c'est-à-dire des données dont l'accès est réservé à un ou plusieurs utilisateurs. On parle généralement de clés secrètes qui sont utilisées par des algorithmes de chiffrement pour protéger ou authentifier des données (messages, images, vidéo, etc.). Les données secrètes sont généralement stockées dans 20 une mémoire non volatile du circuit intégré et sont considérées comme protégées au sein de cette mémoire. B10225 - 10-RO-033 2 Une des faiblesses de ces dispositifs est que lorsque les clés doivent être manipulées par le processeur d'exploitation du circuit, elles sont susceptibles de transiter sur un bus de données partagé par le microprocesseur et d'autres éléments du circuit, et risquent d'être piratées, par exemple, par la mise en oeuvre d'attaques dites par canaux cachés qui examinent, par exemple, la consommation du circuit, son rayonnement, etc. Diverses méthodes ont déjà été proposées pour essayer de protéger les clés manipulées par un circuit sécurisé. Par exemple, le document EP-A-1 880 387 décrit un système de protection d'une mémoire contre des attaques par injection de fautes. On a également déjà proposé de chiffrer les trans- missions sur le bus. Cela évite un éventuel piratage pendant le transfert entre la mémoire et les registres du processeur. Toutefois, les progrès en matière de piratage de données conduisent à une vulnérabilité accrue lorsque des données sont manipulées par le processeur du circuit. Même si les données secrètes sont le plus souvent masquées par des nombres aléatoires ou autres solutions de protection, il y a un moment où elles se retrouvent en clair dans un des registres du processeur. De récentes études ont montré qu'il était alors possible de pirater ces données sensibles à partir de tels registres. Résumé Un objet d'un mode de réalisation de la présente invention est de proposer un système de protection de données secrètes stockées en mémoire non volatile qui pallie tout ou partie des inconvénients des systèmes usuels. Un autre objet d'un mode de réalisation de la présente invention vise à éviter de rendre vulnérables des données secrètes lors de leur exploitation par le processeur du circuit. Pour atteindre tout ou partie de ces objets ainsi que d'autres, il est prévu un procédé de protection d'au moins une B10225 - 10-RO-033 3 première donnée d'une mémoire non volatile dans laquelle l'extraction de cette première donnée est déclenchée par la lecture ou l'écriture, par un processeur et dans ladite mémoire, d'une seconde donnée indépendante de la première, ladite première donnée étant fournie à un circuit non accessible par ledit processeur. Selon un mode de réalisation de la présente invention, l'adresse de la première donnée est fonction de l'adresse de la seconde. Selon un mode de réalisation de la présente invention, l'adresse de la première donnée est obtenue par décalage de l'adresse de la seconde. Selon un mode de réalisation de la présente invention, la première donnée est fournie à un circuit logique. Selon un mode de réalisation de la présente invention, ladite première donnée est une clé secrète d'un algorithme de chiffrement ou d'authentification. On prévoit également un circuit intégré comportant : un processeur de traitement ; au moins un bus de données et un bus d'adresse accessibles par ledit processeur et auxquels sont connectées au moins une mémoire programme et une mémoire non volatile, la mémoire non volatile étant, en sortie de données, associée à un sélecteur relié d'une part au bus de données et d'autre part à un circuit logique. Selon un mode de réalisation de la présente invention, un décodeur d'adresses calcule l'adresse de la première donnée à partir de l'adresse de la seconde. On prévoit également une carte à puce comportant un 30 tel circuit. Brève description des dessins 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 35 en relation avec les figures jointes parmi lesquelles : B10225 - 10-RO-033 4 la figure 1 est un schéma bloc d'un mode de réalisation d'un circuit électronique selon la présente invention ; la figure 2 représente, de façon très schématique, un 5 mode de réalisation d'une mémoire non volatile ; et la figure 3 illustre les échanges d'adresses et de données dans la mémoire de la figure 3 pour une lecture d'une donnée secrète. Description détaillée 10 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 éléments utiles à la compréhension de l'invention ont été représentés et seront décrits. En particulier, les algorithmes de manipulation des données secrètes n'ont pas été détaillés, 15 l'invention étant compatible avec tout algorithme usuel. De plus, les mécanismes conduisant le système d'exploitation du processeur à appeler des données sensibles n'ont pas non plus été détaillés, l'invention étant là encore compatible avec les programmes habituellement manipulés par un tel processeur. 20 La figure 1 représente, sous forme de blocs, un exemple d'architecture d'un circuit électronique intégré 1. De façon habituelle, un tel circuit comporte un processeur 11 (CPU), ou unité centrale de traitement, susceptible de communiquer par l'intermédiaire d'au moins un bus 12 d'adresses 25 et d'un bus 13 de données avec d'autres éléments du circuit parmi lesquels au moins une mémoire non volatile 2 réinscriptible ou non. Dans l'exemple de la figure 1, le circuit 1 comporte une mémoire à lecture seulement 14 (ROM), une mémoire volatile 15 (RAM) et un circuit d'entrée-sortie 16 (I/O) 30 susceptible de communiquer avec l'extérieur du circuit. D'autres liaisons (par exemple un ou plusieurs bus de commande) ou d'autres circuits non représentés peuvent être intégrés au circuit 1. Selon ce mode de réalisation, la mémoire non volatile 2 est découpée en au moins deux zones 22 et 24 parmi lesquelles 35 la zone 22 n'a pas accès au bus de données. En d'autres termes, B10225 - 10-RO-033 les données de la zone 24 sont accessibles en lecture et en écriture par le microprocesseur 11 depuis les bus d'adresse et de données tandis que les données de la zone 22 ne sont accessibles qu'en lecture et ne sont pas fournies au bus 13. 5 Dans l'exemple de la figure 1, les données de la zone 22 sont fournies à un circuit logique 3 (LOGIC) dont le rôle est de traiter les données secrètes issues de la zone 22 par une logique paramétrable ou câblée. Le circuit logique 3 peut être de différentes natures. Il peut s'agir d'une machine d'états en logique câblée, d'un circuit logique programmable ou reconfigurable. Selon les cas, ce circuit peut comprendre un ou plusieurs registres (non représentés) qui reçoivent les données secrètes uniquement lorsque ces données ont besoin d'être utilisées. Le circuit 3 fournit le résultat de son traitement au processeur 11 par le biais du bus de données, mais la clé ne sort pas du circuit 3. Ainsi, à la différence d'un circuit usuel, la clé n'est pas fournie au circuit 3 par le processeur 11, mais directement par la mémoire. Le circuit 3 n'est pas accessible par le processeur 11, c'est-à-dire que seuls le ou les résultats de son traitement sont fournis. Le processeur ne peut cependant pas accéder aux registres internes éventuels du circuit 3. La lecture des données secrètes dans la mémoire 2 est 25 déclenchée, de façon usuelle, par le programme exécuté par l'unité centrale 11. La figure 2 représente, de façon très schématique, une mémoire non volatile 2. La sortie DOUT du plan mémoire 2 est associée à un circuit d'aiguillage 28 (par exemple un 30 multiplexeur) un vers deux, dont les entrées-sorties respectives sont reliées d'une part au bus de données 13 et d'autre part à un ou plusieurs registres temporaires 32 (SDR) du circuit logique 3 servant à mémoriser temporairement les données secrètes. Le multiplexeur 28 est commandé par un signal CT 35 provenant par exemple d'un décodeur d'adresse 26. Le décodeur B10225 - 10-RO-033 6 d'adresse 26 de la mémoire 2 reçoit une adresse ADDNVMA du microcontrôleur 11 et a pour rôle d'adresser une donnée dans la zone accessible 24 et, si besoin, une donnée dans la zone secrète 22. Quand le décodeur 26 reçoit une adresse ADDNVMA, il adresse la zone 24 à cette adresse et calcule une adresse ADDNVMSA dans la zone 22. La donnée DA de la zone 24 est fournie au bus de données tandis que la donnée secrète DSA est fournie au registre 32. Par exemple, lorsqu'une adresse déterminée est appelée par l'unité centrale, le décodeur 26 génère automatiquement une adresse dans la zone sensible en ajoutant une valeur de décalage (OFFSET) dans cette adresse. D'autres modes de calcul d'adresse peuvent être prévus. La figure 3 illustre, par des chronogrammes, un exemple d'extraction de données secrètes de la zone 22. Cette figure illustre un exemple d'adresses présentes sur le bus 12 du circuit, de données présentes sur le bus 13 d'adresses internes ADDNVM à la mémoire non volatile 2 et de données présentes sur la sortie DOUT de la mémoire 2. Pour simplifier, les décalages temporels liés à la propagation des signaux ont été négligés. Dans l'exemple représenté, on suppose le besoin d'extraire une clé secrète DSA de la mémoire 2 et que le programme appelant cette clé secrète est stocké en mémoire morte 14 (ROM) ou mémoire programme. Lorsque le microprocesseur 11 présente, sur le bus d'adresses 12, une adresse ADDROMi à laquelle est présente une instruction de lecture d'une donnée secrète RDOpCode, ce code opératoire est retourné sur le bus de données. Puis, le microprocesseur présente, sur le bus d'adresses 13, les adresses ADDROMi+1 et ADDROMi+2 auxquelles sont stockées des adresses de données dans la mémoire non volatile 2. La mémoire 14 retourne sur le bus de données 13 les adresses ADDNVMAH et ADDNVMAL. On suppose ici que la capacité de la mémoire non volatile requiert d'utiliser deux mots sur le bus 13 (par exemple 2 octets). Le processeur reconstitue alors l'adresse ADDNVMA et présente celle-ci sur le bus d'adresse 12 à destination de la mémoire 2. Cette adresse correspond à la ligne B10225 - 10-RO-033 7 dans laquelle se trouve la donnée DA de la zone accessible et cette donnée est donc retournée sur le bus 13. En interne, le bus d'adresse ADDNVM de la mémoire non volatile présente ensuite à celle-ci l'adresse ADDNVMSA de la donnée secrète DSA qui est ensuite retournée sur la sortie DOUT sans toutefois être présentée sur le bus 13. La mémoire fournit la donnée DSA pendant que le processeur va chercher en mémoire programme 14 l'instruction suivante (adresse ADDROMi+3). La génération de l'adresse ADDNVMSA par le décodeur 26 de la mémoire non volatile est automatique par exemple par un décalage d'adresse (OFFSET). La mémoire 2 contient bien entendu, dans sa zone accessible 24, des données qui ne sont pas associées à une clé secrète. Le décodeur ne fournit dans ce cas pas de deuxième donnée. La mise en oeuvre de l'invention requiert bien entendu que le programmeur connaisse les adresses qu'il doit appeler dans la zone accessible et le fonctionnement du décodeur pour pointer sur les données secrètes de la zone protégée qu'il souhaite obtenir. La zone 22 n'est pas accessible par le microprocesseur en mode utilisateur, c'est-à-dire que le décodeur n'est pas capable d'interpréter une adresse qu'il reçoit et qui pointe vers cette zone. En mode test, en fin de fabrication, la zone 22 peut toutefois être rendue accessible pour que le processeur puisse stocker les clés secrètes dans la zone 22 en adressant directement cette zone. Lors de la fabrication et du test du circuit électronique, toute la mémoire non volatile 2 est vide. Sa zone 22 est toutefois accessible pour permettre de renseigner les clés secrètes. Les données secrètes sont alors stockées par le système d'exploitation du test. Lorsque le circuit électronique est commuté en mode utilisateur de façon irréversible, la mémoire non volatile n'est plus accessible par le système d'exploitation et seule une lecture, déclenchée par une autre lecture dans la zone accessible, est autorisée. B10225 - 10-RO-033 8 En outre, le mécanisme décrit est compatible avec le procédé de protection du brevet EP 1 880 387 susmentionné. On pourra se référer notamment aux figures 3, 4A et 4B de ce brevet et à leur description pour combiner les deux mécanismes de protection en exécutant la lecture de la donnée DA à la façon d'un cycle de lecture de donnée décrit dans ce brevet, donc lire une donnée de référence dans la mémoire et la comparer à une valeur attendue. Une telle combinaison rend la signature électrique de la lecture de la donnée secrète DSA identique à celle de la donnée de référence obtenue par ce brevet. Selon une variante de réalisation, la fonction de protection décrite est activable à la demande par le système d'exploitation. Divers modes de réalisation ont été décrits. Diverses variantes et modifications apparaîtront à l'homme de l'art. De plus, la mise en oeuvre de l'invention à partir des indications fonctionnelles données ci-dessus est à la portée de l'homme du métier en utilisant les techniques de programmation et de conception habituelles. REVENDICATIONS1. Procédé de protection d'au moins une première donnée (DSA) d'une mémoire non volatile (2) dans laquelle l'extraction de cette première donnée est déclenchée par la lecture ou l'écriture, par un processeur (11) et dans ladite mémoire, d'une seconde donnée (DA) indépendante de la première, ladite première donnée étant fournie à un circuit (3) non accessible par ledit processeur. 2. Procédé selon la revendication 1, dans lequel l'adresse (ADDNVMSA) de la première donnée (DSA) est fonction de 10 l'adresse (ADDNVMA) de la seconde (DA). 3. Procédé selon la revendication 2, dans lequel l'adresse (ADDNVMSA) de la première donnée (DSA) est obtenue par décalage de l'adresse (ADDNVMA) de la seconde (DA). 4. Procédé selon l'une quelconque des revendications 1 15 à 3, dans lequel la première donnée (DSA) est fournie à un circuit logique (3). 5. Procédé selon l'une quelconque des revendications 1 à 4, dans lequel ladite première donnée (DSA) est une clé secrète d'un algorithme de chiffrement ou d'authentification. 20 6. Circuit intégré comportant : un processeur de traitement (11) ; au moins un bus de données (13) et un bus d'adresse (12) accessibles par ledit processeur et auxquels sont connectées au moins une mémoire programme (14) et une mémoire 25 non volatile (2), la mémoire non volatile étant, en sortie de données, associée à un sélecteur (28) relié d'une part au bus de données et d'autre part à un circuit logique (3) pour la mise en oeuvre du procédé conforme à l'une quelconque des revendications précédentes. 30 7. Circuit selon la revendication 6, dans lequel un décodeur (26) d'adresses calcule l'adresse (ADDNVMSA) de la première donnée (DSA) à partir de l'adresse (ADDNVMA) de la seconde (DA).B10225 - 10-RO-033 10 8. Carte à puce comportant un circuit selon la revendication 6 ou 7.